导语:众所周知,我们常见的有很多的子域名枚举的工具,例如 Fierce, SubBrute和 Gobuster,然而,今天我所要讲的 AQUATONE不仅采取了经典的暴力计数,还利用各种开源和互联网服务,大大增加了发现的子域数量。

知道某一事物的攻击面是防御和攻击的关键。例如当我们谈到域名时,发现其攻击面的一个非常常见的方法是发现其子域。而通过子域名将能够增加发现潜在目标网站的数量,并对其IP范围进一步探索。

众所周知,我们常见的有很多的子域名枚举的工具,例如 Fierce, SubBrute和 Gobuster,然而,今天我所要讲的 AQUATONE不仅采取了经典的暴力计数,还利用各种开源和互联网服务,大大增加了发现的子域数量。当发现子域时,不但可以使用AQUATONE来探测主机的公共HTTP端口,并收集响应头,同时还能够进行HTML和屏幕截图,以编译成一个不错的报告,便于分析。

为了使工具尽可能灵活,AQUATONE分为三个独立的命令,因此如果您只想使用它来进行子域发现,而不需要任何扫描或屏幕截图,也可以轻松实现。让我们来看看AQUATONE评估的三个阶段:

第一阶段:发现

为了演示AQUATONE的使用情况,我们将对该域corp.yahoo.com进行评估 。我之所以选择这个域名,是因为Yahoo的 Bug Bounty程序包含了所有的 *.yahoo.com范围,所以运行像AQUATONE这样的工具应该是很不错的。

启动aquatone-discover工具:

1.png

首先aquatone-discover要确定目标域的权威名称服务器。之所以使用这些名称服务器,是因为其可确保信息是最新的,并且能够使我们的发现最大化。

它还可以快速测试目标域是否配置为通配符域,因为这些域可能会产生大量的误报。如果域是通配符,它将识别可能的通配符响应并将其过滤掉。幸运的是corp.yahoo.com没有配置为通配符。

在名称服务器和通配符检测之后,它继续向每个子域收集器模块询问目标域下的潜在子域。 aquatone-discover装有以下收集器模块:

字典暴力
DNSDB.org
Google透明度报告
HackerTarget
Netcraft
Shodan(需要API密钥)
ThreatCrowd
VirusTotal(需要API密钥)

收集器模块返回了总共12.282个潜在子域,aquaone对其进行了分析并尝试分解。

2.png

过了一段时间,aquatone-discover已经列出了名单,共发现了一个1.958个活的子域名。它还分析了IP,并列出了可用于进一步探测的潜在IP子网范围:

3.png

另外,它还将发现的主机写入自动为目标域创建的aquatone评估目录中的文件。hosts.txt 包含逗号分隔的域名及其IP:

1497938640432995.png

该文件可以通过常用的命令行工具进行切片和分割,并加载到您可能使用的其他工具中。hosts.json包含与JSON格式相同的信息,并被其他AQUATONE工具使用,但如果要使用自定义脚本的信息也完全没有问题。

第二阶段:扫描

能够发现corp.yahoo.com的一堆子域名其实已经很有用了。事实上我们可以在这里停下来,开始使用其他工具或手动浏览,但是我们仍然可以选择让aquatone-scan为我们努力寻找哪些主机可能会提供网页内容:

4.png

aquatone-scan在不同的主机上找到了一堆开放的HTTP端口。默认情况下,它将扫描以下TCP端口:80,443,880,8080和8443,它们都是非常普通的Web服务端口。您当然可以使用该–ports 选项将其更改为您自己的端口列表,或指定其中一个内置列表别名:

small:80,443
medium:80,443,880,8080,8443(与默认相同)
large:80,81,443,591,2082,2087,2095,2096,3000,8,000,800,1808,8080,8083,8443,8834,8888
huge:80,81,300,443,591,593,832,981,1010,1311,2082,2087,2095,2096,2480,3000,31228,3333,44243,4567,4711,4712,4993,5000,5104 ,5108,5800,65343,7000,7396,77474,80008,1008,
8008,8014,8042,8069,8080,8081,8088,8090,8091,8118,8133,8172,8222,8243,88080,8281,8333 ,8443,8500,8834,8880,8888,8893,9000,903,49060,98080,9909,991,992,9443,99800,99981,
12443,16080,18091,18092,20720,28017

