
Dein MitM-Helfer für Weiterleitungsangriffe mit DHCPv6 DNS-Übernahme sowie mDNS-, LLMNR- und NetBIOS-NS-Spoofing.
Dein MitM-Seitenkicker für Relay-Angriffe mit DHCPv6-DNS-Übernahme
sowie mDNS-, LLMNR- und NetBIOS-NS-Spoofing
pretender ist ein von RedTeam Pentesting entwickeltes Tool, um Man-in-the-Middle-Positionen durch gespoofte lokale Namensauflösung und DHCPv6-DNS-Übernahme-Angriffe zu erlangen. pretender zielt hauptsächlich auf Windows-Hosts ab, da es für Relay-Angriffe gedacht ist, kann aber auf Linux, Windows und allen anderen Plattformen, die Go unterstützt, eingesetzt werden. Namensauflösungsanfragen können mit beliebigen IPs beantwortet werden, wenn das Relay-Tool auf einem anderen Host als pretender läuft. Es ist für die Zusammenarbeit mit Tools wie Impacket's ntlmrelayx.py und krbrelayx konzipiert, die die eingehenden Verbindungen für Relay-Angriffe oder Hash-Dumping verarbeiten.
Lies unseren Blogbeitrag für weitere Informationen über DHCPv6-DNS-Übernahme, lokales Namensauflösungs-Spoofing und Relay-Angriffe.
Um ein Gefühl für die Situation im lokalen Netzwerk zu bekommen, kann pretender im --dry-Modus gestartet werden, in dem es nur eingehende Anfragen protokolliert und keine beantwortet:
pretender -i eth0 --dry
pretender -i eth0 --dry --no-ra # ohne Router Advertisements (RA)
pretender -i eth0 --dry --no-ra-dns # mit RA, aber ohne DNS-Werbung in RA
Um lokales Namensauflösungs-Spoofing via mDNS, LLMNR und NetBIOS-NS sowie eine DHCPv6-DNS-Übernahme mit Router Advertisements durchzuführen, führe einfach pretender wie folgt aus:
pretender -i eth0
Du kannst bestimmte Angriffe deaktivieren mit --no-dhcp-dns (deaktiviert DHCPv6, DNS und Router Advertisements), --no-lnr (deaktiviert mDNS, LLMNR und NetBIOS-NS), --no-mdns, --no-llmnr, --no-netbios und --no-ra.
Wenn ntlmrelayx.py auf einem anderen Host läuft (sagen wir 10.0.0.10/fe80::5), führe pretender wie folgt aus:
pretender -i eth0 -4 "10.0.0.10" -6 "fe80::5"
Pretender kann so eingerichtet werden, dass es nur auf Anfragen für bestimmte Domänen antwortet (oder auf alle außer bestimmte Domänen) und die Spoofing-Angriffe nur für bestimmte Hosts durchführt (oder für alle außer bestimmte Hosts). Die Referenzierung von Hosts per Hostname basiert auf der Namensauflösung des Hosts, der pretender ausführt. Siehe folgendes Beispiel:
pretender -i eth0 --spoof "example.com" --dont-spoof-for "10.0.0.3,host1.corp,fe80::f" --ignore-nofqdn
Für weitere Informationen führe pretender --help aus.
--spoof/--dont-spoof/--spoof-for/--dont-spoof-for unterstützen Wildcards. Während domain.fqdn nur einen wörtlichen Abgleich durchführt, passt .domain.fqdn auf domain.fqdn und sub.domain.fqdn. Ähnlich passt *domain.fqdn auf mydomain.fqdn. Verwende *.domain.fqdn, um nur Subdomains abzugleichen. Beachte, dass Subdomain-Wildcards (führender Punkt) und beliebige Wildcards (*) nicht zusammen verwendet werden können.ntlmrelayx.py mit dem Flag -6 aktiviert ist.--stateless-ra. Standardmäßig wird der DHCPv6-Server dennoch gestartet, kann aber mit --no-dhcp deaktiviert werden.Pretender kann wie folgt gebaut werden:
go build
Pretender kann auch mit vorkonfigurierten Einstellungen kompiliert werden. Dazu müssen die ldflags wie folgt modifiziert werden:
-ldflags '-X main.vendorInterface=eth1'
Zum Beispiel kann Pretender für Windows mit einem bestimmten Standard-Interface, ohne farbige Ausgabe und mit einer konfigurierten Relay-IPv4-Adresse gebaut werden:
GOOS=windows go build -trimpath -ldflags '-X "main.vendorInterface=Ethernet 2" -X main.vendorNoColor=true -X main.vendorRelayIPv4=10.0.0.10'
Vollständige Liste der Vendoring-Optionen (siehe defaults.go oder pretender --help für detaillierte Informationen):
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-Filter vorhanden sind und kein upstream DNS-Server mit --delegate-ignored-to konfiguriert ist, werden Router Advertisements den DNS-Server nicht direkt bewerben, was den Angriff weniger effektiv macht.--stop-after und main.vendorStopAfter).--no-host-info oder main.vendorNoHostInfo deaktiviert werden.--interfaces auf.--no-ipv6-lnr/main.vendorNoIPv6LNR.--spoof-for/--dont-spoof-for). Du kannst entscheiden, was mit DHCPv6-Nachrichten ohne FQDN-Option geschehen soll, indem du --ignore-nofqdn setzt oder weglässt.CGO_ENABLED=1) oder eine Go-Implementierung (CGO_ENABLED=0) verwendet. Dies kann für die Hostinfo-Sammlung wichtig sein, da der OS-Resolver möglicherweise die lokale Namensauflösung unterstützt und die Go-Implementierung nicht, es sei denn, ein Stub-Resolver wird verwendet.hostinfo/mac-vendors.txt ersetzt wird. Es werden nur Zeilen mit MAC-Präfixen im folgenden Format erkannt: FF:FF:FF<Tab>VendorID<Tab>Vendor (die Länge des MAC-Präfix kann beliebig sein).--no-lnr und --spoof-types SOA angeben, um alle Anfragen zu ignorieren, die nicht mit dem Angriff zusammenhängen.krbrelayx.py auf einem anderen Host als pretender läuft (Relay-IPv4-Adresse zeigt auf einen anderen Host, der krbrelayx.py ausführt), muss der Host, der krbrelayx.py ausführt, ebenfalls pretender ausführen, um die Dynamic-Update-Anfrage, die an die Relay-IPv4-Adresse gesendet wird, zu empfangen und abzulehnen.--delegate-ignored-to <DNS-Server> verwendet werden, um ignorierte Anfragen an einen legitimen DNS-Server zu delegieren.--dry-with-dhcp kann mit --delegate-ignored-to kombiniert werden, um die Namensauflösungsanfragen im Netzwerk ohne Störungen zu überwachen.--ignore-non-microsoft-dhcp angegeben wird. Dies ist möglich, da der Windows-DHCP-Client die Microsoft-Unternehmensnummer 311 in der DHCP-Vendor-Option enthält.--toggle kann das Namensauflösungs-Spoofing (DNS, mDNS, LLMNR, NetBIOS) dynamisch zur Laufzeit ein- und ausgeschaltet werden. Dies ist besonders leistungsstark in Kombination mit --delegate-ignored-to, um Angriffe zu starten und zu stoppen, ohne den DHCP-Server zu unterbrechen. Dies kann als Workaround verwendet werden, wenn der Windows-DHCP-Client aufhört, Adressen zu vergeben, nachdem er für einige Zeit keinen DHCP-Server erreichen konnte.