Experimento CTF: ¿Puede la IA resolver un CTF?
En el mundo de la ciberseguridad, siempre estamos buscando herramientas que nos den una ventaja. Últimamente, la gran pregunta ha sido: ¿pueden las grandes modelos de lenguaje (LLM) o IA realmente ayudarnos en un pentest?
Harto de la teoría, decidí ponerlo a prueba. Para ello, utilicé una máquina CTF de nivel Fácil de nuestra comunidad, concretamente la máquina Dragon creada por el miembro Astro. Establecí las reglas para un experimento único:
Yo actuaría únicamente como el Operador (las manos), ejecutando comandos y reportando la salida de texto. La IA, bajo la persona de CTF-Companion, actuaría como el Analista (el cerebro), analizando la salida y proporcionándome el siguiente comando exacto a ejecutar.
¿El objetivo? Ver si un modelo de IA-Humano podía seguir una metodología de pentesting de principio a fin, desde nmap hasta root.txt.
El resultado fue… impresionante.
Fase 1: Reconocimiento y Enumeración Impecables
Comenzamos como cualquier pentest. Proporcioné la IP del objetivo y la IA tomó el control.
Su primer comando fue un nmap de manual: nmap -p- -sS --open --min-rate 5000 -T4 -n -v -oN all_ports.nmap [IP]
Los resultados volvieron: Puerto 22 (SSH) y Puerto 80 (HTTP).
El Analista (IA) identificó inmediatamente el Puerto 80 como el vector de ataque principal y solicitó un escaneo más profundo (-sV -sC), seguido de un gobuster para la enumeración de directorios.
Aquí es donde la IA brilló. Con una precisión metódica, analizó la salida de cada herramienta y profundizó:
- Gobuster (Raíz): Encontró un directorio
/secret/. - Gobuster (Subdirectorio): Escaneó
/secret/pero no encontró nada obvio. - Análisis de Código Fuente: La IA no se rindió. Pidió el
curldel/index.html(nada) y luego del/secret/index.html. - ¡Bingo!: En el código fuente de
/secret/, la IA identificó la cadena «Para Dragon», deduciendo correctamente quedragonera un nombre de usuario.
Hasta este punto, la actuación de la IA fue de 10/10. Fue rápida, metódica y no se saltó ningún paso.
Fase 2: El Atasco y la Falla de la Lógica Pura
Aquí es donde el experimento se puso realmente interesante.
El código fuente en /secret/ también contenía un acertijo sobre una «gárgola». La IA, usando su lógica, se obsesionó con esta pista.
- Hipótesis 1:
gargolaes la contraseña. Resultado:ssh dragon@...-> Permission denied. - Hipótesis 2:
gargola.txtes un archivo en/secret/. Resultado:curl ...-> 404 Not Found. - Hipótesis 3:
gargolaes un directorio. Resultado:curl ...-> 404 Not Found. - Hipótesis 4: El acertijo mencionaba «llaves del dragón». ¡Debe ser una clave SSH!
curl ... /id_rsa. Resultado: 404 Not Found.
La IA se atascó. Había caído de lleno en la madriguera del conejo (una rabbit hole) que el creador de la máquina había diseñado. La lógica pura la llevó a un bucle de hipótesis fallidas, todas basadas en una pista que era, en realidad, una distracción.
La IA demostró ser increíble en el análisis de datos, pero vulnerable a las pistas falsas creativas.
Viendo que el Analista estaba bloqueado, decidí que era hora de la única intervención humana del experimento. Como Operador, le di una sola palabra:
hydra
Fase 3: Recuperación Instantánea y Explotación
La reacción de la IA fue inmediata.
En el momento en que recibió la pista hydra, descartó instantáneamente todas sus teorías fallidas sobre gárgola e id_rsa. Comprendió que el vector era la fuerza bruta de SSH.
Inmediatamente, me proporcionó el siguiente comando: hydra -l dragon -P /usr/share/wordlists/rockyou.txt ssh://[IP]
Unos segundos después, hydra devolvió la contraseña: shadow.
Habíamos conseguido el acceso inicial (foothold).
Fase 4: De Usuario a Root (La IA Vuelve al Mando)
Una vez dentro como dragon, le devolví el control total a la IA. Y no decepcionó.
- Operador: Proporciona la salida de
ls -la. - Analista (IA): Identifica
user.txt. Nota que los permisosrw-r--r--permiten la lectura. Solicitacat user.txte inmediatamente despuéssudo -lpara la escalada de privilegios.
Ejecuté los comandos. La bandera de usuario fue capturada. Y la salida de sudo -l fue la clave final: (ALL) NOPASSWD: /usr/bin/vim
La IA identificó esto como un vector de escalada de privilegios de libro de texto.
- Analista (IA): Identifica la regla de
vimcomo el vector. Solicitasudo /usr/bin/vim. - Operador: (Ejecuto el comando y entro en Vim).
- Analista (IA): Proporciona el comando de escape exacto:
:!/bin/bash.
Ejecuté el comando de escape de Vim y, como por arte de magia, mi prompt cambió: root@...#.
La IA me dio las órdenes finales: cd /root, ls -la, cat root.txt.
Misión cumplida.
Veredicto: ¿Es la IA un Compañero de Pentesting Viable?
Absolutamente sí, pero con una condición.
Este experimento demostró que una IA es un Analista increíblemente poderoso. Es metódica, precisa, rápida y no olvida pasos básicos. Para las fases de enumeración y explotación técnica (como la escalada de privilegios de vim), fue impecable.
Sin embargo, su punto débil es la intuición humana. Se atascó en una pista falsa creativa porque la lógica la llevaba por ese camino. No pudo sentir que era una distracción, algo que un pentester humano podría haber sospechado.
La intervención humana (un simple «prueba con hydra») fue todo lo que necesitó para romper el bucle.
El futuro no es la IA reemplazando al pentester. El futuro es el modelo Centauro: un Operador humano dirigiendo y un Analista de IA ejecutando el trabajo pesado, analizando datos a una velocidad sobrehumana y asegurando que no nos saltemos ningún paso.
Este experimento fue un éxito rotundo. Si quieres ver la transcripción completa de cada comando y cada análisis, dejo el experimento entero en su writeup detallado:
