MCP Kali Server

Un servidor completo del Protocolo de Contexto de Modelo (MCP) para pruebas de penetración y operaciones de ciberseguridad, que proporciona una integración fluida entre las herramientas de Kali Linux y los clientes compatibles con MCP.

Documentación

MCP Kali Server

License: MIT Version: v0.2.1

MCP Kali Server Architecture

Un servidor integral del Model Context Protocol (MCP) para pruebas de penetración y operaciones de ciberseguridad, que proporciona una integración perfecta entre las herramientas de Kali Linux y los clientes compatibles con MCP.

🎥 Video de demostración

Automatizando Kali Linux con un MCP (Model Context Protocol) — Demo de HTB

En este video, muestro cómo mi MCP automatiza un flujo de trabajo de Kali Linux dentro de WSL2 y ayuda a resolver un desafío de Hack The Box, desde la enumeración hasta la explotación y la documentación generada automáticamente.

Ver la demo en YouTube


🚀 Descripción general

Este proyecto proporciona un potente servidor MCP que permite el acceso programático y seguro a las herramientas de pruebas de penetración de Kali Linux a través de una interfaz estandarizada. Incluye funciones avanzadas como gestión de shells inversos, manejo de sesiones SSH y operaciones integrales de archivos con verificación de integridad.

🏗️ Arquitectura

Este proyecto está diseñado para funcionar en diferentes entornos:

1. Servidor Kali (kali-server/)

Se ejecuta solo en Kali Linux - La aplicación del servidor principal que proporciona las capacidades reales de pruebas de penetración.

kali-server/
├── api/           # REST API routes and endpoints
├── core/          # Core functionality (SSH, reverse shells, config, Docker)
├── tools/         # Penetration testing tools integration
└── utils/         # Utility functions and file operations

Características:

  • Modo de prueba Docker (opción --test) - gestiona automáticamente los contenedores de prueba
  • Todas las herramientas de pruebas de penetración (nmap, gobuster, etc.)
  • Gestión de sesiones SSH y shells inversos
  • Operaciones de archivos con verificación de integridad

2. Servidor MCP (mcp-server/)

Puede ejecutarse en cualquier sistema - El servidor del Model Context Protocol que proporciona una interfaz estandarizada para los clientes MCP.

mcp-server/
└── mcp_server.py  # MCP protocol implementation

Nota: El servidor MCP se comunica con el servidor Kali a través de HTTP, por lo que pueden estar en sistemas diferentes.

Arquitectura de implementación

┌─────────────────┐    HTTP     ┌──────────────────┐    HTTP     ┌──────────────────┐
│   MCP Client    │ ◄─────────► │   MCP Server     │ ◄─────────► │   Kali Server    │
│  (Any system)   │             │  (Any system)    │             │  (Kali Linux)    │
└─────────────────┘             └──────────────────┘             │                  │
                                                                  │ ┌──────────────┐ │
                                                                  │ │   Docker     │ │
                                                                  │ │ (test mode)  │ │
                                                                  │ └──────────────┘ │
                                                                  └──────────────────┘

✨ Características principales

🔧 Herramientas de pruebas de penetración

  • Nmap: Descubrimiento de red y auditoría de seguridad
  • Gobuster: Enumeración de directorios/archivos
  • Dirb: Escáner de contenido web
  • Nikto: Escáner de servidores web
  • Hydra: Descifrador de credenciales de red
  • SQLmap: Pruebas de inyección SQL
  • WPScan: Escáner de seguridad de WordPress
  • John the Ripper: Descifrado de contraseñas
  • Enum4linux: Enumeración de SMB
  • Metasploit: Marco de explotación

🐚 Gestión avanzada de sesiones

  • Gestor de sesiones SSH: Gestión completa del ciclo de vida de sesiones SSH
    • start_ssh_session: Establecer conexiones SSH seguras
    • execute_ssh_command: Ejecutar comandos en sesiones SSH
    • get_ssh_status: Monitorear el estado de las sesiones SSH
    • stop_ssh_session: Terminar sesiones SSH de forma limpia
    • list_ssh_sessions: Ver todas las sesiones SSH activas
  • Gestor de shells inversos: Manejo de múltiples sesiones de shell inverso
    • start_reverse_shell_listener: Comenzar a escuchar shells inversos
    • execute_shell_command: Ejecutar comandos en shells inversos
    • trigger_reverse_shell_action: Ejecución de disparadores no bloqueante para payloads
    • get_shell_status: Monitorear el estado de las sesiones de shell inverso
    • stop_reverse_shell: Terminar sesiones de shell inverso
    • list_reverse_shell_sessions: Ver todas las sesiones de shell inverso activas

📁 Operaciones integrales de archivos

  • Gestión de archivos del servidor Kali:
    • upload_to_kali: Subir archivos directamente al servidor Kali
    • download_from_kali: Descargar archivos del servidor Kali
  • Transferencia de archivos por SSH (optimizada para archivos grandes):
    • ssh_upload_content: Subir contenido vía SSH con auto-optimización
    • ssh_download_content: Descargar contenido vía SSH con fragmentación
    • ssh_estimate_transfer_time: Estimar tiempos de transferencia y obtener recomendaciones
  • Transferencia de archivos por shell inverso:
    • reverse_shell_upload_file: Subir archivos vía shell inverso
    • reverse_shell_upload_content: Subir contenido vía shell inverso
    • reverse_shell_download_file: Descargar archivos vía shell inverso
    • reverse_shell_download_content: Descargar contenido vía shell inverso

🛠️ Integración del sistema

  • Ejecución de comandos: Ejecución directa de comandos en el servidor Kali
  • Monitoreo de salud: Verificaciones de salud del servidor y monitoreo de estado
  • Persistencia de sesiones: Mantener múltiples sesiones concurrentes

🔒 Características de seguridad

  • Integridad de datos: Verificación de suma de comprobación SHA256 para todas las transferencias de archivos
  • Comunicaciones seguras: Conexiones SSH cifradas
  • Aislamiento de sesiones: Gestión independiente de sesiones
  • Manejo de errores: Detección y reporte integral de errores

📊 Optimización del rendimiento

  • Transferencias fragmentadas: Optimizadas para operaciones con archivos grandes
  • Selección automática de método: Selección inteligente según el tamaño del archivo
  • Procesamiento en segundo plano: Operaciones no bloqueantes para tareas de larga duración
  • Gestión de recursos: Uso eficiente de memoria y CPU

🛠️ Instalación

Consulte install.md para obtener instrucciones detalladas de instalación.

Configuración del cliente MCP

Después de la instalación, configure su cliente MCP para conectarse al servidor Kali:

📖 Guía de configuración

Esta guía cubre:

  • Configuración de .claude/mcp_settings.json para Claude Desktop
  • Configuración de clientes MCP alternativos
  • Cómo encontrar su ruta de Python y la dirección IP de Kali
  • Ejemplos específicos por plataforma (Windows, Linux, macOS)

Configuración de red WSL

Si está ejecutando Kali Linux en WSL 2, una configuración de red adecuada es crítica para que el servidor MCP funcione. Consulte nuestra guía completa:

📖 Guía de configuración de red WSL

Esta guía cubre:

  • Configuración esencial de WSL (wsl.conf)
  • Configuración de resolución DNS para herramientas de Kali
  • Crítico: Comprender el comportamiento de localhost en WSL 2 (comunicación Windows → Kali)
  • Pruebas de red y resolución de problemas

⚠️ Importante: El cliente MCP en Windows debe poder acceder al servidor Kali a través de localhost. Revise esta guía antes de ejecutar el servidor.

Separación de dependencias

Este proyecto ahora separa las dependencias de Python para los dos componentes de ejecución:

  • requirements.kali.txt – Solo lo que necesita el código Python del servidor API de Kali (Flask, etc.)
  • requirements.mcp.txt – Dependencias para la interfaz del cliente del servidor MCP (requests, FastMCP, librerías de prueba)
  • requirements.txt – Archivo informativo que describe la separación; ya no contiene paquetes directos.

Instale en cada máquina según corresponda:

pip install -r requirements.kali.txt   # On Kali host running kali-server/
pip install -r requirements.mcp.txt    # On host running mcp-server/

⚠️ Advertencia de seguridad

IMPORTANTE: Tenga mucha precaución al ejecutar el servidor Kali con privilegios de sudo:

# ⚠️ DANGEROUS - Avoid if possible
sudo python kali_server.py

Por qué esto es riesgoso:

  • Todo el servidor se ejecuta con privilegios de root
  • Todos los endpoints de API y comandos se ejecutan con acceso completo al sistema
  • Cualquier compromiso del servidor otorga acceso root completo al sistema
  • No hay separación de privilegios ni control de acceso

Alternativas más seguras:

  • Ejecute el servidor como un usuario normal (muchas herramientas funcionan sin root)
  • Use permisos sudo específicos solo para los comandos que los requieran
  • Considere la contenedorización o virtualización para el aislamiento
  • Implemente la escalada de privilegios solo cuando sea absolutamente necesario

Para entornos de producción: Consulte TODO.md para conocer las mejoras de seguridad planificadas, incluida la gestión granular de privilegios y los controles de acceso.

📖 Uso

Consulte usage.md para obtener instrucciones detalladas de uso y ejemplos.

🧪 Pruebas

El proyecto incluye suites de pruebas integrales que utilizan contenedores Docker para entornos de prueba aislados.

Ejecutar todas las pruebas

cd tests
./run_all.bat  # Windows
# or
chmod +x run_all.sh && ./run_all.sh  # Linux

Entorno de pruebas Docker

cd tests/docker
docker-compose up -d --build
python test_config_docker.py

Pruebas del gestor SSH

cd tests/kali
python -m pytest test_ssh_manager.py -v

Configuración de pruebas

