
pentest-ai v1.4.0
모든 발견을 입증하는 오픈소스 AI 펜테스터. 머신 오라클이 각 익스플로잇을 재실행하며, 검증된 버그는 직접 재현할 수 있는 증명 캡슐과 함께 제공됩니다.

웹사이트 · 빠른 시작 · 버그 바운티 · 검증 · 문서 · 이슈
Pentest-AI는 입증된 발견 사항과 추측을 분리하는 오픈소스 AI 모의해킹 및 버그 바운티 도구입니다. AI 클라이언트나 모델을 실제 모의해킹 워크플로에 연결하여 웹 애플리케이션을 조사하고, 취약점을 발견하고 재현하며, 머신 오라클을 사용해 익스플로잇이 실제로 작동하는지 검증합니다. 어떤 오라클도 입증할 수 없는 발견 사항은 후보(candidate)로 표시된 채 남고, 검증된 발견 사항은 이를 입증한 요청과 응답을 함께 담습니다.
MCP(Claude Code, Codex, Cursor, VS Code)를 통해, CLI에서, 또는 CI/CD에서 사용할 수 있습니다. 모델이 조사를 주도하지만, 발견 사항이 검증된 판정을 받을지는 독립적인 오라클이 결정하므로, 모델의 추측이 결과로 포장되어 전달되는 일은 없습니다.
승인된 버그 바운티를 위해 설계되었습니다: 프로그램별 프로필 하나에 범위, 명시된 요율, 연구자 핸들이 담기며, 드라이런(dry run)은 아무것도 전송하기 전에 계획을 보여주고, 보고서 초안은 검증된 발견 사항으로만 작성됩니다. 버그 바운티 워크플로로 이동 →
본인이 소유하거나 평가에 대한 명시적 승인을 받은 시스템만 테스트하십시오. 작업을 실행하기 전에 허용 사용 정책과 이용 약관을 읽어 보십시오.
빠른 시작
권장: Codex 또는 Claude Code
Python 3.10 ~ 3.14를 사용하고 먼저 pipx를 설치하십시오. pipx ensurepath를 실행하고 필요하면 터미널을 다시 여십시오. pipx는 Pentest-AI의 의존성을 격리하고 폴더 전반에서 명령을 사용할 수 있게 해줍니다.
pipx install ptai
ptai setup --mcp
먼저 AI 클라이언트의 CLI를 설치하세요. 설정 과정에서는 감지된 모든 지원 클라이언트에 연결하기 전에 확인을 요청하며, Codex와 Claude Code가 모두 설치되어 있으면 둘 다 포함됩니다. 기존 등록은 그대로 유지됩니다. 이후 클라이언트를 재시작하세요.
마법사는 사용자 전역 설정을 사용합니다. 클라이언트를 설치하거나 로그인시키거나,
모델을 다운로드하거나 Ollama를 구성하지는 않습니다. 모델은 AI 클라이언트가 제공하며,
MCP 서버에서 별도의 모델 API 키를 요구하지 않습니다. 변경 사항을 미리 보려면
ptai setup --mcp --dry-run을 사용하세요. Codex .codex/config.toml 및 Claude Code
.mcp.json 설정 방법은 단일 클라이언트 및 저장소별 설정을
참조하세요.
업그레이드에는 pipx upgrade ptai를 사용하세요. 이미 활성화된 가상 환경에서는
python -m pip install --upgrade ptai도 지원됩니다. AI 클라이언트에 등록한 후에도
해당 환경을 계속 사용할 수 있도록 유지하세요.
대안: Ollama 및 로컬 모델
위와 같이 Pentest-AI를 설치하되, 이 경로에서는 MCP 설정을 건너뛰세요.
Ollama를 설치하고 시작한 다음, 도구 호출을
지원하는 모델을 pull하세요. 정확한 설치 이름을 확인하려면 ollama list를 사용하세요.
export PENTEST_AI_LLM_PROVIDER=ollama
export PENTEST_AI_MODEL="your-installed-model"
ptai start https://your-authorized-target.example --no-sync
PowerShell에서:
$env:PENTEST_AI_LLM_PROVIDER = "ollama"
$env:PENTEST_AI_MODEL = "your-installed-model"
ptai start https://your-authorized-target.example --no-sync
실행 전에 플레이스홀더를 교체하세요. 로컬 모델은 클라우드 API 키가 필요하지 않습니다. 모델 품질과 사용 가능한 메모리가 결과에 영향을 미칩니다. 엔드포인트 구성은 모델 가이드를 참조하세요.
번들 데모 사용해 보기
API 키나 외부 대상이 필요하지 않습니다.
pipx install ptai
ptai demo
데모는 번들로 제공되는 취약한 애플리케이션을 테스트하고, 해당 증명 캡슐에서 발견된 결과를 재현하며, 강화된 경로를 검사합니다. 실제 작업을 구성하기 전에 증거 워크플로를 살펴보세요.
기타 모델 제공자
독립형 클라우드 모델과 선택적 스캐너 종속성에 대해서는 설치 가이드와 제공자 가이드를 참조하세요. API 키는 소스 관리에 포함하지 마세요.
버그 바운티 자동화
버그 바운티 모드는 자동화된 테스트를 허용하는 프로그램을 위한 것입니다. 프로그램마다 범위, 명시된 속도, 연구원 핸들을 포함한 프로필을 하나씩 작성합니다. 그런 다음 --program이 이를 모든 요청에 적용하며, --dry-run은 아무것도 전송하지 않고 계획만 출력합니다.
# ~/.pentest-ai/programs/acme.toml
platform = "hackerone"
handle = "acme"
researcher = "your-h1-username" # sent on every request in X-Bug-Bounty
rps = 5.0 # the rate the program states
scope = ["*.acme.com", "api.acme.com"]
excluded = ["status.acme.com"]
scanners_allowed = true
allow_race = false
ptai start https://api.acme.com --program acme --dry-run # sends nothing
ptai start https://api.acme.com --program acme --auto-auth
ptai bounty-report <engagement-id> --program acme --output-dir drafts/
--program 사용 시:
- 모든 요청은 외부 도구를 포함하여 프로그램의 속도 제한을 준수합니다. 속도 제한의 몫을 준수할 수 없는 도구는 건너뛰며, 스캔은 이를 명시합니다.
- 범위는 프로필에서만 가져옵니다. 범위를 벗어난 요청은 거부되며, 제외 항목이 와일드카드보다 우선합니다.
- 각 요청은
X-Bug-Bounty헤더 또는 프로그램이 지정한 헤더(PTAI_BOUNTY_HEADER_NAME)에 연구자 핸들을 담습니다. - gobuster 및 ffuf와 같은 워드리스트 도구는 거부됩니다. 두 가지 내장 탐색 프로브는 여전히 가능성 높은 경로 목록을 시도하며, 약 500건의 요청을 보냅니다.
- 대상을 소진시키거나 크래시시키기 위해 만들어진 페이로드는 전송되지 않습니다. 다른 사용자의 계정이나 공유 상태를 변경하는 프로브는 실행되지 않습니다. 경쟁 조건(race-condition) 버스트는 프로필에서
allow_race = true로 설정한 경우에만 실행됩니다. 429와Retry-After는 준수됩니다. 속도가 느려지는 대상은 더 낮은 속도를 받으며, 계속 저하된 상태가 유지되는 대상은 사유가 기록된 채 스캔이 중단됩니다.- 스캐너를 금지하는 프로그램은 입력한
yes가 필요합니다. 스캔 시 안전 항구(safe harbour)가 무효화될 수 있기 때문입니다.
ptai bounty-report는 오라클로 검증된 발견 사항만으로 보고서 초안을 작성하며, 재현 단계는 오라클 자체의 요청에서 가져옵니다. 각 항목을 직접 재현하고 직접 제출하십시오. ptai bounty import는 프로그램에서 내보낸 범위 파일을 프로필의 허용 및 제외 항목으로 변환합니다.
소요 시간은 요청 수를 속도로 나눈 값입니다. 테스트 애플리케이션에서 3 rps로 전체 실행하면 약 8,700건의 요청과 51분이 소요되며, 10 rps 실행에서 발견되는 모든 심각 및 높음 등급을 발견합니다. 10 rps에서는 약 6,600건의 요청과 11분이 소요되었으며, 이는 느린 프로브가 낮은 속도에서 완료될 여유를 갖기 전에 측정한 값입니다.
도착 시점 기준으로 집계했을 때, 외부 도구가 보낸 요청을 포함하여 3 rps 또는 10 rps에서 선언된 속도를 초과한 초는 없었습니다.
검증 작동 방식
- 후보를 찾습니다. 프로브 또는 스캐너가 조사할 가치가 있는 동작을 식별합니다.
- 재현하고 대조군을 확인합니다. 명명된 오라클이 익스플로잇을 반복하고, 취약점을 보여서는 안 되는 대조군과 비교합니다.
- 증거를 보존합니다. 검증된 발견 사항은 오라클, 오라클이 보낸 요청, 그리고 오라클이 판단한 응답을 기록합니다.
ptai retest는 대상을 다시 스캔하고ptai diff는 변경된 내용을 보여줍니다.ptai demo는ptai replay가 다시 검사하는 이식 가능한 증명 캡슐을 보여줍니다.
예를 들어, 신뢰 헤더 우회는 공격 헤더와 함께 권한 있는 콘텐츠를 반환하고, 헤더 없이는 접근을 거부해야 합니다. 모든 요청에 HTTP 200으로 응답하는 서버는 충분한 증거가 아닙니다.
모델은 검증된 판정을 내릴 수 없습니다. 제3자 스캐너 출력은 오라클이 독립적으로 입증할 때까지 검증되지 않은 상태로 남습니다. 지원되는 검증 레시피가 없는 발견 사항은 후보로 남습니다.
검증된 판정은 테스트된 조건에 적용됩니다. 애플리케이션 전체가 안전하다는 의미는 아닙니다. 증명 캡슐은 서명되지 않습니다. 검사를 다시 실행하는 것이 신뢰 메커니즘입니다.
할 수 있는 일
| 워크플로 | Pentest-AI가 제공하는 것 |
|---|---|
| 웹 애플리케이션 조사 | 인젝션, 접근 제어, 요청 처리 및 기타 애플리케이션 취약점에 대한 프로브 |
| 버그 바운티 참여 수행 | 스캔을 프로그램의 범위와 속도에 맞춘 후 검증된 발견 사항으로 보고서 초안 작성 (가이드) |
| AI 클라이언트로 작업 | 참여, 조사 및 검증을 위한 MCP 도구 |
| 발견 사항 재현 | 오라클 결과 및 재생 가능한 증명 캡슐 |
| 수정 사항 확인 | 업데이트된 대상에 대해 기록된 검사 재실행 |
| 팀에 보고 | 기존 엔지니어링 워크플로를 위한 보고서 및 SARIF 출력 |
| 참여 데이터를 로컬에 유지 | 발견 사항을 SQLite로 사용자 머신에 저장 |
프로브와 오라클에 따라 커버리지가 달라집니다. 선택적 스캐너는 자체 바이너리가 필요하며, 일부 통합은 구조화된 결과가 아닌 원시 출력을 제공합니다. 사용 중인 버전에 대해서는 문서와 변경 로그를 참조하십시오. main에는 아직 릴리스되지 않은 작업이 포함되어 있을 수 있습니다.
검증된 발견 사항을 CI에 반영하기
CI 환경에서 모델 제공자, 승인된 대상, 최초 실행 동의를 구성하십시오. 시크릿은 CI 제공자의 시크릿 저장소에 보관하십시오.
ptai start https://your-authorized-target.example --ci --fail-on verified --no-sync
검증된 발견 사항을 실행에서 얻은 참여 ID를 사용하여 내보냅니다:
ptai export YOUR_ENGAGEMENT_ID --sarif pentest.sarif
--sarif는 ptai start 옵션이 아니라 내보내기 옵션입니다. 실패한 빌드에 대한 증거가 필요하다면 발견 게이트가 실패하더라도 참여 ID를 유지하고 내보내기를 실행하십시오. 결과 파일은 CI 제공업체의 SARIF 통합을 통해 업로드하십시오.
증거, 벤치마크 및 한계
벤치마크 발견, 챌린지 완료 및 오라클 검증 발견은 서로 다른 측정값입니다. 이 보고서들은 결과 이면의 버전, 대상 및 방법론을 기록합니다: