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). Типичная последовательность развёртывания:
- Клонирование и установка зависимостей сервера:
| |
При первом запуске сервер генерирует учётные данные администратора, либо их можно задать вручную через аргументы.
- Подготовка клиента:
| |
В GUI прописываются адрес и креды сервера — клиент связывается с API и открывает рабочее пространство.
- Создание агента и обфускация:
| |
Результат — единый .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-запуски (пример)
| |
Причина: часто агенты доставляются через однострочники PowerShell, запускающие Python-скрипт или декодирующие payload.
Wazuh — запуск Python-скриптов в необычных местах
| |
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.
