
Custom Command and Control (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)の迅速な展開が可能になります。これにより、レッドチームは適応力のある現実世界の攻撃者をエミュレートおよびシミュレートできます。
詳細なチュートリアルについては、こちらのブログ記事を参照してください。
貢献ガイド(Channel開発チュートリアル)については、このページを参照してください。
| チャネル名 | 貢献者 |
|---|---|
| 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の2種類があります。Gateway - 1つのC3ネットワークを制御する特別なRelayです。C3ネットワークは動作可能なGatewayなしでは運用できません。GatewayはNode Relaysから攻撃者のインフラストラクチャに戻るブリッジです。また、サードパーティのC2サーバ(Cobalt StrikeのTeamserverなど)と通信する役割も担います。Gatewaysは常に攻撃者が管理するインフラストラクチャ内でホストされるべきです。Node Relay - 侵害されたホスト上で起動される実行ファイル。Node RelaysはDevicesを介して、相互間またはへの通信を行います。C3をコンパイルするために必要なパッケージをインストールするには、以下の個別コンポーネントをVisual Studio環境に追加する必要があります。これは、VS setup.exe(例:"c:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe")を使用し、「変更」を選択して以下の個別コンポーネントを追加することで実現できます。
これらのコンポーネントがインストールされたら、Visual Studio開発者コマンドプロンプトを起動し、CreateBuild.batファイルを実行します。出力はBuildsディレクトリに生成されるはずです。
GatewayInterface - C3ネットワーク内でのデータ送受信を容易にするものに付けられる高レベルな名前。常に何らかのRelayに接続され、Relayの機能を拡張することを目的としています。現在、InterfacesにはChannels、Peripherals、Connectorsの3種類があります。Devices - ChannelsとPeripheralsの総称。この抽象化は、Node Relaysで使用できるInterfacesを一般化するために作られました。Channel - 2つのRelays間でデータを転送するために使用されるInterface。Channelsはペアで動作し、1対多の送信には対応していません(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チャネルが送信できることが要求されるデータの最小部分。現在、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上の1つのDeviceを一意に識別する動的ID。Agent ID - Node Relayを一意に識別する動的ID。同じ実行ファイルからインスタンス化されたNode Relaysは異なるAgent IDsを持ちます。Build ID - すべてのRelayに組み込まれている静的ID。再起動後も変わりません。Route ID - Agent IDとDevice IDのペア。Node Relayへの1つの「経路」を記述するために使用されます(Node Relaysには複数のRoutes経由で到達できる場合があります)。Route - Node Relayへの「経路」。すべてのRelayは、特定のRelayに到達するために使用されるChannelのDevice IDsとともに、すべての子Relays(孫、曽孫など)のテーブルを保持します(Route IDを参照)。GatewayからのパケットがNode Relayに到着すると、ルーティングテーブルを使用して、受信者にパケットを送信する適切なChannelを選択します。Update Delay Jitter - Interfaceの連続する更新間の遅延(Channelsの場合、OnReceiveFromChannelメソッドの呼び出し)。指定された時間範囲でランダム化するように設定できます。