
대규모 언어 모델로 구동되는 자동 침투 테스트 에이전트 프레임워크
AI 기반 자율 침투 테스트 에이전트
USENIX Security 2024에 게재됨
공식 웹사이트: pentestgpt.com »
연구 논문
·
버그 신고
·
기능 요청
자율 CTF 파이프라인은 Claude Code 및 Codex용 백엔드 플러그인이 가능합니다. 대화형 현대화된 레거시 모드(
pentestgpt-legacy)는 더 다양한 제공자를 지원합니다: OpenAI, Anthropic, Google Gemini, DeepSeek, xAI, Qwen, Moonshot, 로컬 Ollama. 자세한 내용은 대화형 멀티-LLM 모드를 참조하세요.
claude) - 로컬 Claude 실행을 위해 설치 및 인증 필요. Claude Code 문서 참조codex) - 로컬 Codex 실행을 위해 설치 및 인증 필요. 아래 Docker 흐름은 두 CLI를 모두 번들로 제공합니다.git clone https://github.com/GreyDGL/PentestGPT.git
cd PentestGPT
make install # uv sync 실행
| 명령어 | 설명 |
|---|---|
make install | 의존성 설치 |
make test | 모든 테스트 실행 |
make check | 린트 + 타입체크 실행 |
# 대상에 대해 실행 (기본값: 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 # 두 CLI가 모두 로그인되어 있는지 확인 (ROUNDTRIP=1 설정 시 실시간 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.
USENIX 2024 논문의 고전적인, 인간-루프 PentestGPT가 pentestgpt-legacy로 보존 및
현대화되었습니다. 이 모드는 추론 / 생성 / 파싱의 세 가지 협력 LLM 세션을 실행하며,
사용자가 대화형으로 세션을 진행하는 동안(next, more, todo, discuss 명령어)
**침투 테스트 작업 트리(PTT)**를 유지합니다. 자율 고정 단계 파이프라인은 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는 항상 최신 레지스트리를 렌더링합니다. 모델 ID 변경 후
--smoke-test를 다시 실행하세요. 현재 스냅샷:
레지스트리는
pentestgpt_legacy/llm/registry.py에 있습니다 (단일 진실 공급원). 모델 추가는 하나의ModelSpec항목으로 이루어집니다. OpenAI 호환 제공자는 하나의 커넥터를 재사용합니다.
PentestGPT는 도구 개선을 위해 익명 사용 데이터를 수집합니다. 이 데이터는 Langfuse 프로젝트로 전송되며 다음을 포함합니다:
민감한 데이터는 수집되지 않습니다 - 명령 출력, 자격 증명 또는 실제 플래그 값은 절대 전송되지 않습니다.
# 명령줄 플래그 사용
pentestgpt --target 10.10.11.234 --no-telemetry
# 환경 변수 사용
export LANGFUSE_ENABLED=false
PentestGPT는 2025년 12월 XBOW 검증 스위트 실험에서 86.5% 성공률(104개 중 90개)을 달성했습니다.
이 숫자는 역사적 연구 결과이며, 현재 pentestgpt-agent의 회귀 보장이 아닙니다.
XBOW 하네스와 결과 아카이브는 참고 전용 연구 아티팩트로 이 제품 저장소 외부에서 유지 관리됩니다. 지원되는 PentestGPT CLI, 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를 참조하세요.
면책 조항: 이 도구는 교육 목적 및 승인된 보안 테스트 전용입니다. 저자는 불법적인 사용을 묵인하지 않습니다. 사용에 따른 책임은 사용자 본인에게 있습니다.
(맨 위로)
make build| 배포 가능 패키지 빌드 |
| 제공자 | 현재 모델 | 레거시 (유지) | 환경 변수 키 |
|---|
| 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; .ai의 경우 MOONSHOT_BASE_URL 설정) |
| Local (Ollama) | ollama:<model> (예: ollama:qwen3) | — | 없음 (OLLAMA_BASE_URL) |