Las pruebas utilizan contenedores Docker para entornos de prueba consistentes y aislados. La configuración se establece automáticamente en:

  • tests/kali/test_config.py - Configuración principal de pruebas (basada en Docker)
  • tests/docker/test_config_docker.py - Configuración de pruebas específica de Docker

📋 Herramientas MCP disponibles

El servidor MCP proporciona las siguientes herramientas:

HerramientaDescripción
mcp_kali_mcp_nmap_scanEscaneo de red y enumeración
mcp_kali_mcp_gobuster_scanEnumeración de directorios y archivos
mcp_kali_mcp_hydra_attackFuerza bruta de contraseñas
mcp_kali_mcp_start_ssh_sessionGestión de sesiones SSH
mcp_kali_mcp_execute_ssh_commandEjecución de comandos SSH
mcp_kali_mcp_ssh_upload_contentSubida de archivos vía SSH
mcp_kali_mcp_ssh_download_contentDescarga de archivos vía SSH
mcp_kali_mcp_start_reverse_shell_listenerGestión de shells inversos
mcp_kali_mcp_generate_reverse_shell_payloadGeneración de payloads

🔍 Operaciones de archivos

Subida con verificación de integridad

# The system automatically verifies file integrity using SHA256 checksums
upload_result = {
    "success": True,
    "source_checksum": "abc123...",
    "remote_checksum": "abc123...",
    "checksum_verified": True,
    "integrity_check": "PASSED"
}

Descarga con verificación de integridad

# All downloads include automatic integrity verification
download_result = {
    "success": True,
    "remote_checksum": "def456...",
    "local_checksum": "def456...",
    "checksum_verified": True,
    "integrity_check": "PASSED"
}

🚨 Consideraciones de seguridad

  • Entorno de pruebas: Todas las pruebas utilizan contenedores Docker aislados por seguridad
  • Seguridad de red: Asegúrese de tener una configuración de firewall adecuada
  • Autenticación: Use contraseñas seguras y autenticación basada en claves
  • Gestión de sesiones: Limpie regularmente las sesiones no utilizadas
  • Permisos de archivos: Establezca permisos de archivos apropiados en los archivos subidos
  • Registro: Monitoree todas las actividades mediante un registro integral

🐛 Solución de problemas

Problemas comunes

  1. Conexión rechazada

    # Check if server is running
    curl http://localhost:5000/health
    
  2. Conexión SSH fallida

    # Verify SSH connectivity
    ssh user@target-host
    
  3. Herramienta no encontrada

    # Install missing tools
    sudo apt update && sudo apt install nmap gobuster
    
  4. Problemas con el modo de prueba Docker

    Si encuentra errores relacionados con Docker al usar el modo --test en Kali Linux:

    Soluciones comunes de Docker en Kali Linux:

    # Install Docker
    sudo apt update && sudo apt install docker.io
    
    # Start Docker service
    sudo systemctl start docker
    sudo systemctl enable docker
    
    # Add user to docker group (then logout/login)
    sudo usermod -aG docker $USER
    
    # Test Docker access
    docker --version
    docker ps
    

    Si los comandos de Docker funcionan manualmente pero fallan en el modo de prueba:

    • El problema podría estar relacionado con PATH en el entorno de Python
    • Intente ejecutar con sudo: sudo python kali_server.py --test
    • Verifique los permisos del socket de Docker: ls -la /var/run/docker.sock
    • Asegúrese de estar ejecutando esto en Kali Linux, no en Windows

Modo de depuración

Habilite el registro de depuración:

# For the server
python kali_server.py --test --debug

# For Python logging
import logging
logging.basicConfig(level=logging.DEBUG)

🤝 Contribuciones

  1. Haga un fork del repositorio
  2. Cree una rama de características
  3. Siga los estándares de codificación (comentarios en inglés, nombres adecuados)
  4. Agregue pruebas integrales
  5. Actualice la documentación
  6. Envíe una solicitud de extracción (pull request)

Estándares de codificación

  • Todo el código, variables y funciones deben estar en inglés
  • Todos los comentarios y documentación deben estar en inglés claro
  • Siga las convenciones de nomenclatura estándar
  • Agregue pruebas para nuevas características o correcciones de errores
  • Actualice el README y la documentación

📄 Licencia

Este proyecto está licenciado bajo la Licencia MIT - consulte el archivo LICENSE para más detalles.

🙏 Agradecimientos

  • Proyecto original: Este proyecto es inicialmente un fork de MCP-Kali-Server pero ha sido completamente reescrito y reestructurado
  • Kali Linux por la plataforma integral de pruebas de penetración
  • Model Context Protocol por la interfaz estandarizada
  • La comunidad de ciberseguridad por el desarrollo continuo de herramientas

📞 Soporte


⚠️ Aviso legal: Esta herramienta está diseñada únicamente para pruebas de penetración autorizadas e investigación de seguridad. Los usuarios son responsables de cumplir con las leyes y regulaciones aplicables.