
Автоматизированная агентская платформа для тестирования на проникновение на основе больших языковых моделей
ИИ-агент для автономного тестирования на проникновение
Опубликовано на USENIX Security 2024
Официальный сайт: pentestgpt.com »
Научная статья
·
·
Автономный конвейер CTF имеет подключаемую серверную часть для Claude Code и Codex. Интерактивный модернизированный унаследованный режим (
pentestgpt-legacy) поддерживает более широкий набор провайдеров: OpenAI, Anthropic, Google Gemini, DeepSeek, xAI, Qwen, Moonshot и локальный Ollama. См. Интерактивный режим с несколькими LLM.
claude) — установлен и аутентифицирован для локального запуска Claude. См. документацию Claude Codecodex) — установлен и аутентифицирован для локального запуска Codex. Рабочий процесс Docker ниже объединяет оба CLI.git clone https://github.com/GreyDGL/PentestGPT.git
cd PentestGPT
make install # запускает uv sync
| Команда | Описание |
|---|---|
make install | Установить зависимости |
make test | Запустить все тесты |
make check | Запустить линтинг + проверку типов |
make build | Собрать дистрибутивный пакет |
# Запуск против цели (по умолчанию режим CTF)
pentestgpt --target 10.10.11.234
# С контекстом задачи
pentestgpt --target 10.10.11.50 --instruction "Сайт на WordPress, сосредоточься на уязвимостях плагинов"
# Режим пентеста (обнаружение активов → уязвимости → отчёт)
pentestgpt --target 10.10.11.234 --mode pentest
# Список ранее сохранённых сессий
pentestgpt --list-sessions
Агент работает через многоэтапный конвейер, передавая результаты каждого этапа следующему — разведка → эксплуатация → прохождение для CTF, обнаружение активов → выявление уязвимостей → отчёт для пентеста.
Автономный образ включает инструмент + Claude Code и Codex CLI. Вы входите один раз, и сессии сохраняются в именованных томах — повторный вход при последующих запусках не требуется.
make docker-build # сборка образа инструмента
make docker-login # ОДНОКРАТНЫЙ, идемпотентный: проверяет вход, входит только если чего-то не хватает
make docker-auth-status # проверка, что оба вошли (ROUNDTRIP=1 для живой проверки с одним токеном)
# Запуск конвейера против цели (любая серверная часть / модель / режим):
make docker-run TARGET=http://127.0.0.1:8000 BACKEND=codex MODEL=gpt-5.5 MODE=ctf
make docker-run TARGET=10.10.11.234 BACKEND=claude MODEL=opus MODE=pentest
make docker-login выполняет вход Claude (setup-token → токен сохраняется в томе) и Codex (собственный
внутриконтейнерный codex login, OAuth обратный вызов пересылается через socat — не сохраняется, так как токены обновления ChatGPT
одноразовые). Он идемпотентен: повторный запуск пропускает то, что всё ещё действительно. Логины сохраняются при
пересоздании контейнера; make docker-down сохраняет их, make docker-nuke удаляет тома для входа (чтобы
принудительно выполнить новый вход / сменить токен). Дизайн + подробности: docs/docker-dev-plan.md.
Классический PentestGPT с участием человека из статьи USENIX 2024 сохранён и
модернизирован как pentestgpt-legacy. Он запускает три взаимодействующих сессии LLM —
рассуждение / генерация / разбор — которые поддерживают дерево задач пентеста (PTT), пока вы
управляете сессией интерактивно (next, more, todo, discuss). Автономный конвейер с фиксированными этапами
поддерживает серверные части Claude и Codex; этот унаследованный режим взаимодействует нативно со многими провайдерами
через их официальные SDK.
Установите API-ключ для любого провайдера, которого хотите использовать (в вашем окружении или .env — см.
.env.example). Будут доступны только те провайдеры, которые вы настроили.
OPENAI_API_KEY=... ANTHROPIC_API_KEY=... GEMINI_API_KEY=... # или GOOGLE_API_KEY
DEEPSEEK_API_KEY=... GROK_API_KEY=... QWEN_API_KEY=... KIMI_API_KEY=...
# Автовыбор наилучших доступных моделей для каждой сессии
pentestgpt-legacy
# Выбор моделей для каждой сессии
pentestgpt-legacy --reasoning-model claude-opus-4-8 --parsing-model gemini-3.5-flash
# Локальная модель через Ollama (совместимо с OpenAI)
pentestgpt-legacy --reasoning-model ollama:qwen3 --base-url http://localhost:11434/v1
# Список всех поддерживаемых моделей (показывает, какие провайдеры настроены)
pentestgpt-legacy --list-models
# Живая проверка каждой настроенной модели и вывод матрицы успех/неудача
pentestgpt-legacy --smoke-test
pentestgpt-legacy --list-models всегда отображает актуальный реестр. Повторно запускайте --smoke-test
после изменения идентификаторов моделей. Текущий срез:
| Провайдер | Текущие модели | Унаследованные (сохранены) | Переменная окружения |
|---|---|---|---|
| OpenAI | gpt-5.5, gpt-5.5-pro, gpt-5.4-mini, gpt-5.4-nano, gpt-5.2, gpt-5.3-codex | gpt-4o, gpt-4o-mini, o3, o4-mini | OPENAI_API_KEY |
| Anthropic | claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5-20251001 | — | ANTHROPIC_API_KEY |
| Google Gemini | gemini-3.1-pro, gemini-3.5-flash, gemini-3-pro, gemini-3.1-flash-lite | gemini-2.5-pro, gemini-2.5-flash | GEMINI_API_KEY / GOOGLE_API_KEY |
| DeepSeek | deepseek-v4-flash, deepseek-v4-pro | deepseek-chat, deepseek-reasoner | DEEPSEEK_API_KEY |
| xAI Grok | grok-4.3 | — | GROK_API_KEY / XAI_API_KEY |
| Alibaba Qwen | qwen3.7-max, qwen3.5-flash | qwen3-max | QWEN_API_KEY / DASHSCOPE_API_KEY |
| Moonshot Kimi | kimi-k2.6 | — | KIMI_API_KEY (по умолчанию .cn; установите MOONSHOT_BASE_URL для .ai) |
| Локальный (Ollama) | ollama:<model> (напр. ollama:qwen3) |
Реестр находится в
pentestgpt_legacy/llm/registry.py(единственный источник правды). Добавление модели — это одна записьModelSpec; провайдеры, совместимые с OpenAI, используют один коннектор.
PentestGPT собирает анонимные данные об использовании, чтобы помочь улучшить инструмент. Эти данные отправляются в наш проект Langfuse и включают:
Конфиденциальные данные не собираются — выводы команд, учётные данные или фактические значения флагов никогда не передаются.
# Через флаг командной строки
pentestgpt --target 10.10.11.234 --no-telemetry
# Через переменную окружения
export LANGFUSE_ENABLED=false
В декабре 2025 года PentestGPT достиг 86.5% успешности (90/104 бенчмарков) в эксперименте
с набором валидации XBOW. Это исторический исследовательский результат, а не текущая
гарантия регрессии pentestgpt-agent.
Наборы тестов XBOW и архивы результатов поддерживаются вне этого репозитория продукта как исследовательские артефакты, предназначенные только для справки. Поддерживаемые интерфейсы командной строки PentestGPT, Makefile, CI и среда выполнения Docker не предоставляют средства запуска XBOW. Будущая оценка может повторно использовать этот корпус через отдельно управляемый адаптер, не делая его зависимостью продукта.
Если вы используете PentestGPT в своих исследованиях, пожалуйста, процитируйте нашу статью:
@inproceedings{299699,
author = {Gelei Deng and Yi Liu and Víctor Mayoral-Vilches and Peng Liu and Yuekang Li and Yuan Xu and Tianwei Zhang and Yang Liu and Martin Pinzger and Stefan Rass},
title = {{PentestGPT}: Evaluating and Harnessing Large Language Models for Automated Penetration Testing},
booktitle = {33rd USENIX Security Symposium (USENIX Security 24)},
year = {2024},
isbn = {978-1-939133-44-1},
address = {Philadelphia, PA},
pages = {847--864},
url = {https://www.usenix.org/conference/usenixsecurity24/presentation/deng},
publisher = {USENIX Association},
month = aug
}
Распространяется под лицензией MIT. См. LICENSE.md для получения дополнительной информации.
Отказ от ответственности: Этот инструмент предназначен только для образовательных целей и авторизованного тестирования безопасности. Авторы не поддерживают любое незаконное использование. Используйте на свой страх и риск.
(наверх)
| — |
нет (OLLAMA_BASE_URL) |