NTLM - SMB Relay
Esta tecnica consiste en envenenar la red como haciamos antes, pero en vez de solo obtener el hash NTLMv2 vamos a obtener acceso al servicio directamente con una autenticacion de forma legal, por ejemplo vamos a obtener acceso al servicio de SMB abriendonos nosotros un servidor de SMB falso, nos pondremos en mitada de la comunicacion y cuando un usuario legitimo quiera acceder a un recuros compartido mediante este servicio y falle, lo que va hacer es que nosotros vamos autenticarnos contra ese recurso como si fuera real y nosotros vamos a reenviar la peticion al administrador para que este nos conteste con el paquete cifrado del challengue y se lo enviamos al usuario para que haga su funcion, asi sucesivamente hasta que nos llegue la sesion del servicio a nosotros y ya cortamos comunicacion con el usuario una vez que hayamos obtenido el servicio SMB de forma autenticada.
Basicamente esta tecnica consiste en directamente autenticarte contra un servicio sin necesidad de obtener ningun hash ni nada parecido, solamente siendo tu el de la comunicacion central entre Cliente-Servidor.
IMPORTANTE
No debe de tener el SMB la opcion activada del firmado ya que con esto autentica que la comunicacion sea legitima y no podremos realizar esta tecnica, generalmente en entornos reales no suele estar activado, por lo que podremos realizar dicha tecnica.
Para nosotros saber si lo tiene firmado o no, podremos hacer lo siguiente:
crackmapexec smb 192.168.5.0/24Info:
SMB 192.168.5.5 445 DC01 [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:corp.local) (signing:True) (SMBv1:False)
SMB 192.168.5.208 445 WS01 [*] Windows 10 / Server 2019 Build 19041 x64 (name:WS01) (domain:corp.local) (signing:False) (SMBv1:False)Vemos que el DC01 si lo tiene firmado, pero el WS01 no lo tiene firmado, por lo que puede ser un vector de entrada para dicho equipo.
Lo observamos en la siguiente seccion:
signing:FalseDe primeras vamos a crear un fichero llamado targets.txt en el que vamos a incluir la IP que vemos que no tiene le firmado activado del SMB que en este caso seria la siguiente:
targets.txt
192.168.5.208Y ahora ejecutaremos el siguiente comando:
impacket-ntlmrelayx -smb2support -tf targets.txt Con el -tf especificamos el Target File que es el fichero donde estan todas las IP's que nos interesan.
Info:
Esto lo que esta haciendo es levantarnos dichos protocolos y tambien servidores para estar en mitada de la comunicacion con ellos, haciendonos pasar nosotros por la maquina que se encuentra en mitad de la comunicacion, para realizar lo que comente anteriormente.
Como tenemos estos servidores levantados y tambien necesitamos utilizar responder vamos a editar el archivo de responder para desactivar el que nos levante los servidores que ya estan levantados en la otra herramienta, para ponernos asi en mitad de la comunicacion gracia a la herramienta.
Con estos cambios lo guardamos y ejecutamos lo siguiente:
Info:
Ahora si nosotros con cualquier usuario, por ejemplo el Administrador en el PowerShell del DC01 del Administrador ejecuta una ruta que no existe:
Le fallara y si nos volvemos a donde tenemos las 2 herramientas veremos lo siguiente:
Responder
impacket-ntlmrelayx
Vemos que hemos sacado informacion del Administrador volcando tambien la SAM.
Pero no solo podemos hacer esto, si no que tambien podremos ejecutar un comando redirijiendolo a un proxy.
Ahora cuando de nuevo cualquier usuario se conecte de forma erronea a un recurso compartido, pasara que se nos creara una conexion activa en SOCKS.
Por lo que ejecutamos esto en DC01 como el usuario Administrador, pero puede ser bajo cualquier usuario, funciona con caulquiera.
Esto nos dara un error como esperamos y si volvemos a donde tenemos la escucha del servidor del socks veremos lo siguiente:
Tendremos que pulsar ENTER y veremos el siguiente prompt:
Ejecutamos dentro de esta interfaz el comando socks y veremos que tendremos una sesion activa de la siguiente forma:
Info:
Ahora para poder interactuar con esta sesion, vamos a utilizar proxuchange que viene en kali de la siguiente forma en otra terminal:
Lo que estamos haciendo con esto es redirigir todo el trafico de red de la herramienta que ejecutemos a nuestro localhost en el puerto 1080 que es justamente donde esta escuchando este NTLM Relay.
Ahora vamos a utilizar la herramienta crackmapexec pero utilizando la herramienta proxychange4, lo que haremos es que redirigiremos ese trafico de red que va a generar crackmapexec o la herramienta que pongamos despues de proxychange4 y lo va hacer en 127.0.0.1 1080 que es donde tenemos la sesion activa:
Tendremos que poner el usuario el cual nos aparezca donde capturo en la sesion de ntlmrelayx en mi caso fue el Administrador.
Info:
Con esto estamos viendo que se esta ejecutando correctamente, por lo que ahora vamos a mandar las peticiones que queramos como si fueramos el usuario Administrador en este caso:
En el -p especificamos el password pero en este caso podremos poner lo que sea ya que estamos autenticados y cualquier palabra nos servira como contraseña ya que lo omitira por asi decirlo.
En este caso lo que haremos sera volcar la SAM con esta sesion de forma proxyficada.
Info:
Vemos que ha funcionado y nos lo ha volcado.
O si queremos mejor saber todos los usuarios cacheados del sistema a nivel de dominio con el lsass.
Info:
Vemos que nos vuelve a funcionar, por lo que tendremos de alguna forma comprometida la maquina con dicho usuario.
Lo que podemos tambien es ejecutar comandos directamente con la herramienta ntlmrelayx, en este caso ejecutaremos un One Line de PowerShell para hacernos una reverse shell a nuestro equipo.
Antes nos iremos a la pagina de la One Line que nos copiaremos:
URL = GitHub OnleLine PowerShell ReverseShell
Lo guardamos y abriremos un servidor de python3 para que lo pueda obtener la herramienta con el comando que vamos a ejecutar, ya que lo que vamos hacer es en el comando despues del -c obtener desde el servidor de python3 el script y ejecutarlo a la misma vez para obtener la reverse shell.
Tambien nos pondremos a la escucha para dejarlo listo de la siguiente forma:
Y por ultimo vamos a ejecutar el comando para obtener dicha shell.
Ahora teniendo todo preparado, tendremos que ejecutar de neuvo un recurso compartido que no exista de la siguiente forma:
Y si nos volvemos a donde tenemos la escucha con nc veremos lo siguiente:
Info:
impacket-ntlmrelayx:
netcat:
Si nos generara la shell puede ser por que el antivirus lo puede estar cortando el ejecutar ese OneLine si no, tendria que ofuscarse y ejecutarse de otra forma.
Last updated