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ファイルを追加することで拡張可能です。 - 3つの操作モード –
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 Webディレクトリ
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のissue(ターゲットタイプ、失敗の説明、findings.md の抜粋を含めてください)やプルリクエストを通じての貢献を歓迎します。コードベースはEffectライブラリを使用してTypeScriptで記述されています。
ライセンス
MIT © 2024‑2026 s0ld13rr.
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト