美文网首页网络安全实验室
开源子域名挖掘工具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