Mimikatz

Mimikatz – El extraedor de credenciales de Windows de código abierto que redefinió la post-explotación

Descripción del programa Mimikatz

Mimikatz es una herramienta de código abierto de post-explotación desarrollada por el experto en seguridad francés Benjamin Delpy, lanzada originalmente en 2007 como una prueba de concepto para demostrar vulnerabilidades en el subsistema de autenticación de Windows. Lo que comenzó como un proyecto para ilustrar fallos de seguridad se ha convertido en una de las herramientas más utilizadas tanto por profesionales de ciberseguridad como por actores maliciosos.

El nombre «Mimikatz» proviene de la combinación de «mimic» (imitar) y «Katze» (gato en alemán), reflejando su capacidad para «imitar» la autenticación de usuarios. La herramienta fue desarrollada inicialmente para demostrar cómo Windows almacena contraseñas en texto plano en memoria cuando el protocolo WDigest está habilitado, una práctica que Delpy consideraba una vulnerabilidad crítica.

La principal fortaleza de Mimikatz reside en su capacidad para interactuar directamente con el proceso LSASS (Local Security Authority Subsystem Service), un componente crítico de Windows que gestiona las políticas de seguridad y la autenticación de usuarios. Al acceder a la memoria de LSASS, la herramienta puede extraer información de autenticación que de otro modo sería inaccesible, todo ello sin necesidad de instalar software adicional en el sistema objetivo.

El código fuente está disponible en GitHub, y la herramienta se distribuye bajo licencia de código abierto, lo que ha permitido su integración en numerosas plataformas de pruebas de penetración y frameworks de explotación.

¿Necesitas entender cómo funciona la extracción de credenciales en sistemas Windows para fortalecer la postura de seguridad de tu organización?

Características clave de Mimikatz

1. Extracción de credenciales desde memoria (sekurlsa)

El módulo más conocido de Mimikatz es sekurlsa, que permite extraer todo tipo de credenciales directamente desde la memoria del proceso LSASS. Este módulo puede recuperar:

  • Contraseñas en texto plano (si el protocolo WDigest está habilitado)
  • Hashes NTLM de contraseñas
  • Hashes LM (en sistemas antiguos)
  • Tickets Kerberos y claves de sesión
  • Credenciales de servicios como Terminal Server, Credential Manager y más

El comando sekurlsa::logonpasswords es el más emblemático, mostrando en pantalla todas las credenciales de los usuarios que han iniciado sesión en el sistema.

2. Ataques Pass-the-Hash y Pass-the-Ticket

Mimikatz es una herramienta fundamental para realizar ataques de movimiento lateral mediante:

  • Pass-the-Hash (PtH): Utiliza el hash NTLM extraído de la memoria para autenticarse en otros sistemas de la red sin necesidad de conocer la contraseña en texto plano. El comando sekurlsa::pth permite inyectar el hash en una nueva sesión de comandos.
  • Pass-the-Ticket (PtT): Extrae tickets Kerberos del sistema y los reutiliza para autenticarse en otros servicios sin necesidad de la contraseña del usuario. Los comandos kerberos::list y kerberos::ptt son clave para esta técnica.

3. Forja de Golden Ticket y Silver Ticket

Mimikatz puede crear tickets Kerberos falsificados que otorgan acceso prácticamente ilimitado a un dominio:

  • Golden Ticket: Forja un Ticket-Granting Ticket (TGT) utilizando la clave hash de la cuenta KRBTGT del controlador de dominio. Este ticket otorga acceso a cualquier recurso del dominio, en cualquier momento, y su validez puede extenderse años.
  • Silver Ticket: Forja tickets específicos para servicios concretos (como el servicio CIFS de un servidor), permitiendo acceder a recursos específicos sin necesidad de interactuar con el controlador de dominio.

4. Extracción de hashes de la SAM y del caché de dominio

El módulo lsadump permite extraer información crítica del sistema:

  • lsadump::sam: Extrae los hashes de contraseñas almacenados en el archivo SAM (Security Account Manager) del sistema local.
  • lsadump::cache: Recupera los hashes de credenciales de dominio cacheados localmente (DCC2), útiles para entornos donde los usuarios han iniciado sesión previamente con cuentas de dominio.
  • lsadump::dcsync: Simula el comportamiento de un controlador de dominio para solicitar hashes de cualquier cuenta de dominio directamente del controlador, sin necesidad de acceso físico al archivo NTDS.dit.

