美文网首页网络安全实验室
开源子域名挖掘工具Aquatone:介绍和使用

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

作者: Mayusuki | 来源:发表于2018-08-23 15:50 被阅读34次

功能


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

  • aquatone-discover:使用被动收集或字典爆破方式发现子域名
  • aquatone-scan:完成子域名扫描后,可扫描域名开放端口、HTTP header、HTML body、截图等信息并生成报告
  • aquatone-gather:对扫描结果中的IP进行访问请求和网页截图,搜集信息
  • 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)。

参数

  • --threads:查询线程,默认为5
  • --fallback-nameservers:手工设置备用查询域名服务器,后跟IP,多个IP用逗号分隔
$ aquatone-discover --domain example.com --fallback-nameservers 87.98.175.85,5.9.49.12

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

  • --sleep:DNS lookup间隔,单位为秒,但是使用此选项后线程数会被强制设为1
  • --jitter:sleep的变化阈值,单位为百分比,可以使sleep时间在一定范围内随机化。此参数只在sleep启用的情况下生效
$ 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

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

  • small: 80, 443
  • medium: 80, 443, 8000, 8080, 8443
  • large: 80, 81, 443, 591, 2082, 2095, 2096, 3000, 8000, 8001, 8008, 8080, 8083, 8443, 8834, 8888, 55672
  • huge: 80, 81, 300, 443, 591, 593, 832, 981, 1010, 1311, 2082, 2095, 2096, 2480, 3000, 3128, 3333, 4243, 4567, 4711, 4712, 4993, 5000, 5104, 5108, 5280, 5281, 5800, 6543, 7000, 7396, 7474, 8000, 8001, 8008, 8014, 8042, 8069, 8080, 8081, 8083, 8088, 8090, 8091, 8118, 8123, 8172, 8222, 8243, 8280, 8281, 8333, 8337, 8443, 8500, 8834, 8880, 8888, 8983, 9000, 9043, 9060, 9080, 9090, 9091, 9200, 9443, 9800, 9981, 11371, 12443, 16080, 18091, 18092, 20720, 55672

用法如下:

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

参数

和aquatone-discovery大同小异

  • --threads:扫描线程,默认为5
    以下两个参数可以帮助规避IDS之类的防御:
  • --sleep:DNS lookup间隔,单位为秒,但是使用此选项后线程数会被强制设为1
  • --jitter:sleep的变化阈值,单位为百分比,可以使sleep时间在一定范围内随机化。此参数只在sleep启用的情况下生效

扫描结果

扫描结果会保存在 ~/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大同小异

  • --threads:扫描线程,默认为5
    以下两个参数可以帮助规避IDS之类的防御:
  • --sleep:DNS lookup间隔,单位为秒,但是使用此选项后线程数会被强制设为1
  • --jitter:sleep的变化阈值,单位为百分比,可以使sleep时间在一定范围内随机化。此参数只在sleep启用的情况下生效

结果

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

  • headers/:包含每个网页HTTP Response Header的txt文件
  • html/:包含每个网页的HTML Body的txt文件
  • screenshots/: 每个网页的PNG格式截图
  • report/ 根据上述信息生成的HTML格式的简易报告

四、子域名劫持: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"
    }
  },
  ...
}

相关文章

网友评论

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

    本文链接:https://www.haomeiwen.com/subject/kbppuftx.html