Abusing Tokens

tip

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Tokens

Si no sabes qu茅 son los Tokens de Acceso de Windows, lee esta p谩gina antes de continuar:

Access Tokens

Quiz谩s podr铆as escalar privilegios abusando de los tokens que ya tienes

SeImpersonatePrivilege

Este es un privilegio que posee cualquier proceso que permite la suplantaci贸n (pero no la creaci贸n) de cualquier token, dado que se puede obtener un identificador para 茅l. Un token privilegiado se puede adquirir de un servicio de Windows (DCOM) induci茅ndolo a realizar autenticaci贸n NTLM contra un exploit, lo que permite posteriormente la ejecuci贸n de un proceso con privilegios de SYSTEM. Esta vulnerabilidad se puede explotar utilizando varias herramientas, como juicy-potato, RogueWinRM (que requiere que winrm est茅 deshabilitado), SweetPotato y PrintSpoofer.

RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotato

JuicyPotato

SeAssignPrimaryPrivilege

Es muy similar a SeImpersonatePrivilege, utilizar谩 el mismo m茅todo para obtener un token privilegiado.
Luego, este privilegio permite asignar un token primario a un proceso nuevo/suspendido. Con el token de suplantaci贸n privilegiado puedes derivar un token primario (DuplicateTokenEx).
Con el token, puedes crear un nuevo proceso con 'CreateProcessAsUser' o crear un proceso suspendido y establecer el token (en general, no puedes modificar el token primario de un proceso en ejecuci贸n).

SeTcbPrivilege

Si tienes habilitado este token, puedes usar KERB_S4U_LOGON para obtener un token de suplantaci贸n para cualquier otro usuario sin conocer las credenciales, agregar un grupo arbitrario (administradores) al token, establecer el nivel de integridad del token en "medio", y asignar este token al hilo actual (SetThreadToken).

SeBackupPrivilege

El sistema se ve obligado a otorgar todo acceso de lectura a cualquier archivo (limitado a operaciones de lectura) por este privilegio. Se utiliza para leer los hashes de contrase帽as de cuentas de Administrador local desde el registro, despu茅s de lo cual, herramientas como "psexec" o "wmiexec" pueden ser utilizadas con el hash (t茅cnica Pass-the-Hash). Sin embargo, esta t茅cnica falla bajo dos condiciones: cuando la cuenta de Administrador local est谩 deshabilitada, o cuando hay una pol铆tica que elimina los derechos administrativos de los Administradores locales que se conectan de forma remota.
Puedes abusar de este privilegio con:

Privileged Groups

SeRestorePrivilege

Este privilegio proporciona permiso para acceso de escritura a cualquier archivo del sistema, independientemente de la Lista de Control de Acceso (ACL) del archivo. Abre numerosas posibilidades para la escalaci贸n, incluyendo la capacidad de modificar servicios, realizar DLL Hijacking y establecer depuradores a trav茅s de Opciones de Ejecuci贸n de Archivos de Imagen, entre varias otras t茅cnicas.

SeCreateTokenPrivilege

SeCreateTokenPrivilege es un permiso poderoso, especialmente 煤til cuando un usuario posee la capacidad de suplantar tokens, pero tambi茅n en ausencia de SeImpersonatePrivilege. Esta capacidad depende de la habilidad de suplantar un token que representa al mismo usuario y cuyo nivel de integridad no excede el del proceso actual.

Puntos Clave:

  • Suplantaci贸n sin SeImpersonatePrivilege: Es posible aprovechar SeCreateTokenPrivilege para EoP al suplantar tokens bajo condiciones espec铆ficas.
  • Condiciones para la Suplantaci贸n de Tokens: La suplantaci贸n exitosa requiere que el token objetivo pertenezca al mismo usuario y tenga un nivel de integridad que sea menor o igual al nivel de integridad del proceso que intenta la suplantaci贸n.
  • Creaci贸n y Modificaci贸n de Tokens de Suplantaci贸n: Los usuarios pueden crear un token de suplantaci贸n y mejorarlo agregando un SID (Identificador de Seguridad) de un grupo privilegiado.

