「黑客必備」支持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 CESTPre-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 CESTPre-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-listStarting Nmap 7.60 ( https://nmap.org ) at 2017-09-13 07:11 CESTPre-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:22Starting Ncrack 0.5 ( http://ncrack.org ) at 2017-09-04 10:27 EDTssh://2001:db8::2:22 finished.Ncrack done: 1 service scanned in 3.00 seconds.Probes sent: 1 | timed-out: 0 | prematurely-closed: 0Ncrack 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 andmodification 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 andmodification 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.comCHECKING 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代理等。

你可能會喜歡