MCP Server for Breaking Shyet - Diclaimer - This is a DEVKIT について
Astro V2 は、LLM を用いたペネトレーションテスト向けの MCP サーバーで、38 個の Kali ツールをスコープ制限、エンゲージメント追跡、構造化出力とともに提供します。対象に対する明示的な許可を得たセキュリティテスト担当者向けです。
主な機能
- 0138 個の Kali ツールを MCP ツールとして提供
- 02CIDR とドメインのallowlistによるスコープ制限
- 03エンゲージメント単位の SQLite ベースの検出記録
- 04SARIF や HTML 形式のレポート出力
- 05streamable-http と stdio のトランスポート対応
活用シーン
- 01許可を得た診断における偵察と脆弱性スキャン
- 02CI 連携のための SARIF 形式の結果出力
- 03隔離された検証環境での攻撃チェーン分析の練習
MCP 対応
本プロジェクトは MCP サーバーとして動作し、Kali ツールのラッパー、エンゲージメント追跡、レポート出力を MCP 互換クライアントに公開します。API キーまたは OIDC による認証にも対応します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
http://10.10.10.10claude mcp add --transport http project_astro http://10.10.10.10{"mcpServers":{"project_astro":{"type":"http","url":"http://10.10.10.10"}}}Cursor で開く{"servers":{"project_astro":{"type":"http","url":"http://10.10.10.10"}}}VS Code で開く{"mcpServers":{"project_astro":{"type":"http","url":"http://10.10.10.10"}}}{"mcpServers":{"project_astro":{"serverUrl":"http://10.10.10.10"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
Project Astro V2 - 免責事項 - これは開発キットです
LLM 主導のペネトレーションテストのためのインテリジェンスレイヤーです。38 個の Kali ツールラッパー、エンゲージメント追跡、スコープ適用、あらゆる MCP 対応クライアント向けの構造化出力を備えた MCP サーバーとして提供されます。
これは開発キットです。 所有している、またはテストの明示的な許可を得ているターゲットに対してのみ使用してください。
V1 からの変更点
V1 は、Claude Desktop と kali_api_server.py プロセス間で JSON をやり取りする Flask プロキシでした。動作はしていましたが、アーキテクチャは脆弱でした。サーバーが 2 つあり、状態管理も安全対策もなく、10 個のツールが HTTP エンドポイントにハードコードされていました。
V2 は一から書き直されています。
| V1 | V2 | |
|---|---|---|
| アーキテクチャ | Flask API + MCP shim(2 プロセス) | 単一の FastMCP サーバー(mcp SDK) |
| トランスポート | HTTP のみ | Streamable-HTTP または stdio |
| ツール | 1 ファイル内に 10 個 | 38 個のラッパー(+ カスタムスクリプト実行機能)。それぞれ src/astro/tools/ に配置 |
| ツールの検証 | なし — シェルに生の文字列を渡す | Pydantic ベースの検証、シェルメタ文字のブロック、ブロック対象フラグのリスト |
| スコープの適用 | なし | YAML 設定による CIDR + ドメインの許可リスト。すべてのツール呼び出しをチェック |
| レート制限 | なし | ツールごとの非同期セマフォ |
| 認証 | なし | API キー + OIDC に対応 |
| エンゲージメント追跡 | なし | エンゲージメントごとに分離された、SQLite ベースの検出結果記録機能 |
| 出力の解析 | 生の stdout | nmap、sqlmap、wpscan、nuclei、subfinder などの構造化パーサー |
| レポート | なし | SARIF、HTML、Obsidian vault へのエクスポート、修正方法のマッピング |
| インテリジェンス | なし | CVE コリレーター(NVD API)、攻撃グラフビルダー(NetworkX)、方法論トラッカー |
| CLI | run.py(サーバーを 2 つ起動) | astro serve、astro ollama、astro tui、astro version |
| パッケージング | requirements.txt + venv | pyproject.toml、pip install . でインストール可能 |
| コンテナー | なし | マルチステージ Kali Linux Dockerfile、ラボ環境向けの docker-compose |
| LLM 対応 | Claude Desktop のみ | あらゆる MCP クライアントに対応。ネイティブ Ollama ブリッジおよび OpenAI 互換ブリッジも利用可能 |
| テスト | なし | pytest スイート(単体 + 統合)、ruff、mypy strict |
新しいツール(V2 で追加)
偵察:amass、subfinder、ffuf、whatweb、dnsrecon、theharvester、nuclei
エクスプロイト:searchsploit、crackmapexec、hashcat、responder、smbclient、evil-winrm
Impacket スイート:secretsdump、psexec、wmiexec、kerberoast、getnpusers、getst、ticketer
侵害後:linpeas、winpeas、bloodhound、chisel、netcat、msfvenom
トンネリング/C2:burp(プロキシ統合)、certipy(AD CS 攻撃)
拡張機能:custom_script(タイムアウト + サンドボックス付きの任意の bash/python)
削除されたもの
kali_api_server.py— 不要になりました。ツールを直接実行しますrun.py—astroCLI に置き換えられましたrequirements.txt—pyproject.tomlに置き換えられましたsetup.sh—pip install .または Docker に置き換えられました
クイックスタート
Docker(推奨)
export API_KEY="$(python3 -c 'import secrets; print(secrets.token_urlsafe(32))')"
docker compose up --build
サーバーは Streamable-HTTP トランスポートを使用して http://localhost:8080 で起動します。MCP クライアントは、設定済みのキーを X-API-Key ヘッダーで送信する必要があります。38 個すべての Kali ツールがイメージにプリインストールされています。
Docker ラボ(ターゲット付き)
export API_KEY="$(python3 -c 'import secrets; print(secrets.token_urlsafe(32))')"
docker compose -f docker-compose.lab.yml up --build
スコープが事前設定された、分離ネットワーク 172.28.0.0/24 上で Astro と Metasploitable2 ターゲットを起動します。公開される Astro ポートは引き続きホストのループバックのみで利用できます。
ローカルインストール
python3 -m venv .venv && source .venv/bin/activate
pip install ".[dev,reporting]"
astro serve --port 8080
デフォルトの HTTP バインドはループバックのみで、ローカル開発ではネットワーク認証なしで実行できます。ループバック以外への HTTP バインドには API_KEY または OIDC の設定が必要です。設定がない場合、起動は拒否されます。ホストに Kali ツールがインストールされている必要があります。
HTTP の起動とリクエスト認証ポリシーについては、docs/HTTP_SECURITY.md を参照してください。
使用方法
MCP サーバー(デフォルト)
astro serve --transport streamable-http --port 8080
API_KEY="replace-with-a-strong-key" astro serve --transport streamable-http --host 0.0.0.0 --port 8080
astro serve --transport stdio # for Claude Desktop / Claude Code
任意の MCP クライアントを http://localhost:8080 に接続するか、クライアント設定で stdio を使用して接続してください。
{
"mcpServers": {
"astro": {
"command": "astro",
"args": ["serve", "--transport", "stdio"]
}
}
}
Ollama ブリッジ(オフライン/ローカル LLM)
astro ollama --model llama3 --scope config/lab_scope.yaml
ローカルの Ollama インスタンスを使用して、ツール呼び出しに対応した対話型チャットセッションを実行します。
ターミナル UI
astro tui --target 10.10.10.10 --engagement "HTB-Box"
ツールの出力をリアルタイムで表示し、手法の追跡やエンゲージメントの管理を行える、高機能なターミナルインターフェースです。
スコープの適用
ツールがアクセスできる対象を制限するには、YAML スコープファイルを作成します。
scope:
allowed_cidrs:
- "10.10.10.0/24"
allowed_domains:
- "target.htb"
excluded_targets: []
tool_restrictions:
hydra:
enabled: true
max_threads: 4
service_whitelist: ["ssh", "http"]
sqlmap:
risk_level: 2
astro serve --scope config/scope.yaml
すべてのツール呼び出しでは、実行前に対象がスコープ内かどうかを検証します。スコープ外の対象は拒否されます。
ツール(38)
偵察
| ツール | 説明 |
|---|---|
nmap | 構造化された出力の解析に対応したネットワークスキャナー |
gobuster | ディレクトリ/DNS/仮想ホストのブルートフォースツール |
dirb | Web コンテンツスキャナー |
nikto | Web サーバーの脆弱性スキャナー |
wpscan | WordPress の脆弱性スキャナー |
enum4linux | Windows/Samba の列挙ツール |
subfinder | パッシブなサブドメイン検出ツール |
amass | 攻撃対象領域マッピングツール |
ffuf | Web ファジングツール |
whatweb | 技術スタックのフィンガープリント取得ツール |
dnsrecon | DNS 偵察ツール |
theharvester | OSINT によるメールアドレス/サブドメイン収集ツール |
nuclei | テンプレートベースの脆弱性スキャナー |
エクスプロイト
| ツール | 説明 |
|---|---|
sqlmap | DB 列挙機能を備えた SQL インジェクションテストツール |
metasploit | エクスプロイトフレームワーク(msfconsole) |
hydra | ネットワークログインのブルートフォースツール |
john | パスワードクラッカー |
hashcat | GPU アクセラレーション対応のパスワードクラッカー |
searchsploit | Exploit-DB のローカル検索ツール |
crackmapexec | ネットワークプロトコル攻撃ツール |
responder | LLMNR/NBT-NS/mDNS ポイズニングツール |
smbclient | SMB クライアント |
evil-winrm | WinRM シェル |
Impacket スイート
| ツール | 説明 |
|---|---|
impacket_secretsdump | SAM/LSA/NTDS の認証情報抽出 |
impacket_psexec | SMB 経由のリモートコマンド実行 |
impacket_wmiexec | WMI 経由のリモートコマンド実行 |
impacket_kerberoast | SPN ベースの Kerberos チケット抽出 |
impacket_getnpusers | AS-REP ロースティング |
impacket_getst | サービスチケットのリクエスト |
impacket_ticketer | シルバーチケット/ゴールデンチケットの偽造 |
ポストエクスプロイト
| ツール | 説明 |
|---|---|
linpeas | Linux 権限昇格スキャナー |
winpeas | Windows 権限昇格スキャナー |
bloodhound | Active Directory の関係マッピングツール |
msfvenom | ペイロード生成ツール |
netcat | ネットワーク用の万能ツール |
chisel | HTTP 経由の TCP/UDP トンネル |
certipy | AD Certificate Services 攻撃ツール |
burp | Burp Suite プロキシ統合 |
その他
| ツール | 説明 |
|---|---|
custom_script | タイムアウト付きサンドボックス内で任意の bash/python を実行 |
エンゲージメントの追跡
create_engagement("HTB-Devvortex") → engagement ID
└─ nmap_scan(...) → finding recorded
└─ nikto_scan(...) → finding recorded
└─ sqlmap_scan(...) → finding recorded
get_engagement_summary() → all findings + metadata
export_to_obsidian("~/Vault/HTB") → interlinked markdown notes
検出結果は SQLite に保存されます。CI 連携用に SARIF 形式で、またはクライアント向けレポート用に HTML 形式でエクスポートできます。
プロジェクト構成
src/astro/
├── __main__.py CLI entry point (serve, ollama, tui, version)
├── core/
│ ├── executor.py Shell command executor with timeout + sandboxing
│ ├── scope.py CIDR/domain scope enforcer
│ ├── engagement.py SQLite-backed engagement + finding manager
│ ├── rate_limiter.py Per-tool async rate limiting
│ ├── auth.py API key + OIDC authentication
│ ├── validators.py Input validation (shell metachar blocking, flag filtering)
│ └── parallel.py Concurrent tool execution
├── tools/
│ ├── base.py BaseTool ABC (validate → build_command → execute → parse)
│ ├── registry.py Tool registry with category filtering
│ ├── nmap.py ... 38 tool wrappers, one per file
│ └── nuclei.py
├── parsers/ Structured output parsers (nmap XML, sqlmap, wpscan JSON)
├── intel/
│ ├── cve_correlator.py NVD API CPE→CVE lookup
│ ├── attack_graph.py NetworkX-based attack path modeling
│ └── methodology.py Phase tracker (recon → exploit → post-exploit)
├── server/
│ ├── mcp_server.py FastMCP server (all tool + engagement endpoints)
│ ├── ollama_bridge.py Native Ollama chat with tool calling
│ ├── openai_bridge.py OpenAI-compatible API bridge
│ └── config.py Environment-based config loader
├── reporting/
│ ├── sarif.py SARIF 2.1.0 export
│ ├── html_report.py Standalone HTML report generator
│ ├── obsidian.py Obsidian vault export (interlinked notes)
│ └── remediation.py CWE → remediation mapping
├── observability/
│ ├── logging.py structlog-based structured logging
│ └── metrics.py Execution metrics tracking
└── tui/
├── app.py Textual-based terminal UI
└── widgets.py Custom TUI widgets
環境変数
| 変数 | デフォルト | 説明 |
|---|---|---|
ASTRO_HOST | 127.0.0.1 | サーバーのバインドアドレス |
ASTRO_PORT | 8080 | サーバーのリッスンポート |
ASTRO_TRANSPORT | streamable-http | MCP トランスポート(streamable-http または stdio) |
ASTRO_DB_PATH | ~/.astro/engagements.db | SQLite データベースのパス |
ASTRO_SCOPE_CONFIG | — | スコープ YAML 設定ファイルのパス |
ASTRO_DEBUG | false | デバッグログを有効にします |
API_KEY | — | 認証アクセス用の API キー |
開発
pip install ".[dev]"
pytest # run tests
ruff check src/ tests/ # lint
mypy src/ # type check
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。