你的中间人攻击搭档,用于通过DHCPv6 DNS接管以及mDNS、LLMNR和NetBIOS-NS欺骗进行中继攻击
pretender 是由 RedTeam Pentesting 开发的工具,用于通过伪造的本地名称解析和 DHCPv6 DNS 接管攻击获取中间人位置。pretender 主要针对 Windows 主机,因为它旨在用于中继攻击,但可以部署在 Linux、Windows 以及 Go 支持的所有其他平台上。名称解析查询可以用任意 IP 地址进行应答,适用于中继工具运行在与 pretender 不同主机上的情况。它设计用于与 Impacket's ntlmrelayx.py 和 krbrelayx 等工具配合,这些工具处理传入连接以进行中继攻击或哈希转储。
有关 DHCPv6 DNS 接管、本地名称解析欺骗和中继攻击的更多信息,请阅读我们的博客文章。
要了解本地网络中的情况,可以以 --dry 模式启动 pretender,该模式仅记录传入的查询而不应答任何查询:
pretender -i eth0 --dry
pretender -i eth0 --dry --no-ra # 无路由器通告 (RA)
pretender -i eth0 --dry --no-ra-dns # 有 RA 但不在 RA 中通告 DNS
要通过 mDNS、LLMNR 和 NetBIOS-NS 执行本地名称解析欺骗,以及通过路由器通告执行 DHCPv6 DNS 接管,只需如下运行 pretender:
pretender -i eth0
你可以使用 --no-dhcp-dns(禁用 DHCPv6、DNS 和路由器通告)、--no-lnr(禁用 mDNS、LLMNR 和 NetBIOS-NS)、--no-mdns、--no-llmnr、--no-netbios 和 --no-ra 禁用某些攻击。
如果 ntlmrelayx.py 运行在另一台主机上(例如 10.0.0.10/fe80::5),请按如下方式运行 pretender:
pretender -i eth0 -4 "10.0.0.10" -6 "fe80::5"
Pretender 可以设置为仅响应特定域的查询(或除特定域之外的所有域),并且可以仅对某些主机(或除某些主机之外的所有主机)执行欺骗攻击。通过主机名引用主机依赖于运行 pretender 的主机的名称解析。参见以下示例:
pretender -i eth0 --spoof "example.com" --dont-spoof-for "10.0.0.3,host1.corp,fe80::f" --ignore-nofqdn
更多信息,请运行 pretender --help。
--spoof/--dont-spoof/--spoof-for/--dont-spoof-for 支持通配符。domain.fqdn 仅执行文字匹配,而 .domain.fqdn 将匹配 domain.fqdn 和 sub.domain.fqdn。类似地,*domain.fqdn 匹配 mydomain.fqdn。使用 *.domain.fqdn 仅匹配子域名。注意,子域名通配符(前导点)和任意通配符(*)不能一起使用。ntlmrelayx.py 中使用 -6 标志启用 IPv6 支持。--stateless-ra 标志。默认情况下,DHCPv6 服务器仍然启动,但可以使用 --no-dhcp 禁用。--dont-spoof/--dont-spoof-for 过滤器,并且没有使用 配置上游 DNS 服务器,路由器通告将不会直接通告 DNS 服务器,从而降低攻击效果。可以按如下方式构建 Pretender:
go build
Pretender 也可以使用预配置的设置进行编译。为此,需要像这样修改 ldflags:
-ldflags '-X main.vendorInterface=eth1'
例如,可以为 Windows 构建 Pretender,指定默认接口、禁用彩色输出并配置中继 IPv4 地址:
GOOS=windows go build -trimpath -ldflags '-X "main.vendorInterface=Ethernet 2" -X main.vendorNoColor=true -X main.vendorRelayIPv4=10.0.0.10'
完整的供应商配置选项列表(有关详细信息,请参阅 defaults.go 或 pretender --help):
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
--delegate-ignored-to--stop-after 和 main.vendorStopAfter)。--no-host-info 或 main.vendorNoHostInfo 禁用。--interfaces 列出所有接口的名称和地址。--no-ipv6-lnr/main.vendorNoIPv6LNR。--spoof-for/--dont-spoof-for)。你可以通过设置或省略 --ignore-nofqdn 来决定如何处理没有 FQDN 选项的 DHCPv6 消息。CGO_ENABLED=1)或 Go 实现(CGO_ENABLED=0)。这对于主机信息收集可能很重要,因为操作系统解析器可能支持本地名称解析,而 Go 实现不支持(除非使用存根解析器)。hostinfo/mac-vendors.txt 将自定义 MAC 地址供应商列表编译到二进制文件中。仅识别以下格式的 MAC 前缀行:FF:FF:FF<tab>VendorID<tab>Vendor(MAC 前缀长度可以任意)。--no-lnr 和 --spoof-types SOA 以忽略与攻击无关的任何查询。krbrelayx.py 运行在与 pretender 不同的主机上(中继 IPv4 地址指向运行 krbrelayx.py 的不同主机),运行 krbrelayx.py 的主机也需要运行 pretender,以接收和拒绝发送到中继 IPv4 地址的动态更新查询。--delegate-ignored-to <DNS 服务器> 选项将忽略的查询委托给合法的 DNS 服务器。--dry-with-dhcp 可以与 --delegate-ignored-to 结合使用,以无干扰地监控网络中的名称解析查询。--ignore-non-microsoft-dhcp 来忽略非 Windows 客户端的 DHCP 消息。这是因为 Windows DHCP 客户端在 DHCP 供应商选项中包含了 Microsoft 的企业编号 311。--toggle,可以在运行时动态启用和禁用名称解析欺骗(DNS、mDNS、LLMNR、NetBIOS)。当与 --delegate-ignored-to 结合使用时,这特别强大,可以在不停止 DHCP 服务器的情况下启动和停止攻击。当 Windows DHCP 客户端在无法到达 DHCP 服务器一段时间后停止租用地址时,这可以用作一个变通方法。