
Azure Servicebus를 통한 Cobalt Strike 외부 C2 통합, Azure Servicebus를 통한 C2 트래픽
Cobalt Strike와 Azure Servicebus 간의 External C2 통합, Azure Servicebus를 통한 C2 트래픽

CobaltStrike의 ExternalC2와 통합되는 CobaltBus DotNetCore 바이너리는 여러 비콘을 추적하기 위해 로컬 SqliteDB를 생성합니다. CobaltBus로 들어오는 메시지는 캡처되어 데이터베이스에 기록됩니다. 데이터베이스 이름 'CobaltBus.db'와 'CobaltBus-log.db'는 CobaltBus.dll이 실행 중인 디렉터리에 생성됩니다. Beacon 바이너리가 실행되면 무작위로 생성된 BeaconId와 Pipename과 함께 'INITIALIZE' 메시지를 baseQueueName 큐로 푸시합니다. 그러면 CobaltBus 핸들러가 이를 캡처하고, 전송된 BeaconId를 기반으로 두 개의 새 큐를 생성하여 이동한 후, CobaltStrike에서 스테이저 셸코드를 요청하고, 새 큐를 통해 'INJECT' 메시지로 다시 푸시합니다. 여기서 Beacon 프로젝트는 캡처된 셸코드를 메모리에 주입하고 생성된 파이프 이름을 통해 CobaltStrike 비콘과 연결을 설정합니다. CobaltBus에서 명령이 실행되면 해당 비콘 큐로 푸시되어 비콘 파이프 이름으로 전달됩니다.
현재 메시지 흐름에는 실제 운영에 사용하기 전에 해결해야 할 여러 결함이 있습니다. 이것은 지저분한 POC로 간주하세요. 이걸 안전하게 사용할 수 있도록 해줄 마우스와 C2 전문가가 있다면 좋겠지만....
주요 크레딧은 @ryHanson의 작업에 있습니다. https://github.com/ryhanson/ExternalC2