
맞춤형 명령 및 제어(C3). 기존 공격 도구 키트와 통합을 제공하면서 맞춤형 C2 채널의 빠른 프로토타이핑을 위한 프레임워크.

Build C3 (MSVC)/badge.svg?branch=master)
Build C3 (Clang)/badge.svg?branch=master)
C3(사용자 지정 명령 및 제어)는 레드 팀이 난해한 명령 및 제어 채널(C2)을 신속하게 개발하고 활용할 수 있게 해주는 도구입니다. 이는 릴리스 시 지원되는 ExternalC2를 통해 상용 Cobalt Strike(CS) 제품과 같은 다른 레드 팀 도구를 확장하는 프레임워크입니다. 레드 팀은 구현하려는 C2에만 집중하면 되며, 나머지는 C3와 CS 도구의 견고함에 의존합니다. 이러한 효율성과 신뢰성을 통해 레드 팀은 중요 고객 환경에서 안전하게 작동할 수 있으며(전문적인 수준의 안정성과 보안 보장), 동시에 안전한 실험과 맞춤형 전술, 기술 및 절차(TTP)의 신속한 배포가 가능합니다. 따라서 레드 팀은 적응형 실제 공격자를 에뮬레이션하고 시뮬레이션할 수 있습니다.
자세한 튜토리얼은 이 블로그 게시물을 참조하세요.
기여 가이드(채널 개발 튜토리얼 방법)는 이 페이지를 참조하세요.
| 채널 이름 | 기여자 |
|---|
| Mattermost | @mariuszbit |
| Asana | @tvgdb2 |
| GitHub | @sunn_y_k |
| Dropbox | @adm1nPanda |
| Cisco WebEx Teams | @tvgdb2 |
| JIRA | |
| Discord | |
| GoogleDrive | |
| Slack | |
| EWS Tasks | |
| OneDrive 365 Rest File (비기능) | |
| OneDrive 365 Rest Task (비기능) |
| 서비스 | 기여자 |
|---|---|
| MSSQL | @checkymander |
| UNC Share File | |
| LDAP | |
| Printer Jobs |
C3에서 가장 일반적으로 사용되는 용어:
Relays - C3 네트워크의 독립적인 구성 요소입니다. Interfaces를 사용하여 통신합니다. Relays에는 Gate Relays(또는 Gateways)와 Node Relays의 두 가지 유형이 있습니다.Gateway - 하나의 C3 네트워크를 제어하는 특수 Relay입니다. C3 네트워크는 작동 중인 Gateway 없이는 작동할 수 없습니다. Gateway는 Node Relays에서 공격자 인프라로 돌아가는 다리 역할을 합니다. 또한 타사 C2 서버(예: Cobalt Strike의 Teamserver)와의 통신을 담당합니다. Gateways는 항상 공격자가 제어하는 인프라 내에서 호스팅되어야 합니다.Node Relay - 손상된 호스트에서 실행될 실행 파일입니다. Node Relays는 Devices를 통해 서로 간에 또는 Gateway로 다시 통신합니다.Interface - C3 네트워크 내에서 데이터 전송을 용이하게 하는 모든 것에 주어진 상위 수준 이름입니다. 항상 일부 Relay에 연결되어 있으며 Relay의 기능을 확장하는 것이 목적입니다. 현재 Interfaces에는 Channels, Peripherals 및 Connectors의 세 가지 유형이 있습니다.Devices - Channels 및 Peripherals의 일반적인 이름입니다. 이 추상화는 Node Relays에서 사용할 수 있는 Interfaces를 일반화하기 위해 생성되었습니다.Channel - 두 Relays 간에 데이터를 전송하는 데 사용되는 Interface입니다. Channels는 쌍으로 작동하며 일대다 전송을 지원하지 않습니다(Negotiation Channels 참조).Negotiation Channel - 여러 Relays와 일반 Channel 연결을 설정할 수 있는 특수 Channel입니다. 협상 과정은 완전히 자동화됩니다. Negotiation Channels는 협상 프로토콜만 지원하며 다른 전송에는 사용할 수 없습니다.Gateway Return Channel (GRC) - Relay가 Gateway로 데이터를 다시 보내는 데 사용할 구성된 Channel입니다. GRC는 다른 Relay를 통한 경로일 수 있습니다. Node Relay의 첫 번째 Channel(초기)은 해당 Node Relay의 GRC로 자동 설정됩니다.C3 Minimal MTU - 모든 C3 Channel이 전송할 수 있어야 하는 최소 데이터 부분입니다. 현재 C3 Minimal MTU는 64바이트입니다. 64바이트보다 작은 청크에 완전한 패킷이 포함되지 않는 한, 수신 Relay는 이를 무시하고 송신 Relay는 마지막 데이터 부분을 재전송합니다.Peripherals - 명령 및 제어 프레임워크의 타사 임플란트입니다. Peripherals는 Controller를 통해 기본 컨트롤러와 통신합니다. 예: Cobalt Strike의 SMB 비콘.Connectors - 타사 명령 및 제어 프레임워크와의 통합입니다. 예를 들어 Cobalt Strike의 Teamserver가 externalc2_start 명령을 통해 노출하는 'External C2' 인터페이스가 있습니다.Binders - Peripherals 및 Connectors의 일반적인 이름입니다.Device ID - Relay의 하나의 Device를 고유하게 식별하는 동적 ID입니다.Agent ID - Node Relay를 고유하게 식별하는 동적 ID입니다. 동일한 실행 파일에서 인스턴스화된 Node Relays는 서로 다른 Agent IDs를 갖습니다.Build ID - 모든 Relay에 내장된 정적 ID입니다. 재부팅 후에도 변경되지 않습니다.Route ID - Agent ID와 Device ID의 쌍입니다. Node Relay에 대한 하나의 "경로"를 설명하는 데 사용됩니다(Node Relays는 여러 Routes를 통해 도달할 수 있음).Route - Node Relay에 대한 "경로"입니다. 모든 Relay는 모든 하위 Relays(손자, 증손자 등)의 테이블과 해당 Relay에 도달하는 데 사용되는 Channel Device IDs를 유지합니다(Route ID 참조). Gateway의 패킷이 Node Relay에 도착하면 라우팅 테이블을 사용하여 수신자에게 패킷을 보낼 적절한 Channel을 선택합니다.Update Delay Jitter - Interface의 연속 업데이트 사이의 지연입니다(Channels의 경우 OnReceiveFromChannel 메서드 호출 간 지연). 지정된 시간 값 범위 내에서 무작위화되도록 설정할 수 있습니다.C3를 컴파일하는 데 필요한 패키지를 설치하려면 Visual Studio 환경에 다음 개별 구성 요소를 추가해야 합니다. 이는 VS setup.exe(예: "c:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe")를 사용하고 수정을 선택한 후 다음 개별 구성 요소를 추가하여 수행할 수 있습니다.
이러한 구성 요소가 설치되면 Visual Studio 개발자 명령 프롬프트를 시작하고 CreateBuild.bat 파일을 실행합니다. 출력은 Builds 디렉터리에 있어야 합니다.