导语:早在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代理等。

源链接

Hacking more

...