Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Internal-Monologue — Internal Monologue Attack: NTLM-Hashes abrufen ohne LSASS zu berühren | Kitploit
Tools/GitHubGitHub/eladshamir/internal-monologue
PasswortangriffeLaterale BewegungPost-ExploitationPenetrationstestsRed Teaming
GitHubeladshamir/internal-monologue

Internal-Monologue

Internal Monologue Attack: NTLM-Hashes abrufen ohne LSASS zu berühren

Repository anzeigen
1.7k2385vor 7 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Internal Monologue Attack: NTLM-Hashes abrufen, ohne LSASS zu berühren

Einführung

Mimikatz, entwickelt von Benjamin Delpy (@gentilkiwi), ist ein weithin geschätztes Post-Exploitation-Tool, das es Angreifern ermöglicht, Klartext-Passwörter, NTLM-Hashes und Kerberos-Tickets aus dem Speicher zu extrahieren sowie Angriffe wie Pass-the-Hash, Pass-the-Ticket oder das Erstellen eines Golden Ticket durchzuführen. Man könnte sagen, der Hauptzweck von Mimikatz ist das Abrufen von Benutzeranmeldeinformationen aus dem LSASS-Prozessspeicher für die laterale Bewegung nach der Ausnutzung.

In letzter Zeit hat Microsoft Credential Guard in Windows 10 Enterprise und Windows Server 2016 eingeführt, das virtualisierungsbasierte Sicherheit zur Isolierung von Geheimnissen verwendet und sehr effektiv darin ist, Mimikatz daran zu hindern, Hashes direkt aus dem Speicher abzurufen. Außerdem ist Mimikatz ein Hauptziel der meisten Endpoint-Protection-Lösungen geworden, und diese sind sehr aggressiv in ihren Bemühungen, es zu erkennen und zu verhindern. Obwohl diese Bemühungen zum Scheitern verurteilt sind, werden sie zunehmend lästig.

NetNTLM

NetNTLM ist das Challenge-Response-Protokoll von Windows, das hauptsächlich dort verwendet wird, wo Kerberos nicht unterstützt wird. Bei NetNTLM sendet der Server dem Client eine zufällige 8-Byte-Nonce als Challenge, und der Client berechnet eine Response, die die Challenge mit dem NTLM-Hash als Schlüssel verarbeitet, wobei es sich um den MD4-Hash des Benutzerpassworts handelt. Es gibt zwei Versionen des NetNTLM-Authentifizierungsprotokolls, und beide sind anfällig für bestimmte Angriffe. Natürlich ist Version 1 deutlich schwächer als Version 2, und daher ist ab Windows Vista/2008 NetNTLM Version 1 standardmäßig deaktiviert.

Pass the Hash

