External C2
External C2 is a specification to allow third-party programs to act as a communication layer for Cobalt Strike’s Beacon payload. These third-party programs connect to Cobalt Strike to read frames destined for, and write frames with output from payloads controlled in this way. The External C2 server is what these third-party programs use to interface with your Cobalt Strike team server.
External C2 Listener Setup
To create an External C2 Beacon listener select Cobalt Strike -> Listeners on the main menu and press the Add button at the bottom of the Listeners tab display.
The New Listener panel displays.
Go to Cobalt Strike -> Listeners, press Add, and choose External C2 as your payload.
Select External C2 as the Payload type and give the listener a Name. Make sure to give the new listener a memorable name as this name is how you will refer to this listener through Cobalt Strike’s commands and workflows.
Parameters
1) Port (Bind)
2) Bind to localhost only
Note: External C2 listeners are not like other Cobalt Strike listeners. You cannot target these with Cobalt Strike’s post-exploitation actions. This option is just a convienence to stand up the interface itself.
Specification
Link: https://hstechdocs.helpsystems.com/kbfiles/cobaltstrike/attachments/externalc2spec.pdf
Link 2: https://hstechdocs.helpsystems.com/kbfiles/cobaltstrike/attachments/extc2example.c
Third-party Materials
Here's a list of third-party projects and posts that reference, use, or build on External C2:
Links:
1) https://github.com/ryhanson/ExternalC2
2) https://github.com/Und3rf10w/external_c2_framework
3) https://labs.f-secure.com/tools/c3/
4) https://labs.mwrinfosecurity.com/blog/tasking-office-365-for-cobalt-strike-c2
5) https://github.com/outflanknl/external_c2
Last updated