Venom C2 — лёгкая, кроссплатформенная и понятная командами платформа C2
Дата публикации: 16 ноября 2025 г.
Venom C2 — лёгкая, кроссплатформенная и понятная командами платформа командного управления, написанная без внешних зависимостей на Python3. Проект автора boku7 позиционируется как утилитарный инструмент для постэксплуатации в условиях, где установка пакетов нежелательна: сервер на Flask, операторский GUI на Electron и однобайтовый (single-file) агент на чистом Python, который передаёт AES-зашифрованные JSON-сообщения по HTTP(S). Это делает Venom удобным вариантом для быстрых red-team-кампаний и для ситуаций, когда на целевых хостах доступен только базовый стек Python.
Архитектура Venom C2
Архитектура разделена на три части:
-
Сервер (Flask-приложение). Управляет соединениями агентов, хранит историю команд, предоставляет API для GUI и выдаёт конфигурации. Сервер умеет генерировать агентов и имеет скрипты для обфускации и настройки профилей (URI, заголовки, JSON-поля), что повышает уникальность каждого агента в сети.
-
Операторский клиент (Electron). Кроссплатформенная оболочка для работы с сервером: просмотр сессий, выполнение команд, загрузка/скачивание файлов и создание туннелей SSH. Клиент лёгкий и удобный — GUI представляет собой упрощённый интерфейс, похожий на Loki GUI по функционалу.
-
Агент (single-file Python). Минималистичный скрипт без внешних библиотек, выполняющий команды оболочки, работу с файлами, создание reverse-SSH, sleep с джиттером и пр. Все сообщения между агентом и сервером идут в виде POST-запросов с AES-шифрованием и случайными профилями URI/заголовков для минимизации обнаружения.
Ключевая идея — запуск агента на хосте без установки зависимостей. Это упрощает развертывание на экзотических дистрибутивах или минимальных образах, где инструментам вроде Go-бинарников найти место проблематично.
Быстрый старт и развёртывание
Репозиторий доступен на GitHub (boku7/venom). Типичная последовательность развёртывания:
- Клонирование и установка зависимостей сервера:
git clone https://github.com/boku7/venom cd venom/server pip3 install -r requirements.txt python3 server.py
При первом запуске сервер генерирует учётные данные администратора, либо их можно задать вручную через аргументы.
- Подготовка клиента:
cd ../client npm install npm run start
В GUI прописываются адрес и креды сервера — клиент связывается с API и открывает рабочее пространство.
- Создание агента и обфускация:
python3 agent_create.py -H <server_host> -P <server_port> [-http] python3 agent_obfuscate.py agents/<generated_agent_file>.py
Результат — единый .py-файл, который можно запустить на целевой машине. Для запуска на целевой системе достаточно python3 /path/to/obfuscated_agent.py.
Особенность подхода — сервер не требует контейнеризации или сложной сборки. Всё держится на Flask + Electron + минимальном Python-агенте.
Генерация и профиль агента
Venom ориентирован на разнообразие сетевых профилей: при генерации агенту присваиваются случайные базовые пути (URI), наборы заголовков, имена параметров JSON и юзер-агенты. Это позволяет снизить шаблонность трафика и усложнить сигнатурное детектирование. Сообщения шифруются AES-ключом, который передаётся в конфигурации агента.
Поддерживаемые команды агента включают: ls, cd, cat, upload, download, shell, sshrev (reverse SSH), sleep, kill и ряд утилит для работы с правами и файловой системой. Ведётся история команд на сервере, что удобно для аудита действий оператора.
Транспорты и устойчивость
По умолчанию коммуникация идёт по HTTP(S), но гибкость профилей и возможность скрывать сообщения в JSON делают Venom устойчивым к простым анализаторам. Обфускация кода и вариативность сетевого маршрута усложняют создание универсальных сигнатур. При этом архитектура не даёт готовых wireguard/mTLS-модулей — упор сделан на простоту и беззависимость.
Примеры вывода и поведение агента
После установления сессии сервер отображает ID агента, метку, IP, ОС и время последней активности. Агент считывает основную телеметрию: текущую директорию, список пользователей, активные процессы. Оператор может запускать команды, скачивать файлы или инициировать обратные SSH-туннели. Удобный CLI/API позволяет интегрировать автоматизацию и сценарии запуска.
Детектирование Venom C2
Хотя Venom сделан для скрытного использования, реализация на Python и использование HTTP(S) оставляют характерные следы. Ниже представлены адаптированные примеры правил и сигнатур, которые помогут SOC и Blue Team обнаружить активность, сходную с Venom-агентом. Правила — шаблоны, требующие настройки под конкретную сеть.
Wazuh / Windows — подозрительные PowerShell-запуски (пример)
<group name="venom,"> <rule id="130100" level="12"> <if_sid>61603</if_sid> <field name="win.eventdata.image" type="pcre2">powershell.exe</field> <field name="win.eventdata.commandLine" type="pcre2">-NoProfile\s+-ExecutionPolicy\s+Bypass\s+-EncodedCommand</field> <description>Possible Venom-related loader via PowerShell encoded command: $(win.eventdata.commandLine).</description> <mitre> <id>T1059.001</id> </mitre> </rule> </group>
Причина: часто агенты доставляются через однострочники PowerShell, запускающие Python-скрипт или декодирующие payload.
Wazuh — запуск Python-скриптов в необычных местах
<rule id="130101" level="10"> <if_sid>61603</if_sid> <field name="win.eventdata.image" type="pcre2">python.exe</field> <field name="win.eventdata.commandLine" type="pcre2">.*obfuscated_agent_.*\.py</field> <description>Execution of obfuscated Python agent detected: $(win.eventdata.commandLine).</description> <mitre> <id>T1204.002</id> </mitre> </rule>
YARA — простая сигнатура агента (пример)
rule venom_agent_py : venom { meta: description = "Venom C2 Python agent (heuristic)" author = "SOC team" reference = "https://github.com/boku7/venom" strings: $s1 = "venom" ascii $s2 = "sshrev" ascii $s3 = "AES" ascii $s4 = "/api/" ascii condition: (any of ($s*) and filesize < 5MB) }
Пояснение: поиск ключевых строк в обфусцированных скриптах даёт сигнатуры, но требует контроля ложных срабатываний.
Suricata / IDS — HTTP аномалии и длинные JSON-ответы
alert http any any -> any any (msg:"VENOM-DETECT Suspicious HTTP POST - JSON beacon"; \ http.method; content:"POST"; http.uri; pcre:"/\/api\/(agent|check|cmd)/"; \ http.body; pcre:"{\"[A-Za-z0-9_]{1,20}\":.*\"[A-Za-z0-9_]{1,20}\":.*}"; \ sid:2000001; rev:1; classtype:trojan-activity; priority:2;)
Аномалии: необычные базовые пути /api/ с непрерванными JSON-полями, большие AES-зашифрованные блоки в теле запроса или ответов.
DNS-мониторинг — частые запросы и большие TXT-ответы
Если агент использует HTTP→DNS fallback или скрытую эксфильтрацию через DNS, стоит отслеживать:
- Частые поддомен-запросы к одному домену за короткое время.
- Большие TXT-ответы (возможная передача зашифрованных фрагментов).
Пример Suricata-правила для длинных поддоменов и TXT-ответов приводится в виде шаблона, адаптируемого к конкретной сети.
Отследить и ограничить риски
Venom выигрывает простотой и беззависимостью, что облегчает эксплуатацию в жёстких окружениях. Эти же плюсы создают и слабые места. Однофайловый Python-агент легче статически просканировать, а уникальность профилей уменьшает повторяемость, но не исключает корреляций по поведению: считывание аномалий HTTP, необычные PowerShell-инлайны, запуск obfuscated-скриптов и нестандартные подключения к портам. Всё это — ключи для обнаружения.
Выводы
Venom C2 — пример прагматичного инструмента, созданного под конкретную задачу: работать в условиях, где установка сторонних пакетов невозможна, а на целевых хостах доступен только базовый Python3. Архитектура проста и понятна: Flask-сервер, Electron-GUI и single-file агент. Профилизация сетевого трафика и обфускация агентов повышают скрытность, но использование Python даёт детектируемые следы, с которыми SOC может работать, опираясь на поведенческие правила, сетевой анализ и контроль запуска скриптов.
Репозиторий проекта: https://github.com/boku7/venom — в нём подробно описаны шаги по развертыванию сервера, генерации и обфускации агентов, список доступных команд и рекомендации по безопасности API.