
Seu companheiro MitM para ataques de retransmissão com tomada de DNS DHCPv6, bem como spoofing de mDNS, LLMNR e NetBIOS-NS.
Seu companheiro MitM para ataques de relay com DHCPv6 DNS takeover
bem como spoofing de mDNS, LLMNR e NetBIOS-NS
pretender é uma ferramenta desenvolvida pela RedTeam Pentesting para obter posições de máquina-no-meio (MitM) através de spoofing de resolução de nomes local e ataques de DHCPv6 DNS takeover. pretender tem como alvo principal hosts Windows, pois é destinado a ser usado para ataques de relay, mas pode ser implantado em Linux, Windows e todas as outras plataformas que Go suporta. Consultas de resolução de nomes podem ser respondidas com IPs arbitrários para situações em que a ferramenta de relay é executada em um host diferente do pretender. Ele é projetado para funcionar com ferramentas como o ntlmrelayx.py do Impacket's e o krbrelayx que lidam com as conexões recebidas para ataques de relay ou extração de hashes.
Leia nosso post no blog para mais informações sobre DHCPv6 DNS takeover, spoofing de resolução de nomes local e ataques de relay.
Para ter uma ideia da situação na rede local, o pretender pode ser iniciado no modo --dry, onde apenas registra as consultas recebidas e não responde a nenhuma delas:
pretender -i eth0 --dry
pretender -i eth0 --dry --no-ra # sem router advertisements (RA)
pretender -i eth0 --dry --no-ra-dns # com RA mas sem anunciar DNS no RA
Para realizar spoofing de resolução de nomes local via mDNS, LLMNR e NetBIOS-NS, bem como um DHCPv6 DNS takeover com anúncios de roteador, simplesmente execute o pretender assim:
pretender -i eth0
Você pode desabilitar certos ataques com --no-dhcp-dns (desabilita DHCPv6, DNS e router advertisements), --no-lnr (desabilita mDNS, LLMNR e NetBIOS-NS), --no-mdns, --no-llmnr, --no-netbios e --no-ra.
Se o ntlmrelayx.py é executado em um host diferente (digamos 10.0.0.10/fe80::5), execute o pretender assim:
pretender -i eth0 -4 "10.0.0.10" -6 "fe80::5"
Pretender pode ser configurado para responder apenas a consultas para determinados domínios (ou todos exceto certos domínios) e pode realizar os ataques de spoofing apenas para certos hosts (ou todos exceto certos hosts). A referência a hosts por nome de host depende da resolução de nomes do host que executa o pretender. Veja o seguinte exemplo:
pretender -i eth0 --spoof "exemplo.com" --dont-spoof-for "10.0.0.3,host1.corp,fe80::f" --ignore-nofqdn
Para mais informações, execute pretender --help.
--spoof/--dont-spoof/--spoof-for/--dont-spoof-for suportam curingas. Enquanto domain.fqdn realiza apenas correspondência literal, .domain.fqdn corresponderá a domain.fqdn e sub.domain.fqdn. Da mesma forma, *domain.fqdn corresponde a mydomain.fqdn. Use *.domain.fqdn para apenas corresponder a subdomínios. Note que curingas de subdomínio (ponto inicial) e curingas arbitrários (*) não podem ser usados juntos.ntlmrelayx.py com a flag -6.--stateless-ra. Por padrão, o servidor DHCPv6 ainda é iniciado, mas pode ser desabilitado usando --no-dhcp.Pretender pode ser construído da seguinte forma:
go build
Pretender também pode ser compilado com configurações pré-definidas. Para isso, as ldflags devem ser modificadas assim:
-ldflags '-X main.vendorInterface=eth1'
Por exemplo, Pretender pode ser construído para Windows com uma interface padrão específica, sem saída colorida e com um endereço IPv4 de relay configurado:
GOOS=windows go build -trimpath -ldflags '-X "main.vendorInterface=Ethernet 2" -X main.vendorNoColor=true -X main.vendorRelayIPv4=10.0.0.10'
Lista completa de opções de personalização (veja defaults.go ou pretender --help para informações detalhadas):
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 estão presentes e nenhum servidor DNS upstream está configurado com --delegate-ignored-to, os Router Advertisements não anunciarão diretamente o servidor DNS, o que torna o ataque menos eficaz.--stop-after e main.vendorStopAfter).--no-host-info ou main.vendorNoHostInfo.--interfaces.--no-ipv6-lnr/main.vendorNoIPv6LNR.--spoof-for/--dont-spoof-for). Você pode decidir o que fazer com mensagens DHCPv6 sem opção FQDN definindo ou omitindo --ignore-nofqdn.CGO_ENABLED=1) ou uma implementação Go (CGO_ENABLED=0) é usado. Isso pode ser importante para a coleta de informações do host porque o resolvedor do SO pode suportar resolução de nomes local e a implementação Go não, a menos que um resolvedor stub seja usado.hostinfo/mac-vendors.txt. Apenas linhas com prefixos MAC no seguinte formato são reconhecidas: FF:FF:FF<tab>VendorID<tab>Vendor (o comprimento do prefixo MAC pode ser arbitrário).--no-lnr e --spoof-types SOA para ignorar quaisquer consultas não relacionadas ao ataque.krbrelayx.py é executado em um host diferente do pretender (o endereço IPv4 de relay aponta para um host diferente que executa krbrelayx.py), o host que executa krbrelayx.py também precisará executar o pretender para receber e negar a consulta de Dynamic Update enviada ao endereço IPv4 de relay.--delegate-ignored-to <servidor DNS> pode ser usada para delegar consultas ignoradas a um servidor DNS legítimo.--dry-with-dhcp pode ser combinada com --delegate-ignored-to para monitorar as consultas de resolução de nomes na rede sem interrupção.--ignore-non-microsoft-dhcp. Isso é possível porque o cliente DHCP do Windows inclui o número de empresa 311 da Microsoft na opção de fornecedor DHCP.--toggle, o spoofing de resolução de nomes (DNS, mDNS, LLMNR, NetBIOS) pode ser ativado e desativado dinamicamente em tempo de execução. Isso é especialmente poderoso com --delegate-ignored-to para iniciar e parar ataques sem parar o servidor DHCP. Isso pode ser usado como uma solução alternativa quando o cliente DHCP do Windows para de conceder endereços após falhar ao alcançar o servidor DHCP por algum tempo.