
Windows Privilege Escalation Tool, das SeImpersonate-Berechtigungen durch Named-Pipe-Impersonation ausnutzt und mehrere Ausführungsmethoden (CreateProcessWithTokenW, CreateProcessAsUserW, CreateUser, BindShell) für SYSTEM-Zugriff unterstützt.
Zunächst einmal – Dank an @splinter_code und @decoder_it für RoguePotato, da dieser Code stark darauf basiert.
Dies ist nur eine weitere Potato, um über SeImpersonate-Berechtigungen SYSTEM zu erlangen. Aber diese unterscheidet sich in folgenden Punkten:
CreateProcessWithTokenW, um einen neuen Prozess zu starten. Stattdessen kannst du zwischen CreateProcessWithTokenW, CreateProcessAsUserW, CreateUser und BindShell wählen.Dieses Projekt kann also einen NamedPipe-Server öffnen, jeden Benutzer, der sich verbindet, imitieren und anschließend eine der oben genannten Optionen ausführen. Falls in Zukunft neue SYSTEM-Auth-Trigger veröffentlicht werden, kann dieses Tool weiterhin zur Privilegienausweitung verwendet werden – du musst dann nur einen anderen Pipe-Namen verwenden.
Beispiele:
c:\temp\MultiPotato> MultiPotato.exe -t CreateUser
Du hast standardmäßig 60 Sekunden (änderbar über THEAD_TIMEOUT), um das SYSTEM-Konto oder ein anderes Konto zur Authentifizierung zu bewegen. Dies kann zum Beispiel über eine ungepatchte MS-EFSRPC-Funktion erfolgen. Standardmäßig hört MultiPotato auf dem Pipe-Namen \\.\pipe\pwned/pipe/srvsvc, der in Kombination mit MS-EFSRPC verwendet werden soll. Für andere SYSTEM-Auth-Trigger kannst du diesen Wert über den Parameter -p anpassen.
c:\temp\MultiPotato> PetitPotamModified.exe localhost/pipe/pwned localhost
Die Verwendung von PetitPotam.py als Trigger von einem entfernten System mit einem gültigen, niedrig privilegierten Benutzer ist natürlich ebenfalls möglich.
c:\temp\MultiPotato> MultiPotato.exe -t CreateProcessAsUserW -p "pwned\pipe\spoolss" -e "C:\temp\stage2.exe"
Und auslösen über:
c:\temp\MultiPotato>MS-RPRN.exe \\192.168.100.150 \\192.168.100.150/pipe/pwned
Wichtig: In meinen Tests mit MS-RPRN konnte ich localhost oder 127.0.0.1 nicht als Ziel verwenden; dies muss die Netzwerk-IP-Adresse oder der vollqualifizierte Domainname sein. Außerdem muss der Druckerdienst für diesen Vorgang aktiviert sein.
c:\temp\MultiPotato> MultiPotato.exe -t BindShell -p "pwned\pipe\spoolss"
Ich hatte kürzlich einen Penetrationstest, bei dem ich einen MSSQL-Server über SQL-Injection und XP_CMDShell kompromittieren konnte. Aber alle öffentlichen Potatoes scheiterten auf diesem Zielsystem daran, die Berechtigungen vom Dienstkonto auf SYSTEM zu erhöhen. Der System-Auth-Trigger war nicht das Problem – stattdessen schlug CreateProcessWithTokenW jedes Mal mit NTSTATUS-Code 5 – Zugriff verweigert – fehl. Das ergab für mich nicht wirklich Sinn und könnte ein Grenzfall sein. Ein möglicher Grund könnte der lokale Endpoint-Schutz sein, der die Prozesserstellung nach dem Imitieren von SYSTEM blockiert haben könnte.
Daher suchte ich nach Alternativen – und fragte einige Leute auf Twitter danach. Nochmals Dank an @splinter_code für die Erklärung, wie es über CreateProcessAsUserW geht, was auf dem kompromittierten MSSQL-Server einwandfrei funktionierte, um einen SYSTEM-C2-Callback zu erhalten.