网络安全实验室

开源子域名挖掘工具Aquatone:介绍和使用

2018-08-23  本文已影响34人  Mayusuki

功能


和无线渗透工具aircrack-ng类似,Aquatone按功能分为四个部分:aquatone-discover,aquatone-scan、aquatone-gather和aquatone-takeover,具体功能分别如下:

安装


$ git clone https://github.com/michenriksen/aquatone.git

在工具目录内exe文件夹下即可找到四大功能模块的可执行文件

依赖

Linux下运行,需要Node.js和NPM包管理器(主要为实现网页截屏功能,但该功能需要运行工具的系统本身有图形桌面环境),以及较高版本的Ruby(如Kali-Rolling自带的Ruby)
可以执行以下命令安装工具依赖:

$ gem install aquatone

另外,作者表示老子不对任何在Kali以外的系统上运行出现的问题负责o(╯□╰)o所以大家还是安心在Linux下使用吧......

使用


一、子域名扫描:aquatone-discover

基本命令格式如下:

$ aquatone-discover --domain example.com

工具会自动查询目标的域名服务器并执行DNS lookup。如果这些域名服务器上的lookup失败,工具会转而使用备用的Google公共DNS服务器进行查询(fall-back)。

参数

$ aquatone-discover --domain example.com --fallback-nameservers 87.98.175.85,5.9.49.12

以下两个参数可以帮助规避IDS之类的防御:

$ aquatone-discover --domain example.com --sleep 5 --jitter 30

API key

aquatone-discover在进行子域名挖掘时会用到一些被动收集器,其中如Riddler、PassiveTotal、VirusTotal这样的服务会要求提供API key方可使用。可以用类似如下指令录入API key:

$ aquatone-discover --set-key shodan o1hyw8pv59vSVjrZU3Qaz6ZQqgM91ihQ

所有的key都保存在以下路径: ~/aquatone/.keys.yml

结果

子域名挖掘过程结束后,工具会在 ~/aquatone/<域名> 文件夹下创建hosts.txt 文件,内容为发现的子域名及其对应IP:

example.com,93.184.216.34
www.example.com,93.184.216.34
secret.example.com,93.184.216.36
cdn.example.com,192.0.2.42
...

此外,工具还会同时生成以json格式保存了相同内容的hosts.json 文件,aquatone-scan和aquatone-gather可以直接使用这一文件。

二、端口扫描:aquatone-scan

命令基本格式与上面类似

$ aquatone-scan --domain example.com

--domain 选项会使工具自动寻找子域名挖掘过程中生成的hosts.json 文件。

端口指定

aquatone-scan默认扫描的端口为80、443、8000、8080。可以使用--ports参数手工指定:

$ aquatone-scan --domain example.com --ports 80,443,3000,8080

工具还设置了一些典型的端口组合供快捷使用:

用法如下:

$ aquatone-scan --domain example.com --ports large

参数

和aquatone-discovery大同小异

扫描结果

扫描结果会保存在 ~/aquatone/<域名>/urls.txt文件中,文件内容如下:

http://example.com/
https://example.com/
http://www.example.com/
https://www.example.com/
http://secret.example.com:8001/
https://secret.example.com:8443/
http://cdn.example.com/
https://cdn.example.com/
...

可以使用EyeWitness等工具加载查看

工具同时还会生成 open_ports.txt 文件,记录了IP和其对应开放的端口,用逗号分隔:

93.184.216.34,80,443
93.184.216.34,80
93.184.216.36,80,443,8443
192.0.2.42,80,8080
...

三、信息搜集:aquatone-gather

该工具能利用之前的扫描结果,获取各种网络服务对应的HTTP响应Header和HTML Body,以及直接对相应网页进行网页截图。网页截图使用 Nightmare.js Node.js库实现,如果系统中没有安装,该库会被自动安装。

$ aquatone-gather --domain example.com

类似aquatone-scan,aquatone-gather自动寻找对应域名的hosts.jsonopen_ports.txt文件,对每个域名的每个IP地址都会进行请求和截图,以保证全面覆盖。

参数

和aquatone-discovery大同小异

结果

aquatone-gather完成扫描之后,会在 ~/aquatone/<域名>/ 文件夹中创建以下文件夹,分别包含搜集到的不同信息文件:

四、子域名劫持:aquatone-takeover

当一家公司将一个子域名分配给第三方服务提供商,但在停用之后忘了移除DNS配置之时,攻击者可以通过注册相同的服务提供商并获取这一子域名所有权,从而形成劫持。aquatone-takeover可以在aquatone-discover扫描获得的域名列表中寻找可能存在子域名劫持风险的域名:

$ aquatone-takeover --domain example.com

aquatone-takeover能够检测25种不同服务提供商可能存在的子域名劫持,包括GitHub Pages, Heroku, Amazon S3, Desk和WPEngine。

结果

工具会在 ~/aquatone/<域名>/ 文件夹创建文件 takeovers.json,其中会有域名可能存在的子域名劫持风险描述:

{
  "shop.example.com": {
    "service": "Shopify",
    "service_website": "https://www.shopify.com/",
    "description": "Ecommerce platform",
    "resource": {
      "type": "CNAME",
      "value": "shops.myshopify.com"
    }
  },
  "help.example.com": {
    "service": "Desk",
    "service_website": "https://www.desk.com/",
    "description": "Customer service and helpdesk ticket software",
    "resource": {
      "type": "CNAME",
      "value": "example.desk.com"
    }
  },
  ...
}
上一篇下一篇

猜你喜欢

热点阅读