SeLoadDriverPrivilege

Este privilegio permite cargar y descargar controladores de dispositivos con la creaci贸n de una entrada en el registro con valores espec铆ficos para ImagePath y Type. Dado que el acceso de escritura directo a HKLM (HKEY_LOCAL_MACHINE) est谩 restringido, se debe utilizar HKCU (HKEY_CURRENT_USER) en su lugar. Sin embargo, para que HKCU sea reconocible por el n煤cleo para la configuraci贸n del controlador, se debe seguir una ruta espec铆fica.

Esta ruta es \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName, donde <RID> es el Identificador Relativo del usuario actual. Dentro de HKCU, se debe crear toda esta ruta y establecer dos valores:

  • ImagePath, que es la ruta al binario que se va a ejecutar
  • Type, con un valor de SERVICE_KERNEL_DRIVER (0x00000001).

Pasos a Seguir:

  1. Acceder a HKCU en lugar de HKLM debido al acceso de escritura restringido.
  2. Crear la ruta \Registry\User\<RID>\System\CurrentControlSet\Services\DriverName dentro de HKCU, donde <RID> representa el Identificador Relativo del usuario actual.
  3. Establecer el ImagePath a la ruta de ejecuci贸n del binario.
  4. Asignar el Type como SERVICE_KERNEL_DRIVER (0x00000001).
python
# Example Python code to set the registry values
import winreg as reg

# Define the path and values
path = r'Software\YourPath\System\CurrentControlSet\Services\DriverName' # Adjust 'YourPath' as needed
key = reg.OpenKey(reg.HKEY_CURRENT_USER, path, 0, reg.KEY_WRITE)
reg.SetValueEx(key, "ImagePath", 0, reg.REG_SZ, "path_to_binary")
reg.SetValueEx(key, "Type", 0, reg.REG_DWORD, 0x00000001)
reg.CloseKey(key)

M谩s formas de abusar de este privilegio en https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges#seloaddriverprivilege

SeTakeOwnershipPrivilege

Esto es similar a SeRestorePrivilege. Su funci贸n principal permite que un proceso asuma la propiedad de un objeto, eludiendo el requisito de acceso discrecional expl铆cito a trav茅s de la provisi贸n de derechos de acceso WRITE_OWNER. El proceso implica primero asegurar la propiedad de la clave de registro destinada para fines de escritura, y luego alterar el DACL para habilitar las operaciones de escritura.

bash
takeown /f 'C:\some\file.txt' #Now the file is owned by you
icacls 'C:\some\file.txt' /grant <your_username>:F #Now you have full access
# Use this with files that might contain credentials such as
%WINDIR%\repair\sam
%WINDIR%\repair\system
%WINDIR%\repair\software
%WINDIR%\repair\security
%WINDIR%\system32\config\security.sav
%WINDIR%\system32\config\software.sav
%WINDIR%\system32\config\system.sav
%WINDIR%\system32\config\SecEvent.Evt
%WINDIR%\system32\config\default.sav
c:\inetpub\wwwwroot\web.config

SeDebugPrivilege

Este privilegio permite depurar otros procesos, incluyendo leer y escribir en la memoria. Se pueden emplear varias estrategias para la inyecci贸n de memoria, capaces de evadir la mayor铆a de las soluciones antivirus y de prevenci贸n de intrusiones en host, con este privilegio.

Dump memory

Puedes usar ProcDump de la SysInternals Suite para capturar la memoria de un proceso. Espec铆ficamente, esto puede aplicarse al proceso de Local Security Authority Subsystem Service (LSASS), que es responsable de almacenar las credenciales de usuario una vez que un usuario ha iniciado sesi贸n con 茅xito en un sistema.

Luego puedes cargar este volcado en mimikatz para obtener contrase帽as:

mimikatz.exe
mimikatz # log
mimikatz # sekurlsa::minidump lsass.dmp
mimikatz # sekurlsa::logonpasswords

RCE

Si deseas obtener un shell NT SYSTEM, podr铆as usar:

powershell
# Get the PID of a process running as NT SYSTEM
import-module psgetsys.ps1; [MyProcess]::CreateProcessFromParent(<system_pid>,<command_to_execute>)

Verificar privilegios

whoami /priv

Los tokens que aparecen como Deshabilitados pueden ser habilitados, de hecho, puedes abusar de los tokens Habilitados y Deshabilitados.

Habilitar Todos los tokens

Si tienes tokens deshabilitados, puedes usar el script EnableAllTokenPrivs.ps1 para habilitar todos los tokens:

powershell
.\EnableAllTokenPrivs.ps1
whoami /priv

O el script incrustado en este post.

Tabla

Hoja de trucos de privilegios de token completa en https://github.com/gtworek/Priv2Admin, el resumen a continuaci贸n solo enumerar谩 formas directas de explotar el privilegio para obtener una sesi贸n de administrador o leer archivos sensibles.

PrivilegioImpactoHerramientaRuta de ejecuci贸nObservaciones
SeAssignPrimaryTokenAdminherramienta de terceros"Permitir铆a a un usuario impersonar tokens y escalar privilegios al sistema nt utilizando herramientas como potato.exe, rottenpotato.exe y juicypotato.exe"Gracias Aur茅lien Chalot por la actualizaci贸n. Intentar茅 reformularlo a algo m谩s parecido a una receta pronto.
SeBackupAmenazaComandos integradosLeer archivos sensibles con robocopy /b

- Puede ser m谩s interesante si puedes leer %WINDIR%\MEMORY.DMP

- SeBackupPrivilege (y robocopy) no son 煤tiles cuando se trata de archivos abiertos.

- Robocopy requiere tanto SeBackup como SeRestore para trabajar con el par谩metro /b.

SeCreateTokenAdminherramienta de tercerosCrear un token arbitrario que incluya derechos de administrador local con NtCreateToken.
SeDebugAdminPowerShellDuplicar el token de lsass.exe.Script disponible en FuzzySecurity
SeLoadDriverAdminherramienta de terceros

1. Cargar un controlador de kernel con errores como szkg64.sys
2. Explotar la vulnerabilidad del controlador

Alternativamente, el privilegio puede usarse para descargar controladores relacionados con la seguridad con el comando integrado ftlMC. es decir: fltMC sysmondrv

1. La vulnerabilidad de szkg64 est谩 listada como CVE-2018-15732
2. El szkg64 c贸digo de explotaci贸n fue creado por Parvez Anwar

SeRestoreAdminPowerShell

1. Iniciar PowerShell/ISE con el privilegio SeRestore presente.
2. Habilitar el privilegio con Enable-SeRestorePrivilege.
3. Renombrar utilman.exe a utilman.old
4. Renombrar cmd.exe a utilman.exe
5. Bloquear la consola y presionar Win+U

El ataque puede ser detectado por alg煤n software antivirus.

El m茅todo alternativo se basa en reemplazar los binarios de servicio almacenados en "Program Files" utilizando el mismo privilegio.

SeTakeOwnershipAdminComandos integrados

1. takeown.exe /f "%windir%\system32"
2. icalcs.exe "%windir%\system32" /grant "%username%":F
3. Renombrar cmd.exe a utilman.exe
4. Bloquear la consola y presionar Win+U

El ataque puede ser detectado por alg煤n software antivirus.

El m茅todo alternativo se basa en reemplazar los binarios de servicio almacenados en "Program Files" utilizando el mismo privilegio.

SeTcbAdminherramienta de terceros

Manipular tokens para tener derechos de administrador local incluidos. Puede requerir SeImpersonate.

Por verificar.

Referencia

tip

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks