Pass-the-hash-hacker

Wie arbeitet ein Hacker? Wissen ermöglicht Bekämpfung.

Wie arbeitet ein Hacker? Wissen ermöglicht Bekämpfung.

Gemeinsam mit unseren Kunden kämpfen wir gegen Cybercrime. Wir sind die Guten. Aber die Bekämpfung des Bösen zwingt uns, uns in die Hacker hineinzuversetzen. Wir müssen wissen wie sie denken und arbeiten, denn nur wenn wir ihre Praktiken kennen, können wir uns gegen ihre Angriffe verteidigen.

Eine grosse Anzahl von Hackern setzen heute auf Pass-the-Hash-Attacken. Wer versteht, wie diese funktionieren, der weiss auch, was er tun muss, um sein Unternehmen davor zu schützen. Aus diesem Grund erläutern wir in diesem Blog wissenswerte Grundlagen rund um das Thema PtH.

Was ist Pass-the-Hash?

Ein Pass-the-Hash Angriff wird typischerweise für Lateral Movement verwendet. Das heisst, der Angriff ist bereits ziemlich weit fortgeschritten und der Angreifer hat schon mindestens ein System übernommen und darauf lokale Adminrechte erlangt.

CyberKillChain

 

Er wird nun versuchen mit geeigneten Werkzeugen den Hash (s.u. Was ist ein Hash) eines zuvor verwendeten Accounts auszulesen und diesen für den Zugang auf ein wertvolleres System (z. B. den Domain Controller) zu missbrauchen. Dies ist ein klassischer Schachzug beim Lateral Movement.
Ein Pass-the-Hash oder Overpass-the-Hash Angriff ist besonders perfide, da er keine Schwachstelle ausnutzt, die sich durch einen Patch beheben lässt, sondern auf Standardmechanismen im Microsoft AD-Umfeld basiert.

Um diese Art von Angriff zu verstehen, müssen zuerst ein paar Grundlagen geschaffen werden.

Was ist ein Hash?

Ein Hash ist ein Dateityp und bildet die Informationen von Eingabewerten ab, d. h. er entsteht durch das Anwenden einer Hash-Funktion. Typische Hash-Funktionen sind z. B. MD5, SHA256 oder NTLM. Charakterisierend für eine Hash-Funktion ist, dass sie nur in einer Richtung funktioniert. Es ist sehr einfach, aus einem Passwort den passenden Hash zu errechnen. Es ist aber nicht möglich, aus dem Hash wieder das Passwort zu errechnen.

  1. Der Benutzer gibt sein Passwort auf dem Client ein.
  2. Aus dem Passwort wird der NTLM-Hash errechnet und gespeichert. Das Passwort wird wieder gelöscht.
  3. Der Client sendet den Username an den Server.
  4. Der Server antwortet mit einer zufällig generierten Nummer (Challenge).
  5. Der Client verschlüsselt die Challenge mit dem NTLM-Hash als Schlüssel (Response) und sendet diesen zurück an den Server.
  6. Der Server sendet Response, Username und Challenge an den Domain Controller.
  7. Der Domain Controller verschlüsselt die Challenge mit seinem gespeicherten NTLM-Hash des entsprechenden Benutzers.
  8. Stimmt die Response (Client verschlüsselt Challenge mit NTLM-Hash) mit der selber errechneten Response überein, so hat der Benutzer das richtige Passwort eingeben.

Dieses Beispiel macht klar, dass das Passwort des Benutzers nie gespeichert wird. Es wurde immer mit dem NTLM-Hash des Passworts gearbeitet, welcher nicht zurückgerechnet werden kann. Weiter wird weder Passwort noch NTLM-Hash über das Netzwerk transportiert.

Wenn wir nun aber in Besitz dieses Password-Hashes kommen, können wir uns ohne Passwort gegenüber dem Server authentifizieren. Genau hier setzt nun der Pass-the-Hash-Angriff an.

Mehr zu einem NTLM-Relaying-Angriff erfahren Sie in diesem Blog.

Der Angriff aus dem Cyberspace

Die hier gezeigten Abläufe und Kommandos werden genauso bei einem Angriff eingesetzt.

Wir möchten damit aufzeigen, wie ein solcher Angriff funktioniert und wie einfach er für einen Hacker durchzuführen ist.

Gehen wir davon aus, ein Angreifer hat ein System (Client) übernommen und lokale Administratorenrechte erlangt. Er möchte sich nun weiter im Netzwerk ausbreiten und verwendet das Progamm «mimikatz», um die auf dem System gespeicherten Accounts bzw. Passwort-Hashes auszulesen. Diese Passwort-Hashes werden im LSASS Memory des Systems gespeichert. Hat sich zum Beispiel einmal ein Domain Admin an dem System angemeldet, so werden wir seinen NTLM-Hash aus dem LSASS auslesen können.

