Фреймворк AI-агента для black-box тестирования безопасности, поддерживающий bug bounty, red-team и пентест-воркфлоу.
Открытый мультиагентный оркестратор для наступательной безопасности, координирующий несколько AI-агентов через восьмиэтапную цепочку операций для автономной разведки, …
AI red-team платформа, где автономные LLM-агенты выполняют полный цикл пентеста от начала до конца внутри Kali …
Автономные AI-агенты для пентестинга, которые динамически запускают код, находят уязвимости и подтверждают их работающими proof-of-concept эксплойтами, …
Автономный white-box AI-пентестер для веб-приложений и API, который анализирует исходный код, выявляет векторы атак и выполняет …
git clone https://github.com/GH05TCREW/pentestagent.git cd pentestagent ./scripts/setup.sh docker run -it --rm -e ANTHROPIC_API_KEY=your-key ghcr.io/gh05tcrew/pentestagent:latest

https://github.com/user-attachments/assets/a67db2b5-672a-43df-b709-149c8eaee975
# Clone
git clone https://github.com/GH05TCREW/pentestagent.git
cd pentestagent
# Setup (creates venv, installs deps)
.\scripts\setup.ps1 # Windows
./scripts/setup.sh # Linux/macOS
# Or manual
python -m venv venv
.\venv\Scripts\Activate.ps1 # Windows
source venv/bin/activate # Linux/macOS
pip install -e ".[all]"
playwright install chromium # Required for browser tool
Создайте файл .env в корне проекта:
ANTHROPIC_API_KEY=sk-ant-...
PENTESTAGENT_MODEL=claude-sonnet-4-20250514
Или для OpenAI:
OPENAI_API_KEY=sk-...
PENTESTAGENT_MODEL=gpt-5
Подойдёт любая модель, поддерживаемая LiteLLM.
Направьте PentestAgent на любой совместимый с OpenAI endpoint через OPENAI_API_BASE:
OPENAI_API_KEY=your-relay-token
OPENAI_API_BASE=https://relay.example/v1
PENTESTAGENT_MODEL=openai/<model-name-on-your-relay>
Для совместимых с Anthropic endpoint используйте ANTHROPIC_API_BASE.
Смотрите .env.example для полных заметок по провайдерам и опциям встраивания.
pentestagent # Launch TUI
pentestagent -t 192.168.1.1 # Launch with target
pentestagent tui --docker # Run tools in Docker container
Запускайте инструменты внутри Docker-контейнера для изоляции и предустановленных инструментов тестирования на проникновение.
# Base image with nmap, netcat, curl
docker run -it --rm \
-e ANTHROPIC_API_KEY=your-key \
-e PENTESTAGENT_MODEL=claude-sonnet-4-20250514 \
ghcr.io/gh05tcrew/pentestagent:latest
# Kali image with metasploit, sqlmap, hydra, etc.
docker run -it --rm \
-e ANTHROPIC_API_KEY=your-key \
ghcr.io/gh05tcrew/pentestagent:kali
# Build
docker compose build
# Run
docker compose run --rm pentestagent
# Or with Kali
docker compose --profile kali build
docker compose --profile kali run --rm pentestagent-kali
Контейнер запускает PentestAgent с доступом к инструментам тестирования на проникновение в Linux. Агент может использовать nmap, msfconsole, sqlmap и другие напрямую через инструмент терминала.
Требуется установленный и запущенный Docker.
PentestAgent имеет три режима, доступные через команды в TUI:
| Режим | Команда | Описание |
|---|---|---|
| Assist | /assist <задача> |
Однократная инструкция с выполнением инструментов |
| Agent | /agent <задача> |
Автономное выполнение одной задачи |
| Crew | /crew <задача> |
Многозадачный режим. Оркестратор создаёт специализированных исполнителей |
| Interact | /interact <задача> |
Интерактивный режим. Общайтесь с агентом, он поможет и проведёт вас по процедуре тестирования на проникновение |
/assist <task> One single-shot instruction.
/agent <task> Run autonomous agent on task
/crew <task> Run multi-agent crew on task
/interact <task> Chat with the agent in guided mode
/target <host> Set target
/tools List available tools
/notes Show saved notes
/report Generate report from session
/memory Show token/memory usage
/prompt Show system prompt
/conversations Browse and restore saved conversations
/mcp <list/add> Visualizes or adds a new MCP server.
/spawn [target] [--scope CIDR] [--model M] [--no-rag] [--no-mcp]
Manually spawn a child MCP agent from the TUI.
/despawn <server_name>
Terminate and remove a previously spawned child agent.
/clear Clear chat and history
/quit Exit (also /exit, /q)
/help Show help (also /h, /?)
Нажмите Esc, чтобы остановить работающего агента. Ctrl+Q для выхода.
PentestAgent включает готовые плейбуки атак для тестирования безопасности методом чёрного ящика. Плейбуки определяют структурированный подход к конкретным оценкам безопасности.
Запуск плейбука:
pentestagent run -t example.com --playbook thp3_web

