Коммерческий C2-фреймворк за $10 000 в год детектируется Elastic за 12 секунд после первого callback. Кастомный имплант, написанный за три недели, живёт в сети с зрелым SOC месяцами. Разница не в бюджете. Разница в том, понимаете ли вы, как устроен loader, почему EDR видит ваш beacon, и на каком уровне абстракции вы принимаете решения о стелсе. Это карта всей дисциплины разработки offensive-инструментов: от выбора C2 до написания шеллкода, от обхода AMSI до проектирования инфраструктуры, которая переживёт активный threat hunting.
Карта темы: навигация по offensive-разработке
| # | Подтема | Подробнее |
|---|---|---|
| 1 | Архитектура C2: серверная часть, транспорт, протоколы | Написание C2 фреймворка на Python: от архитектуры до обхода EDR |
| 2 | Имплант и loader: стейджеры, шеллкод, injection | Разработка шеллкода: от ручного написания на ассемблере до инъекции в процесс |
| 3 | Обход AV и EDR: пейлоады, шифрование, in-memory execution | Обход антивируса и EDR: разработка кастомных пейлоадов |
| 4 | AMSI, ETW, userland hooks, kernel callbacks | Практическое руководство для offensive-разработчика |
| 5 | Bypass конкретных EDR: CrowdStrike, SentinelOne, Defender | Техники bypass CrowdStrike, SentinelOne и Defender for Endpoint |
| 6 | Расширение существующих C2: BOF, агенты, плагины | BOF, агенты Mythic и плагины Sliver на практике |
| 7 | Операционная реальность: Red Team против зрелого SOC | Как пентестер обходит EDR и SIEM в реальных проектах |
Зачем разрабатывать собственные инструменты, когда есть Cobalt Strike
Каждый offensive-инженер в какой-то момент задаёт себе этот вопрос. Ответ не в функциях - Cobalt Strike, Brute Ratel, Nighthawk дают огромный арсенал из коробки. Проблема в другом: сигнатурность. Threat intelligence команды CrowdStrike и SentinelOne годами картографируют артефакты коммерческих C2. Каждый Malleable C2 profile, каждый паттерн beacon'а, каждый формат конфига - всё это рано или поздно превращается в detection rule.Инженеры SECFORCE сформулировали это точнее всех: «Мы не считаем, что стандартный подход - модификация коммерческих C2 для обхода детекта - будет устойчивым в долгосрочной перспективе. Артефакты оригинального ПО всегда создают сигнатуры, и по мере улучшения эвристик эти сигнатуры будут срабатывать». Именно поэтому SECFORCE написала собственный C2 на стеке Nim + C (имплант), Go (сервер), Node.js + React (интерфейс).
Разработка red team инструментов - это не хобби-проект для GitHub. Это инженерная дисциплина, где каждое архитектурное решение - trade-off между стелсом, функциональностью и скоростью работы. Модифицируете чужой фреймворк - работаете в рамках чужих ограничений. Пишете свой - контролируете каждый байт, но платите за это временем и экспертизой.
Когда стоит писать своё, а когда - расширять существующее
Зависит от зрелости команды и типа engagement'ов:- Регуляторные тестирования (TIBER, CORIE): нужна точная эмуляция TTP конкретных APT-групп - кастомная разработка даёт контроль, но BOF-модули для Cobalt Strike часто закрывают задачу быстрее
- Red Team против зрелого SOC с CrowdStrike/SentinelOne: коммерческие C2 детектируются на уровне loader'а - нужен кастомный имплант или как минимум кастомный loader + стейджер
- Стандартный пентест: Sliver или Mythic с правильным OpSec покрывают 90% задач без дополнительной разработки
- Долгосрочные операции (adversary simulation, 3-6 месяцев): кастомный C2 - единственный способ пережить активный threat hunting
7 C2-фреймворков в 2025 году: что выбрать и почему
Выбор C2 - первое стратегическое решение в любой операции. По данным BishopFox, в 2025 году основной арсенал Red Team: Sliver, Cobalt Strike, Nighthawk, Mythic, Merlin, PoshC2, Empire. Но голый список бесполезен без понимания, чем они отличаются архитектурно и какие trade-off'ы навязывают оператору.Коммерческие фреймворки: Cobalt Strike, Nighthawk, Brute Ratel
Cobalt Strike остаётся индустриальным стандартом - Malleable C2 profiles, Aggressor-скрипты, Beacon с DNS/HTTPS/SMB-каналами. Главная боль - массовость: каждый EDR-вендор имеет десятки правил именно под него. Лицензия - около $3 500/год (точная цена зависит от типа лицензии и условий Fortra).Nighthawk C2 от MDSec позиционируется как «C2 для обхода современных EDR». По данным scip.ch, стоимость - $10 000 за пользователя в год с обязательным минимумом в три лицензии (март 2025). Nighthawk автоматизирует генерацию payload'ов с встроенными evasion-стратегиями, что снижает порог входа для оператора - но и контроль над loader'ом забирает себе.
Brute Ratel ($2 500/пользователь/год, Dark Vortex, с проверкой покупателя) идёт по обратному пути: оператор обязан сам конструировать loader, получая взамен максимальную гибкость. Кривая обучения круче, но после настройки - один из лучших вариантов по evasion-возможностям. Лично я считаю, что для команд с сильным dev-составом это оптимальный выбор.
Open-source фреймворки: Sliver, Mythic, Havoc
Sliver (BishopFox) - кросс-платформенный фреймворк на Go. Импланты поддерживают mTLS, HTTPS, DNS-транспорты. Из коробки генерирует beacon'ы для Windows, Linux, macOS. Активно развивается и используется как замена Cobalt Strike, когда бюджет на лицензии ограничен.Mythic (Cody Thomas) - модульная архитектура с Docker-based deployment. Агенты и C2 profiles (HTTP, websocket и др.) работают как отдельные контейнеры. Главная фишка - система агентов: каждый агент - отдельный проект с собственным кодом на любом языке. Плюс аналитика из коробки: кто выполнил какую команду, когда, через какой агент. Для обучения и кастомизации - идеален.
Havoc - open-source C2 с GUI на Qt и нативным имплантом Demon на C/ASM, поддерживает Python-скриптинг для автоматизации. Проще в кастомизации, чем коммерческие аналоги, но для работы против EDR enterprise-класса требует существенной доработки напильником.
Критерии выбора: матрица оценки
По методологии scip.ch, C2-фреймворк стоит оценивать по таблице с весовыми коэффициентами: обязательные требования (отсутствие которых даёт отрицательный балл) и дополнительные функции. Ключевые параметры:| Критерий | Вес | Что оценивать |
|---|---|---|
| Транспорты | Высокий | mTLS, HTTPS, DNS, SMB, custom protocols |
| Evasion из коробки | Высокий | AMSI/ETW bypass, sleep obfuscation, syscall proxying |
| Расширяемость | Средний | BOF, custom agents, API для интеграции |
| OpSec оператора | Высокий | Логирование действий, kill dates, watermarking |
| Кросс-платформенность | Средний | Windows/Linux/macOS импланты |
| Стоимость | Зависит | Бюджет vs. детектируемость |
Гайд по созданию C2 с нуля - Написание C2 фреймворка на Python: от архитектуры до обхода EDR.
Архитектура C2-инфраструктуры: от loader'а до teamserver'а
C2-инфраструктура - это не один сервер с Cobalt Strike. Это многослойная архитектура, где каждый компонент делает свою работу и может быть заменён при компрометации. Типичная схема: loader → redirector → firewall/proxy → C2 server → внутренние сервисы.Loader: первая линия взаимодействия с EDR
Loader - компонент, который запускает шеллкод (обычно beacon) на целевой системе. Его задача проста и сложна одновременно: выполнить payload, не будучи обнаруженным. По данным scip.ch, loader может принимать разные формы: кастомный PE-файл, легитимный PE с инъектированным кодом, инсталлятор, скрипт или Office-документ с макросами.Типичная архитектура стейджинга:
- Stage 1 (lightweight loader) - минимальная логика, базовые evasion-техники. Задача - установить initial access и подтянуть Stage 2
- Stage 2 (full loader) - основные evasion-действия: расшифровка шеллкода, injection в целевой процесс, установка связи с C2
Redirector'ы и сетевая маскировка
Redirector - промежуточный сервер между имплантом и C2-сервером. Задачи:- Скрыть реальный IP teamserver'а
- Фильтровать нелегитимные запросы (sandbox'ы, исследователи)
- Обеспечить отказоустойчивость: redirector сгорел - поднимаем новый, C2 жив
Транспортный уровень: почему HTTPS недостаточно
Коммуникация имплант ↔ C2 строится поверх протоколов прикладного уровня (T1071 - Application Layer Protocol) с обязательным шифрованием (T1573 - Encrypted Channel). Но «HTTPS и забыли» - так не работает:- DNS - медленный, зато работает почти везде. Незаменим для initial callback из сетей с жёстким контролем HTTP-трафика
- HTTPS - основной рабочий транспорт. Требует domain fronting или категоризированных доменов, чтобы не выделяться в логах proxy
- SMB named pipes - для peer-to-peer связи между имплантами внутри сети, когда прямого выхода в интернет нет
- HTTP/2 и HTTP/3 - Merlin C2 (Russel Van Tuyl) целенаправленно использует HTTP/2 и QUIC: многие DPI-решения не инспектируют эти протоколы так же глубоко, как HTTP/1.1
Разработка кастомных имплантов: языки, архитектура, trade-off'ы
Имплант (он же agent, beacon) - код на скомпрометированной системе, который держит канал управления. Разработка импланта - ядро offensive tooling, и ключевые решения принимаются ещё до первой строки кода.Выбор языка: C, Rust, Nim, Go - что и когда
Каждый язык навязывает свои ограничения:C/C++ - классика. Полный контроль над памятью, минимальный размер бинаря, прямой доступ к WinAPI и syscall'ам. Обратная сторона: сложнее писать безопасный код, разработка дольше. Зато на выходе - бинарь, который не тащит за собой рантайм на 10 МБ.
Rust - активно вытесняет C в offensive-разработке. Signal Labs строит свой курс по offensive tool development целиком на Rust: от кастомных loader'ов и COFF loader'ов до kernel rootkit'ов и hypervisor-имплантов. Memory safety без GC, хорошая оптимизация, растущая среда. Но размер бинаря больше, чем у чистого C, и характерные строки Rust runtime могут использоваться для детекта.
Nim - использован SECFORCE для implant-части их кастомного C2. Компилируется в C, что позволяет генерировать компактные нативные бинари. Высокоуровневый синтаксис ускоряет разработку. На одном проекте мы собрали PoC-имплант на Nim за два дня - на чистом C это заняло бы неделю.
Go - основной язык для серверной части C2 (Sliver, серверная часть C2 от SECFORCE). Для имплантов используется реже: скомпилированные бинари весят 10+ МБ, а Go runtime оставляет характерные артефакты, которые EDR-вендоры уже научились ловить.
Ключевые компоненты импланта
Минимальный работоспособный имплант:- Transport module - реализация коммуникации с C2 (HTTP client, DNS resolver, SMB pipe client)
- Task dispatcher - получение команд от C2 и маршрутизация к нужному обработчику
- Execution engine - выполнение задач: запуск команд, загрузка/выгрузка файлов, инъекция в процессы
- Evasion layer - sleep obfuscation, антиотладка, sandbox evasion (T1497 - Virtualization/Sandbox Evasion)
- Persistence module - опционально, для долгосрочных операций
Руководство по написанию шеллкода для стейджеров - Разработка шеллкода: от ручного написания на ассемблере до инъекции в процесс.
Обход EDR: почему одного трюка недостаточно и нужен инженерный подход
EDR - главный противник offensive-инструментов на endpoint'е. CrowdStrike Falcon, SentinelOne Singularity, Microsoft Defender for Endpoint используют многослойную модель детекта: сигнатуры, эвристики, поведенческий анализ, memory scanning, kernel callbacks. Обошли один слой - ловит другой.
📚 Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме