NTLM
NTLM
Información Básica
En entornos donde se utilizan Windows XP y Server 2003, se emplean los hashes LM (Lan Manager), aunque es ampliamente reconocido que estos pueden ser comprometidos fácilmente. Un hash LM particular, AAD3B435B51404EEAAD3B435B51404EE
, indica un escenario donde no se utiliza LM, representando el hash para una cadena vacía.
Por defecto, el protocolo de autenticación Kerberos es el método principal utilizado. NTLM (NT LAN Manager) interviene en circunstancias específicas: ausencia de Active Directory, inexistencia del dominio, mal funcionamiento de Kerberos debido a una configuración incorrecta, o cuando se intentan conexiones utilizando una dirección IP en lugar de un nombre de host válido.
La presencia del encabezado "NTLMSSP" en los paquetes de red señala un proceso de autenticación NTLM.
El soporte para los protocolos de autenticación - LM, NTLMv1 y NTLMv2 - es facilitado por una DLL específica ubicada en %windir%\Windows\System32\msv1\_0.dll
.
Puntos Clave:
Los hashes LM son vulnerables y un hash LM vacío (
AAD3B435B51404EEAAD3B435B51404EE
) indica que no se está utilizando.Kerberos es el método de autenticación predeterminado, con NTLM utilizado solo bajo ciertas condiciones.
Los paquetes de autenticación NTLM son identificables por el encabezado "NTLMSSP".
Los protocolos LM, NTLMv1 y NTLMv2 son compatibles con el archivo del sistema
msv1\_0.dll
.
LM, NTLMv1 y NTLMv2
Puedes verificar y configurar qué protocolo se utilizará:
GUI
Ejecuta secpol.msc -> Directivas locales -> Opciones de seguridad -> Seguridad de red: Nivel de autenticación de LAN Manager. Hay 6 niveles (del 0 al 5).
Registro
Esto establecerá el nivel 5:
Valores posibles:
Esquema básico de autenticación de dominio NTLM
El usuario introduce sus credenciales
La máquina cliente envía una solicitud de autenticación enviando el nombre de dominio y el nombre de usuario
El servidor envía el reto
El cliente cifra el reto usando el hash de la contraseña como clave y lo envía como respuesta
El servidor envía al controlador de dominio el nombre de dominio, el nombre de usuario, el reto y la respuesta. Si no hay un Directorio Activo configurado o el nombre de dominio es el nombre del servidor, las credenciales se verifican localmente.
El controlador de dominio verifica si todo es correcto y envía la información al servidor
El servidor y el controlador de dominio pueden crear un Canal Seguro a través del servidor Netlogon ya que el controlador de dominio conoce la contraseña del servidor (está dentro de la base de datos NTDS.DIT).
Esquema de autenticación NTLM local
La autenticación es como la mencionada anteriormente pero el servidor conoce el hash del usuario que intenta autenticarse dentro del archivo SAM. Entonces, en lugar de preguntar al Controlador de Dominio, el servidor verificará por sí mismo si el usuario puede autenticarse.
Desafío NTLMv1
La longitud del desafío es de 8 bytes y la respuesta tiene una longitud de 24 bytes.
El hash NT (16 bytes) se divide en 3 partes de 7 bytes cada una (7B + 7B + (2B+0x00*5)): la última parte se llena con ceros. Luego, el desafío se cifra por separado con cada parte y los bytes cifrados resultantes se unen. Total: 8B + 8B + 8B = 24 bytes.
Problemas:
Falta de aleatoriedad
Las 3 partes pueden ser atacadas por separado para encontrar el hash NT
DES es crackeable
La 3ª clave está compuesta siempre por 5 ceros.
Dado el mismo desafío la respuesta será la misma. Por lo tanto, puedes dar como desafío a la víctima la cadena "1122334455667788" y atacar la respuesta usando tablas arcoíris precalculadas.
Ataque NTLMv1
Hoy en día es menos común encontrar entornos con Delegación sin Restricciones configurada, pero esto no significa que no puedas abusar de un servicio de Cola de Impresión configurado.
Podrías abusar de algunas credenciales/sesiones que ya tienes en el AD para solicitar a la impresora que se autentique contra algún host bajo tu control. Luego, usando metasploit auxiliary/server/capture/smb
o responder
puedes establecer el desafío de autenticación en 1122334455667788, capturar el intento de autenticación y si se hizo usando NTLMv1 podrás crackearlo.
Si estás usando responder
podrías intentar **usar la bandera --lm
** para intentar degradar la autenticación.
Ten en cuenta que para esta técnica la autenticación debe realizarse utilizando NTLMv1 (NTLMv2 no es válido).
Recuerda que la impresora usará la cuenta de equipo durante la autenticación, y las cuentas de equipo usan contraseñas largas y aleatorias que probablemente no podrás crackear usando diccionarios comunes. Pero la autenticación NTLMv1 utiliza DES (más información aquí), por lo que usando algunos servicios especialmente dedicados a crackear DES podrás crackearlo (podrías usar https://crack.sh/ por ejemplo).
Ataque NTLMv1 con hashcat
NTLMv1 también se puede romper con la Herramienta Multi NTLMv1 https://github.com/evilmog/ntlmv1-multi que formatea los mensajes NTLMv1 de una manera que puede ser rota con hashcat.
El comando
NTLM Relaying
Introduction
NTLM relaying is a common technique used by attackers to move laterally within a network by relaying authentication attempts from one system to another. This can be achieved when a target system is configured to accept incoming NTLM authentication requests and the attacker can intercept and relay these requests to another system.
How it Works
The attacker captures an NTLM authentication attempt from a victim machine.
The attacker relays this authentication attempt to another machine within the network.
The second machine processes the authentication attempt, thinking it is coming from the victim.
If successful, the attacker gains access to the second machine without needing valid credentials.
Mitigation
To prevent NTLM relaying attacks, it is recommended to:
Disable NTLM authentication where possible and use more secure protocols like Kerberos.
Implement SMB signing to prevent interception and modification of authentication traffic.
Use Extended Protection for Authentication to protect against NTLM relay attacks.
NTLM Hashes
Introduction
NTLM (NT LAN Manager) is a suite of Microsoft security protocols that provides authentication, integrity, and confidentiality to users. NTLM hashes are commonly targeted by attackers for password cracking and lateral movement within a network.
Extracting NTLM Hashes
To extract NTLM hashes from a Windows system, tools like Mimikatz can be used. Mimikatz is a powerful post-exploitation tool that can dump NTLM hashes from memory or the Security Account Manager (SAM) database.
Protecting Against NTLM Hash Attacks
To protect against NTLM hash attacks, it is recommended to implement the following security measures:
Disable NTLM: Disable the use of NTLM authentication in favor of more secure protocols like Kerberos.
Enforce Complex Passwords: Require users to use complex and unique passwords to make password cracking more difficult.
Enable SMB Signing: Enable SMB signing to protect against man-in-the-middle attacks that could lead to NTLM hash theft.
Monitor Event Logs: Regularly monitor event logs for suspicious activities related to NTLM authentication.
By following these recommendations, organizations can strengthen their security posture and reduce the risk of NTLM hash attacks.
Ejecuta hashcat (es mejor distribuido a través de una herramienta como hashtopolis) ya que de lo contrario tomará varios días.
En este caso sabemos que la contraseña es password, por lo que vamos a hacer trampa con fines de demostración:
Ahora necesitamos usar las utilidades de hashcat para convertir las claves DES descifradas en partes del hash NTLM:
Finalmente, la última parte:
El siguiente contenido es de un libro de hacking sobre técnicas de hacking. El contenido es del archivo windows-hardening/ntlm/README.md.
English
Spanish
Desafío NTLMv2
El largo del desafío es de 8 bytes y se envían 2 respuestas: Una tiene una longitud de 24 bytes y la longitud de la otra es variable.
La primera respuesta se crea cifrando usando HMAC_MD5 la cadena compuesta por el cliente y el dominio y utilizando como clave el hash MD4 del hash NT. Luego, el resultado se utilizará como clave para cifrar usando HMAC_MD5 el desafío. A esto se le añadirá un desafío del cliente de 8 bytes. Total: 24 B.
La segunda respuesta se crea utilizando varios valores (un nuevo desafío de cliente, una marca de tiempo para evitar ataques de repetición...)
Si tienes un pcap que ha capturado un proceso de autenticación exitoso, puedes seguir esta guía para obtener el dominio, nombre de usuario, desafío y respuesta e intentar descifrar la contraseña: https://research.801labs.org/cracking-an-ntlmv2-hash/
Pasar el Hash
Una vez que tengas el hash de la víctima, puedes usarlo para hacerte pasar por ella. Necesitas utilizar una herramienta que realizará la autenticación NTLM usando ese hash, o podrías crear un nuevo inicio de sesión de sesión e inyectar ese hash dentro del LSASS, para que cuando se realice cualquier autenticación NTLM, se utilice ese hash. La última opción es lo que hace mimikatz.
Por favor, recuerda que también puedes realizar ataques de Pasar el Hash utilizando cuentas de Computadora.
Mimikatz
Necesita ejecutarse como administrador
Esto lanzará un proceso que pertenecerá a los usuarios que hayan iniciado mimikatz, pero internamente en LSASS las credenciales guardadas son las que están dentro de los parámetros de mimikatz. Luego, puedes acceder a recursos de red como si fueras ese usuario (similar al truco runas /netonly
pero sin necesidad de conocer la contraseña en texto plano).
Pass-the-Hash desde Linux
Puedes obtener ejecución de código en máquinas Windows usando Pass-the-Hash desde Linux. Accede aquí para aprender cómo hacerlo.
Herramientas compiladas de Impacket para Windows
Puedes descargar binarios de Impacket para Windows aquí.
psexec_windows.exe
C:\AD\MyTools\psexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.my.domain.local
wmiexec.exe
wmiexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.dollarcorp.moneycorp.local
atexec.exe (En este caso necesitas especificar un comando, cmd.exe y powershell.exe no son válidos para obtener una shell interactiva)
C:\AD\MyTools\atexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.dollarcorp.moneycorp.local 'whoami'
Hay varios binarios más de Impacket...
Invoke-TheHash
Puedes obtener los scripts de PowerShell desde aquí: https://github.com/Kevin-Robertson/Invoke-TheHash
Invoke-SMBExec
Invoke-WMIExec
Invocar-WMIExec
Invoke-SMBClient
Invocar-SMBClient
Invoke-SMBEnum
Invocar-SMBEnum
Invoke-TheHash
Esta función es una combinación de todas las demás. Puedes pasar varios hosts, excluir algunos y seleccionar la opción que deseas utilizar (SMBExec, WMIExec, SMBClient, SMBEnum). Si seleccionas cualquiera de SMBExec y WMIExec pero no proporcionas ningún parámetro de Comando, simplemente verificará si tienes permisos suficientes.
Editor de Credenciales de Windows (WCE)
Debe ejecutarse como administrador
Esta herramienta hará lo mismo que mimikatz (modificar la memoria de LSASS).
Ejecución remota manual de Windows con nombre de usuario y contraseña
Extracción de credenciales de un host de Windows
Para obtener más información sobre cómo obtener credenciales de un host de Windows, deberías leer esta página.
NTLM Relay y Responder
Lee una guía más detallada sobre cómo realizar esos ataques aquí:
Analizar desafíos NTLM desde una captura de red
Puedes usar https://github.com/mlgualtieri/NTLMRawUnHide
Última actualización