
Custom Command and Control (C3). Фреймворк для быстрого прототипирования собственных C2-каналов, который также обеспечивает интеграцию с существующими инструментами наступательной безопасности.

Build C3 (MSVC)/badge.svg?branch=master)
Build C3 (Clang)/badge.svg?branch=master)
C3 (Custom Command and Control) — это инструмент, который позволяет Red Teams быстро разрабатывать и использовать эзотерические каналы управления и контроля (C2). Это фреймворк, расширяющий другие инструменты Red Team, такие как коммерческий продукт Cobalt Strike (CS), через ExternalC2, поддержка которого включена в релиз. Он позволяет Red Team сосредоточиться только на том канале C2, который они хотят реализовать, полагаясь на надёжность C3 и инструментов CS для всего остального. Такая эффективность и надёжность позволяют Red Teams безопасно работать в критически важных клиентских средах (обеспечивая профессиональный уровень стабильности и безопасности), а также проводить безопасные эксперименты и быстро разворачивать адаптированные тактики, техники и процедуры (TTP). Таким образом, это даёт Red Teams возможность эмулировать и имитировать адаптивного реального злоумышленника.
Подробное руководство см. в этой записи блога.
Руководство по участию в разработке (как разрабатывать каналы) см. на этой странице.
| Служба | Автор |
|---|---|
| MSSQL | @checkymander |
| UNC Share File | |
| LDAP | |
| Printer Jobs |
Наиболее часто используемые термины в C3:
Relays - автономные компоненты сетей C3. Они обмениваются данными через Interfaces. Существует два типа Relays: Gate Relays (или Gateways) и Node Relays.Gateway - особый Relay, управляющий одной сетью C3. Сеть C3 не может работать без действующего Gateway. Gateway является мостом от Node Relays обратно к инфраструктуре атакующего. Он также отвечает за связь со сторонним C2-сервером (например, Teamserver от Cobalt Strike). Gateways всегда должны размещаться в инфраструктуре, контролируемой атакующим.Node Relay - исполняемый файл, запускаемый на скомпрометированном хосте. взаимодействуют через либо друг с другом, либо обратно с .Чтобы установить необходимые пакеты для компиляции C3, в среду Visual Studio нужно добавить следующие отдельные компоненты. Это можно сделать с помощью VS setup.exe (например, "c:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe"), выбрав «Изменить» и добавив указанные ниже отдельные компоненты:
После установки этих компонентов запустите командную строку разработчика Visual Studio и выполните файл CreateBuild.bat. Результаты должны появиться в каталоге Builds.
| Название канала | Автор |
|---|
| Mattermost | @mariuszbit |
| Asana | @tvgdb2 |
| GitHub | @sunn_y_k |
| Dropbox | @adm1nPanda |
| Cisco WebEx Teams | @tvgdb2 |
| JIRA | |
| Discord | |
| GoogleDrive | |
| Slack | |
| EWS Tasks | |
| OneDrive 365 Rest File (non functional) | |
| OneDrive 365 Rest Task (non functional) |
Node RelaysDevicesGatewayInterface - обобщённое название для всего, что обеспечивает отправку и приём данных в сети C3. Они всегда подключены к какому-либо Relay, и их назначение — расширять возможности Relay. В настоящее время существует три типа Interfaces: Channels, Peripherals и Connectors.Devices - общее название для Channels и Peripherals. Эта абстракция создана для обобщения Interfaces, которые могут использоваться на Node Relays.Channel - Interface, используемый для передачи данных между двумя Relays. Channels работают парами и не поддерживают передачу «один ко многим» (см. Negotiation Channels).Negotiation Channel - специальный Channel, способный устанавливать обычные соединения Channel с несколькими Relays. Процесс согласования полностью автоматический. Negotiation Channels поддерживают только протокол согласования и не могут использоваться для любой другой передачи данных.Gateway Return Channel (GRC) - настроенный Channel, который Relay использует для отправки данных обратно на Gateway. GRC может быть маршрутом через другой Relay. Первый Channel (начальный) на Node Relay автоматически устанавливается в качестве GRC для этого Node Relay.C3 Minimal MTU - минимальная часть данных, которую обязан уметь отправлять любой канал C3. В настоящее время C3 Minimal MTU равен 64 байтам. Если фрагмент короче 64 байт не содержит полного пакета, принимающий Relay игнорирует его, а отправляющий Relay пытается повторно отправить последнюю часть данных.Peripherals - сторонний имплант фреймворка управления и контроля. Peripherals взаимодействуют со своими штатными контроллерами через Controller. Например, SMB-маяк Cobalt Strike.Connectors - интеграция со сторонним фреймворком управления и контроля. Например, интерфейс 'External C2', предоставляемый Teamserver от Cobalt Strike через команду externalc2_start.Binders - общее название для Peripherals и Connectors.Device ID - динамический идентификатор, уникально адресующий одно Device на Relay.Agent ID - динамический идентификатор, уникально адресующий Node Relay. Node Relays, созданные из одного и того же исполняемого файла, будут иметь разные Agent IDs.Build ID - статический идентификатор, встроенный в каждый Relay. Не изменяется при перезагрузках.Route ID - пара из Agent ID и Device ID. Используется для описания одного «пути» к Node Relay (Node Relays могут быть достижимы через множество Routes).Route - «путь» к Node Relay. Каждый Relay хранит таблицу всех своих дочерних Relays (а также внуков, правнуков и т.д.) вместе с Device IDs каналов Channel, используемых для достижения конкретного Relay (см. Route ID). Когда пакет от Gateway прибывает на Node Relay, таблица маршрутизации используется для выбора подходящего Channel для отправки пакета получателю.Update Delay Jitter - задержка между последовательными обновлениями Interface (в случае Channels - вызовы метода OnReceiveFromChannel). Может быть настроена на рандомизацию в заданном диапазоне значений времени.