5. Gestión de privilegios (privilege::debug)

Para realizar la mayoría de sus operaciones, Mimikatz necesita elevar sus privilegios al nivel de depuración del sistema. El comando privilege::debug otorga el privilegio SeDebugPrivilege, que permite acceder a procesos protegidos como LSASS. Sin este paso, la herramienta no puede funcionar correctamente.

6. Recuperación de claves EFS (Cifrado de Archivos)

Más allá de la extracción de credenciales, Mimikatz incluye capacidades para recuperar claves de cifrado del sistema de archivos cifrados (EFS) de Windows. Esto es especialmente útil en escenarios forenses o de recuperación de datos cuando se han perdido los certificados de cifrado originales. El proceso implica:

  • Extraer la huella digital del certificado EFS de un archivo cifrado
  • Localizar el contenedor de claves correspondiente
  • Recuperar la clave maestra de cifrado
  • Utilizar herramientas como OpenSSL para reconstruir el certificado

7. Operaciones con DPAPI (Data Protection API)

Mimikatz puede interactuar con la API de protección de datos de Windows (DPAPI), que protege información sensible como contraseñas de navegadores (Chrome, Internet Explorer) y datos de aplicaciones. El módulo dpapi permite descifrar blobs de datos protegidos por DPAPI.

Explicación detallada del funcionamiento

La arquitectura de Mimikatz está construida para explotar el diseño del subsistema de autenticación de Windows. A diferencia de otras herramientas de seguridad que operan a nivel de archivos o registro, Mimikatz opera directamente en memoria, lo que le permite acceder a información que nunca se escribe en disco.

El proceso fundamental de extracción de credenciales funciona de la siguiente manera:

  1. Elevación de privilegios: El primer paso es ejecutar privilege::debug para obtener el privilegio SeDebugPrivilege, necesario para interactuar con procesos protegidos como LSASS.
  2. Acceso a LSASS: LSASS (Local Security Authority Subsystem Service) es un proceso crítico que maneja todas las solicitudes de autenticación en Windows. Cuando un usuario inicia sesión, sus credenciales se almacenan en la memoria de LSASS para facilitar el inicio de sesión único (SSO).
  3. Análisis de estructuras de memoria: Mimikatz conoce la estructura de las bibliotecas de autenticación como msv1_0.dll (para autenticación NTLM) y kerberos.dll (para Kerberos). Escanea la memoria de LSASS para localizar estas estructuras y extraer la información almacenada.
  4. Decodificación de credenciales: Una vez localizadas las estructuras, la herramienta puede decodificar los datos para presentarlos en un formato legible: contraseñas en texto plano, hashes NTLM, o tickets Kerberos completos.

La relevancia técnica de Mimikatz radica en que demuestra una verdadera vulnerabilidad de diseño en los sistemas Windows: la necesidad de almacenar credenciales en memoria para facilitar la autenticación sin interrupciones. Microsoft ha implementado mitigaciones como Credential Guard y LSA Protection en versiones recientes de Windows, pero en sistemas sin estas protecciones, Mimikatz sigue siendo extremadamente efectivo.

Descarga e instalación

  • Desarrollador: Benjamin Delpy (gentilkiwi)
  • Página Oficial: https://github.com/gentilkiwi/mimikatz
  • Última versión estable: 2.2.0 (actualizaciones frecuentes, consultar releases en GitHub)
  • Tamaño: Aproximadamente 5-10 MB (dependiendo de la arquitectura y los módulos incluidos)
  • Sistemas operativos compatibles:
  • Windows XP y superior (32 y 64 bits)
  • Windows Server 2003, 2008, 2012, 2016, 2019, 2022
  • Soporte documentado para Windows 10 y Windows 11
  • Licencia: Código abierto (licencia específica en el repositorio de GitHub)
  • Idioma: Inglés (interfaz de línea de comandos)
  • Soporte técnico: Documentación en el blog de Benjamin Delpy (blog.gentilkiwi.com), comunidad de GitHub, foros de seguridad

Instalación paso a paso:

  1. Descarga el archivo ZIP o 7z de la última versión
  2. Extrae el contenido del archivo comprimido
  3. Selecciona la arquitectura correcta según tu sistema:
  • Para Windows de 64 bits: usa la carpeta x64
  • Para Windows de 32 bits: usa la carpeta Win32
  1. Abre una terminal como administrador (requisito indispensable para la mayoría de las operaciones)
  2. Navega hasta la carpeta con el ejecutable y ejecuta mimikatz.exe

Cómo usar Mimikatz

Advertencia de seguridad: Mimikatz es una herramienta poderosa que debe utilizarse únicamente en entornos autorizados y con fines legítimos de pruebas de seguridad. Su uso sin autorización puede constituir un delito de intrusión informática.

Paso 1: Ejecutar como administrador
Abre una terminal (cmd o PowerShell) como administrador y navega hasta la carpeta de Mimikatz. Ejecuta mimikatz.exe.

Paso 2: Verificar la instalación
Para confirmar que la herramienta funciona correctamente:

mimikatz # version

Esto mostrará la versión y la arquitectura del sistema.

Paso 3: Obtener privilegios de depuración
El comando fundamental para casi todas las operaciones:

mimikatz # privilege::debug

Si el comando tiene éxito, mostrará «Privilege ’20’ OK».

Paso 4: Extraer credenciales de LSASS
El comando más conocido de Mimikatz:

mimikatz # sekurlsa::logonpasswords

Esto mostrará todas las credenciales (contraseñas en texto plano, hashes NTLM, etc.) de los usuarios que han iniciado sesión en el sistema.

Paso 5: Extraer hashes SAM del sistema
Para obtener hashes de cuentas locales:

mimikatz # lsadump::sam

Si los archivos SAM y SYSTEM están disponibles en otra ubicación:

mimikatz # lsadump::sam /system:ruta\SYSTEM /sam:ruta\SAM

Paso 6: Realizar un ataque Pass-the-Hash
Para iniciar una nueva sesión de comandos utilizando un hash NTLM extraído:

mimikatz # sekurlsa::pth /user:NombreUsuario /domain:NombreDominio /ntlm:hash_ntlm /run:cmd.exe

Esto abrirá una nueva ventana de comandos autenticada con las credenciales del usuario objetivo.

Paso 7: Listar y exportar tickets Kerberos
Para ver los tickets Kerberos activos:

mimikatz # kerberos::list

Para exportar tickets a archivos:

mimikatz # kerberos::list /export

Observaciones sobre el programa Mimikatz

El impacto en la seguridad de Windows: Mimikatz cambió fundamentalmente cómo los profesionales de seguridad entienden la autenticación en Windows. Antes de su creación, se asumía que las contraseñas almacenadas en memoria no eran accesibles. Benjamin Delpy demostró que esta suposición era incorrecta, forzando a Microsoft a implementar mitigaciones como Credential Guard.

Legitimidad vs. Malware: Aunque Mimikatz fue creado como herramienta de prueba, su efectividad lo ha convertido en un componente estándar en el arsenal de actores maliciosos. La herramienta en sí misma no es malware, pero su uso sin autorización constituye una actividad maliciosa. Muchos frameworks de pruebas de penetración, como Metasploit y Cobalt Strike, incluyen implementaciones o portes de funcionalidades de Mimikatz.

El desafío de la detección: Detectar el uso de Mimikatz es particularmente difícil porque la herramienta utiliza APIs legítimas de Windows para acceder a LSASS. Las soluciones modernas de EDR (Endpoint Detection and Response) monitorean comportamientos sospechosos, como procesos que intentan abrir handles a LSASS o la combinación inusual de DLLs cargadas (cryptdll.dll, hid.dll, samlib.dll, vaultcli.dll, winscard.dll).

Mitigaciones modernas: Microsoft ha introducido varias defensas:

  • LSA Protection: Impide que procesos no protegidos accedan a LSASS (Windows 8.1 y Server 2012 R2+)
  • Credential Guard: Utiliza virtualización para aislar LSASS (Windows 10 Enterprise y Server 2016+)
  • Deshabilitación de WDigest: Evita que las contraseñas se almacenen en texto plano en memoria

Casos de uso legítimos incluyen:

  • Pruebas de penetración autorizadas para identificar debilidades en la autenticación
  • Respuesta a incidentes para analizar credenciales comprometidas
  • Recuperación forense de datos cifrados con EFS cuando se han perdido los certificados originales
  • Auditorías internas de seguridad

Mimikatz en sistemas modernos: En versiones recientes de Windows con Credential Guard activado, Mimikatz es significativamente menos efectivo. Las contraseñas en texto plano no están disponibles, y el acceso a LSASS está restringido. Sin embargo, en entornos sin estas protecciones (comunes en sistemas legacy), la herramienta sigue siendo tan efectiva como siempre.

Limitaciones importantes

  • Requiere privilegios de administrador: La mayoría de las operaciones necesitan ejecutarse con permisos elevados.
  • Mitigaciones modernas reducen efectividad: Credential Guard y LSA Protection bloquean o limitan el acceso a LSASS.
  • Herramienta de doble uso: Su poder la hace atractiva tanto para profesionales como para atacantes, lo que ha llevado a que muchas soluciones antivirus la detecten como malware.
  • Windows 10/11 con WDigest deshabilitado: En estas configuraciones, no se pueden recuperar contraseñas en texto plano (solo hashes).
  • No es una herramienta de hacking automático: Requiere comprensión técnica del entorno y de las estructuras de Windows para ser utilizada efectivamente.

Alternativa recomendada

Si buscas alternativas a Mimikatz para extracción de credenciales o pruebas de seguridad, considera las siguientes opciones:

Procdump + Mimikatz offline: Utiliza la herramienta oficial de Microsoft Procdump para volcar la memoria de LSASS a un archivo y luego analiza ese archivo con Mimikatz en un sistema separado. Esta técnica puede evadir algunas detecciones.

Mimikatz integrado en frameworks: Herramientas como Metasploit (post/windows/gather/credentials/mimikatz) y Cobalt Strike incluyen implementaciones de Mimikatz que pueden ser más difíciles de detectar.

Alternativas nativas de Windows: Para profesionales de seguridad que necesitan extraer credenciales sin herramientas de terceros, PowerShell con módulos como Get-WinEvent y Invoke-Mimikatz (parte de PowerSploit) ofrecen funcionalidades similares.

Mimikatz es una herramienta fundamental en el arsenal de cualquier profesional de ciberseguridad. No es un «hack automático», sino una demostración técnica de cómo funciona la autenticación en Windows y por qué el principio de «confianza cero» y las defensas en profundidad son esenciales. Puedes descargar la última versión desde su repositorio oficial en GitHub.

Sección FAQ

¿Mimikatz es gratis o de pago?

Mimikatz es completamente gratuito y de código abierto. Está disponible en GitHub sin ningún coste asociado. No tiene versiones de pago ni funcionalidades bloqueadas.

¿Funciona en Linux, macOS, Windows 10 y Windows 11?

Mimikatz fue diseñado exclusivamente para sistemas Windows y no es compatible de forma nativa con Linux o macOS. Es compatible con Windows 10 y Windows 11 (tanto 32 como 64 bits), así como con versiones anteriores desde Windows XP y Windows Server. En Linux, podría ejecutarse mediante Wine, pero no es práctico ni recomendado.

¿Qué diferencia a Mimikatz de otras herramientas de extracción de credenciales?

La principal diferencia de Mimikatz es su capacidad para operar directamente en memoria en lugar de hacerlo en archivos en disco. Mientras que otras herramientas extraen hashes del archivo SAM (que requiere acceso administrativo y puede estar protegido), Mimikatz accede a LSASS en memoria, donde las credenciales ya están descifradas y listas para usar. Además, su capacidad para realizar ataques Pass-the-Hash y forjar Golden Tickets es incomparable.

¿Es ilegal usar Mimikatz?

No, usar Mimikatz no es ilegal por sí mismo. Es una herramienta de código abierto desarrollada con fines educativos y de pruebas de seguridad. Sin embargo, utilizarlo sin autorización en sistemas que no te pertenecen es ilegal y puede constituir un delito de intrusión informática. Siempre debes obtener permiso explícito del propietario del sistema antes de ejecutar Mimikatz.

¿Qué ha pasado con el desarrollo de Mimikatz?

El desarrollo de Mimikatz es activo y continuo. Benjamin Delpy sigue manteniendo y actualizando la herramienta regularmente en GitHub. Las versiones recientes incluyen soporte para las últimas versiones de Windows y nuevas técnicas de extracción de credenciales. La herramienta se actualiza frecuentemente para adaptarse a los cambios en el subsistema de autenticación de Windows y para incorporar nuevas funcionalidades solicitadas por la comunidad de seguridad.