
Автономный ИИ-агент для тестирования на проникновение, который оркестрирует многоагентную разведку, эксплуатацию уязвимостей, пост-эксплуатацию и формирование отчетов с сохранением состояния кампании.
ИИ-агент для пентеста в вашем терминале.
Мультиагентная архитектура • Отслеживание состояния пентеста • 20+ LLM-провайдеров
PentestCode — это автономный агент для пентеста в вашем терминале. Наведите его на цель, и он запустит инструменты, прочитает вывод, обновит своё представление о сети и решит, что делать дальше — как это сделал бы оператор. Жёсткий форк OpenCode (MIT), лишённый фокуса на редактировании кода и переработанный для наступательной безопасности.
Бета — он выдерживает реальные пентесты и CTF, но будьте готовы к шероховатостям. Откройте issue, когда что-то ломается; именно так он становится лучше.
Одна инструкция на входе — полная цепочка атак на выходе:
you: "pentest 10.10.10.5, goal is domain admin"
Он методичен там, где люди ленятся: проверяет каждое удостоверение против каждого сервиса на каждом хосте и не забывает ничего проверить. Всё, что он узнаёт, попадает в структурированное состояние, которое можно запрашивать прямо во время работы командами /status, /vulns или /creds.
npm install -g pentestcode-ai
# via curl
curl -fsSL https://raw.githubusercontent.com/s0ld13rr/pentestcode/main/install.sh | bash
Единый автономный бинарник — не нужно устанавливать Bun, Node или рантайм. Linux и macOS, x64 и arm64.
Зафиксировать версию:
PENTESTCODE_VERSION=0.1.7 curl -fsSL https://raw.githubusercontent.com/s0ld13rr/pentestcode/main/install.sh | bash
Своя директория:
PENTESTCODE_INSTALL=/usr/local/bin curl -fsSL https://raw.githubusercontent.com/s0ld13rr/pentestcode/main/install.sh | bash
Из исходников:
bun install
bun run build --single --skip-embed-web-ui
# binary at packages/opencode/dist/pentestcode-<os>-<arch>/bin/pentestcode
pentestcode auth login # connect your LLM provider
pentestcode # interactive session
pentestcode --prompt "scan 10.10.10.0/24 and enumerate all services" # one-shot
Работает с 20+ провайдерами через ai-sdk — Anthropic, OpenAI, Google, Azure, AWS Bedrock, Ollama и другие.
Две вещи отличают PentestCode от промпта пентестера, вставленного в окно чата: команда агентов и общая память.
В основе архитектуры — модель «стратег-координатор» из исследования HPTSA — улучшение в 4,3 раза по сравнению с одиночным агентом:
┌─────────────┐
│ pentest │ strategist / coordinator
│ (lead) │ plans, dispatches, tracks state
└──────┬──────┘
┌───────┬───────┼───────┬───────┐
▼ ▼ ▼ ▼ ▼
┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐
│recon ││scan- ││explo-││iden- ││post- │
│ ││ner ││iter ││tity ││explo │ ... + 7 more
└──────┘└──────┘└──────┘└──────┘└──────┘
Ведущий агент (pentest) разбивает пентест на задачи и параллельно запускает специализированных субагентов — у каждого свой системный промпт, права на инструменты и доменные знания. Всего 13 агентов: recon, scanner, enumerator, exploiter, identity (AD/Kerberos), infrastructure (SNMP/IPMI/базы данных), webapp (OWASP Top 10), post-exploit, exploit-dev, critic (проверка ложных срабатываний), reporter, плюс скрытые агенты для сжатия контекста и управления сессией.
Когда сканер находит порт, энумератор видит это мгновенно — потому что каждый агент читает и пишет в одно структурированное состояние пентеста:
Состояние переживает сессию: закройте терминал, вернитесь завтра — и агент продолжит с того места, где остановился. Рядом с ним человекочитаемый findings.md фиксирует каждую уязвимость, удостоверение и полученный доступ с временными метками — запустите tail -f, чтобы наблюдать за ходом пентеста.
18 встроенных пентест-инструментов в дополнение к bash. Инструменты-парсеры обязательны: после запуска nmap агент должен пропустить вывод через nmap_parse, а не грепать XML вручную, чтобы каждая находка попала в состояние пентеста.
19 курируемых пакетов знаний, загружаемых по требованию, чтобы они тратили контекст только когда это актуально:
Навыки — это обычный Markdown. Добавьте свой, положив SKILL.md в каталог навыков — без изменений кода.
Управляйте живой сессией с помощью слеш-команд:
А также задайте, сколько свободы получает агент:
Режимы сочетаются с поведением паузы: auto + pause always даёт автономное выполнение, которое останавливается на каждой находке для проверки.
Один набор инструментов для наступательной безопасности:
Конфигурация находится в .pentestcode/pentestcode.jsonc:
{
"provider": {
"anthropic": {
"model": "claude-sonnet-4-20250514"
}
}
}
Провайдеры: Anthropic, OpenAI, Google, Azure, AWS Bedrock, Ollama, Together, Groq, Fireworks, DeepSeek, Mistral и другие через ai-sdk.
Отчёты об ошибках из реального использования — самое ценное, что вы можете прислать. Запустите PentestCode на CTF-боксе, машине HTB или авторизованном пентесте, и когда что-то пойдёт не так — он зацикливается, упускает очевидный путь, давится выводом инструментов или тратит токены — откройте issue с:
findings.md и/или соответствующий вывод сессииПредложения новых функций и PR тоже приветствуются. Кодовая база — TypeScript на библиотеке Effect; об архитектуре см. CLAUDE.md.
MIT — см. LICENSE.
Жёсткий форк OpenCode • Создан для наступательной безопасности • Развёртывание у себя и открытый исходный код
| Стадия | Что делает агент |
|---|
| Сканирование | nmap -sS -p- находит 7 открытых портов и парсит XML сразу в состояние пентеста |
| Распознавание | Порты 88 + 389 → контроллер домена. Запускает три энумератора параллельно (SMB, LDAP, HTTP) |
| Энумерация | Null-сессия SMB → шара с правом записи. LDAP → список пользователей. Gobuster → веб-директории |
| Атака | AS-REP roasting → взламываемый хэш → первое валидное удостоверение |
| Спрей | Это удостоверение проверяется на каждом известном хосте через SMB, WinRM, LDAP и RDP |
| Эксплуатация | Плацдарм WinRM → пост-эксплуатационный агент сливает SAM / LSA / DPAPI |
| Результат | Хэш администратора домена в руках — каждый шаг записан с цепочкой доказательств |
| Инструмент | Что делает |
|---|
nmap_parse | Парсит XML nmap → автоматически заполняет хосты/сервисы |
nuclei_parse | Парсит JSON Nuclei → создаёт уязвимости с уровнем критичности |
cme_parse | Парсит вывод NetExec → обновляет учётные данные/доступ/хосты |
gobuster_parse | Парсит вывод перебора директорий → классифицирует находки |
bloodhound_parse | Парсит JSON SharpHound → заполняет модель AD |
sqlmap_parse | Парсит вывод sqlmap → извлекает точки инъекций |
xss_detect | Анализирует ответы на отражённый/хранимый XSS |
jwt_analyze | Декодирует JWT, проверяет alg:none/слабый HMAC/срок действия |
cred_spray | Планирует спрей-атаку по всем обнаруженным сервисам |
scope_check | Проверка соответствия скоупу (CIDR/wildcard) |
attack_path_suggest | Поиск путей атаки по стоимости через граф связей |
tunnel_manage | Планирует SSH/chisel/ligolo-туннели, отслеживает активные сессии |
phase_control | Управление фазами с контрольными точками качества |
report_gen | Генерирует пентест-отчёты в markdown/JSON |
state_update | Записывает находки (30+ типов мутаций, пакетный режим) |
state_query | Запрашивает состояние пентеста (20+ типов запросов) |
| Команда | Что делает |
|---|
/status | Панель состояния пентеста — хосты, уязвимости, учётные данные, фаза |
/targets | Таблица хостов и сервисов |
/vulns | Находки по уровню критичности |
/creds | Обнаруженные учётные данные |
/scope | Просмотр/редактирование скоупа целей |
/phase | Управление фазами |
/mode | Переключение auto / free / guided |
/pause | Пауза при находках (never / always / checkpoint) |
/report | Создание пентест-отчёта |