sekurlsa:logonpasswords

logonpasswords

Wir erhalten eine Liste von allen auf dem System gefundenen Anmeldedaten. Idealerweise befinden sich darunter hoch privilegierte Accounts wie ein Domain Admin. Im Beispiel ist dies der NTLM-Hash des Users «Alice».

Als nächsten Schritt können wir nun beliebige Programme im Kontext dieses Users ausführen. Alles was wir dazu brauchen ist der Benutzername, die Domäne und der NTLM-Hash. Auch hier hilft uns mimikatz:

sekurlsa::pth /user:Alice /domain:lab.local
/ntlm:f8963568a1ec623161d9d6449baba93 /run:PowerShell.exe

PassTheHash

So können wir beliebige Applikationen (z. B. PowerShell) im Kontext von «Alice» ausführen und all ihre Rechte als Domain Admin verwenden.

Overpass-the-Hash

Overpass-the-Hash verwendet als Basis Pass-the-Hash und kombiniert dies mit einer Pass-the-Ticket Attacke. Pass-the-Ticket ist ähnlich wie Pass-the-Hash, nur dass es sich diesmal nicht um NTLM-Authentifizierung sondern um Kerberos handelt. Bei Kerberos brauchen wir vereinfacht ausgedrückt ein Ticket um uns zu authentifizieren.
Wir arbeiten ja bereits im Kontext des Users «Alice», daher benötigen wir nun nur noch ein Ticket. Als Domain Admin wenden wir uns mit einem einfachen Befehl an den Domain Controller:

net use \\dc01

Dieser reicht bereits aus, um ein Ticket zu erhalten. Mit dem Befehl klist können wir uns alle vorhandenen Tickets anzeigen lassen.

klist

Wir sehen im Bild, dass wir offensichtlich ein Ticket erhalten haben, mit dem wir uns mit den entsprechenden Rechten gegenüber dem Domain Controller authentifizieren.

Um den Domain Controller zu übernehmen, benötigen wir Code Execution auf dem System, wofür wir das Microsoft System Internal Programm PsExec verwenden. Damit können wir auf einem entfernten System ein weiteres Programm ausführen. In diesem Fall starten wir cmd.exe auf dem Domain Controller.

.\PsExec.exe \\dc01 cmd.exe

psExec

Wir sind nun auf dem Domain Controller angemeldet und können als Domain Admin «Alice» Code ausführen, ohne dass wir das Passwort kennen. Das Einzige, was wir für den gesamten Angriff verwendet haben, ist sein NTLM-Hash, den wir mit Hilfe von mimikatz aus dem LSASS ausgelesen haben.

Fazit   ̶ Was können Sie tun, um diesen Pass-the-Hash-Angriff zu verhindern und zu erkennen

Mit dem Tool mimikatz und ein paar einfachen Befehlen konnte eine Domäne übernommen werden. Dafür mussten wir nicht einmal eine Schwachstelle ausnützen, sondern konnten Standardmechanismen verwenden.

Um diese Art des Angriffs zu verhindern, empfehlen wir allen Kunden die Systeme und das AD zu härten. Dadurch kann verhindert werden, dass das LSASS einfach ausgelesen werden kann. Darüberhinaus sollte auch die Verwendung NTLM deaktiviert werden. Das Tool Singularity RangerAD (ehemals ADAssessor)hilft beim Auffinden und Erkennen von möglichen Schwachstellen im AD.

Unerlässlich ist der sorgfältige Umgang mit hoch privilegierten Accounts. Loggt sich ein Domain Admin in ein bereits kompromittiertes System ein, ist es für einen Angreifer ein Leichtes, diesen Account mit allen Rechten zu übernehmen. Hier ist ein AD-Konzept und eine saubere Arbeitsweise zwingend.

Nicht zuletzt gibt es auch in den Logs diverse Hinweise, die auf einen solchen Angriff hindeuten und somit helfen, den Angreifer frühzeitig zu entdecken. Erwähnenswert sind dabei die lokalen Security Logs.
Die Event ID «4624 An Account was successfully logged on, Logon Type 2» ist ein normaler Login.
Die Event ID «4624 An Account was successfully logged on, Logon Type 9» deuted hingegen auf einen Pass-the-Hash-Angriff hin.

Event Log

 

Die Kunden der terreActive mit SIEM- bzw. SOC-Services profitieren von entsprechende Use Cases wie «Suspected identity theft» (pass-the-hash) und «Suspected overpass-the-hash»(Kerberos) zur Erkennung dieser Angriffe, sofern sie über Produkte zur Erkennung verfügen.

Übrigens: terreActive verfügt über ein Red Team,dass die Rolle des Hackers übernimmt und versucht im Netzwerk des Kunden herauszufinden, welche Angriffe erfolgreich sein könnten.