
지속적인 엥게이지먼트 상태를 유지하며 다중 에이전트 정찰, 익스플로잇, 사후 익스플로잇 및 보고를 오케스트레이션하는 자율형 AI 침투 테스트 에이전트
터미널에서 사용하는 AI 침투 테스트 에이전트.
멀티 에이전트 아키텍처 • 공격 상태 추적 • 20개 이상의 LLM 제공자
PentestCode는 터미널용 자율 침투 테스트 에이전트입니다. 대상을 지정하면 도구를 실행하고, 출력을 읽고, 네트워크에 대한 그림을 업데이트하고, 다음에 무엇을 할지 결정합니다 — 마치 운영자가 하는 것처럼. 코드 편집에 초점을 맞춘 OpenCode(MIT)의 하드 포크로, 공격 보안(offensive security)용으로 재구축되었습니다.
베타 — 실제 침투 테스트와 CTF에서 잘 작동하지만, 거친 부분이 있을 수 있습니다. 문제가 발생하면 이슈를 등록해 주세요. 그래야 이 도구가 더 나아집니다.
지시 하나를 넣으면, 전체 공격 체인이 나옵니다:
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
ai-sdk를 통해 20개 이상의 제공자를 지원합니다 — Anthropic, OpenAI, Google, Azure, AWS Bedrock, Ollama 등.
PentestCode를 채팅 창에 붙여넣은 침투 테스트 프롬프트와 차별화하는 두 가지는 에이전트 팀과 그들이 공유하는 메모리입니다.
이 설계는 HPTSA 연구의 전략가-조정자(strategist-coordinator) 모델을 따릅니다 — 단일 에이전트 대비 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(리포터), 그리고 컨텍스트 압축 및 세션 관리를 위한 숨은 에이전트.
스캐너가 포트를 발견하면 열거자가 즉시 확인합니다 — 모든 에이전트가 하나의 구조화된 **공격 상태(engagement state)**를 읽고 쓰기 때문입니다:
상태는 세션을 넘어 유지됩니다. 터미널을 닫았다가 다음 날 돌아오면 에이전트는 중단했던 지점부터 다시 시작합니다. 그와 함께 사람이 읽을 수 있는 findings.md가 모든 취약점, 자격 증명, 획득한 접근 권한을 타임스탬프와 함께 기록합니다 — tail -f로 공격이 전개되는 과정을 지켜볼 수 있습니다.
bash 외에도 18개의 내장 침투 테스트 도구가 있습니다. 파서 도구는 필수입니다. nmap 실행 후 에이전트는 XML을 수동으로 grep하는 대신 nmap_parse에 출력을 파이프해야 하며, 그래야 모든 발견 사항이 공격 상태에 반영됩니다.
19개의 선별된 지식 팩. 관련이 있을 때만 컨텍스트를 소모하도록 요청 시 로드됩니다:
스킬은 일반 마크다운입니다. skills 디렉터리에 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를 통한 더 많은 제공자.
실제 사용에서 나온 버그 보고가 가장 가치 있는 기여입니다. CTF 박스, HTB 머신, 또는 승인된 침투 테스트에서 PentestCode를 실행하고, 문제가 발생하면 — 무한 루프에 빠지거나, 명백한 경로를 놓치거나, 도구 출력에서 멈추거나, 토큰을 낭비하는 경우 — 다음을 포함해 이슈를 등록해 주세요:
findings.md 및/또는 관련 세션 출력기능 요청과 PR도 환영합니다. 코드베이스는 Effect 라이브러리 기반의 TypeScript입니다 — 아키텍처는 CLAUDE.md를 참조하세요.
MIT — LICENSE 참조.
OpenCode의 하드 포크 • 공격 보안용으로 제작 • 자체 호스팅 및 오픈 소스
| 단계 | 에이전트가 수행하는 작업 |
|---|
| 스캔 | nmap -sS -p-로 열린 포트 7개를 찾고 XML을 파싱하여 바로 공격 상태(engagement state)에 반영 |
| 인식 | 88 + 389 포트 → 도메인 컨트롤러. 세 개의 열거 도구를 병렬로 실행 (SMB, LDAP, HTTP) |
| 열거 | Null SMB 세션 → 쓰기 가능한 공유 폴더. LDAP → 사용자 목록. Gobuster → 웹 디렉터리 |
| 공격 | AS-REP roast → 크랙 가능한 해시 → 첫 번째 유효한 자격 증명 |
| 스프레이 | 해당 자격 증명을 알려진 모든 호스트의 SMB, WinRM, LDAP 및 RDP에 스프레이 |
| 익스플로잇 | WinRM 발판 확보 → 사후 익스플로잇 에이전트가 SAM / LSA / DPAPI 덤프 |
| 결과 | 도메인 관리자 해시 확보 — 모든 단계가 증거 체인과 함께 기록됨 |
| 도구 | 기능 |
|---|
nmap_parse | nmap XML 파싱 → 호스트/서비스 자동 입력 |
nuclei_parse | Nuclei JSON 파싱 → 심각도가 포함된 취약점 생성 |
cme_parse | NetExec 출력 파싱 → 자격 증명/접근 권한/호스트 업데이트 |
gobuster_parse | 디렉터리 무차별 대입 출력 파싱 → 발견 사항 분류 |
bloodhound_parse | SharpHound JSON 파싱 → AD 모델 구축 |
sqlmap_parse | sqlmap 출력 파싱 → 주입 지점 추출 |
xss_detect | 반사형/저장형 XSS 응답 분석 |
jwt_analyze | JWT 디코딩, alg:none/약한 HMAC/만료 여부 확인 |
cred_spray | 발견된 모든 서비스에 대한 자격 증명 스프레이 계획 |
scope_check | CIDR/와일드카드 범위(scope) 검증 |
attack_path_suggest | 관계 그래프를 통한 비용 기반 경로 탐색 |
tunnel_manage | SSH/chisel/ligolo 터널 계획, 활성 세션 추적 |
phase_control | 품질 게이트가 포함된 단계 관리 |
report_gen | 마크다운/JSON 침투 테스트 보고서 생성 |
state_update | 발견 사항 기록 (30개 이상의 변경 유형, 배치 모드) |
state_query | 공격 상태 조회 (20개 이상의 조회 유형) |
| 명령어 | 기능 |
|---|
/status | 공격 대시보드 — 호스트, 취약점, 자격 증명, 단계 |
/targets | 호스트 및 서비스 테이블 |
/vulns | 심각도별 발견 사항 |
/creds | 발견된 자격 증명 |
/scope | 대상 범위(scope) 보기/편집 |
/phase | 단계 관리 |
/mode | auto / free / guided 전환 |
/pause | 발견 사항 시 일시 중지 (never / always / checkpoint) |
/report | 침투 테스트 보고서 생성 |