Der Inside-Out-Sicherheits Blog - Der Inside-Out-Sicherheits Blog

Penetrationstests, Teil 6: Die Pass-the-Hash-Methode

Geschrieben von Carl Groves | Apr 11, 2016 11:00:00 AM

In dieser Blog-Serie sind wir inzwischen an einem Punkt angelangt, an dem wir sämtliche Standardtricks zum Stehlen von Zugangsdaten ausgeschöpft haben – das Erraten von Passwörtern und Brute-Force-Attacken auf die Hashwerte. Jetzt bleibt nur noch eine clevere Methode übrig: ein Pass-the-Hash-Angriff, bei dem ein Passwort-Hash für ein anderes Programm wiederverwertet wird. Das Klartext-Passwort braucht man dazu nicht mehr.

mimikatz

Erinnern Sie sich an die einfache Testumgebung, die wir eingerichtet hatten?

Sie besteht aus einer Windows-Domäne mit zwei Servern des imaginären Unternehmens Acme, das häufig Namen von Biermarken verwendet um seine Server zu benennen. In der Rolle als Penetrationstester landeten wir mithilfe eines RAT auf dem Server von Mitarbeiterin Jane. Auf diesem Server haben wir dann eine Shell erstellt, mit dem Ziel an die Zugangsdaten eines weiteren Nutzers mit umfassenderen Zugriffsrechten zu gelangen.

Im letzten Blogbeitrag hatten wir erläutert wie man die Hashwerte lokaler Nutzerkonten mithilfe von fgdump knacken kann. Heute wollen wir das von Benjamin Delpy entwickelte „mimikatz“ vorstellen.

Dabei handelt es sich um ein extrem leistungsstarkes Tool. Es durchsucht den LSASS-Prozess nach Hashwerten und kann unter diesen Hash-Zugangsdaten Programme ausführen. Die mimikatz-Binärdatei steht auf github zum Download bereit. mimikatz läuft übrigens mit nur 395 KB tadellos.

Die Software verfügt über ihre eigene Mini-Befehlssprache. Der erste Befehl, den man benötigt, ist privilege::debug. Er stellt sicher, dass Sie über den erforderlichen Zugriff verfügen (siehe unten).

Genau wie für fgdump benötigt man um mimikatz auszuführen Administratorenrechte.

Klartext-Passwörter?

Gibt man sekurlsa::logonpasswords ein, erhält man eine Liste sämtlicher aktiver Nutzer und Dienste mit den zugehörigen NTLM- und SHA1-Hashwerten. Die erste Überraschung: Das Pass-the-Hash-Tool zeigt auch die Klartext-Passwörter der Nutzer an.

Das wirkt auf den ersten Blick vielleicht etwas dumm von Windows ist es aber aus technischer Sicht nicht. Denn der Speicherbereich des LSASS-Prozesses, in dem sich das Windows-Passwort befindet, ist verschlüsselt. mimikatz ist jedoch in der Lage eine bestimmte Microsoft-API auszuführen, die diesen Speicher entschlüsselt.

Bei unserer Recherche haben wir herausgefunden, dass Windows Klartext-Passwörter für die so genannte HTTP-Digest-Authentifizierung verwendet. Hier erfahren Sie mehr dazu.

Microsoft hat diese Sicherheitslücke 2014 mit einem Patch gestopft, der es Systemadministratoren ermöglicht, das Speichern von WDigest-Passwörtern zu verhindern. In dieser Microsoft-Sicherheitsempfehlung wird erklärt, welcher Registrierungseintrag dafür geändert werden muss. Ab Windows 8 ist die Standardeinstellung übrigens, keine Klartext-Passwörter in LSASS zu speichern.

In der Rolle als Penetrationstester mussten wir also feststellen, dass der betreffende Server von Jane sicherer geworden ist und im schlimmsten Fall der Patch installiert werden muss.

Die Pass-the-Hash-Methode

mimikatz bietet den enormen Vorteil, dass man nicht das eigentliche Passwort, sondern lediglich den NTLM-Hash benötigt.

Wenig überraschend, dass Hacker es auf Nutzer mit Administratorrechten abgesehen haben. Hat ein Angreifer solche Rechte, ist es spielend leicht sich mit Hilfe von mimikatz im System seitwärts weiter fortzubewegen.

In unserem Penetrationstest-Szenario hatten wir uns an Janes Rechner als Nutzer „bigadmin“ angemeldet, einem Domänenkonto mit erweiterten Rechten. Als Proof of Concept meldeten wir uns nun direkt an Janes Server an. Denn mit dem pth-Befehl von mimikatz lässt sich ein NTLM-Hash für ein anderes Programm wiederverwenden.


In unserem Testszenario haben wir dann den NTLM-Hash von bigadmin an psexec weiter gegeben.

psexec erlaubt es Nutzern, Befehle per Remote-Zugriff auszuführen, in diesem Fall das Windows CMD-Shell-Programm. Wie auf dem Screenshot zu erkennen, befinden wir uns nun wie geplant auf Amstel, dem zweiten Server der Acme-Umgebung, sind aber weiterhin als bigadmin angemeldet. Technisch gesehen „überführen“ wir den Hash auf psexec. Dazu mehr im nächsten und letzten Beitrag dieser Serie.

Die Verwendung von mimikatz lehrt uns einige wichtige Dinge: Man sollte die Zugangsberechtigungen der Nutzer einschränken und eine Richtlinie einführen, um Domänenadministratoren davon abzuhalten, sich per Fernzugriff an den Rechnern normaler Nutzer anzumelden. Denn wie gesehen, kann ein cleverer Hacker mit mimikatz im Gepäck diese Hashwerte nutzen, um sich in einem Zielsystem weiter fortzubewegen.