Da der NTLM-Hash der Schlüssel zur Berechnung der Response ist, muss ein Angreifer nicht unbedingt das Klartext-Passwort des Opfers erhalten, um sich zu authentifizieren. Daher ist das Abrufen des Hashes aus dem LSASS-Speicher mit Mimikatz fast gleichbedeutend mit dem Stehlen eines Klartext-Passworts. Chris Hummel hat 2009 einen Artikel veröffentlicht, der diese Technik beschreibt, und nannte sie „Pass the Hash“ [https://www.sans.org/reading-room/whitepapers/testing/crack-pass-hash-33219].

Divide and Conquer

Auf der Defcon 2012 präsentierten Moxie Marlinspike und David Hulton einen „Divide and Conquer“-Angriff gegen NetNTLMv1 [https://www.youtube.com/watch?v=sIidzPntdCM]. Bei NetNTLMv1 empfängt der Client die 8-Byte-Challenge und berechnet die Response, indem er sie dreimal mit DES unter Verwendung verschiedener Teile des NTLM-Hashs als Schlüssel verschlüsselt. Die Schlüssellänge für DES beträgt effektiv 56 Bit, also 7 Byte, während der NTLM-Hash 16 Byte hat. NetNTLMv1 verschlüsselt zuerst die Challenge mit den ersten 7 Bytes des NTLM-Hashs als Schlüssel, dann die Challenge mit den nächsten 7 Bytes des NTLM-Hashs als Schlüssel und schließlich die Challenge mit den letzten 2 Bytes des NTLM-Hashs, aufgefüllt mit Null-Bytes, als Schlüssel. Das bedeutet effektiv, dass ein Angreifer, um den NTLM-Hash aus einer gegebenen NetNTLMv1-Challenge und -Response zu erhalten, zwei 56-Bit-DES-Schlüssel knacken muss, was exponentiell einfacher ist als das Knacken eines einzigen 128-Bit-Schlüssels. Moxie und Hulton entwickelten dafür kundenspezifische Hardware und waren in der Lage, den gesamten DES-Schlüsselraum in weniger als 24 Stunden zu bruteforcen, was den erfolgreichen Abruf des NTLM-Hashs innerhalb einer angemessenen Zeit garantiert. Beachten Sie, dass dieser Angriff im Gegensatz zu Wörterbuch- oder Brute-Force-Angriffen auf das Passwort, die möglicherweise nicht erfolgreich sind, den erfolgreichen Abruf des NTLM-Hashs garantiert.

Rainbow Tables

Wie von ToorCon unter https://crack.sh demonstriert, ist es machbar, eine vollständige Rainbow Table für alle möglichen NetNTLMv1-Responses auf eine gewählte Challenge zu erstellen, z. B. 0x1122334455667788, was das Knacken des NTLM-Hashs für eine gegebene Response innerhalb von Minuten ermöglicht. Die Implikation ist, dass das Erfassen einer NetNTLMv1-Response für die gewählte Challenge fast sofort in den entsprechenden NTLM-Hash übersetzt werden kann, was aufgrund von Pass the Hash fast dem Erhalt des Passworts gleichkommt.

NetNTLM Downgrade-Angriff

Mimikatz wird üblicherweise ausgeführt, nachdem der Angreifer erweiterten Zugriff auf den Zielhost erlangt hat. An diesem Punkt kann der Angreifer auch Registrierungsschlüssel ändern, wie z. B. LMCompatibilityLevel, der angibt, ob der Host NetNTLMv1 oder NetNTLMv2 aushandeln soll. Der Angreifer kann den Wert auf 0, 1 oder 2 ändern, was NetNTLMv1 als Client aktiviert, und dann versuchen, sich gegenüber einem schädlichen SMB-Server zu authentifizieren, der die Response des Clients erfasst, wie in Optivs Blogbeitrag beschrieben [https://www.optiv.com/blog/post-exploitation-using-netntlm-downgrade-attacks].

Erweiterter NetNTLM Downgrade-Angriff

Zwei weitere Einstellungen können verhindern, dass das Opfer eine NetNTLMv1-Response aushandelt:

  1. NTLMMinClientSec – wenn auf "Require NTLMv2 session security" gesetzt, schlägt die Verbindung fehl, wenn das NTLMv2-Protokoll nicht ausgehandelt wird.
  2. RestrictSendingNTLMTraffic – wenn auf "Deny all" gesetzt, kann der Client-Computer nicht mit NetNTLM einer beliebigen Version gegenüber einem entfernten Server authentifizieren. Ähnlich wie beim NetNTLM Downgrade-Angriff können diese Einstellungen bei Bedarf geändert werden. Beachten Sie, dass diese Einstellungen im Gegensatz zu LMCompatibilityLevel standardmäßig nicht so konfiguriert sind, dass sie die NetNTLMv1-Authentifizierung blockieren.

Internal Monologue Attack

In sicheren Umgebungen, in denen Mimikatz nicht ausgeführt werden sollte, kann ein Angreifer einen Internal Monologue Attack durchführen, bei dem er einen lokalen Prozeduraufruf an das NTLM-Authentifizierungspaket (MSV1_0) von einer Benutzermodusanwendung über SSPI tätigt, um eine NetNTLM-Response im Kontext des angemeldeten Benutzers zu berechnen, nachdem ein erweiterter NetNTLM Downgrade durchgeführt wurde.

Der Ablauf des Internal Monologue Attack wird im Folgenden beschrieben:

  1. Deaktivieren Sie die präventiven Kontrollen für NetNTLMv1, indem Sie LMCompatibilityLevel, NTLMMinClientSec und RestrictSendingNTLMTraffic auf geeignete Werte ändern, wie oben beschrieben.
  2. Rufen Sie alle Nicht-Netzwerk-Anmeldetoken von aktuell laufenden Prozessen ab und imitieren Sie die zugehörigen Benutzer.
  3. Interagieren Sie für jeden imitierten Benutzer lokal mit NTLM SSP, um im Sicherheitskontext des imitierten Benutzers eine NetNTLMv1-Response auf die gewählte Challenge zu erhalten.
  4. Stellen Sie die ursprünglichen Werte von LMCompatibilityLevel, NTLMMinClientSec und RestrictSendingNTLMTraffic wieder her.
  5. Knacken Sie den NTLM-Hash der erfassten Responses mithilfe von Rainbow Tables.
  6. Pass the Hash.

Update: Credential Guard-Kompatibilität

Ich habe Internal Monologue kürzlich in Umgebungen mit aktiviertem Credential Guard erneut getestet und negative Ergebnisse erhalten. Ich bin mir nicht sicher, ob Credential Guard in meiner Testumgebung während der ersten Tests nicht richtig funktioniert hat oder ob sich seitdem etwas geändert hat. Ich habe die Implementierung aktualisiert, um ein Server-Token von AcceptSecurityContext dynamisch zu erwerben und damit zu manipulieren, um die lokale Authentifizierungsfalle zu vermeiden, sodass, falls NetNTLMv1 ohne erweiterte Sitzungssicherheit fehlschlägt, zumindest eine NetNTLMv2-Challenge-Response erfasst werden kann.

Audit Trail

Der Internal Monologue Attack ist wohl heimlicher als das Ausführen von Mimikatz, da kein Code injiziert und kein Speicher in einen oder aus einem geschützten Prozess ausgelagert werden muss. Da die NetNTLMv1-Response durch lokale Interaktion mit NTLM SSP hervorgerufen wird, wird kein Netzwerkverkehr erzeugt und die gewählte Challenge ist nicht leicht sichtbar. Es wird kein erfolgreiches NTLM-Authentifizierungsereignis in den Protokollen aufgezeichnet. Die Registrierungsänderungen für den NetNTLM Downgrade und das Stehlen von Token/Imitieren anderer Benutzer könnten Indikatoren auslösen.

Proof of Concept

Dieses Tool ist ein Proof of Concept, das den Internal Monologue Attack in C# implementiert. Das Portieren des Codes nach PowerShell kann bestimmte Ereignisprotokolle im Audit Trail durch andere ersetzen. Der PoC-Code ist weit entfernt von Perfektion. Positive Beiträge und Verbesserungen sind willkommen.

Autor

Elad Shamir von The Missing Link Security

Danksagungen

  • Matthew Bush (3xocyte) von The Missing Link Security und Shaun Williamson (AusJock) von Beyond Binary für die Hilfe beim Entwickeln von Ideen und das Zusammenstellen
  • Moxie Marlinspike und David Hulton für ihren Vortrag „Defeating PPTP VPNs and WPA2 Enterprise with MS-CHAPv2“ auf der Defcon 20
  • Optiv für den NetNTLM Downgrade-Angriff
  • Bialek Joseph (clymb3r) für Invoke-TokenManupilation
  • MWR Labs für Incognito
  • Anton Sapozhnikov (snowytoxa) für Selfhash
  • Tim Malcom Vetter (malcomvetter) für mehrere Verbesserungen
  • Marcello Salvati (byt3bl33d3r) für die Hinzufügung der DLL-Bibliothek
Tool herunterladen