Skip to main content
Glama
marcmunoz-uno

Kali Factory MCP Server

Kali Factoryの手順

Kali LinuxのOSINTツールへのアクセスを必要とするAIエージェントのための、より安全なホストローカル制御プレーン。

このパッケージはGPU Factoryの形状(型付きジョブ送信、ベアラ認証、キューイングされたワーカー実行、許可リスト化されたDockerイメージ実行)を模倣していますが、適用先は別の問題です。それは、エージェントに認証なしのシェルを与えることなく、Kaliの偵察およびトラフィック分析ツールへのアクセスを分散させることです。

  • FastAPI制御API

  • Redisキュー

  • RQワーカー

  • ハードニングされたKaliイメージに対するDockerファーストのコンテナ実行

  • 生のシェルではなく、型付きジョブ(osint、トラフィックキャプチャ、JS分析、リーク調査)

  • ベアラトークン認証

  • MCP対応エージェントのためのローカルMCPサーバー

  • 実行間で偵察結果を保持するためのオプションのChromaDBサイドカー

なぜこれが存在するのか

Kaliには数百のツールが同梱されており、その多くは正当な競合インテリジェンスやセキュリティ調査に役立ちますが、エージェント主導の自動化には適さないものもあります。素朴なアプローチ(エージェントをKaliシェルに放り込んで、あとは勝手にやらせる)では、3つの問題が発生します。

  1. エージェントが、自動化コンテキストから決して到達可能であってはならないエクスプロイトフレームワーク(metasploitsqlmaphashcatjohnaircrack-ngexploitdbなど)を含む、すべてのツールにアクセスできてしまう。

  2. ツールの呼び出しが非構造化のシェル文字列であり、引数インジェクションのバグが発生しやすく、クリーンな監査が不可能である。

  3. エージェントが何をするかについてレート制限、時間制限、出力予算がないため、1つの誤作動したエージェントがターゲットを攻撃したり、ディスクを埋め尽くしたりする可能性がある。

このパッケージは、すべての呼び出し可能なツールがマニフェストで宣言され、すべての引数がPydanticによって検証され、すべてのコンテナ実行がイメージプレフィックスによって許可リスト化され、すべての呼び出しにベアラトークンが必要となる型付きジョブAPIを通じてKaliを公開することで、これら3つの問題をすべて解決します。

コアとなる安全性の特性

  • shell=True を使用しない

  • 汎用的な「任意のコマンドを実行する」エンドポイントがない

  • ジョブは明示的なスキーマで検証される

  • コンテナ実行はイメージプレフィックスによって許可リスト化される

  • コンテナ内でのツール実行はバイナリ名によって許可リスト化される

  • APIにはベアラトークンが必要

  • ワーカーとAPIは別々のプロセス

  • エクスプロイト/認証情報クラッキング/ワイヤレスツールはイメージビルド時に明示的に削除される

  • ネットワークに触れるすべてのツールで送信ログを記録

ジョブタイプ

  • kali_probe

    • Kaliコンテナに到達可能であり、ツール許可リストが損なわれていないことを検証する

  • osint_run

    • 許可リストから型付きOSINTツール(amass、whatweb、gobuster、dnsenumなど)を構造化された引数で実行する

  • traffic_capture

    • 制限時間内に mitmdump を実行し、キャプチャファイルを返す

  • js_analysis

    • JavaScript URLに対して linkfinder / secretfinder / arjun を実行する

  • leak_scan

    • GitHub組織/リポジトリに対して trufflehog を実行し、コミットされた認証情報を探す

  • subdomain_enum

    • ターゲットドメインに対して amass enum(パッシブソースのみ)を実行する

  • web_fingerprint

    • whatweb を実行してターゲットの技術スタックを特定する

  • nuclei_exposures

    • exposures/ テンプレートサブセットのみを使用してターゲットに対して nuclei を実行する

    • cves/vulnerabilities/default-logins/fuzzing/ テンプレートディレクトリは明示的にブロックされる

クイックスタート

  1. 環境変数をコピーする:

cp .env.example .env
./scripts/bootstrap-secrets.sh
  1. APIトークンは以下に保存される:

.secrets/api_token

そして .envKALI_FACTORY_API_TOKEN_FILE を通じてそれを指す。

  1. Redisを起動する:

docker compose up -d redis
  1. Kaliランタイムイメージをビルドする:

docker build -t kali-factory/recon:latest runtimes/kali/
  1. Python環境を作成する:

python3 -m venv .venv
source .venv/bin/activate
pip install -e .
  1. APIを実行する:

./scripts/start-api.sh
  1. ワーカーを実行する:

./scripts/start-worker.sh
  1. MCPサーバーを実行する:

./scripts/start-mcp.sh

リクエスト例

ヘルスチェック:

curl http://localhost:8081/health

Kaliプローブ:

curl -X POST http://localhost:8081/jobs \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"type":"kali_probe"}'

サブドメイン列挙:

curl -X POST http://localhost:8081/jobs \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "type":"subdomain_enum",
    "domain":"example.com",
    "max_runtime_sec": 300
  }'

Webフィンガープリント:

curl -X POST http://localhost:8081/jobs \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "type":"web_fingerprint",
    "url":"https://example.com"
  }'

GitHubリークスキャン:

curl -X POST http://localhost:8081/jobs \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "type":"leak_scan",
    "github_org":"example-org"
  }'

ファイル

  • START_HERE_FOR_AGENTS.md — この制御プレーンを使用するエージェントのための単一エントリーポイントガイド

  • runtimes/kali/Dockerfile — 許可リスト化されたツールがインストールされたKaliコンテナイメージ

  • runtimes/kali/tools.json — 宣言的なツールマニフェスト(許可リスト + 引数テンプレート)

  • scripts/bootstrap-secrets.sh — APIトークンファイルを作成し、権限をロックする

  • scripts/start-api.sh — APIの起動ラッパー

  • scripts/start-worker.sh — ワーカーの起動ラッパー

  • scripts/start-mcp.sh — ローカルMCPサーバーの起動ラッパー

  • scripts/install-user-services.sh — ユーザーレベルのsystemdユニットをインストールする

  • src/kali_factory/api/ — APIサーバー(FastAPI)

  • src/kali_factory/worker/ — RQベースのジョブ実行

  • src/kali_factory/models/ — Pydanticジョブスキーマ

  • src/kali_factory/jobs/ — ジョブタイプごとのハンドラー

  • src/kali_factory/policy/ — 認証、許可リストの強制、レート制限

  • src/kali_factory/mcp/server.py — ローカルKali Factory API上のstdio MCPアダプター

  • compose.yaml — Redis(およびオプションのChromaDB)サイドカー

  • Dockerfile — API/ワーカー用アプリコンテナ

  • .env.example — 必要な設定

  • DEPLOYMENT.md — ホスト固有の実行およびサービスガイダンス

推奨される次のハードニング

  • APIをTailscale、Caddy、またはその他の内部専用ゲートウェイの背後に配置する

  • APIトークンをローテーションする

  • ファイルまたはSQLiteへの監査ログを追加する

  • 明示的なジョブクォータとツールごとのレート制限を追加する

  • ターゲットごとの許可リストを追加する(所有している、またはテストの許可を得ているドメインのみをエージェントが偵察できるようにする)

  • Kaliコンテナで送信ログを記録し、すべての送信リクエストがキャプチャされるようにする

サービスモデル

  • kali-factory-api.service は永続的に実行されるべき

  • kali-factory-worker.service は永続的に実行されるべき

  • MCPサーバーは永続的なサービスとして実行してはならない

  • MCPクライアントはstdio経由でオンデマンドで scripts/start-mcp.sh を生成すべき

他のFactoryパッケージとの関係

Factory

分散するもの

ジョブの例

GPU Factory

CUDA / GPU計算

gpu_probe, run_container --gpus all, python_probe

Kali Factory

OSINT / 偵察ツール

subdomain_enum, web_fingerprint, leak_scan, nuclei_exposures

これら2つのパッケージは同じアーキテクチャ形状(FastAPI + Redis + RQ + ベアラ認証 + 型付きジョブ + 許可リスト化されたDocker実行)を共有しており、重複しないポート(GPU Factoryは 8080、Kali Factoryは 8081)を使用して同じホスト上で共存するように設計されています。

将来の parallel-OS オーケストレーターは、必要なランタイムに一致するFactoryにエージェントのリクエストをルーティングできます。

Kali Factoryではないもの

  • 脆弱性スキャナーではない。 nuclei は含まれていますが、exposures/ テンプレートに限定されています。CVE / エクスプロイト / デフォルトログイン / ファジングテンプレートは明示的にブロックされています。

  • エクスプロイトフレームワークではない。 Metasploit、sqlmap、hashcat、john、aircrack-ng、exploitdb、hydra、medusa、ncrack、nikto、wpscan、responder、impacket、crackmapexecはすべて、ビルド時にランタイムイメージから削除されます。

  • 不正なテストツールではない。 所有している、または明示的なテスト許可を得ているターゲットに対してのみ使用してください。APIはすべてのジョブをログに記録します。悪用は利用者の責任となります。

ライセンス

Apache 2.0(LICENSE を参照)。

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
2Releases (12mo)

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/marcmunoz-uno/Kali-Factory-Instructions'

If you have feedback or need assistance with the MCP directory API, please join our Discord server