s0ld13rr/pentestcode
PentestCode - Multi-agent AI penetration testing system with persistent engagement state, strategic coordination, and parallel autonomous operations.
PentestCode란 무엇인가요?
PentestCode는 터미널에서 실행되는 자율 모의 해킹 어시스턴트입니다. 높은 수준의 목표(예: “gain domain‑admin on 10.10.10.5”)를 입력하면 AI 기반 에이전트 팀이 스캔 및 열거부터 자격 증명 스프레이, 익스플로잇, 사후 보고까지 전체 공격 체인을 조정합니다. 이 프로젝트는 OpenCode 코드 편집 AI의 하드 포크이며, 공격적 보안을 위해 재설계되었습니다.
작동 원리
| 구성 요소 | 역할 |
|---|---|
| 리드 “pentest” 에이전트 | 참여를 작업으로 나누고, 전체 계획을 유지하며, 다음에 무엇을 할지 결정합니다. |
| 전문 하위 에이전트 (정찰, 스캔, 열거, 익스플로잇, AD‑identity, web‑app, 사후 익스플로잇 등) | 특정 도구를 실행하고 출력을 파싱하며, 결과를 공유된 참여 상태에 피드백합니다. |
| 공유 참여 상태 | 호스트, 서비스, 취약점, 자격 증명, 액세스 수준, AD 관계, 네트워크 세그먼트 및 계산된 공격 경로를 저장하는 구조화된 지식 베이스입니다. 세션 간에 지속됩니다. |
| LLM 제공자 계층 | Vercel의 ai-sdk를 통해 20개 이상의 LLM(Anthropic, OpenAI, Google, Azure, Bedrock, Ollama 등)을 사용하여 프롬프트를 생성하고 도구 출력을 해석하며 다음 작업을 결정합니다. |
에이전트는 이 상태를 통해 통신하므로 스캐너가 새 포트를 발견하면 열거자가 즉시 대응할 수 있습니다. 내장된 그래프 모델을 통해 시스템은 비용 최적의 공격 경로(Dijkstra + Yen’s K‑shortest)를 계산할 수 있습니다. 모든 작업은 사람이 읽을 수 있는 findings.md 파일에 기록됩니다.
주요 기능
- 멀티 에이전트 아키텍처 (13개 에이전트)가 작업을 병렬로 실행합니다.
- 지속적인 구조화 상태 (호스트, 서비스, 취약점, 자격 증명, 관계, AD 모델, 네트워크 토폴로지).
- 18개의 내장 파싱 도구 (예:
nmap_parse,bloodhound_parse,cme_parse)가 자동으로 상태를 채웁니다. - **19개의 지식 팩(기술)**이 모의 해킹 단계, 서비스 세부 정보 및 플레이북을 다룹니다. 이는 일반 Markdown 파일이며
SKILL.md파일을 추가하여 확장할 수 있습니다. - 세 가지 운영 모드 –
auto(완전 자율 실행),free(직접 명령 응답),guided(단계별 승인). - 슬래시 명령 (
/status,/vulns,/creds,/report, …)을 통한 실시간 검사 및 제어. - 20개 이상의 LLM 제공자 지원 (
ai-sdk경유). - 단일 바이너리 배포 (Linux/macOS (x64 & arm64)용, 선택적 AUR 패키지 제공).
설치
# npm (바이너리를 가져오는 CLI 래퍼 설치)
npm install -g pentestcode-ai
# 또는 사전 빌드된 바이너리를 다운로드하는 한 줄 스크립트
curl -fsSL https://raw.githubusercontent.com/s0ld13rr/pentestcode/main/install.sh | bash
Arch Linux: paru -S pentestcode-bin
소스에서 빌드 (Bun 필요):
bun install
bun run build --single --skip-embed-web-ui # 바이너리는 packages/opencode/dist/…에 생성됨
빠른 시작
# 선택한 LLM 제공자로 인증
pentestcode auth login
# 대화형 세션 시작
pentestcode
# REPL에 들어가지 않고 단일 명령 실행
pentestcode --prompt "scan 10.10.10.0/24 and enumerate all services"
세션 중에 실시간 상태를 쿼리할 수 있습니다:
/status– 호스트, 취약점, 자격 증명, 현재 단계의 대시보드/vulns– 심각도별 발견 목록/creds– 발견된 자격 증명 표시/report– Markdown/JSON 모의 해킹 보고서 생성
일반적인 워크플로우 예시
you: pentest 10.10.10.5, goal is domain admin
1️⃣ Scan → nmap -sS -p- → 포트가 상태로 파싱됨
2️⃣ Recognize → 도메인 컨트롤러 식별 (포트 88, 389)
3️⃣ Enumerate → SMB 공유 목록, LDAP 사용자 덤프, Gobuster 웹 디렉토리
4️⃣ Attack → AS‑REP roast → 크랙 가능한 해시 → 첫 번째 자격 증명
5️⃣ Spray → SMB, WinRM, LDAP, RDP 전반에 자격 증명 스프레이
6️⃣ Exploit → WinRM 거점 → SAM/LSA/DPAPI 덤프
7️⃣ Result → 도메인 관리자 해시, 모든 단계 기록됨
에이전트는 목표가 달성되거나 중단될 때까지 발견된 모든 호스트에 대해 이 루프를 반복합니다.
구성
사용자별 설정은 ~/.pentestcode/pentestcode.jsonc에 저장됩니다. 모델 선택 예시:
{
"provider": {
"anthropic": { "model": "claude-sonnet-4-20250514" }
}
}
Vercel의 ai-sdk에서 지원하는 모든 제공자를 유사하게 구성할 수 있습니다.
누가 사용해야 하나요?
- 전문 모의 해킹 담당자: AI 어시스턴트를 사용하여 반복적인 단계를 자동화하면서 제어권을 유지하려는 분.
- CTF 참가자: 플래그를 추적하고 다중 대상 참여를 관리하며 다음 단계를 제안하는 도구를 찾는 분.
- 버그 바운티 헌터: 빠른 정찰과 체계적인 열거가 필요한 분.
- 보안 연구원: LLM 기반 공격 자동화 실험에 관심이 있는 분.
기여 및 지원
이 프로젝트는 베타 버전입니다. 버그가 발생할 수 있습니다. GitHub 이슈(대상 유형, 실패 설명, findings.md 발췌 포함) 및 풀 리퀘스트를 통한 기여를 환영합니다. 코드베이스는 Effect 라이브러리를 사용하여 TypeScript로 작성되었습니다.
라이선스
MIT © 2024‑2026 s0ld13rr.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트