子域名挖掘工具Aquatone安装以及遇到的坑

By | 2019年3月28日

Aquatone是一款子域名挖掘工具,Aquatone不仅仅只是通过简单的子域爆破,它还会利用各种开放的互联网服务和资源,来协助其完成子域枚举任务,这也大大提高了子域的爆破率。当发现子域时,我们还可以使用Aauatone来探测主机的公共HTTP端口,并收集响应头,HTML和屏幕截图,并能最终为我们生成一个报告,便于我们后续的分析利用。

一、安装以及环境配置

Aquatone作者建议使用Kali安装使用该工具,并且也只针对Kali使用过程中遇到的问题进行修复,所以这里使用最新版Kali进行安装。使用aquatone-gather命令需要用到Nightmare.js,所以需要安装npm、electron以及Nightmare。

1.1 安装Aquatone

gem install aquatone

直接安装Aquatone,安装完成后如下图所示:

图1

1.2 npm快速安装

从官网下载install.sh安装脚本

https://www.npmjs.com/install.sh

chmod +x install.sh添加执行权限

./install.sh执行安装程序

安装完成后使用npm -v命令查看是否安装成功

图2

1.2 安装electron

安装electron和nightmare首先需要进入aquatone安装目录,也就是

/var/lib/gems/2.5.0/gems/aquatone-0.5.0

(1)直接安装

使用命令

npm install electron

直接安装,缺点是连接国外服务器网络不稳定,下载了好几次都不能完整下载,这个会引发aquatone使用时提示兼容性问题,后面会详细介绍。

(2)使用淘宝镜像安装electron

可以通过以下命令从淘宝NPM安装

npm install -g electron –registry=https://registry.npm.taobao.org

也可以使用淘宝NPM开发的cnpm进行package的安装

//首先安装cnpm

npm install -g cnpm –registry=https://registry.npm.taobao.org

//使用cnpm进行安装,使用方法和npm相同

cnpm install -g electron

安装完成后如下图

图3

1.3安装nightmare

electron是nightmare的依赖环境,安装完electron后便开始安装nightmare,npm install –save nightmare –unsafe-perm=true –allow-root

全部安装完成后目录如下

图5

遇到问题:

在aquatone-discover以及aquatone-scan后,执行gather命令提示如下错误:

Incompatability Error: Nightmarejs must be run on a system with a graphical desktop session (X11)

这个错误根据国外大神分析是由于在Node.js Nightmare实例和Ruby之间进行通信时,Aquatone使用了一种错误的方法,导致输出被截断为512个字符,代码捕获所有错误并给出了不兼容的错误异常,原文在:

https://github.com/michenriksen/aquatone/issues/63

解决方案有两种

一是国外大神修改了原Aquatone代码nightmare通信方式,可以在该问题下看到:

https://github.com/michenriksen/aquatone/pull/94

修改后源代码下载地址

https://github.com/jolle/aquatone/tree/5fa327c525ee29ca71e8f6990b553c9081c6eac7

下载该源码后将原安装目录文件替换即可

左边为修复问题的代码,右边为存在问题代码,修复后使用Open3代替ChildProcess执行node命令

另外一种方式则是使用xvfb-run运行gather程序,原文如下:

https://gist.github.com/random-robbie/beae1991e9ad139c6168c385d8a31f7d

首先需要安装xvfb-run

apt-get install -y xvfb x11-xkb-utils xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic x11-apps clang libdbus-1-dev libgtk2.0-dev libnotify-dev libgconf2-dev libasound2-dev libcap-dev libcups2-dev libxtst-dev libxss1 libnss3-dev gcc-multilib g++-multilib

该作者提供了一个脚本可以直接执行扫描及收集等操作

wget “https://gist.githubusercontent.com/random-robbie/beae1991e9ad139c6168c385d8a31f7d/raw/aq.sh” -O /bin/aq && chmod 777 /bin/aq

执行aq + domain,等待程序执行完成即可

或者可以在执行gather命令时使用

DEBUG=nightmare xvfb-run -a aquatone-gather -d domain –threads 10

若仍提示Incompatability Error: Nightmarejs must be run on a system with a graphical desktop session (X11)错误

通过print获取错误信息

vim /var/lib/gems/2.5.0/gems/aquatone-0.5.0/lib/aquatone/browser/drivers/nightmare.rb

在27-28行之间添加如下命令

可以打印json信息

我这里就是由于网络原因导致electron安装不完整,出现此问题。