← Volver a Post
Β· edwinadmin

Kali Linux, MCP y Telegram

Kali Linux, MCP y Telegram

πŸ” KaliBot: La Evolución del Pentesting con IA y MCP

En 2026, la ciberseguridad ha evolucionado más allá de scripts estáticos y comandos manuales. KaliBot representa una nueva generación de herramientas de pentesting que combinan la potencia de Kali Linux, la inteligencia artificial conversacional y el Model Context Protocol (MCP) para crear un asistente automatizado, inteligente y accesible desde cualquier lugar.

πŸ“‚ Ver Repositorio en GitHub →


πŸ‰ Kali Linux: Fundamento del Proyecto

Desde su lanzamiento en 2013, Kali Linux se ha consolidado como la distribución de referencia para profesionales de la ciberseguridad. Con más de 600 herramientas preinstaladas, Kali cubre todos los aspectos del pentesting moderno:

  • Reconocimiento - Nmap, theHarvester, Recon-ng
  • Análisis Web - Nikto, SQLMap, Gobuster, WhatWeb
  • Explotación - Metasploit, Msfvenom, ExploitDB
  • Cracking - John the Ripper, Hashcat, Hydra
  • Wireless - Aircrack-ng, Reaver, Wifite
  • Forense - Volatility, Binwalk, Foremost

KaliBotMCP aprovecha este ecosistema nativo, permitiendo ejecutar estas herramientas mediante lenguaje natural desde Telegram.


πŸ€– IA + MCP: La Nueva Frontera

Model Context Protocol (MCP)

El MCP es un estándar emergente que permite a las IAs interactuar con herramientas externas de forma estructurada. En lugar de simplemente generar texto, la IA puede:

  1. Comprender intenciones - "escanea google.com" → Nmap
  2. Validar parámetros - IP válida, puertos correctos
  3. Ejecutar herramientas reales - Comandos del sistema
  4. Devolver resultados - Salida formateada en Telegram

Esto convierte a la IA en un orquestador inteligente en lugar de un simple chatbot.

OpenAI GPT-4

KaliBotMCP usa GPT-4o-mini para:

  • Interpretar peticiones en español colombiano coloquial
  • Convertir lenguaje natural a parámetros técnicos
  • Explicar resultados de forma comprensible
  • Mantener contexto conversacional

Ejemplo:

Usuario: "quiero saber qué puertos tiene abiertos facebook.com"
IA: {"tool": "nmap", "parameters": {"target": "facebook.com", "ports": "1-1000"}}
Bot: Escaneando facebook.com con Nmap, parcero...

πŸ—οΈ Arquitectura del Sistema

KaliBotMCP implementa una arquitectura modular de 6 capas:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚         Usuario (Telegram)             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                β”‚
                β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚      telegram_bot.py                   β”‚
β”‚  • Validación de usuarios              β”‚
β”‚  • Routing de mensajes                 β”‚
β”‚  • Formateo de respuestas              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                β”‚
                β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚      ai_assistant.py                   β”‚
β”‚  • Parsing de lenguaje natural         β”‚
β”‚  • Conversión a JSON estructurado      β”‚
β”‚  • Contexto conversacional             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                β”‚
                β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚      tool_executor.py                  β”‚
β”‚  • Ejecución de herramientas           β”‚
β”‚  • Validación de parámetros            β”‚
β”‚  • Manejo de timeouts                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”
        β–Ό                β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚tool_system.pyβ”‚  β”‚tool_discoveryβ”‚
β”‚• Descargas   β”‚  β”‚• Detección   β”‚
β”‚• Installs    β”‚  β”‚• Catalogaciónβ”‚
β”‚• Archivos    β”‚  β”‚• Sugerencias β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

βš™οΈ Cómo Funciona el Código

1. Descubrimiento Automático de Herramientas

tool_discovery.py escanea el sistema para detectar herramientas de Kali Linux instaladas:

discovered_tools = {}
for tool in common_kali_tools:
    if shutil.which(tool):
        discovered_tools[tool] = {...}

Esto permite que el bot:

  • Solo sugiera herramientas disponibles
  • Ofrezca instalar herramientas faltantes
  • Actualice automáticamente el catálogo

2. Definición de Herramientas como MCP Tools

Cada herramienta se define con un esquema JSON:

Tool(
    name="nmap",
    description="Escaneo de puertos",
    inputSchema={
        "type": "object",
        "properties": {
            "target": {"type": "string"},
            "ports": {"type": "string"}
        },
        "required": ["target"]
    }
)

La IA usa este esquema para saber qué parámetros son válidos y generar JSON estructurado.

3. Ejecución Segura de Comandos

tool_executor.py maneja la ejecución con:

async def run_command(command, timeout=300):
    process = await asyncio.create_subprocess_shell(
        command,
        stdout=PIPE,
        stderr=PIPE
    )
    
    stdout, stderr = await asyncio.wait_for(
        process.communicate(),
        timeout=timeout
    )
    
    return {
        "success": True,
        "stdout": stdout.decode(),
        "stderr": stderr.decode()
    }

Características:

  • βœ… Async/await para no bloquear el bot
  • βœ… Timeouts configurables
  • βœ… Captura de stdout y stderr
  • βœ… Detección de errores

4. Operaciones de Sistema

Además de herramientas de pentesting, KaliBotMCP puede:

Descargar archivos:

await system_manager.download_file(
    "https://example.com/tool.sh",
    "/tmp/tool.sh"
)

Clonar repositorios:

await system_manager.git_clone(
    "https://github.com/danielmiessler/SecLists",
    "/usr/share/wordlists/seclists"
)

Instalar paquetes:

await system_manager.install_package("hashcat", "apt")

5. Interpretación con IA

ai_assistant.py envía el mensaje del usuario a OpenAI con un system prompt que incluye:

  1. Personalidad - Español colombiano, amigable
  2. Herramientas disponibles - Lista dinámica
  3. Formato de respuesta - JSON estructurado
  4. Ejemplos - Casos de uso reales

Respuesta de la IA:

{
  "tool": "nmap",
  "parameters": {
    "target": "192.168.1.1",
    "ports": "80,443",
    "scan_type": "syn"
  },
  "explanation": "Escaneando puertos 80 y 443 de 192.168.1.1"
}

πŸ”§ Tutorial: Agregar una Nueva Herramienta

Escenario: Agregar subfinder

Subfinder es una herramienta para descubrir subdominios.

Paso 1: Registrar en tool_discovery.py

self.common_kali_tools = {
    # ...
    "subfinder": {
        "category": "info_gathering",
        "description": "Subdomain discovery tool"
    },
}

Paso 2: Crear ejecutor en tool_executor.py

async def execute_subfinder(self, params: Dict) -> str:
    """Ejecuta subfinder para descubrir subdominios"""
    domain = params["domain"]
    output_file = params.get("output", f"{domain}_subdomains.txt")
    
    command = f"subfinder -d {domain} -o {output_file}"
    
    if params.get("silent"):
        command += " -silent"
    
    result = await self.run_command(command, timeout=300)
    
    if result.get("success") and os.path.exists(output_file):
        lines = open(output_file).readlines()
        result["subdomains_found"] = len(lines)
        result["output_file"] = output_file
    
    return self._format_result(result)

Paso 3: Registrar en mapeador

tool_methods = {
    "nmap": self.execute_nmap,
    "subfinder": self.execute_subfinder,
    # ...
}

Paso 4: Actualizar prompts

Editar prompts/ai_assistant.txt:

Usuario: "busca subdominios de example.com"
{"tool": "subfinder", "parameters": {"domain": "example.com"}, "explanation": "Buscando subdominios de example.com"}

Paso 5: Probar

pkill -f main.py
python3 main.py

En Telegram:

Usuario: busca subdominios de google.com
Bot: Buscando subdominios de google.com con subfinder
     βœ… Archivo generado: google.com_subdomains.txt
     πŸ“Š Subdominios encontrados: 47

❌ Tutorial: Remover una Herramienta

Paso 1: Eliminar de tool_discovery.py

Buscar y eliminar la entrada de la herramienta en common_kali_tools

Paso 2: Eliminar ejecutor

Si tiene un método execute_* dedicado en tool_executor.py, eliminarlo

Paso 3: Eliminar del mapeador

Remover de tool_methods en execute_tool

Paso 4: Actualizar prompts

Eliminar ejemplos en prompts/ai_assistant.txt


πŸ“Š Comparación: KaliBotMCP vs Métodos Tradicionales

Aspecto Pentesting Manual KaliBotMCP
Acceso Terminal SSH Telegram (móvil)
Sintaxis Comandos exactos Lenguaje natural
Documentación man pages IA conversacional
Instalación Manual Automática
Contexto Sesiones separadas Memoria conversacional
Aprendizaje Curva alta Más accesible

πŸš€ Casos de Uso

1. Pentesting remoto desde móvil

Ejecutar escaneos desde cualquier lugar sin necesidad de laptop.

2. Automatización de reconocimiento

"Descarga SecLists y escanea 192.168.1.0/24" → Todo automatizado.

3. Aprendizaje interactivo

"Qué es SQL injection?" → Explicación + ejemplos con sqlmap.

4. Operaciones de sistema

"Instala hashcat y descarga rockyou.txt" → Preparar entorno completo.


πŸ”’ Consideraciones de Seguridad

1. Validación de Usuarios

TELEGRAM_ALLOWED_USERS=123456789,987654321

Solo estos IDs pueden usar el bot.

2. ROOT_PASSWORD

Recomendación: Configurar NOPASSWD en sudoers en lugar de usar contraseña en texto plano.

3. Sanitización de Comandos

Los parámetros se validan básicamente, pero no hay sanitización completa contra inyección de comandos. Mejora futura: usar shlex.quote() en todos los parámetros.


πŸ§ͺ Estado del Proyecto

Característica Estado
IA conversacional βœ… Funcional
Detección automática de herramientas βœ… Funcional
Ejecutores básicos βœ… Funcional
Operaciones de sistema βœ… Funcional
Español colombiano βœ… Funcional
Servidor MCP standalone ⚠️ Prototipo
Autenticación robusta ⚠️ En desarrollo
Interfaz web ❌ Pendiente

πŸ“š Recursos y Referencias


⚠️ Disclaimer Legal

Este proyecto es exclusivamente para fines educativos y de investigación en ciberseguridad.

El uso de herramientas de pentesting sin autorización explícita y por escrito es ilegal en la mayoría de jurisdicciones.

Los desarrolladores de KaliBotMCP:

  • ❌ No se hacen responsables del mal uso
  • βœ… Promueven el hacking ético y legal
  • βœ… Recomiendan certificaciones (OSCP, CEH, etc.)
  • βœ… Apoyan el aprendizaje responsable

Usa KaliBotMCP MCPsolo en:

  • Sistemas propios
  • Entornos de prueba autorizados (HTB, TryHackMe)
  • Auditorías contratadas legalmente

🧠 Conclusión

KaliBot representa la convergencia de tres tecnologías clave:

  1. Kali Linux - El ecosistema de herramientas más completo
  2. IA conversacional - Accesibilidad y comprensión del lenguaje natural
  3. MCP - Estandarización de la interacción herramienta-IA

El resultado es un sistema que:

  • Reduce la barrera de entrada al pentesting
  • Mantiene la potencia de las herramientas nativas
  • Permite operación remota desde cualquier dispositivo
  • Puede evolucionar agregando o removiendo herramientas fácilmente

Este proyecto demuestra que la ciberseguridad del futuro no será manual vs automatizada, sino especialistas humanos potenciados por IA.


πŸ” Kali Linux + πŸ€– IA + πŸ“± Telegram = El Futuro del Pentesting

Desarrollado por 3p1c0w3nd | 2026