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.

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト