Metasploitable 2 paso a paso: un laboratorio de explotación.
Descúbrela, enumérala, explota una puerta trasera real y consigue root: todo en tu propia red aislada. Sin flag de CTF, solo la mecánica de verdad.
Todo plan de estudios de seguridad ofensiva acaba apuntándote a la misma máquina: Metasploitable 2. Es un servidor Ubuntu 8.04 deliberadamente roto, publicado por Rapid7 con un único propósito: ser descubierto, enumerado y explotado por gente que aprende cómo funcionan de verdad las vulnerabilidades reales. Este tutorial te lleva por una vía de explotación completa y real contra ella: no una caza de flags de CTF, sino la mecánica de verdad que sigue un atacante contra un servicio genuinamente vulnerable. Al terminar tendrás una shell de root, entenderás por qué existe la vulnerabilidad y contarás con dos pistas más que perseguir por tu cuenta.
1. Antes de empezar
Necesitas dos máquinas virtuales en la misma red virtual aislada: una VM de Kali Linux desde la que atacar, y una VM de Metasploitable 2 a la que atacar. Si aún no tienes una VM de Metasploitable 2 o no sabes qué es ni por qué existe, lee primero Qué es Metasploitable 2: cubre la historia y el diseño de la máquina con más profundidad de la que haremos aquí. Si todavía no tienes montado el entorno de laboratorio que la rodea (hipervisor, red host-only, appliance de Kali), Monta un laboratorio en casa con un solo portátil recorre esa configuración en unos 20 minutos.
Ambas VMs deben estar en la misma red host-only o NAT interna —normalmente 192.168.56.0/24 si seguiste los valores por defecto de VirtualBox— sin adaptador puente y sin ruta de salida hacia tu red doméstica o internet. Esto no es una sugerencia. Metasploitable 2 está intencionadamente plagada de vulnerabilidades de ejecución remota de código y al menos una puerta trasera de root deliberada; en una red abierta la comprometerían escáneres automáticos en cuestión de minutos. Confirma el aislamiento antes de hacer nada más: desde Kali deberías poder llegar a la IP del objetivo, y no deberías poder llegar a tu router ni a internet.
Nada en este tutorial ataca la infraestructura de nadie más. Cada comando de abajo se ejecuta contra una máquina que posees, en una red que controlas, que fue construida y publicada específicamente para ser atacada así. Esa distinción —autorizado, aislado, de tu propiedad— es lo que separa un ejercicio de laboratorio de un delito.
2. Paso 1 — Localiza el objetivo en la red
Antes de poder atacar nada necesitas su dirección IP. Si asignaste una IP estática durante la configuración ya la conoces, pero merece la pena practicar el descubrimiento de todos modos, porque en una auditoría real rara vez partes de una dirección conocida. Desde Kali, barre la subred:
nmap -sn 192.168.56.0/24
-sn le indica a nmap que se salte el escaneo de puertos y solo realice el descubrimiento de hosts: un barrido tipo ping por cada dirección del rango. En una red de laboratorio tan pequeña la salida es breve: tu máquina Kali, tu máquina Metasploitable 2 y posiblemente una dirección de gateway si tu hipervisor inyecta una. Busca una línea como:
Nmap scan report for 192.168.56.20
Host is up (0.00042s latency).
MAC Address: 08:00:27:XX:XX:XX (Oracle VirtualBox virtual NIC)
El prefijo de fabricante de la dirección MAC es una pista útil en un laboratorio de VirtualBox: la NIC virtual de cada VM se identifica como un dispositivo Oracle/VirtualBox, así que por sí solo no te ayudará a distinguir Kali de Metasploitable. Lo que sí ayuda es el proceso de eliminación: ya conoces tu propia IP de Kali, así que cualquier otra cosa que responda en la subred es tu objetivo. Apunta esa IP: la usarás en todos los comandos a partir de aquí.
3. Paso 2 — Enumera los servicios abiertos
Ahora que tienes una dirección, averigua qué corre en ella. Un escaneo de servicio y versión sobre todos los puertos es más lento que una ejecución por defecto de nmap, pero mucho más informativo, y sobre un único host de laboratorio el coste de tiempo es trivial:
nmap -sV -p- 192.168.56.20
-p- escanea los 65.535 puertos TCP en lugar de los 1.000 más habituales que usa nmap por defecto, y -sV sondea cada puerto abierto para identificar el servicio y el banner de versión. Espera una lista larga: Metasploitable 2 está deliberadamente configurada con docenas de servicios a la escucha. Merece la pena detenerse en un puñado de ellos, porque cada uno representa una superficie de ataque distinta y bien documentada:
| Puerto | Servicio | Por qué destaca |
|---|---|---|
| 21 | vsftpd 2.3.4 | Una versión concreta de este daemon FTP contiene una puerta trasera insertada de forma maliciosa: el tema de este tutorial. |
| 139 / 445 | Samba | Una versión antigua de Samba vulnerable a un fallo de inyección remota de comandos a través de la opción "username map script". |
| 3632 | distccd | Un daemon de compilación distribuida que, dejado sin autenticación y expuesto a internet, ejecutará cualquier comando que se le entregue: un clásico RCE por mala configuración. |
| 1099 | Java RMI registry | Un registro Java RMI expuesto puede abusarse para cargar y ejecutar de forma remota una clase suministrada por el atacante. |
| 6667 | UnrealIRCd | Esta versión exacta del daemon de IRC se distribuyó, en un momento dado, con una descarga con puerta trasera: funcionalmente parecido en espíritu al incidente de vsftpd, en un servicio distinto. |
| 8180 | Apache Tomcat | Corre con credenciales de gestor por defecto o débiles, lo que permite a un atacante desplegar un archivo WAR malicioso para ejecución remota de código. |
Para un atacante haciendo reconocimiento, esta lista es un menú. Cada fila es un servicio, una versión y (con cinco minutos de búsqueda) una clase de vulnerabilidad conocida. Leer banners de versión y emparejarlos con avisos públicos es la mayor parte de lo que significa "enumeración" en la práctica: es poco vistoso, y es el paso que de verdad encuentra la entrada. Vamos a recorrer el primero, porque es el punto de entrada más limpio, mejor documentado y más fiable de esta máquina.
4. Paso 3 — Explota la puerta trasera de vsftpd 2.3.4
Lanza la consola de Metasploit en Kali:
msfconsole
Busca y carga el módulo correspondiente:
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > set RHOSTS 192.168.56.20
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > run
Si el objetivo y la red están configurados correctamente, esto devuelve una shell de comandos ejecutándose como root en la máquina Metasploitable 2: sin credenciales, sin adivinar contraseñas, sin exploits encadenados. Un módulo, un objetivo, una shell.
Merece la pena entender por qué funciona, porque el mecanismo es inusual e instructivo. No se trata de un desbordamiento de búfer clásico ni de un fallo de lógica en el propio código de vsftpd. En 2011, el tarball oficial de código fuente de vsftpd 2.3.4 alojado en su sitio de distribución fue reemplazado de forma maliciosa por un tercero no autorizado con una versión modificada que contenía una puerta trasera: cualquier intento de login por FTP con un nombre de usuario que contenga una carita sonriente (:)) según un patrón concreto hace que el binario con puerta trasera abra una shell de comandos en el puerto TCP 6200, enlazada y a la espera de una conexión, sin necesidad de credenciales válidas. El mantenedor de vsftpd descubrió la manipulación y retiró el archivo comprometido en cuestión de días, pero Metasploitable 2 incluye deliberadamente esa versión comprometida exacta, porque es una ilustración muy limpia y bien documentada de un ataque a la cadena de suministro: la vulnerabilidad no está en una lógica de código defectuosa, sino en un canal de distribución de confianza siendo subvertido en silencio. El módulo de Metasploit simplemente automatiza el envío de esa cadena de activación y la conexión a la shell resultante en el puerto 6200.
Por eso también el hallazgo del puerto 21 en el Paso 2 importaba más que los demás a primera vista: una puerta trasera activada por un intento de autenticación es una clase de fallo fundamentalmente distinta, y a menudo mucho más fiable, que un cuelgue del servicio o una mala configuración. No depende de condiciones de carrera, de la disposición de la memoria ni de ASLR: es una trampilla determinista dejada por quienquiera que manipuló el código fuente.
5. Paso 4 — Confirma lo que tienes de verdad
En cuanto aterrice tu shell, verifica qué tienes realmente antes de hacer nada más:
whoami
id
root
uid=0(root) gid=0(root)
Aterrizar directamente en uid=0 con un solo exploit, sin un paso de escalada de privilegios aparte, es inusualmente generoso, y conviene decirlo con claridad, porque puede crear una expectativa equivocada si este es tu primer laboratorio de explotación. En una auditoría real, el acceso inicial casi nunca llega como root. Lo normal es aterrizar como una cuenta de servicio de pocos privilegios (un usuario del servidor web, un usuario del daemon FTP, una cuenta de servicio de base de datos), y la escalada de privilegios —exploits de kernel, reglas de sudo mal configuradas, tareas cron con permiso de escritura, reutilización de credenciales— es su propia fase aparte, a menudo la mitad más difícil del ejercicio. La puerta trasera de vsftpd de Metasploitable 2 resulta que ejecuta la shell inyectada como root por cómo estaba privilegiado el propio daemon cuando lo manipularon; eso es una propiedad de esta puerta trasera concreta, no algo que esperar en otros sitios.
6. Paso 5 — Prueba una segunda vía
La puerta trasera de vsftpd es el punto de entrada más limpio de esta máquina, pero no es el único, y parte del valor de Metasploitable 2 es que te ofrece varias vías de entrada independientes para comparar. Merece la pena practicar dos a continuación, sin recorrerlas por completo aquí para que este laboratorio siga centrado:
La puerta trasera de UnrealIRCd (puerto 6667). Conceptualmente un primo cercano de lo que acabas de hacer: una versión concreta e históricamente real del daemon UnrealIRCd se distribuyó con una puerta trasera que permitía la ejecución arbitraria de comandos activada a través del propio protocolo IRC. Metasploit incluye un módulo correspondiente (exploit/unix/irc/unreal_ircd_3281_backdoor). Prueba a enumerar primero el servicio, y luego observa qué activa la puerta trasera antes de recurrir al módulo.
La ejecución remota de código de distcc (puerto 3632). Una clase de vulnerabilidad completamente distinta: distcc es una herramienta legítima de compilación distribuida que, cuando se deja a la escucha sin autenticación, ejecutará cualquier comando de compilación que se le entregue, lo que un atacante puede abusar para ejecutar comandos de shell arbitrarios en su lugar. El módulo exploit/unix/misc/distcc_exec de Metasploit apunta exactamente a esto. A diferencia de la puerta trasera de vsftpd, se trata de un fallo de configuración o diseño, no de un binario manipulado, lo que la convierte en un buen caso de contraste para entender que "servicio vulnerable" abarca más de una causa raíz.
Trabajar ambas después de este tutorial te da tres modelos mentales distintos para la misma máquina: una puerta trasera en la cadena de suministro, una puerta trasera activada por protocolo y un RCE sin autenticación en una herramienta legítima. Ese abanico es justamente el motivo por el que esta máquina se sigue asignando en programas de formación años después de su lanzamiento.
7. Limpieza
Antes de cerrar la sesión de laboratorio, restaura la VM de Metasploitable 2 a una instantánea limpia. Acabas de plantar una shell de root y, según lo que hicieras dentro de ella, posiblemente dejaste archivos, detuviste servicios o modificaste el estado de otras formas. Las instantáneas hacen que esto salga gratis: restaura a clean-base (o como la hayas llamado) y la máquina quedará exactamente igual de rota, y exactamente igual de lista para la próxima vez, que el día que la montaste.
Y por decirlo una vez más, sin rodeos: esta VM objetivo nunca debe tocar una red real. Tiene una puerta trasera de root funcional y múltiples vías de ejecución remota de código sin autenticación por diseño. Mantenla en la red host-only o interna aislada durante toda su vida útil, y no caigas en la tentación de reenviarle un puerto "solo para probar algo rápido". Esa única decisión es la diferencia entre un ejercicio de formación y un incidente.