子域名发掘神器:AQUATONE
作者:admin | 时间:2017-6-21 01:49:11 | 分类:黑客工具 隐藏侧边栏展开侧边栏
当我们要对一个目标进行渗透时,我们往往需要去尽可能的挖掘目标可能存在的攻击面。就拿一个域名来说,当主站防御的比较死的时候,我们通常就会考虑其子站。因为相对主站而言,子站的安全性做的可能不那么全面。那么,我们该如何最大程度的将目标子域枚举出来呢?靠人工当然不行,其实在网上已经有很多专门用于挖掘子域的神器,例如 Fierce, SubBrute和Gobuster等。此外,还有一些在线网站也为我们提供了强劲的子域枚举功能,例如站长之家等。
那么除此之外,还有没有什么比较好用的子域枚举神器呢?这里我要向大家推荐一款名为AQUATONE的子域挖掘神器。相比前面提及的枚举工具,AQUATONE不仅仅只是通过简单的子域爆破,它还会利用各种开放的互联网服务和资源,来协助其完成子域枚举任务,这也大大提高了子域的爆破率。当发现子域时,我们还可以使用AQUATONE来探测主机的公共HTTP端口,并收集响应头,HTML和屏幕截图,并能最终为我们生成一个报告,便于我们后续的分析利用。
此外,AQUATONE被分为三个独立的命令(阶段)。如果你只想使用它来进行子域的发现,而无需任何的扫描或屏幕截图,你只需单独的执行其中一条命令即可。下面,让我们来看看AQUATONE评估的三个阶段:
阶段1:发现
为了向大家演示AQUATONE的用法,这里我将以corp.yahoo.com这个域名为例。之所以选择这个域名是因为Yahoo的漏洞赏金计划包含了所有* .yahoo.com的域名,所以运行这类爆破工具也是可被接受的。
命令aquatone-discover是用以启动AQUATONE的:
aquatone-discover做的第一件事,就是确定目标的主域名服务器。使用主域名服务器进行发现,不仅可以确保信息是最新的,而且还能将发现的结果最大化。
此外,它还可以快速的测试目标域是否为通配符域。如果为通配符域,它将识别可能的通配符响应并将其过滤掉。庆幸的是我们测试的corp.yahoo.com没有被配置为通配符。
在进行完主域名服务器和通配符检测后,AQUATONE将会向每个子域收集器模块,询问目标域下的潜在子域。aquatone-discover共集成了以下收集器模块:
- 字典爆破(查看字典)
- DNSDB.org
- Google Transparency Report(Google透明度报告)
- HackerTarget
- Netcraft
- Shodan (需要API key)
- ThreatCrowd
- VirusTotal (需要API key)
收集器模块总返回了12.282个潜在的子域,aquatone-discover并对这些域名进行了相应的解析。
在经过一段时间的收集,aquatone-discover共为我们找到了1.958存活的子域。它还分析了IP,并列出了可用于进一步探测的潜在IP子网范围:
在aquatone评估目录下,它还为我们自动创建了一个以“目标域.hosts.txt”命名的文件,并将枚举的域名和IP以逗号分割打印在了文本中。
224-si1.corp.yahoo.com,207.126.224.4 224-si2.corp.yahoo.com,207.126.224.5 227-si1.corp.yahoo.com,207.126.227.4 227-si2.corp.yahoo.com,207.126.227.7 232-si1.corp.yahoo.com,207.126.232.4 232-si2.corp.yahoo.com,207.126.232.5 351-si1.corp.yahoo.com,216.145.51.4 351-si2.corp.yahoo.com,216.145.51.96 998-dmz-foundry1.corp.yahoo.com,216.145.48.25 998-dmz-foundry2.corp.yahoo.com,216.145.48.39 aa-dc1.wpe.stg.test.corp.yahoo.com,98.137.139.80 aa-dc2.wpe.stg.test.corp.yahoo.com,98.137.139.81 aaa1-1-a-gci.corp.yahoo.com,216.145.50.84 aaa1-2-a-gci.corp.yahoo.com,216.145.50.87 aahost1.stg.test.corp.yahoo.com,98.137.139.82 aahost2.stg.test.corp.yahoo.com,98.137.139.83 aahost3.stg.test.corp.yahoo.com,98.137.139.84 aahost4.stg.test.corp.yahoo.com,98.137.139.85 aape01.stg.test.corp.yahoo.com,98.137.139.93 aavm1.stg.test.corp.yahoo.com,98.137.139.87
阶段2:扫描
在完成子域的收集工作后,接下来我们需要确定哪些子域可以被访问。但是面对这上千个网址,如果采取手动浏览的方式显然不太明智。这里我们可以让aquatone-scan,来帮助我们完成这个工作。
在默认情况下aquatone-scan,将为我们扫描以下TCP端口:80,443,880,8080和8443,这些都是非常常见的Web服务端口。当然,我们还可以使用–ports选项来指定我们需要扫描的端口号,或者指定一个内置的列表别名:
- small: 80, 443
- medium: 80, 443, 8000, 8080, 8443 (same as default)
- large: 80, 81, 443, 591, 2082, 2087, 2095, 2096, 3000, 8000, 8001, 8008, 8080, 8083, 8443, 8834, 8888
- huge: 80, 81, 300, 443, 591, 593, 832, 981, 1010, 1311, 2082, 2087, 2095, 2096, 2480, 3000, 3128, 3333, 4243, 4567, 4711, 4712, 4993, 5000, 5104, 5108, 5800, 6543, 7000, 7396, 7474, 8000, 8001, 8008, 8014, 8042, 8069, 8080, 8081, 8088, 8090, 8091, 8118, 8123, 8172, 8222, 8243, 8280, 8281, 8333, 8443, 8500, 8834, 8880, 8888, 8983, 9000, 9043, 9060, 9080, 9090, 9091, 9200, 9443, 9800, 9981, 12443, 16080, 18091, 18092, 20720, 28017
使用huge这个端口列表,你将会发现更多的Web服务,但与此同时也会增加aquatone-scan的扫描时间。
aquatone-scan在corp.yahoo.com的评估目录中创建了两个新文件:open_ports.txt中包含了主机IP以及对应开启的端口:
117.104.189.54,443
124.108.98.253,443
124.108.98.254,443
203.83.249.10,443
203.83.249.4,443
203.83.249.5,443
203.83.249.8,443
203.83.249.9,443
209.131.62.228,443
209.131.62.229,443
209.131.62.230,443
209.131.62.231,443
216.145.48.148,443
216.145.48.149,443
216.145.48.150,443
216.145.48.151,443
216.145.48.152,443
216.145.48.153,443
72.30.2.113,443,80
77.238.184.150,80
98.136.163.125,80,443
98.136.205.152,443,80
98.136.205.216,443
urls.txt则包含了可用于web请求的URL列表:
http://bomgar.corp.yahoo.com/ http://bouncer.gh.corp.yahoo.com/ http://buzz.corp.yahoo.com/ http://cloud.corp.yahoo.com/ http://fifa.corp.yahoo.com/ http://gemini.corp.yahoo.com/ http://guest.corp.yahoo.com/ http://insights.corp.yahoo.com/ http://ipv6.corp.yahoo.com/ http://marketingcentral.corp.yahoo.com/ http://messenger.corp.yahoo.com/ http://request.corp.yahoo.com/ http://sas.corp.yahoo.com/ http://services.corp.yahoo.com/ http://shop.corp.yahoo.com/ http://si.corp.yahoo.com/ http://wireless.corp.yahoo.com/ https://bomgar.corp.yahoo.com/ https://bouncer.gh.corp.yahoo.com/ https://fast.corp.yahoo.com/
以上生成的这些文本,可直接被用于下一评估阶段。如果你想将这些结果导入到其它工具使用,你可以使用像grep,awk等这类命令或其他分割工具,将其划分成相应的格式再次利用。
阶段3:收集
经过上面两个阶段,我们已经获取了* .corp.yahoo.com的子域名和开放端口。下面我们将进入最后一个环节,使用aquatone-gather来收集HTTP响应和截图,并将结果生成报告:
aquatone-gather会从之前AQUATONE创建的文件加载数据,并请求文本中的URL来收集HTTP响应和截图。aquatone-gather是基于Nightmare来完成繁重的请求任务和屏幕截图的。
过了一会儿,aquatone-gather完成了所有的web请求。但从截图可以看到,当中出现了部分的failed。 Nightmare和许多其他的浏览器自动化工具一样,会在某些页面处理中出现失败的情况。
最终aquatone-gather为我们打印了,成功和失败的页面处理简短摘要,以及生成了一份html格式的报告文件。但aquatone-gather为我们生成的文件远不止这些,我们查看评估文件夹可以看到,这里为我们创建了三个新的文件夹:headers, html,report和screenshots。
其中headers文件夹中的文本文件,包含了所有访问页面的响应头信息:
root@kali:~/aquatone/corp.yahoo.com/headers# cat bomgar_corp_yahoo_com__98_136_205_152__443.txt Cache-Control: no-cache Connection: Keep-Alive Content-Type: text/html; charset=utf-8
Date: Wed, 14 Jun 2017 12:22:01 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive: timeout=15, max=100 Pragma: no-cache Server: Bomgar Set-Cookie: ns_s=c9b9309296cf5babeb7e193125cb2cf0f3c7f13c; path=/; secure; HttpOnly
Strict-Transport-Security: max-age=31536000
Transfer-Encoding: chunked
X-Ua-Compatible: IE=edge
root@kali:~/aquatone/corp.yahoo.com/headers#
html文件夹则包含了所有访问页面的HTML主体信息:
root@kali:~/aquatone/corp.yahoo.com/html# cat bomgar_corp_yahoo_com__98_136_205_152__443.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Yahoo! Global Service Desk LiveChat</title> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> <link href="/content/common.css" rel="stylesheet" type="text/css" /> <link href="/content/public.css" rel="stylesheet" type="text/css" /> <link href="/content/mobile.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="container"> <div id="header" class="contentBox"> ... <div style="display: none"> <div style="margin: 1em;"> <a href="http://www.bomgar.com" class="inverse" target="_blank">Secure Remote Desktop Access by Bomgar</a> </div> </div> </div> </body> </html> root@kali:~/aquatone/corp.yahoo.com/html#
screenshots文件夹则包含了所有访问页面的PNG屏幕截图:
root@kali:~/aquatone/corp.yahoo.com/screenshots# ls bomgar_corp_yahoo_com__98_136_205_152__443.png
bomgar_corp_yahoo_com__98_136_205_152__80.png
bouncer_gh_corp_yahoo_com__72_30_2_113__443.png
bouncer_gh_corp_yahoo_com__72_30_2_113__80.png
buzz_corp_yahoo_com__77_238_184_150__80.png
cloud_corp_yahoo_com__77_238_184_150__80.png
...
si_corp_yahoo_com__77_238_184_150__80.png
vpn1-1-gci_eglbp_corp_yahoo_com__203_83_249_4__443.png
vpn1-1-ptn_corp_yahoo_com__216_145_48_151__443.png
vpn1-1-ptn_eglbp_corp_yahoo_com__203_83_249_10__443.png
vpn1-2-gci_sv6_corp_yahoo_com__209_131_62_228__443.png
vpn-1-gci_hongkong_corp_yahoo_com__117_104_189_54__443.png
vpn2-1-gci_eglbp_corp_yahoo_com__203_83_249_5__443.png
vpn2-1-ptn_corp_yahoo_com__216_145_48_152__443.png
vpn2-2-gci_sv6_corp_yahoo_com__209_131_62_229__443.png
vpn-2-gci_sv6_corp_yahoo_com__209_131_62_230__443.png
wireless_corp_yahoo_com__77_238_184_150__80.png
root@kali:~/aquatone/corp.yahoo.com/screenshots#
你可以直接在文件夹中浏览这些屏幕截图,但我建议大家最好是通过生成的HTML报告来进行查看,这样更有利于我们的整体分析。对于可能会导致安全问题的地方,AQUATONE将以红色或绿色背景为我们高亮显示:
CLI技巧
对于以上生成的这些文件,我们可以做很多事情。下面,我教大家一些查找其中有用信息的小技巧。
获取服务器技术统计信息
root@kali:~/aquatone/corp.yahoo.com/headers# cat * | grep 'Server:' | sort | uniq -c | sort -nr 13 Server: ATS 6 Server: Bomgar 1 Server: AkamaiGHost
root@kali:~/aquatone/corp.yahoo.com/headers#
查找更多子域
root@kali:~/aquatone/corp.yahoo.com/html# cat * | egrep -o '[a-z0-9\-\_\.]+\.corp\.yahoo\.com' | sort -u bomgar.corp.yahoo.com
bouncer.by.corp.yahoo.com
fast.corp.yahoo.com
it.corp.yahoo.com
request.corp.yahoo.com
services.corp.yahoo.com
root@kali:~/aquatone/corp.yahoo.com/html#
查找HTML注释
root@kali:~/aquatone/corp.yahoo.com/html# cat * | egrep -o '<!--.*-->' <!--//--> <!-- Begin comScore Tag --> <!-- bouncer02.gh.bf1.yahoo.com Wed Jun 14 12:22:09 UTC 2017 --> <!-- bouncer12-os.gh.bf2.yahoo.com Wed Jun 14 12:22:29 UTC 2017 --> <!-- #doc4 --> <!-- .dw1 --> <!-- .dw4 --> ... <!-- /.shmod --> <!-- SpaceID=0 timeout (ads1) --> <!-- src2.ops.ir2.yahoo.com Wed Jun 14 12:22:15 UTC 2017 --> <!-- src4.ops.ir2.yahoo.com Wed Jun 14 12:21:44 UTC 2017 --> <!-- src4.ops.ir2.yahoo.com Wed Jun 14 12:21:51 UTC 2017 --> <!-- src4.ops.ir2.yahoo.com Wed Jun 14 12:22:27 UTC 2017 --> <!-- src6.ops.ir2.yahoo.com Wed Jun 14 12:21:57 UTC 2017 --> <!-- src6.ops.ir2.yahoo.com Wed Jun 14 12:22:15 UTC 2017 --> <!-- src6.ops.ir2.yahoo.com Wed Jun 14 12:22:36 UTC 2017 --> <!-- URL: /::ProfilerTotal:557:1497442917838::Page Creation:40:1497442917838::user_ups:0:1497442917844::ydht_time:1:1497442917845::Maple Execution:518:1497442917878::Maple WS:41:1497442917879::SHAdModule:457:1497442917921::SHLeftNavigationModule:7:1497442918378::SHHeroModule:0:1497442918385::SHBrowseShoppingModule:5:1497442918385::SHSocialNewBrowseModule:0:1497442918390::SHCopyrightModule:1:1497442918391:: --> <!-- web23.shop.bf1.yahoo.com --> <!-- web23.shop.bf1.yahoo.com Wed Jun 14 12:21:57 UTC 2017 -->
查找带有密码字段的页面
root@kali:~/aquatone/corp.yahoo.com/html# grep 'type="password"' * bouncer_gh_corp_yahoo_com__72_30_2_113__80.html: <dd><input class="input-large" name="pass_word" type="password" id="pass_word" maxlength="64" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" ></dd>
fast_corp_yahoo_com__98_136_205_216__443.html: <dd><input class="input-large" name="pass_word" type="password" id="pass_word" maxlength="64" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" ></dd>
root@kali:~/aquatone/corp.yahoo.com/html#
获取端口为443的主机
root@kali:~/aquatone/corp.yahoo.com# cat open_ports.txt | grep ',443' | cut -d "," -f 1 117.104.189.54 124.108.98.253 124.108.98.254 203.83.249.10 203.83.249.4 ... 216.145.48.153 72.30.2.113 98.136.163.125 98.136.205.152 98.136.205.216 root@kali:~/aquatone/corp.yahoo.com#
检查HTTPS主机,是否存在心脏滴血漏洞
root@kali:~/aquatone/corp.yahoo.com# grep https urls.txt | cut -d '/' -f 3 > /tmp/targets.lst root@kali:~/aquatone/corp.yahoo.com# sslscan --targets=/tmp/targets.lst --no-ciphersuites --no-fallback --no-renegotiation --no-compression --no-check-certificate Version: 1.11.9-static
OpenSSL 1.0.2l-dev xx XXX xxxx
Testing SSL server bomgar.corp.yahoo.com on port 443 using SNI name Heartbleed: TLS 1.2 not vulnerable to heartbleed
TLS 1.1 not vulnerable to heartbleed
TLS 1.0 not vulnerable to heartbleed
Testing SSL server bouncer.gh.corp.yahoo.com on port 443 using SNI name
...
Testing SSL server vpn2-2-gci.sv6.corp.yahoo.com on port 443 using SNI name Heartbleed: TLS 1.2 not vulnerable to heartbleed
TLS 1.1 not vulnerable to heartbleed
TLS 1.0 not vulnerable to heartbleed
root@kali:~/aquatone/corp.yahoo.com#
*参考来源:michenriksen,FB小编 secist 编译