使用较大的端口列表肯定会让您发现更多的Web服务,但它也将增加aquatone-scan完成所需的时间。

aquatone-scan在评估目录中创建了两个新文件corp.yahoo.com:open_ports.txt是一个简单的以逗号分隔的主机列表及其打开的端口:

1497938761582909.png

urls.txt 包含可用于在打开的端口上请求网页的URL列表:

1497938769214148.png

这些文件可用于下一阶段的评估,但也可以方便地加载到其他工具,如EyeWitness 或切片和分割grep, cut, awk,等。

第三阶段:汇总

我们现在已经知道了*.corp.yahoo.com的子域名和开放端口,现在该用aquatone-gather来收集HTTP响应和截图,并将其编译成一个不错的报告了:

7.png

aquatone-gather从先前的AQUATONE工具创建的文件加载数据,并开始请求URL来收集HTTP响应和屏幕截图。而在幕后,它使用Nightmare来解决所有重要的请求和屏幕截图。

不幸的是,Nightmare和任何其他浏览器自动化工具一样,处理方式都有点片面,并且会在某些页面处理中失败,这一点可以在屏幕截图中看到。当然我认为失败率是可以接受的,但我们仍然需要注意这一事情。

过了一会儿,它处理完了所有的网页:

8.png

接下来,它将生成打印成功与失败的页面处理的简短摘要和生成的报告页面的列表,但这并不是aquatone-gather唯一生成的文件。当我们导航到评估文件夹中,我们可以看到三个新的文件夹:headers,html,report和screenshots。

该headers文件夹中包含来自所有页面访问的响应标题的文本文件:

1497938843457840.png

从安全的角度来说,这些文件对grep和其他工具快速查找服务器技术信息和其他有趣的事情来说非常有用。

该html文件夹包含所有页面访问的HTML主体:

1497938854878102.png

这些文件可以用于很多地方,这一点稍后再说。

顾名思义,该screenshots文件夹中包含所有页面访问的PNG屏幕截图:

1497938865904804.png

事实上,您当然可以直接在文件夹中浏览这些截图,但是通过打开生成的HTML报告页面来分析它们可能更有用。

12.png

报告将使用响应标题排列屏幕截图,以便您快速扫描收集的信息以获取有趣的页面。AQUATONE将突出显示可能会增加绿色背景和标题的标题,这可能会导致红色背景的安全问题。

CLI技巧

生成的报告是AQUATONE的最终产品,但是可以在评估文件夹中生成的所有原始文件也包含着大量有用的内容,因此,我非常建议你们能够学到我文章所讲的内容并将其应用范围扩大到诸如以下事情中:

获取服务器技术统计信息

[email protected]:~/aquatone/corp.yahoo.com/headers# cat * | grep 'Server:' | sort | uniq -c | sort -nr
     13 Server: ATS
      6 Server: Bomgar
      1 Server: [email protected]:~/aquatone/corp.yahoo.com/headers#

查找更多子域

[email protected]:~/aquatone/corp.yahoo.com/html# cat * | egrep -o '[a-z0-9-_.]+.corp.yahoo.com' | sort -ubomgar.corp.yahoo.com
bouncer.by.corp.yahoo.com
fast.corp.yahoo.com
it.corp.yahoo.com
request.corp.yahoo.com
[email protected]:~/aquatone/corp.yahoo.com/html#

查找HTML注释

[email protected]:~/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 -->

查找带有密码字段的页面

[email protected]:~/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>[email protected]:~/aquatone/corp.yahoo.com/html#

获取端口443上的主机

[email protected]:~/aquatone/corp.yahoo.com# cat open_ports.txt | grep ',443' | cut -d "," -f 1117.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
[email protected]i:~/aquatone/corp.yahoo.com#

检测具有Heartbleed的HTTPS主机

[email protected]:~/aquatone/corp.yahoo.com# grep https urls.txt | cut -d '/' -f 3 > /tmp/[email protected]:~/aquatone/corp.yahoo.com# sslscan --targets=/tmp/targets.lst --no-ciphersuites --no-fallback --no-renegotiation --no-compression --no-check-certificateVersion: 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 [email protected]:~/aquatone/corp.yahoo.com#

最后,很高兴加入到使用AQUATONE的航班中,您将度过的是一段轻松而又愉快的旅程。

源链接

Hacking more

...