• 一款强大的子域名收集工具(OneForAll)


    一款强大的子域名收集工具(OneForAll)

    大家都知道在渗透测试的信息收集过程中,子域名收集非常重要,我自己平时也都是直接用在线收集工具来扫的,或使用谷歌或进行子域名爆破来收集,效率都不是很高。

    刚好前几天看到了米斯特安全团队发布的开源项目OneForAll,作用是用来收集和爆破子域名的,尝试安装使用了一下,接口和模块很多很全面,扫描效率也很高,结果令人满意。非常感谢米斯特安全团队开发这么好的工具。接下来就给大家介绍并演示一下OneForAll这款工具。

    安装OneForAll的话需要python3.7环境,原作者说理论上3.6和3.8版本也可以,但是基于是在3.7上开发的,所以也还是推荐大家使用python3.7,而使用3.6和3.8版本的可以自行尝试。

    安装步骤

    1. 下载该项目已经在码云(Gitee)镜像了一份,国内推荐使用码云进行克隆比较快: git clone https://gitee.com/shmilylty/OneForAll.git
      或者:
      git clone https://github.com/shmilylty/OneForAll.git
      如果你是没有安装git的windows系统,就直接访问目录下载到本地找一个目录放就可以。
      在这里插入图片描述
      在这里插入图片描述
      安装 cd OneForAll/

    python -m pip install --user -U pip setuptools wheel -i https://mirrors.aliyun.com/pypi/simple/

    pip3 install --user -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

    在这里插入图片描述
    cd oneforall
    python oneforall.py --help

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    这样我们这款工具我们就安装好了。
    使用也很简单,收集和爆破都是一条命令运行脚本就可以了。python oneforall.py --target example.com run 收集
    python brute.py --target example.com run 爆破
    在这里插入图片描述
    在这里插入图片描述

    功能特性

    1. 收集能力强大,详细模块请阅读收集模块说明。
      利用证书透明度收集子域(目前有6个模块:censys_api,certdb_api,certspotter,crtsh,entrust,google)
    2. 常规检查收集子域(目前有4个模块:域传送漏洞利用axfr,检查跨域策略文件cdx,检查HTTPS证书cert,检查内容安全策略csp,检查robots文件robots,检查sitemap文件sitemap,后续会添加检查NSEC记录,NSEC3记录等模块)
    3. 利用网上爬虫档案收集子域(目前有2个模块:archivecrawl,commoncrawl,此模块还在调试,该模块还有待添加和完善)
    4. 利用DNS数据集收集子域(目前有16个模块:binaryedge_api, circl_api, hackertarget, riddler, bufferover, dnsdb, ipv4info, robtex, chinaz, dnsdb_api, netcraft, securitytrails_api, chinaz_api, dnsdumpster, ptrarchive, sitedossier)
    5. 利用DNS查询收集子域(目前有1个模块:通过枚举常见的SRV记录并做查询来收集子域srv,该模块还有待添加和完善)
    6. 利用威胁情报平台数据收集子域(目前有5个模块:riskiq_api,threatbook_api,threatminer,virustotal,virustotal_api该模块还有待添加和完善)
    7. 利用搜索引擎发现子域(目前有15个模块:ask, bing_api, fofa_api, shodan_api, yahoo, baidu, duckduckgo, google, so, yandex, bing, exalead, google_api, sogou, zoomeye_api),在搜索模块中除特殊搜索引擎,通用的搜索引擎都支持自动排除搜索,全量搜索,递归搜索。
    8. 处理功能强大,发现的子域结果支持自动去除,自动DNS解析,HTTP请求探测,自动移除无效子域,拓展子域的Banner信息,最终支持的导出格式有csv, tsv, json, yaml, html, xls, xlsx, dbf, latex, ods。
    9. 速度极速,收集模块使用多线程调用,爆破模块使用异步多进程多协程,DNS解析和HTTP请求使用异步多协程。

    oneforall.py使用帮助

    python oneforall.py --help

    1、oneforall.py

    NAME
    oneforall.py - OneForAll是一款功能强大的子域收集工具

    SYNOPSIS
    oneforall.py --target=TARGET

    DESCRIPTION
    Version: 0.0.4
    Project: https://git.io/fjHT1

    Example:
        python3 oneforall.py --target Example Domain run
        python3 oneforall.py --target ./domains.txt run
        python3 oneforall.py --target example.com --brute True run
        python3 oneforall.py --target Example Domain --verify False run
        python3 oneforall.py --target Example Domain --valid None run
        python3 oneforall.py --target example.com --port medium run
        python3 oneforall.py --target example.com --format csv run
        python3 oneforall.py --target example.com --show True run
    
    Note:
        参数valid可选值1,0,None分别表示导出有效,无效,全部子域
        参数verify为True会尝试解析和请求子域并根据结果给子域有效性打上标签
        参数port可选值有'small', 'medium', 'large', 'xlarge',详见config.py配置
        参数format可选格式有'txt', 'rst', 'csv', 'tsv', 'json', 'yaml', 'html',
                            'jira', 'xls', 'xlsx', 'dbf', 'latex', 'ods'
        参数path为None会根据format参数和域名名称在项目结果目录生成相应文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    ARGUMENTS
    TARGET
    单个域名或者每行一个域名的文件路径(必需参数)

    FLAGS
    –brute=BRUTE
    使用爆破模块(默认False)
    –verify=VERIFY
    验证子域有效性(默认True)
    –port=PORT
    请求验证的端口范围(默认medium)
    –valid=VALID
    导出子域的有效性(默认1)
    –path=PATH
    导出路径(默认None)
    –format=FORMAT
    导出格式(默认xlsx)
    –show=SHOW
    终端显示导出数据(默认False)

    2、brute.py

    NAME
    brute.py - OneForAll多进程多协程异步子域爆破模块

    SYNOPSIS
    brute.py --target=TARGET

    DESCRIPTION
    Example:
    python3 brute.py --target example.com run
    python3 brute.py --target ./domains.txt run
    python3 brute.py --target example.com --process 4 --coroutine 64 run
    python3 brute.py --target example.com --wordlist subdomains.txt run
    python3 brute.py --target example.com --recursive True --depth 2 run
    python3 brute.py --target m.{fuzz}.a.bz --fuzz True --rule [a-z] run

     Note:
         参数segment的设置受CPU性能,网络带宽,运营商限制等问题影响,默认设置500个子域为任务组,
         当你觉得你的环境不受以上因素影响,当前爆破速度较慢,那么强烈建议根据字典大小调整大小:
         十万字典建议设置为5000,百万字典设置为50000
         参数valid可选值1,0,None,分别表示导出有效,无效,全部子域
         参数format可选格式:'csv', 'tsv', 'json', 'yaml', 'html', 'xls', 'xlsx',
                           'dbf', 'latex', 'ods'
         参数path为None会根据format参数和域名名称在项目结果目录生成相应文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    ARGUMENTS
    TARGET
    单个域名或者每行一个域名的文件路径

    FLAGS
    –process=PROCESS
    爆破的进程数(默认CPU核心数)
    –coroutine=COROUTINE
    每个爆破进程下的协程数(默认64)
    –wordlist=WORDLIST
    指定爆破所使用的字典路径(默认使用config.py配置)
    –segment=SEGMENT
    爆破任务分割(默认500)
    –recursive=RECURSIVE
    是否使用递归爆破(默认False)
    –depth=DEPTH
    递归爆破的深度(默认2)
    –namelist=NAMELIST
    指定递归爆破所使用的字典路径(默认使用config.py配置)
    –fuzz=FUZZ
    是否使用fuzz模式进行爆破(默认False,开启须指定fuzz正则规则)
    –rule=RULE
    fuzz模式使用的正则规则(默认使用config.py配置)
    –export=EXPORT
    是否导出爆破结果(默认True)
    –valid=VALID
    导出子域的有效性(默认None)
    –format=FORMAT
    导出格式(默认xlsx)
    –path=PATH
    导出路径(默认None)
    –show=SHOW
    终端显示导出数据(默认False)

    3、takeover.py

    NAME
    takeover.py - OneForAll多线程子域接管风险检查模块

    SYNOPSIS
    takeover.py COMMAND | --target=TARGET

    DESCRIPTION
    Example:
    python3 takeover.py --target www.example.com --format csv run
    python3 takeover.py --target ./subdomains.txt --thread 10 run

      Note:
          参数format可选格式有'txt', 'rst', 'csv', 'tsv', 'json', 'yaml', 'html',
                            'jira', 'xls', 'xlsx', 'dbf', 'latex', 'ods'
          参数dpath为None默认使用OneForAll结果目录
    
    • 1
    • 2
    • 3
    • 4

    ARGUMENTS
    TARGET
    单个子域或者每行一个子域的文件路径(必需参数)

    FLAGS
    –thread=THREAD
    线程数(默认100)
    –dpath=DPATH
    导出目录(默认None)
    –format=FORMAT
    导出格式(默认xls)

    4、dbexport.py:
    NAME
    dbexport.py - OneForAll数据库导出模块

    SYNOPSIS
    dbexport.py TABLE

    DESCRIPTION
    Example:
    python3 dbexport.py --table name --format csv --path= ./result.csv
    python3 dbexport.py --db result.db --table name --show False

     Note:
         参数port可选值有'small', 'medium', 'large', 'xlarge',详见config.py配置
         参数format可选格式有'csv', 'tsv', 'json', 'yaml', 'html', 'xls', 'xlsx',
                           'dbf', 'latex', 'ods'
         参数path为None会根据format参数和域名名称在项目结果目录生成相应文件
    
    • 1
    • 2
    • 3
    • 4
    • 5

    POSITIONAL ARGUMENTS
    TABLE
    要导出的表

    FLAGS
    –db=DB
    要导出的数据库路径(默认为results/result.sqlite3)
    –valid=VALID
    导出子域的有效性(默认None)
    –path=PATH
    导出路径(默认None)
    –format=FORMAT
    导出格式(默认xlsx)
    –show=SHOW
    终端显示导出数据(默认False)

  • 相关阅读:
    DAZ To UMA⭐三.导入Blender的配置, 及Blender快捷键
    烟台专利的类型个人申请专利有哪些好处?
    口袋参谋:一键下载任意买家秀图片、视频,是怎么做到的!
    JavaScript-命令模式
    SpringCloud-5.服务配置(SpringCloud Config)
    工业以太网RFID设备有哪些部分组成?
    如何使用Git和GitHub进行版本控制
    Servlet入门
    ES6新特性:变量的解构赋值
    2.28 OrCAD中怎么对元器件管脚属性进行统一更改?
  • 原文地址:https://blog.csdn.net/lza20001103/article/details/126317205