Lab de Práctica para OSCP y PNPT
Metasploitable 3 es una máquina virtual intencionalmente vulnerable desarrollada por Rapid7 para practicar con Metasploit Framework y técnicas de pentesting en un entorno completamente controlado. A diferencia de su predecesora, Metasploitable 3 incluye dos sistemas operativos distintos — Windows Server 2008 R2 y Ubuntu 14.04 — ofreciendo una superficie de ataque realista y variada para el estudio.
¿Qué incluye Metasploitable 3?
| Componente | Detalles | Para qué sirve en el lab |
|---|---|---|
| Windows Server 2008 R2 | Múltiples servicios vulnerables: IIS, Tomcat, FTP, SMB, WinRM, Jenkins... | Practicar explotación en entornos Windows corporativos — escenario habitual en OSCP |
| Ubuntu 14.04 LTS | Servicios vulnerables: Apache, ProFTPD, Samba, UnrealIRCd, Drupal, MySQL... | Practicar en entornos Linux — servidores web, bases de datos, daemons legacy |
| Vagrant + VirtualBox | Sistema de construcción automática de la VM | Permite reconstruir el entorno desde cero en minutos si algo se rompe |
| Credenciales documentadas | Usuarios y contraseñas publicados en el repositorio oficial | Permite verificar accesos conseguidos y estudiar la configuración interna |
Metasploitable 3 vs Metasploitable 2
| Aspecto | Metasploitable 2 | Metasploitable 3 |
|---|---|---|
| SO | Solo Ubuntu 8.04 | Windows 2008 R2 + Ubuntu 14.04 |
| Distribución | Imagen OVA precompilada | Construida dinámicamente con Vagrant |
| Superficie | ~20 servicios vulnerables | ~30 servicios entre las dos VMs |
| Realismo | Muy básico (2008) | Más cercano a entornos corporativos reales |
| Dificultad | Principiante | Principiante-Intermedio |
| Relevancia OSCP | Alta para conceptos básicos | Alta — especialmente la parte Windows |
Metasploitable 3 no se descarga como un archivo OVA — se construye con Vagrant. Hay tres formas de obtenerla, de más simple a más flexible.
Método 1 — Vagrant Cloud (más rápido, sin compilar)
Las imágenes precompiladas están disponibles en Vagrant Cloud. Este método descarga la VM ya construida sin necesidad de Packer ni compilación local. Es el recomendado para empezar.
# Requisitos previos: VirtualBox y Vagrant instalados # URLs de descarga oficial: # VirtualBox: https://www.virtualbox.org/wiki/Downloads # Vagrant: https://developer.hashicorp.com/vagrant/downloads # Crear directorio de trabajo mkdir metasploitable3-workspace cd metasploitable3-workspace # Linux/macOS: descargar el Vagrantfile oficial curl -O https://raw.githubusercontent.com/rapid7/metasploitable3/master/Vagrantfile # Windows (PowerShell): Invoke-WebRequest -Uri "https://raw.githubusercontent.com/rapid7/metasploitable3/master/Vagrantfile" -OutFile "Vagrantfile" # Arrancar las VMs (descarga automática desde Vagrant Cloud) vagrant up [*] Descargando rapid7/metasploitable3-win2k8 (~7 GB)... [*] Descargando rapid7/metasploitable3-ub1404 (~2 GB)... [*] Configurando redes y servicios... [+] Las VMs están listas.
Método 2 — Clonar y construir desde fuente
Para quienes quieran más control o modificar la configuración de vulnerabilidades. Requiere instalar Packer además de Vagrant y VirtualBox.
# Requisitos adicionales: Packer # Descarga: https://developer.hashicorp.com/packer/downloads # Clonar el repositorio git clone https://github.com/rapid7/metasploitable3.git cd metasploitable3 # Instalar plugin vagrant-reload vagrant plugin install vagrant-reload # Construir la VM Windows (tarda ~45 min) ./build.sh windows2008 # Construir la VM Linux (tarda ~20 min) ./build.sh ubuntu1404 # En Windows (PowerShell): .\build.ps1 windows2008 .\build.ps1 ubuntu1404 # Una vez construidas, arrancar vagrant up
Método 3 — Solo la VM Linux (más ligero)
Si solo quieres practicar con el sistema Linux para empezar, puedes levantar únicamente la VM Ubuntu sin la Windows.
# Arrancar solo la VM Linux vagrant up ub1404 # Arrancar solo la VM Windows vagrant up win2k8 # Apagar todo vagrant halt # Destruir y reconstruir desde cero (si algo se rompe) vagrant destroy && vagrant up # Ver estado de las VMs vagrant status Current machine states: win2k8 running (virtualbox) ub1404 running (virtualbox)
Guía detallada de instalación incluyendo solución a los problemas más comunes que aparecen durante el proceso.
Instalar los prerrequisitos
vagrant --version Vagrant 2.4.x VBoxManage --version 7.0.x # Instalar plugin necesario vagrant plugin install vagrant-reload Installing the 'vagrant-reload' plugin. This can take a few minutes... Installed the plugin 'vagrant-reload (0.0.1)'!
vagrant status desde el directorio del workspace.Problemas comunes y soluciones
| Error | Causa | Solución |
|---|---|---|
Vagrant cannot forward port | Un puerto ya está en uso en el host | Cambiar el puerto en el Vagrantfile o cerrar la aplicación que lo usa |
VT-x is not available | Virtualización no habilitada en BIOS | Reiniciar → BIOS → habilitar VT-x/AMD-V |
| Descarga se interrumpe | Conexión inestable | Volver a ejecutar vagrant up — retoma la descarga |
| Provisioning falla en Windows VM | Bug conocido en Vagrant + WinRM | Ejecutar vagrant provision win2k8 para reintentar solo el provisionado |
SSL certificate problem | Certificados desactualizados | Actualizar Vagrant a la última versión; ver issue #603 en GitHub |
| VM arranca pero no hay red | Adaptador Host-Only no configurado | Ver la sección siguiente de configuración de red |
La configuración de red es crítica para que Kali Linux (tu máquina atacante) pueda alcanzar las VMs objetivo. El Vagrantfile configura automáticamente una red privada, pero hay que verificar y ajustar.
Topología del laboratorio
| Máquina | Rol | IP por defecto | SO |
|---|---|---|---|
| Kali Linux | Atacante | 192.168.56.4 (o la que asigne VBox) | Kali rolling — VM o nativo |
| metasploitable3-win2k8 | Objetivo Windows | 192.168.56.52 | Windows Server 2008 R2 |
| metasploitable3-ub1404 | Objetivo Linux | 192.168.56.53 | Ubuntu 14.04 LTS |
# Desde Kali Linux — verificar que las VMs son alcanzables ping -c 3 192.168.56.52 PING 192.168.56.52: 56 bytes of data 64 bytes from 192.168.56.52: ttl=128 time=0.8ms ← Windows OK ping -c 3 192.168.56.53 64 bytes from 192.168.56.53: ttl=64 time=0.9ms ← Linux OK # Si las IPs no responden, verificar la red en VirtualBox # Asegurarse de que Kali está en la misma red Host-Only (vboxnet0) # Verificar IPs reales de las VMs vagrant ssh ub1404 -c "ip addr show" vagrant ssh win2k8 -c "ipconfig"
Añadir Kali a la misma red
vboxnet0 (la misma red que usan las VMs de Metasploitable 3).El reconocimiento es siempre el primer paso de cualquier pentest. Esta sección explica cómo leer e interpretar los resultados de nmap sobre las máquinas de Metasploitable 3, y qué información es relevante.
# Descubrimiento de hosts en la red de lab nmap -sn 192.168.56.0/24 Nmap scan report for 192.168.56.52 ← Windows Nmap scan report for 192.168.56.53 ← Linux # Escaneo completo de la VM Windows nmap -sV -sC -p- -T4 -oN scan_windows.txt 192.168.56.52 # Escaneo completo de la VM Linux nmap -sV -sC -p- -T4 -oN scan_linux.txt 192.168.56.53 # Detección de SO nmap -O 192.168.56.52 # Scripts de vulnerabilidades (NO activos — solo informativos) nmap --script vuln 192.168.56.52
Cómo interpretar los resultados de nmap
| Campo nmap | Qué significa | Por qué importa |
|---|---|---|
PORT/STATE/SERVICE | Puerto abierto y servicio detectado | Cada puerto abierto es una potencial superficie de ataque |
VERSION | Versión exacta del software | Permite buscar CVEs específicos para esa versión |
SCRIPT OUTPUT | Resultados de scripts NSE | Información adicional: títulos HTTP, certificados, shares SMB... |
OS details | Sistema operativo detectado | Determina qué exploits son aplicables |
filtered | Puerto bloqueado por firewall | Puede haber un servicio detrás accesible por otro método |
-oN, -oX, -oA). En el examen OSCP tendrás que documentar cada paso. Practicar esto desde el principio en el lab te ahorrará tiempo y estrés el día del examen.Resumen de los servicios expuestos en la VM Windows de Metasploitable 3, qué tecnología usa cada uno y por qué son relevantes para el aprendizaje de pentesting.
Mapa de puertos y servicios — Windows
| Puerto | Servicio | Versión | Relevancia de aprendizaje |
|---|---|---|---|
21 | FTP | FileZilla Server 0.9.41 | Credenciales débiles por defecto, enumeración de usuarios |
22 | SSH | OpenSSH 7.1 (via Cygwin) | Autenticación con clave, fuerza bruta |
80 | HTTP | WampServer / WAMP Stack | Vulnerabilidades web: SQLi, RFI, credenciales débiles |
445 | SMB | Windows Server 2008 R2 | Enumeración de shares, EternalBlue (MS17-010) |
3389 | RDP | Windows Remote Desktop | Acceso remoto, BlueKeep (CVE-2019-0708) |
4848 | GlassFish | GlassFish 4.0 | Consola de administración con credenciales débiles |
8080 | HTTP-Alt | Apache Tomcat 8.0.33 | Manager con credenciales débiles, despliegue WAR malicioso |
8484 | HTTP | Jenkins 1.637 | Consola Groovy Script, ejecución de comandos |
9200 | HTTP | ElasticSearch 1.1.1 | Sin autenticación, RCE via Groovy/MVEL |
10000 | HTTP | Webmin 1.772 | Panel de administración, múltiples CVEs conocidos |
Resumen de los servicios expuestos en la VM Linux de Metasploitable 3. Ubuntu 14.04 llegó al fin de soporte en 2019, lo que lo hace representativo de sistemas legacy sin parchear.
Mapa de puertos y servicios — Linux
| Puerto | Servicio | Versión | Relevancia de aprendizaje |
|---|---|---|---|
21 | FTP | ProFTPD 1.3.5 | Vulnerabilidad mod_copy, backdoor en versiones antiguas |
22 | SSH | OpenSSH 6.6.1 | Configuración por defecto, claves débiles |
80 | HTTP | Apache 2.4.7 | Drupal CMS, Shellshock via CGI, páginas de estado |
139/445 | SMB/Samba | Samba 4.1.6 | Enumeración, username map script, shares accesibles |
3306 | MySQL | MySQL 5.5.44 | Credenciales débiles, acceso sin contraseña a root |
6667 | IRC | UnrealIRCd 3.2.8.1 | Backdoor documentado en versiones comprometidas |
8080 | HTTP-Alt | Apache + PHP | Aplicaciones PHP con vulnerabilidades de configuración |
8181 | HTTP | Tomcat / Jetty | Servicio secundario con configuración débil |
27017 | MongoDB | MongoDB 2.6.x | Sin autenticación por defecto — acceso libre a todas las BBs |
Descripción técnica de cada vulnerabilidad presente en Metasploitable 3 — qué es, por qué existe, cuál es su impacto y qué concepto de seguridad enseña. Sin comandos de explotación, con CVEs y referencias para investigación propia.
VM Windows — Vulnerabilidades
VM Linux — Vulnerabilidades
Una metodología estructurada es lo que diferencia a un pentester profesional de alguien que simplemente ejecuta herramientas. Esta sección cubre el proceso que debes practicar en Metasploitable 3 para preparar OSCP y PNPT.
Las 5 fases de un pentest
Cada servicio vulnerable en la VM Windows enseña una habilidad específica. Esta sección mapea qué deberías aprender de cada vector y cómo profundizar en él.
La VM Linux de Metasploitable 3 cubre un amplio espectro de vectores de ataque en sistemas Unix. Estas son las habilidades que deberías desarrollar con cada servicio.
Cómo estructurar el estudio con Metasploitable 3 para preparar certificaciones de pentesting. El orden importa — dominar los fundamentos antes de los ataques avanzados.
Semana 1-2 — Fundamentos
- Instalar el lab completo (VirtualBox + Vagrant + Kali + Metasploitable 3)
- Hacer el escaneo nmap completo de ambas VMs y guardar resultados
- Identificar todos los servicios y sus versiones
- Buscar los CVEs asociados a cada versión en nvd.nist.gov
- Leer la documentación de cada CVE — entender por qué existe la vulnerabilidad
- Enumeración manual de cada servicio sin usar exploits
Semana 3-4 — Explotación Linux
- Explotar ProFTPD mod_copy para colocar una webshell (investigar el CVE primero)
- Explotar Shellshock via Apache CGI (entender el mecanismo de Bash)
- Acceder a MongoDB sin credenciales — volcar todas las bases de datos
- Conectarse a MySQL sin contraseña y extraer hashes
- Explotar UnrealIRCd — leer el advisory original de 2010
- Escalar privilegios a root en la VM Linux (al menos 2 métodos distintos)
- Escribir el reporte de cada explotación (qué hiciste, por qué funciona, cómo se remediaría)
Semana 5-6 — Explotación Windows
- Acceder al panel de Tomcat y entender el mecanismo de despliegue WAR
- Explotar Jenkins Script Console (entender Groovy scripting)
- Explotar ElasticSearch — acceder a todos los índices via API REST
- Estudiar MS17-010 — leer el write-up técnico de Shadow Brokers y Rapid7
- Explotar MS17-010 con Metasploit (módulo ms17_010_eternalblue)
- Post-explotación Windows: obtener hashes del SAM
- Documentar el proceso completo con capturas de pantalla
Semana 7-8 — Sin Metasploit (modo OSCP)
- Repetir TODAS las explotaciones anteriores sin usar módulos de Metasploit
- Usar exploits manuales de Exploit-DB, GitHub o escritos a mano
- Práctica con netcat, socat, pwncat-cs para shells inversas
- Usar linpeas/winpeas para escalada — entender cada resultado
- Generar payloads con msfvenom de forma manual
- Escribir un informe completo de pentest (formato profesional) de ambas máquinas
Recursos oficiales y de referencia para profundizar en cada vulnerabilidad y certificación.
Documentación oficial de las vulnerabilidades
| Recurso | URL | Para qué |
|---|---|---|
| NVD / NIST CVE Database | nvd.nist.gov | Detalles técnicos de cada CVE, CVSS score, referencias |
| Exploit Database | exploit-db.com | Exploits públicos para cada CVE — leer el código, no solo ejecutarlo |
| Rapid7 Metasploitable3 Wiki | github.com/rapid7/metasploitable3/wiki | Documentación oficial: credenciales, servicios, configuración |
| Metasploit Unleashed | offensive-security.com/metasploit-unleashed | Curso gratuito de Offensive Security sobre Metasploit |
| GTFOBins | gtfobins.github.io | Técnicas de escalada de privilegios Linux con binarios del sistema |
| LOLBAS | lolbas-project.github.io | Equivalente de GTFOBins para Windows |
| HackTricks | book.hacktricks.xyz | Referencia de técnicas de pentesting Linux y Windows |
| PayloadsAllTheThings | github.com/swisskyrepo/PayloadsAllTheThings | Payloads y bypasses para múltiples vectores de ataque |
Certificaciones y plataformas de práctica
| Certificación | Proveedor | Relación con Metasploitable 3 |
|---|---|---|
| OSCP | Offensive Security | Alta — especialmente Windows: Tomcat, SMB, escalada de privilegios |
| PNPT | TCM Security | Alta — el curso Practical Ethical Hacking usa máquinas similares |
| eJPT | eLearnSecurity / INE | Perfecta para empezar — nivel de dificultad muy alineado |
| eCPPT | eLearnSecurity | Media — cubre los mismos vectores pero con más profundidad |
| CEH | EC-Council | Media — más teórico pero cubre todos los CVEs incluidos |
Plataformas para continuar practicando
| Plataforma | URL | Tipo |
|---|---|---|
| HackTheBox | hackthebox.com | Máquinas CTF online — nivel intermedio/avanzado |
| TryHackMe | tryhackme.com | Laboratorios guiados — ideal para principiantes |
| VulnHub | vulnhub.com | VMs descargables similares a Metasploitable — gratis |
| PentesterLab | pentesterlab.com | Cursos de web hacking con laboratorios prácticos |
| PortSwigger Web Academy | portswigger.net/web-security | El mejor recurso gratuito para vulnerabilidades web |
Credenciales documentadas en el repositorio oficial de Rapid7. Están publicadas públicamente en el wiki de GitHub del proyecto.
Credenciales del sistema
| Sistema | Usuario | Contraseña | Acceso |
|---|---|---|---|
| Windows 2008 R2 | vagrant | vagrant | Administrador local |
| Ubuntu 14.04 | vagrant | vagrant | Usuario sudo |
Credenciales de servicios
| Servicio | Usuario | Contraseña | URL / Puerto |
|---|---|---|---|
| Apache Tomcat Manager | tomcat | tomcat | :8080/manager/html |
| Jenkins | Sin autenticación | — | :8484 |
| GlassFish Admin | admin | admin | :4848 |
| Webmin | vagrant | vagrant | :10000 |
| MySQL (Linux) | root | sin contraseña | :3306 |
| MongoDB (Linux) | Sin autenticación | — | :27017 |
| ElasticSearch (Windows) | Sin autenticación | — | :9200 |
| WampServer / WordPress | admin | vagrant | :80/wordpress |
| FTP FileZilla (Windows) | vagrant | vagrant | :21 |
| ProFTPD (Linux) | vagrant | vagrant | :21 |
Instalación
- VirtualBox instalado con Extension Pack
- Vagrant instalado y verificado (
vagrant --version) - Plugin vagrant-reload instalado
- Vagrantfile descargado de GitHub oficial de Rapid7
vagrant upcompletado sin errores- Ambas VMs visibles en VirtualBox
- Snapshot creado de ambas VMs tras la instalación
Red y conectividad
- Kali Linux en la misma red Host-Only que las VMs
- Ping a 192.168.56.52 (Windows) responde
- Ping a 192.168.56.53 (Linux) responde
- Las VMs NO tienen acceso a Internet ni a tu red doméstica
Reconocimiento inicial
- nmap completo de VM Windows guardado en archivo
- nmap completo de VM Linux guardado en archivo
- Todos los servicios identificados y documentados
- CVEs buscados en nvd.nist.gov para cada versión
- Herramienta de notas preparada (CherryTree, Obsidian...)
Comandos rápidos de gestión del lab
## CONTROL DE LAS VMs vagrant up # arrancar ambas VMs vagrant up win2k8 # solo Windows vagrant up ub1404 # solo Linux vagrant halt # apagar ambas vagrant status # ver estado vagrant suspend # suspender (guardar estado RAM) vagrant resume # reanudar desde estado suspendido ## RECONSTRUIR DESDE CERO (si algo se rompe) vagrant destroy # eliminar VMs vagrant up # reconstruir (usa caché local, más rápido) ## ACCESO SSH A LAS VMs vagrant ssh win2k8 # SSH a Windows (via Cygwin/OpenSSH) vagrant ssh ub1404 # SSH a Linux ## VER IPs DE LAS VMs vagrant ssh ub1404 -c "ip addr show eth1" vagrant ssh win2k8 -c "ipconfig"