Artículo de EMMPIEZA

Kali Linux, MCP y Telegram

Descubre como la tecnologia MCP junto con IA te permiten automatizar el pentest

Contenido del artículo

🔐 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: Comprender intenciones - "escanea google.com" → Nmap Validar parámetros - IP válida, puertos correctos Ejecutar herramientas reales - Comandos del sistema 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: Personalidad - Español colombiano, amigable Herramientas disponibles - Lista dinámica Formato de respuesta - JSON estructurado 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 🔗 Repositorio GitHub - https://github.com/3p1c0w3nd/kali-linux-mcp Kali Linux Docs - https://www.kali.org/docs/ Model Context Protocol - https://modelcontextprotocol.io/ OpenAI API - https://platform.openai.com/docs python-telegram-bot - https://python-telegram-bot.org/ Offensive Security - https://www.offensive-security.com/ ⚠️ 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: Kali Linux - El ecosistema de herramientas más completo IA conversacional - Accesibilidad y comprensión del lenguaje natural 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

URL canónica de esta página