OneForAll:一款功能强大的子域名收集工具

admin 2023年1月7日14:25:55安全工具评论4 views3135字阅读10分27秒阅读模式

####################
免责声明:工具本身并无好坏,希望大家以遵守《网络安全法》相关法律为前提来使用该工具,支持研究学习,切勿用于非法犯罪活动,对于恶意使用该工具造成的损失,和本人及开发者无关。
####################

OneForAll 简介

渗透测试信息收集的重要性不言而喻,子域名收集是信息收集中必不可少且非常重要的一环,目前网上也开源了许多子域收集的工具,但是总是存在以下部分问题:

  • 不够强大,子域收集的接口不够多,不能做到对批量子域自动收集,没有自动子域解析,验证,FUZZ以及信息拓展等功能。

  • 不够友好,固然命令行模块比较方便,但是当可选的参数很多,要实现的操作复杂,用命令行模式就有点不够友好,如果有交互良好,高可操作的前端那么使用体验就会好很多。

  • 缺少维护,很多工具几年没有更新过一次,issues和PR是啥,不存在的。

  • 效率问题,没有利用多进程,多线程以及异步协程技术,速度较慢。

为了解决以上痛点,此项目应用而生,我希望OneForAll是一款集百家之长,功能强大的全面快速子域收集终极神器。



OneForAll:一款功能强大的子域名收集工具
OneForAll:子域收集工具



OneForAll 功能特性

  • 收集能力强大,详细模块请阅读收集模块说明。

    1. 利用证书透明度收集子域(目前有6个模块:censys_apicertdb_apicertspottercrtshentrustgoogle

    2. 常规检查收集子域(目前有4个模块:域传送漏洞利用axfr,检查跨域策略文件cdx,检查HTTPS证书cert,检查内容安全策略csp,后续会添加检查NSEC记录,NSEC记录等模块)

    3. 利用网上爬虫档案收集子域(目前有2个模块:archivecrawlcommoncrawl,此模块还在调试,该模块还有待添加和完善)

    4. 利用DNS数据集收集子域(目前有16个模块:binaryedge_apicircl_apihackertargetriddlerbufferoverdnsdbipv4inforobtexchinazdnsdb_apinetcraftsecuritytrails_apichinaz_apidnsdumpsterptrarchivesitedossier

    5. 利用DNS查询收集子域(目前有1个模块:通过枚举常见的SRV记录并做查询来收集子域srv,该模块还有待添加和完善)

    6. 利用威胁情报平台数据收集子域(目前有5个模块:riskiq_apithreatbook_apithreatminervirustotalvirustotal_api该模块还有待添加和完善)

    7. 利用搜索引擎发现子域(目前有15个模块:askbing_apifofa_apishodan_apiyahoobaiduduckduckgogooglesoyandexbingexaleadgoogle_apisogouzoomeye_api),在搜索模块中除特殊搜索引擎,通用的搜索引擎都支持自动排除搜索,全量搜索,递归搜索。

  • 处理功能强大,发现的子域结果支持自动去除,自动DNS解析,HTTP请求探测,自动移除无效子域,拓展子域的Banner信息,最终支持的导出格式有csvtsvjsonyamlhtmlxlsxlsxdbflatexods

  • 速度极速,收集模块使用多线程调用,爆破模块使用异步多进程多协程,DNS解析和HTTP请求使用异步多协程。

OneForAll 安装与使用

由于该项目处于开发中,会不断进行更新迭代,下载使用最好克隆最新项目。

安装要求:Python 3.6-3.7

安装步骤

    下载更新:git clone https://github.com/shmilylty/OneForAll.git    安装依赖        使用:pipenvpip3 install pipenv cd OneForAll/oneforall pipenv install python 3.7.4 pipenv run python oneforall.py --help        使用:pip3cd OneForAll/oneforall pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ python3 oneforall.py --help

如果在安装依赖过程中发现编译某个依赖库失败时可以参考编译失败解决方法,如果还没有解决欢迎加群反馈。

使用示例

python3 oneforall.py --target example.com run

使用帮助

命令行参数只提供了一些常用参数,更多详细的参数配置请见config.py,OneForAll命令行界面基于Fire实现。

  • oneforall.py:主程序入口

  • oneforall.py里有调用aiobrute.py和dbexport.py,为了方便进行子域爆破和数据库导出独立出了aiobrute.py和dbexport.py,这两个文件可以单独运行,并且所接受参数要更丰富一点。

oneforall.py使用帮助


pipenv run python oneforall.py --help

aiobrute.py使用帮助

关于泛解析问题处理程序首先会访问一个随机的子域判断是否泛解析,如果使用了泛解析则是通过以下判断处理:

  • 一是主要是与泛解析的IP集合和TTL值做对比。

  • 二是多次解析到同一IP集合次数(默认设置为10,可以在config.py设置大小)

  • 考虑爆破效率问题目前还没有加上HTTP响应体相似度对比和响应体内容判断 经过测试在16核心的CPU,使用16进程64协程,100M带宽的环境下,设置任务分割为50000,跑两百万字典大概10分钟左右跑完,大概3333个子域每秒。

pipenv run python aiobrute.py --help

dbexport.py使用帮助

pipenv run python dbexport.py --help

目录结构

D:.|+---.github+---docs|       collection_modules.md 收集模块说明+---images---oneforall    |   aiobrute.py   异步多进程多协程子域爆破模块,可以单独运行    |   collect.py    各个收集模块上层调用    |   config.py     配置文件    |   dbexport.py   数据库导出模块,可以单独运行    |   domains.txt   要批量爆破的域名列表    |   oneforall.py  OneForAll主入口,可以单独运行    |   __init__.py    |    +---common 公共调用模块    +---data   存放一些所需数据    |       next_subdomains.txt     下一层子域字典    |       public_suffix_list.dat  顶级域名后缀     |       srv_names.json          常见SRV记录前缀名    |       subdomains.txt          子域爆破常见字典    |    ---modules         +---certificates     利用证书透明度收集子域模块        +---check            常规检查收集子域模块        +---crawl            利用网上爬虫档案收集子域模块        +---datasets         利用DNS数据集收集子域模块        +---dnsquery         利用DNS查询收集子域模块        +---intelligence     利用威胁情报平台数据收集子域模块        ---search           利用搜索引擎发现子域模块

项目地址:https://github.com/shmilylty/OneForAll


原文始发于微信公众号(菜鸟小新):OneForAll:一款功能强大的子域名收集工具

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月7日14:25:55
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  OneForAll:一款功能强大的子域名收集工具 http://cn-sec.com/archives/1498607.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: