导语:早在2014年,我们发布了一份白皮书(由Antonis Atlasis编译),阐述的是不同pentesting工具对IPv6的支持情况。但这是三年前的事了,我们认为现在是再次更新的时候了。其实,大多数不支持IPv6的工具仍然不支持,或者从那以后还没有任何更
早在2014年,我们发布了一份白皮书(由Antonis Atlasis编译),阐述的是不同pentesting工具对IPv6的支持情况。但这是三年前的事了,我们认为现在是再次更新的时候了。其实,大多数不支持IPv6的工具仍然不支持,或者从那以后还没有任何更新。这篇文章我们主要介绍那些支持IPv6的工具的更新情况。
Nmap
2014年Nmap已经支持IPv6,从那时起就添加了一些新的操作系统指纹,并添加了一些新的NSE脚本。与上次测试相比,Nmap的指纹比IPv6好一点,但仍然不如IPv4。Nmap现在还通过命令行支持IPv6地址列表,但仍然不支持使用范围。为此,我们仍然需要创建一个用于扫描的IPv6地址列表。另一种更容易的方法是使用新的NSE脚本“ target-ipv6-wordlist ”,它使用十六进制“单词”的单词列表,并为给定的子网创建地址。它附带默认列表,或者我们可以使用我们自己的列表。
#nmap -6 -p 80 --script targets-ipv6-wordlist --script-args newtargets,targets-ipv6-subnet={2001:db8::/64} Starting Nmap 7.60 ( https://nmap.org ) at 2017-09-03 17:07 CEST Pre-scan script results: | targets-ipv6-wordlist: |_ node count: 2645
除了上述方法之外,还有另一个NSE脚本称为“ targets-ipv6-map4to6 ”,它增加了将IPv4地址或IPv4子网映射到IPv6子网上的支持,并将它们添加到扫描队列中。
#nmap -6 --script targets-ipv6-map4to6 --script-args newtargets,targets-ipv6-map4to6.IPv4Hosts={192.168.1.1},targets-ipv6-subnet={2001:db8::/64} Starting Nmap 7.60 ( https://nmap.org ) at 2017-09-13 17:05 CEST Pre-scan script results: | targets-ipv6-map4to6: | node count: 1.0 | addresses: |_ 2001:db8:0:0:0:0:c0a8:101
最后一个新的NSE脚本是“ ipv6-multicast-mld-list ”,并且正在支持MLD(Multicast Listener Discovery)来查找IPv6组播监听器订阅的本地链路上的组播地址(关于MLD介绍请看这里或这里,或者在Jayson的MLD安全论文)。
#nmap --script=ipv6-multicast-mld-list Starting Nmap 7.60 ( https://nmap.org ) at 2017-09-13 07:11 CEST Pre-scan script results: | ipv6-multicast-mld-list: | fe80::21e6:4529:cea:d560: | device: vboxnet0 | mac: 08:00:27:f2:a4:37 | multicast_ips: | ff02::1:ffea:d560 (NDP Solicited-node) | ff02::1:3 (Link-local Multicast Name Resolution) | ff02::c (SSDP) | ff02::1:3 (Link-local Multicast Name Resolution) | ff02::1:ffea:d560 (NDP Solicited-node) | ff02::c (SSDP) | fe80::a00:27ff:fea1:b6e6: | device: vboxnet0 | mac: 08:00:27:a1:b6:e6 | multicast_ips: | ff02::1:ff00:2 (Solicited-Node Address) | ff02::1:ffa1:b6e6 (NDP Solicited-node) | ff02::1:ff00:2 (Solicited-Node Address) |_ ff02::1:ffa1:b6e6 (NDP Solicited-node) WARNING: No targets were specified, so 0 hosts scanned. Nmap done: 0 IP addresses (0 hosts up) scanned in 10.98 seconds
Ncrack
在Ncrack0.5版本中,一个测试表明,Ncrack现在能够解决IPv6目标,只要它们是通过其主机名提供的。当我们尝试使用IPv6地址时,会显示错误消息“无效端口号”。此问题的解决方法是使用主机文件,并使用主机名为目标创建条目。然后提供Ncrack的主机名,它正在工作。
#cat /etc/hosts [...] 2001:db8::2 ipv6-tool-test #ncrack -6 -v --user root --pass test ipv6-tool-test:22 Starting Ncrack 0.5 ( http://ncrack.org ) at 2017-09-04 10:27 EDT ssh://2001:db8::2:22 finished. Ncrack done: 1 service scanned in 3.00 seconds. Probes sent: 1 | timed-out: 0 | prematurely-closed: 0 Ncrack finished.
Ettercap
Ettercap在版本8.1中添加了一些关于IPv6的新功能:
· 新的IPv6隐藏扫描模式
· 新中毒!
· IPv6探测延迟从2秒增加到3秒
· 使etter {log,filter} IPv6兼容
· etterfilter现在是IPv6准备好了!
但是要在ettercap中使用IPv6,必须使用“支持IPv6支持”来构建。我们试图测试ND中毒在两个目标之间做一个MitM。我们打开ettercap,启用“IPv6主机扫描”,并启动主机扫描以查找我们的目标。不幸的是,只有一个目标被发现了,即使我们可以在Wireshark看到至少有一个其他的目标回应。我们将每个目标添加到目标列表并启动了NDP-Posion。目标“A”现在打开了一个目标“B”的网页,我们的攻击者主机现在可以嗅到通信。
所以我们可以使用ettercap执行NDP MitM攻击。但是,该站点是没有扩展头支持。也许这个和一些更多的IPv6 MitM攻击将来会来临。
ZAP
支持IPv6的最后一个工具是ZAP(Zed Attack Proxy)),来自OWASP。我们尝试了最新的2.6.0版本,发现它只支持IPv6,但是不支持直接定位IPv6地址。例如,如果我们尝试连接到ipv6.google.com,它正在使用IPv6,因为该目标只能通过IPv6访问。但是当我们尝试连接到ernw.de时,它使用IPv4地址而不是IPv6(因为目标是双重堆叠的)。如果我们运行ZAP的系统仅在IPv6网络中,这意味着ZAP无法通过IPv6连接到ernw.de,即使在A A记录之外的DNS AAAA记录条目中也是如此。解决方法是创建仅包含IPv6地址的静态主机条目。那么在我们的示例中,ZAP能够通过IPv6连接到ernw.de。
此外,我们测试了一些没有在初始文件中列出的有用工具。
Masscan
到目前为止,Masscan不支持IPv6。
Testssl.sh
Testssl.sh支持IPv6,如果有支持IPv6支持的openssl版本,避免openssl问题的最简单的方法是使用Testssl.sh的git版本,其中包含预编译的openssl版本,该版本启用了所有必需的功能。对于直接定位IPv6地址,可以添加IPv6地址的-ip选项。
$testssl.sh -6 ipv6.google.com ########################################################### testssl.sh 2.9dev from https://testssl.sh/dev/ This program is free software. Distribution and modification under GPLv2 permitted. USAGE w/o ANY WARRANTY. USE IT AT YOUR OWN RISK! Please file bugs @ https://testssl.sh/bugs/ ########################################################### Using "OpenSSL 1.0.2-chacha (1.0.2i-dev)" [~183 ciphers] on pentest:/home/pentest/tools/testssl.sh-github/bin/openssl.Linux.x86_64 (built: "Jun 22 19:32:29 2016", platform: "linux-x86_64") Start 2017-09-04 12:30:12 -->> [2a00:1450:4001:81f::200e]:443 (ipv6.google.com) <<-- $testssl.sh -6 --ip=2001:db8::2 ipv6-tool-test:8843 ########################################################### testssl.sh 2.9dev from https://testssl.sh/dev/ This program is free software. Distribution and modification under GPLv2 permitted. USAGE w/o ANY WARRANTY. USE IT AT YOUR OWN RISK! Please file bugs @ https://testssl.sh/bugs/ ########################################################### Using "OpenSSL 1.0.2-chacha (1.0.2i-dev)" [~183 ciphers] on pentest:/home/pentest/tools/testssl.sh-github/bin/openssl.Linux.x86_64 (built: "Jun 22 19:32:29 2016", platform: "linux-x86_64") Start 2017-09-04 12:34:04 -->> [2001:db8::2]:8443 (ipv6-tools-test) <<--
sslyze
sslyze(1.1.4)的测试版本也支持IPv6,即使不提供附加标志,可以使用IPv6地址而不是主机名。
$sslyze --regular ipv6.google.com CHECKING HOST(S) AVAILABILITY ----------------------------- ipv6.google.com:443 => 2a00:1450:4001:81f::200e:443 [...] $sslyze --regular "[2001:db8::2]:8443" CHECKING HOST(S) AVAILABILITY ----------------------------- 2001:db8::2:8443 => 2001:db8::2 [...]
总结
当时不支持IPv6的大多数工具,在过去几年没有得到任何更新,很可能在不久的将来也不支持IPv6。另一方面,有些工具正在努力实施更多的IPv6功能,或者在未来的功能要求列表中支持IPv6,如nikto
对于没有支持IPv6的工具,可以使用Socat或Chiron代理等。