PentestAgent включает встроенные инструменты и поддерживает MCP (Model Context Protocol) для расширяемости.
Встроенные инструменты: terminal, browser, notes, web_search (требуется TAVILY_API_KEY), spawn_mcp_agent
spawn_mcp_agent)spawn_mcp_agent — это встроенный инструмент, который позволяет работающему агенту создавать дочернюю копию себя в качестве подчинённого MCP-сервера, подключённого через stdio. Дочерний процесс полностью изолирован — у него свой рантайм, клиент LLM, история разговоров и хранилище заметок — и его полный набор инструментов внедряется обратно в доступные инструменты родительского агента после создания.
Это позволяет иерархические многозадачные рабочие процессы без внешней оркестрации: агент самоорганизуется, делегируя ограниченные подзадачи дочерним процессам, которые создаёт по требованию.
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
target |
string | — | Цель тестирования на проникновение для передачи дочернему процессу |
scope |
string[] | — | Цели/CIDR в рамках дочернего процесса |
model |
string | переменная окружения | Идентификатор модели, переопределяет PENTESTAGENT_MODEL у дочернего процесса |
no_rag |
boolean | false |
Пропустить инициализацию движка RAG у дочернего процесса |
no_mcp |
boolean | true |
Пропустить подключения к внешним MCP-серверам у дочернего процесса (рекомендуется) |
После возврата spawn_mcp_agent инструменты дочернего агента (run_task, run_task_async, await_tasks и т. д.) становятся доступны при следующем вызове инструмента. Имя сервера дочернего агента назначается автоматически (например, child_agent_1) и возвращается в результате. |
Пример — оркестратор делегирует параллельный сбор информации двум дочерним агентам:
# Turn 1: spawn two isolated child agents
spawn_mcp_agent target="10.0.1.0/24" scope=["10.0.1.0/24"]
spawn_mcp_agent target="10.0.2.0/24" scope=["10.0.2.0/24"]
# Turn 2: children's tools are now available — delegate work asynchronously
child_agent_1__run_task_async task="Full port scan and service enumeration"
child_agent_2__run_task_async task="Full port scan and service enumeration"
# Turn 3: wait and collect
child_agent_1__await_tasks task_ids=["<id1>"] timeout_seconds=600
child_agent_2__await_tasks task_ids=["<id2>"] timeout_seconds=600
child_agent_1__get_task_result task_id="<id1>"
child_agent_2__get_task_result task_id="<id2>"
/spawn и /despawn)Помимо автоматического инструмента spawn_mcp_agent, в TUI доступны две команды, позволяющие запускать и завершать дочерние агенты вручную, независимо от работающего цикла агента.
/spawn/spawn [target] [--scope CIDR ...] [--model MODEL] [--no-rag] [--no-mcp]
Запускает нового дочернего MCP-агента через stdio и подключает его к текущей сессии. Дочерний агент отображается в виде сворачиваемой панели терминала в боковой панели TUI, а его инструменты становятся доступны родительскому агенту при следующем вызове инструмента.
| Аргумент | Описание |
|---|---|
target |
Целевой объект для пентеста, передаваемый дочернему агенту (позиционный или --target) |
--scope CIDR |
Один или несколько CIDR в рамках целевой области (можно повторять) |
--model MODEL |
Переопределение модели для дочернего агента |
--no-rag |
Пропустить инициализацию движка RAG у дочернего агента |
--no-mcp |
Пропустить подключение к внешним MCP-серверам у дочернего агента |
Примеры:
/spawn 10.0.1.1
/spawn 10.0.1.1 --scope 10.0.1.0/24 --model claude-sonnet-4-20250514
/spawn --target 10.0.1.1 --scope 10.0.1.0/24 --no-rag
/despawn/despawn <server_name>
Завершает работу дочернего агента, идентифицируемого по server_name (например, child_agent_1), удаляет его панель терминала из TUI и отключает его инструменты от родительской сессии. Используйте /mcp list, чтобы увидеть имена всех активных дочерних агентов.
Пример:
/despawn child_agent_1
Если MCP-сервер предоставляет более 128 инструментов, PentestAgent автоматически заменяет полный каталог на один инструмент mcp_<server>_rag_optimizer. Этот мета-инструмент использует сходство эмбеддингов (через LiteLLM, по умолчанию text-embedding-3-small) для извлечения наиболее релевантных инструментов для текущей задачи и внедряет их в следующий ход агента — сохраняя управляемый размер контекстного окна без потери доступа ко всему набору инструментов.
Оптимизатор прозрачен для агента: он вызывает инструмент RAG с целенаправленными запросами на естественном языке, описывающими необходимые возможности, а соответствующие инструменты становятся доступны на следующем ходе для прямого вызова.
Рекомендации по использованию для агента:
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
queries |
string[] | (обязательно) | Один целенаправленный запрос на каждую необходимую возможность. Чем конкретнее, тем выше точность |
top_k |
integer | 20 |
Количество инструментов для извлечения на запрос (максимум 128). Результаты объединяются и удаляются дубликаты |
Эмбеддинги вычисляются один раз при запуске и кэшируются, поэтому повторные запросы выполняются быстро. Оптимизатор создаётся для каждого сервера отдельно, поэтому каждый MCP-сервер с большим каталогом получает собственный независимый индекс.
Совет: Передавайте один запрос на каждую отдельную возможность, а не объединяйте всё в один запрос.
["получить список открытых портов на хосте", "получить использование памяти процессом"]даст лучшие результаты, чем["получить порты, память и CPU"].
PentestAgent поддерживает MCP (Model Context Protocol) в двух направлениях: использование внешних MCP-серверов в качестве источников инструментов и предоставление себя в качестве MCP-сервера, чтобы внешние клиенты (Claude Desktop, Cursor и др.) могли управлять PentestAgent программно.
Настройте mcp_servers.json, чтобы подключить PentestAgent к любым внешним MCP-серверам. Пример конфигурации:
{
"mcpServers": {
"nmap": {
"command": "npx",
"args": ["-y", "gc-nmap-mcp"],
"env": {
"NMAP_PATH": "/usr/bin/nmap"
}
}
}
}
PentestAgent может работать как MCP-сервер, позволяя любому MCP-совместимому клиенту отправлять задачи, просматривать результаты и удалённо управлять агентом. Поддерживаются два транспорта:
STDIO — для локальных клиентов (например, Claude Desktop, Cursor):
pentestagent mcp_server --type stdio
pentestagent mcp_server --type stdio --target 192.168.1.1 --scope 192.168.1.0/24
pentestagent mcp_server --type stdio --model claude-sonnet-4-20250514 --docker
SSE (HTTP) — для удалённых или сетевых клиентов:
pentestagent mcp_server --type sse
pentestagent mcp_server --type sse --host 0.0.0.0 --port 8080
pentestagent mcp_server --type sse --target 10.0.0.1 --scope 10.0.0.0/24 --docker
Транспорт SSE предоставляет единственную конечную точку /mcp, поддерживающую POST (запросы), GET (постоянный поток SSE для push-уведомлений от сервера) и DELETE (завершение сессии). Сессии отслеживаются через заголовок Mcp-Session-Id.
Все флаги mcp_server:
| Флаг | По умолчанию | Описание |
|---|---|---|
--type |
(обязательно) | Транспорт: stdio или sse |
--host |
0.0.0.0 |
Хост для привязки SSE |
--port |
8080 |
Порт для привязки SSE |
--target |
нет | Основная цель пентеста (IP / имя хоста) |
--scope |
[] |
Целевые объекты/CIDR в рамках области (разделённые пробелами) |
--model |
переменная окружения | Идентификатор модели, переопределяет PENTESTAGENT_MODEL |
| --- |
| --docker | false | Использовать DockerRuntime вместо LocalRuntime |
| --no-rag | false | Пропустить инициализацию движка RAG |
| --no-mcp | false | Пропустить подключения к внешним MCP-серверам |
claude_desktop_config.json){
"mcpServers": {
"pentestagent": {
"command": "pentestagent",
"args": ["mcp_server", "--type", "stdio"]
}
}
}
При работе в режиме MCP-сервера PentestAgent предоставляет следующие инструменты:
Статус и конфигурация сервера
| Инструмент | Описание |
|---|---|
get_server_status |
Текущий статус сервера: готовность, количество задач по состояниям, основная цель/область, размер хранилища памяти |
get_config |
Основная конфигурация агента: цель, область, максимальное количество итераций, список инструментов |
update_config |
Обновить цель, область или максимальное количество итераций для всех последующих задач |
Выполнение задач
| Инструмент | Описание |
|---|---|
run_task |
Отправить задачу и блокировать выполнение до её завершения. Возвращает полный результат, использованные инструменты и снимок заметок |
run_task_async |
Отправить задачу и вернуть управление немедленно с task_id. Для проверки статуса используйте get_task_status |
Проверка задач
| Инструмент | Описание |
|---|---|
list_tasks |
Список всех задач с указанием статуса, цели и краткого описания. Возможна фильтрация по статусу |
get_task_status |
Проверить текущий статус и предварительный результат задачи |
get_task_result |
Полный результат задачи: итоговый вывод, шаги рассуждений, все вызовы инструментов и их результаты, снимок заметок |
await_tasks |
Блокировать выполнение до завершения всех указанных асинхронных задач (опрос каждые 500 мс, настраиваемый тайм-аут) |
Управление задачами
| Инструмент | Описание |
|---|---|
cancel_task |
Отменить выполняющуюся или ожидающую задачу по идентификатору |
Управление инструментами
| Инструмент | Описание |
|---|---|
list_tools |
Список всех доступных агенту инструментов |
enable_tool |
Включить указанный инструмент для основного агента |
disable_tool |
Отключить указанный инструмент для основного агента |
История переписки
| Инструмент | Описание |
|---|---|
get_conversation_history |
Возвращает историю сообщений для задачи или основного агента. Поддерживает параметр limit |
reset_conversation |
Очистить историю переписки для задачи или основного агента |
Память
| Инструмент | Описание |
|---|---|
store_memory |
Сохранить пару ключ-значение в хранилище памяти процесса |
retrieve_memory |
Извлечь по точному ключу, выполнить поиск по подстроке или вывести все ключи |
clear_memory |
Удалить конкретный ключ или очистить всю память с помощью scope='all' |
Наблюдаемость
| Инструмент | Описание |
|---|---|
get_logs |
Возвращает последние журналы выполнения, с возможностью фильтрации по уровню (info / warning / error) |
get_metrics |
Метрики выполнения: количество задач, процент успешных выполнений, общее количество вызовов инструментов, размеры памяти и журналов |
Для длительных задач разведки используйте асинхронный шаблон:
# 1. Submit tasks without blocking
run_task_async task="Enumerate subdomains of example.com" target="example.com"
run_task_async task="Run nmap SYN scan on example.com" target="example.com"
# 2. Block until both finish (up to 5 minutes)
await_tasks task_ids=["<id1>", "<id2>"] timeout_seconds=300
# 3. Retrieve full results
get_task_result task_id="<id1>"
get_task_result task_id="<id2>"
pentestagent tools list # List all tools
pentestagent tools info <name> # Show tool details
pentestagent mcp list # List MCP servers
pentestagent mcp add <name> <command> [args...] # Add MCP server
pentestagent mcp test <name> # Test MCP connection
Каждое пользовательское сообщение в TUI содержит две встроенные кнопки действий: откатить и ветвление.
Нажмите откатить на любом пользовательском сообщении, чтобы обрезать переписку до момента перед этим сообщением — как в интерфейсе, так и в истории агента в памяти. Используйте эту функцию, чтобы повторить запрос с нуля, не сохраняя отброшенный путь.
Нажмите >> ветвление на любом пользовательском сообщении, чтобы создать ответвление переписки с этой точки:
Это позволяет опробовать альтернативный подход с любой точки, сохраняя возможность восстановить исходную ветку через /conversations.
PentestAgent автоматически сохраняет каждую переписку, чтобы вы могли просматривать, сравнивать и восстанавливать прошлые сеансы.
Автосохранение срабатывает после каждой задачи /assist, /agent, /crew и /interact, а также перед /clear. Хранится до 20 переписок; более старые автоматически удаляются.
Место хранения: workspaces/<активная_рабочая_область>/memory/conversations/ при активной рабочей области или conversations/ в корне проекта в противном случае. Каждая переписка сохраняется в виде JSON-файла.
Просмотр и восстановление с помощью /conversations:
Команда /conversations открывает модальное окно с разделённым экраном внутри TUI:
- Левая панель — список сохранённых переписок с заголовком и датой.
Выберите беседу и нажмите Восстановить, чтобы загрузить её в текущую сессию, или Закрыть, чтобы закрыть модальное окно.
pentestagent/knowledge/sources/ для автоматического внедрения контекста.loot/notes.json с категориями (credential — учётные данные, vulnerability — уязвимость, finding — находка, artifact — артефакт). Заметки сохраняются между сессиями и внедряются в контекст агента.pentestagent/
agents/ # Agent implementations
config/ # Settings and constants
interface/ # TUI and CLI
knowledge/ # RAG system and shadow graph
llm/ # LiteLLM wrapper
mcp/ # MCP client and server configs
playbooks/ # Attack playbooks
runtime/ # Execution environment
tools/ # Built-in tools
pip install -e ".[dev]"
pytest # Run tests
pytest --cov=pentestagent # With coverage
black pentestagent # Format
ruff check pentestagent # Lint
Используйте инструмент только для систем, на тестирование которых у вас есть явное разрешение. Несанкционированный доступ является незаконным.
MIT