
Votre acolyte MitM pour relayer les attaques comprenant DHCPv6 DNS takeover ainsi que mDNS, LLMNR et NetBIOS-NS spoofing.
Votre compagnon MitM pour les attaques de relais, avec prise de contrôle DNS par DHCPv6
ainsi que l'usurpation mDNS, LLMNR et NetBIOS-NS
pretender est un outil développé par RedTeam Pentesting pour obtenir des positions d'homme-du-milieu via l'usurpation de résolution de noms locale et des attaques de prise de contrôle DNS par DHCPv6. pretender cible principalement les hôtes Windows, car il est destiné à être utilisé pour des attaques de relais, mais il peut être déployé sur Linux, Windows et toutes les autres plates-formes supportées par Go. Les requêtes de résolution de noms peuvent être répondues avec des adresses IP arbitraires dans les situations où l'outil de relais s'exécute sur un hôte différent de pretender. Il est conçu pour fonctionner avec des outils tels que Impacket's ntlmrelayx.py et krbrelayx qui gèrent les connexions entrantes pour les attaques de relais ou l'extraction de hachages.
Lisez notre article de blog pour plus d'informations sur la prise de contrôle DNS par DHCPv6, l'usurpation de résolution de noms locale et les attaques de relais.
Pour avoir une idée de la situation dans le réseau local, pretender peut être démarré en mode --dry où il se contente de journaliser les requêtes entrantes sans y répondre :
pretender -i eth0 --dry
pretender -i eth0 --dry --no-ra # sans annonces de routeur (RA)
pretender -i eth0 --dry --no-ra-dns # avec RA mais sans annoncer DNS dans les RA
Pour effectuer une usurpation de résolution de noms locale via mDNS, LLMNR et NetBIOS-NS ainsi qu'une prise de contrôle DNS par DHCPv6 avec annonces de routeur, exécutez simplement pretender ainsi :
pretender -i eth0
Vous pouvez désactiver certaines attaques avec --no-dhcp-dns (désactive DHCPv6, DNS et annonces de routeur), --no-lnr (désactive mDNS, LLMNR et NetBIOS-NS), --no-mdns, --no-llmnr, --no-netbios et --no-ra.
Si ntlmrelayx.py s'exécute sur un hôte différent (par exemple 10.0.0.10/fe80::5), lancez pretender ainsi :
pretender -i eth0 -4 "10.0.0.10" -6 "fe80::5"
Pretender peut être configuré pour ne répondre qu'aux requêtes pour certains domaines (ou à tous sauf certains) et il peut effectuer les attaques d'usurpation seulement pour certains hôtes (ou tous sauf certains). La référence aux hôtes par nom d'hôte repose sur la résolution de noms de l'hôte qui exécute pretender. Voir l'exemple suivant :
pretender -i eth0 --spoof "example.com" --dont-spoof-for "10.0.0.3,host1.corp,fe80::f" --ignore-nofqdn
Pour plus d'informations, exécutez pretender --help.
--spoof/--dont-spoof/--spoof-for/--dont-spoof-for prennent en charge les wildcards. domain.fqdn effectue une correspondance littérale, tandis que .domain.fqdn correspondra à domain.fqdn et sub.domain.fqdn. De même, *domain.fqdn correspond à mydomain.fqdn. Utilisez *.domain.fqdn pour uniquement correspondre aux sous-domaines. Notez que les wildcards de sous-domaines (point en tête) et les wildcards arbitraires (*) ne peuvent pas être utilisés ensemble.ntlmrelayx.py avec l'option -6.--stateless-ra. Par défaut, le serveur DHCPv6 est toujours démarré mais peut être désactivé en utilisant --no-dhcp.Pretender peut être construit comme suit :
go build
Pretender peut également être compilé avec des paramètres préconfigurés. Pour cela, les ldflags doivent être modifiés comme suit :
-ldflags '-X main.vendorInterface=eth1'
Par exemple, Pretender peut être construit pour Windows avec une interface par défaut spécifique, sans sortie colorée et avec une adresse IPv4 de relais configurée :
GOOS=windows go build -trimpath -ldflags '-X "main.vendorInterface=Ethernet 2" -X main.vendorNoColor=true -X main.vendorRelayIPv4=10.0.0.10'
Liste complète des options de personnalisation (voir defaults.go ou pretender --help pour des informations détaillées) :
vendorInterface
vendorRelayIPv4
vendorRelayIPv6
vendorSOAHostname
vendorSpoofResponseName
vendorNoDHCPv6DNSTakeover
vendorNoDHCPv6
vendorNoDNS
vendorNoMDNS
vendorNoNetBIOS
vendorNoLLMNR
vendorNoLocalNameResolution
vendorNoIPv6LNR
vendorNoRA
vendorNoRADNS
vendorSpoof
vendorDontSpoof
vendorSpoofFor
vendorDontSpoofFor
vendorSpoofTypes
vendorSpoofSRV
vendorIgnoreDHCPv6NoFQDN
vendorIgnoreNonMicrosoftDHCP
vendorDelegateIgnoredTo
vendorToggleNameResolutionSpoofing
vendorDontSendEmptyReplies
vendorDryMode
vendorDryWithDHCPMode
vendorStatelessRA
vendorTTL
vendorLeaseLifetime
vendorRARouterLifetime
vendorRAPeriod
vendorDNSTimeout
vendorStopAfter
vendorVerbose
vendorNoColor
vendorNoTimestamps
vendorLogFileName
vendorNoHostInfo
vendorHideIgnored
vendorRedirectStderr
vendorListInterfaces
--dont-spoof/--dont-spoof-for sont présents et qu'aucun serveur DNS amont n'est configuré avec --delegate-ignored-to, les annonces de routeur n'annonceront pas directement le serveur DNS, ce qui rend l'attaque moins efficace.--stop-after et main.vendorStopAfter).--no-host-info ou main.vendorNoHostInfo.--interfaces.--no-ipv6-lnr/main.vendorNoIPv6LNR.--spoof-for/--dont-spoof-for). Vous pouvez décider quoi faire des messages DHCPv6 sans option FQDN en définissant ou en omettant --ignore-nofqdn.CGO_ENABLED=1) soit une implémentation Go (CGO_ENABLED=0) est utilisé. Cela peut être important pour la collecte d'informations sur l'hôte car le résolveur du SE peut prendre en charge la résolution de noms locale alors que l'implémentation Go ne le fait pas, à moins qu'un résolveur stub ne soit utilisé.hostinfo/mac-vendors.txt. Seules les lignes avec des préfixes MAC au format suivant sont reconnues : FF:FF:FF<tab>VendorID<tab>Vendor (la longueur du préfixe MAC peut être arbitraire).--no-lnr et --spoof-types SOA pour ignorer toute requête non liée à l'attaque.krbrelayx.py s'exécute sur un hôte différent de pretender (l'adresse IPv4 de relais pointe vers un autre hôte qui exécute krbrelayx.py), l'hôte exécutant krbrelayx.py devra également exécuter pretender afin de recevoir et refuser la requête de mise à jour dynamique envoyée à l'adresse IPv4 de relais.--delegate-ignored-to <serveur DNS> peut être utilisée pour déléguer les requêtes ignorées à un serveur DNS légitime.--dry-with-dhcp peut être combinée avec --delegate-ignored-to pour surveiller les requêtes de résolution de noms dans le réseau sans perturbation.--ignore-non-microsoft-dhcp. Cela est possible car le client DHCP Windows inclut le numéro d'entreprise 311 de Microsoft dans l'option de fournisseur DHCP.--toggle, l'usurpation de résolution de noms (DNS, mDNS, LLMNR, NetBIOS) peut être activée et désactivée dynamiquement à l'exécution. Cela est particulièrement puissant avec --delegate-ignored-to pour démarrer et arrêter les attaques sans arrêter le serveur DHCP. Cela peut être utilisé comme solution de contournement lorsque le client DHCP Windows cesse d'attribuer des adresses après avoir échoué à joindre le serveur DHCP pendant un certain temps.