Kali MCP Server
Un servidor MCP de Kali Linux que proporciona a los asistentes de IA acceso a herramientas de seguridad.
Documentación
Kali MCP Server
Un servidor MCP (Model Context Protocol) listo para producción que se ejecuta en un contenedor Docker de Kali Linux, proporcionando a los asistentes de IA acceso a 35 herramientas de seguridad que cubren todo el ciclo de vida de la seguridad ofensiva.
Descripción general
Este proyecto proporciona un servidor MCP en contenedor Docker que se ejecuta en Kali Linux, dando a los asistentes de IA (como Claude) acceso a un conjunto completo de herramientas de seguridad y pruebas de penetración. El servidor se comunica mediante Server-Sent Events (SSE) o stdio y permite a la IA ejecutar comandos en un entorno controlado.
Inicio rápido
Construcción y ejecución del contenedor
# Quick start with the helper script
./run_docker.sh
# Or with Docker Compose
docker compose up --build -d
# Or manually:
docker build -t kali-mcp-server .
docker run -p 8000:8000 kali-mcp-server
Comprobaciones de desarrollo
# install dev dependencies
./run_tests.sh install
# individual checks
./run_tests.sh typecheck # pyright
./run_tests.sh lint # ruff check .
./run_tests.sh format # ruff format .
./run_tests.sh test # pytest
./run_tests.sh test-tools # pytest tests/test_tools.py
./run_tests.sh test-session # pytest -k "session"
# run install + typecheck + lint + tests
./run_tests.sh all
Conexión a Claude Desktop
- Edita tu archivo de configuración de Claude Desktop en
~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"kali-mcp-server": {
"transport": "sse",
"url": "http://localhost:8000/sse",
"command": "docker compose up -d"
}
}
}
- Reinicia Claude Desktop
- Prueba con:
/run nmap -F localhost
Herramientas MCP disponibles (35)
Herramientas principales
| Herramienta | Descripción |
|---|---|
run | Ejecuta comandos de shell en el entorno Kali Linux |
fetch | Obtiene y analiza contenido web desde URLs |
resources | Enumera los recursos del sistema disponibles y ejemplos de comandos |
Reconocimiento y escaneo
| Herramienta | Descripción |
|---|---|
port_scan | Wrapper inteligente de nmap con ajustes predefinidos de escaneo (quick, full, stealth, udp, service, aggressive) |
dns_enum | Enumeración DNS exhaustiva con intentos de transferencia de zona |
network_discovery | Reconocimiento y descubrimiento de red en múltiples etapas |
subdomain_enum | Enumeración de subdominios mediante subfinder, amass, waybackurls |
recon_auto | Pipeline de reconocimiento automatizado en múltiples etapas |
Pruebas de aplicaciones web
| Herramienta | Descripción |
|---|---|
vulnerability_scan | Evaluación automatizada de vulnerabilidades con múltiples herramientas |
web_enumeration | Descubrimiento y enumeración de aplicaciones web |
web_audit | Auditoría exhaustiva de seguridad de aplicaciones web |
spider_website | Rastreo y spidering web mediante gospider |
form_analysis | Descubre y analiza formularios web |
header_analysis | Análisis de seguridad de cabeceras HTTP |
ssl_analysis | Evaluación de seguridad SSL/TLS mediante testssl.sh |
Ataques de credenciales y fuerza bruta
| Herramienta | Descripción |
|---|---|
hydra_attack | Pruebas de credenciales por fuerza bruta mediante hydra (SSH, FTP, HTTP, SMB, MySQL, RDP, etc.) |
credential_store | Almacena/recupera credenciales descubiertas vinculadas a sesiones |
Herramientas de payloads y exploits
| Herramienta | Descripción |
|---|---|
payload_generate | Genera payloads con msfvenom (reverse shell, bind shell, meterpreter) |
reverse_shell | Genera one-liners de reverse shell para bash, python, php, perl, powershell, nc, ruby, java |
exploit_search | Busca exploits mediante searchsploit |
Herramientas de codificación y hashes
| Herramienta | Descripción |
|---|---|
encode_decode | Codificación/decodificación en múltiples formatos (base64, URL, hex, HTML, ROT13) |
hash_identify | Identifica tipos de hash con modo Hashcat y búsqueda de formato John |
Enumeración de recursos compartidos
| Herramienta | Descripción |
|---|---|
enum_shares | Enumeración de recursos compartidos SMB/NFS (smbclient, enum4linux, showmount) |
Análisis de salidas
| Herramienta | Descripción |
|---|---|
parse_nmap | Analiza la salida de nmap en texto/XML y la convierte en hallazgos JSON estructurados |
parse_tool_output | Analiza la salida de nikto, gobuster, dirb, hydra o sqlmap |
Evidencia e informes
| Herramienta | Descripción |
|---|---|
save_output | Guarda contenido en archivos con marca de tiempo para la recopilación de evidencia |
create_report | Genera informes estructurados (markdown, text, JSON) |
file_analysis | Analiza archivos (detección de tipo, strings, hashes, metadatos) |
download_file | Descarga archivos desde URLs con verificación de hash |
Gestión de sesiones
| Herramienta | Descripción |
|---|---|
session_create | Crea una nueva sesión de pentest |
session_list | Lista todas las sesiones con metadatos |
session_switch | Cambia entre sesiones |
session_status | Muestra el estado de la sesión actual |
session_delete | Elimina una sesión y su evidencia |
session_history | Muestra el historial de comandos de la sesión actual |
Detalles de las herramientas
port_scan - Wrapper inteligente de Nmap
Ejecuta nmap con ajustes predefinidos de escaneo, generando salida tanto en texto como en XML.
/port_scan target=192.168.1.1 scan_type=quick
/port_scan target=10.0.0.0/24 scan_type=aggressive ports=80,443,8080
Ajustes predefinidos de escaneo:
| Ajuste | Flags de Nmap |
|---|---|
quick | -F -sV |
full | -sS -sV -p- |
stealth | -sS -T2 --max-retries 1 |
udp | -sU --top-ports 100 |
service | -sV --version-intensity 5 -sC |
aggressive | -A -T4 |
dns_enum - Enumeración DNS
Consulta todos los tipos de registros DNS e intenta transferencias de zona.
/dns_enum domain=example.com
/dns_enum domain=target.com record_types=a,mx,ns,txt
recon_auto - Pipeline de reconocimiento automatizado
Ejecuta un pipeline de reconocimiento en múltiples etapas con profundidad configurable.
/recon_auto target=example.com depth=quick
/recon_auto target=10.0.0.1 depth=standard
/recon_auto target=target.com depth=deep
Niveles de profundidad:
| Profundidad | Fases |
|---|---|
quick | Enumeración DNS, escaneo rápido de puertos, análisis de cabeceras |
standard | + escaneo de servicios, análisis SSL, búsqueda de exploits |
deep | + enumeración de subdominios, enumeración web, escaneo de vulnerabilidades |
hydra_attack - Pruebas de fuerza bruta
/hydra_attack target=192.168.1.1 service=ssh username=admin passlist=/usr/share/wordlists/rockyou.txt
/hydra_attack target=10.0.0.1 service=ftp userlist=users.txt passlist=passwords.txt threads=32
Servicios compatibles: ssh, ftp, http-get, http-post-form, smb, mysql, rdp, telnet, vnc, pop3, imap, smtp
payload_generate - Payloads de Msfvenom
/payload_generate payload_type=reverse_shell platform=linux lhost=10.0.0.1 lport=4444 format=elf
/payload_generate payload_type=meterpreter platform=windows lhost=10.0.0.1 format=exe
Tipos de payload: reverse_shell, bind_shell, meterpreter Plataformas: linux, windows, osx, php, python Formatos: elf, exe, raw, python, php, war
reverse_shell - One-liners de Shell
Genera comandos de reverse shell listos para usar con sugerencias de listener.
/reverse_shell lhost=10.0.0.1 shell_type=bash lport=4444
/reverse_shell lhost=10.0.0.1 shell_type=python lport=9999
Tipos de shell: bash, python, php, perl, powershell, nc, ruby, java
encode_decode - Utilidad de codificación
/encode_decode data="hello world" operation=encode format=base64
/encode_decode data="aGVsbG8gd29ybGQ=" operation=decode format=base64
/encode_decode data="<script>alert(1)</script>" operation=encode format=html
Formatos: base64, url, hex, html, rot13
hash_identify - Identificación de hashes
Identifica tipos de hash mediante regex y devuelve números de modo Hashcat y nombres de formato John.
/hash_identify hash_value=5d41402abc4b2a76b9719d911017c592
/hash_identify hash_value=$2y$10$abcdefghijklmnopqrstuuABCDEFGHIJKLMNOPQRSTUVWXYZ012345
Tipos compatibles: MD5, SHA-1, SHA-256, SHA-512, bcrypt, SHA-512/256/MD5 Crypt, NTLM, Apache APR1, MySQL, Django
enum_shares - Enumeración de recursos compartidos
/enum_shares target=192.168.1.1 enum_type=all
/enum_shares target=10.0.0.1 enum_type=smb username=admin password=pass
Tipos de enumeración: smb (smbclient + enum4linux), nfs (showmount), all
credential_store - Gestión de credenciales
Almacena credenciales descubiertas como JSON vinculadas a la sesión activa.
/credential_store action=add username=admin password=pass123 service=ssh target=10.0.0.1
/credential_store action=list
/credential_store action=search username=admin
parse_nmap - Analizador de salida de Nmap
Analiza la salida de nmap en texto y XML convirtiéndola a JSON estructurado con hosts, puertos abiertos, servicios, detección de SO y salida de scripts.
/parse_nmap filepath=port_scan_10_0_0_1_quick_20240101_120000.txt
/parse_nmap filepath=scan_results.xml
parse_tool_output - Analizador de salida genérico
Detecta y analiza automáticamente la salida de nikto, gobuster, dirb, hydra o sqlmap.
/parse_tool_output filepath=nikto_results.txt
/parse_tool_output filepath=gobuster_output.txt tool_type=gobuster
vulnerability_scan
/vulnerability_scan target=127.0.0.1 scan_type=quick
/vulnerability_scan target=example.com scan_type=comprehensive
Tipos de escaneo: quick, comprehensive, web, network
web_enumeration
/web_enumeration target=http://example.com enumeration_type=full
Tipos: basic, full, aggressive
network_discovery
/network_discovery target=192.168.1.0/24 discovery_type=comprehensive
Tipos: quick, comprehensive, stealth
Herramientas preinstaladas
El contenedor Docker incluye las siguientes herramientas, todas habilitadas para su uso a través del comando run:
| Categoría | Herramientas |
|---|---|
| Escaneo de red | nmap, masscan, netcat, tcpdump, tshark |
| Pruebas web | nikto, gobuster, dirb, sqlmap, wfuzz, ffuf, feroxbuster, whatweb, wafw00f |
| Explotación | metasploit-framework (msfconsole, msfvenom), searchsploit |
| Ataques de credenciales | hydra, hashcat, john |
| Recopilación de información | whois, dig, nslookup, amass, subfinder, theharvester, recon-ng, fierce, dnsenum, dnsrecon |
| Rastreo web | gospider, waybackurls |
| Enumeración de recursos compartidos | smbclient, enum4linux, showmount (nfs-common) |
| SSL/TLS | testssl.sh, openssl |
| Sondeo HTTP | httpx-toolkit, curl, wget |
| Análisis de archivos | file, strings, binwalk, exiftool, xxd, hexdump |
| Utilidades | python3, perl, ruby, php, git, base64, jq |
Todos los comandos están permitidos por defecto dentro del contenedor. El propio contenedor es el límite de seguridad.
Consideraciones de seguridad
- Aislamiento del contenedor: El servidor se ejecuta dentro de un contenedor Docker aislado. Se utiliza root dentro del contenedor porque muchas herramientas de seguridad (escaneos SYN de nmap, tcpdump, etc.) requieren acceso a sockets raw
- Saneamiento de entrada: Los metacaracteres de shell (
;,&,|) se eliminan de todas las entradas de comandos - Sin acceso al host: El contenedor no tiene acceso al sistema de archivos ni a la pila de red del host (salvo que se monten volúmenes explícitamente)
- Autorización requerida: Úsalo solo para pruebas de seguridad legítimas con la autorización adecuada
- Solo local: El contenedor no debe estar expuesto a internet
Requisitos
- Docker
- Claude Desktop u otro cliente MCP (SSE o stdio)
- Puerto 8000 disponible en tu máquina host
Desarrollo
Configuración
git clone https://github.com/yourusername/kali-mcp-server.git
cd kali-mcp-server
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
Ejecución de comprobaciones
# All checks
./run_tests.sh
# Individual
pyright # Type checking
ruff check . # Linting
ruff format . # Formatting
pytest # All tests
pytest tests/test_tools.py # Single file
pytest -k "session" # Pattern match
Arquitectura
Añadir una nueva herramienta requiere cambios en tres lugares:
kali_mcp_server/tools.py- Implementa la función asíncronakali_mcp_server/server.py- Añade el despacho enhandle_tool_request()y el esquema enlist_available_tools()tests/- Añade pruebas tanto entest_tools.pycomo entest_server.py
Agradecimientos
- Kali Linux por su distribución centrada en seguridad
- Anthropic por Claude y el protocolo MCP
- La comunidad de herramientas de seguridad de código abierto
Construido para profesionales de la seguridad y asistentes de IA