OneForAll - 功能强大的子域收集工具-程序员宅基地

技术标签: 网络安全  

OneForAll,是 shmilylty 在 Github 上开源的子域收集工具,目前版本为 v0.4.3。

  • 收集能力强大,利用证书透明度收集子域、常规检查收集子域、利用网上爬虫档案收集子域、利用DNS数据集收集子域、利用DNS查询收集子域、利用威胁情报平台数据收集子域、利用搜索引擎发现子域,在搜索模块中除特殊搜索引擎,通用的搜索引擎都支持自动排除搜索,全量搜索,递归搜索。

  • 支持子域爆破,该模块有常规的字典爆破,也有自定义的fuzz模式,支持批量爆破和递归爆破,自动判断泛解析并处理。

  • 支持子域验证,默认开启子域验证,自动解析子域DNS,自动请求子域获取title和banner,并综合判断子域存活情况。

  • 支持子域爬取,根据已有的子域,请求子域响应体以及响应体里的JS,从中再次发现新的子域。

  • 支持子域置换,根据已有的子域,使用子域替换技术再次发现新的子域。

  • 支持子域接管,默认开启子域接管风险检查,支持子域自动接管(目前只有Github,有待完善),支持批量检查。

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

  • 速度极快,收集模块使用多线程调用,爆破模块使用massdns,DNS解析速度每秒可解析350000以上个域名,子域验证中DNS解析和HTTP请求使用异步多协程,多线程检查子域接管风险。

使用

OneForAll基于Python 3.6.0开发和测试,OneForAll需要高于Python 3.6.0的版本才能运行。安装Python环境可以参考Python 3 安装指南。运行以下命令检查Python和pip3版本:

python -V
pip3 -V

如果你看到类似以下的输出便说明Python环境没有问题:

Python 3.6.0
pip 19.2.2 from C:\Users\shmilylty\AppData\Roaming\Python\Python36\site-packages\pip (python 3.6)

安装步骤(git 版)

  1. 下载

    由于该项目处于开发中,会不断进行更新迭代,下载时请使用git clone克隆最新代码仓库,国内推荐使用码云进行克隆比较快:

    git clone https://gitee.com/shmilylty/OneForAll.git

     或者

    git clone https://github.com/shmilylty/OneForAll.git
  2. .安装

    cd OneForAll/
    python3 -m pip install -U pip setuptools wheel -i https://mirrors.aliyun.com/pypi/simple/
    
    pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
    
    python3 oneforall.py --help
  3. 更新

执行以下命令更新项目(可保存对/config/setting.py和/config/api.py的修改):

git stash        # 暂存本地的修改

git fetch --all  # 拉取项目更新

git pull         # 下载覆盖

git stash pop    # 释放本地修改

安装步骤(docker 版)

首先下载并编辑配置文件,添加自己的api和个性化设置,并保留原始文件结构

config
├── api.py
├── log.py
└── setting.py

拉取镜像并执行,其中~/.config替换为你自己配置文件所在文件夹的路径

docker pull shmilylty/oneforall

docker run -it --rm -v ~/results:/OneForAll/results -v ~/.config:/OneForAll/config 

oneforall --target example.com run

参数直接加在指令末尾,结果会输出在本地目录~/results,如需保存到其他位置,可以自行修改。

使用演示

如果你是通过pip3安装的依赖则使用以下命令运行示例:

python3 oneforall.py --target example.com run

python3 oneforall.py --targets ./example.txt run

我们以python3 oneforall.py --target example.com run命令为例,OneForAll在默认参数正常执行完毕会在results目录生成相应结果:

oneforall

example.com.csv是每个主域下的子域收集结果。


all_subdomain_result_1583034493.csv是每次运行OneForAll收集到子域的汇总结果,包含example.com.csv,方便在批量收集场景中获取全部结果。

result.sqlite3是存放每次运行OneForAll收集到子域的SQLite3结果数据库,其数据库结构如下图:

 

OneForAll

其中类似example_com_origin_result表存放每个模块最初子域收集结果。

其中类似
example_com_resolve_result表存放对子域进行解析后的结果。

其中类似example_com_last_result表存放上一次子域收集结果(需要收集两次以上才会生成)。

其中类似example_com_now_result表存放现在子域收集结果,一般情况关注这张表就可以了。

OneForAll 作为一个命令行工具,它的所有参数如下:

NAME
    oneforall.py - OneForAll帮助信息

SYNOPSIS
    oneforall.py COMMAND | --target=TARGET <flags>

DESCRIPTION
    OneForAll是一款功能强大的子域收集工具

    Example:
        python3 oneforall.py version
        python3 oneforall.py --target example.com run
        python3 oneforall.py --targets ./domains.txt run
        python3 oneforall.py --target example.com --valid None run
        python3 oneforall.py --target example.com --brute True run
        python3 oneforall.py --target example.com --port small run
        python3 oneforall.py --target example.com --fmt csv run
        python3 oneforall.py --target example.com --dns False run
        python3 oneforall.py --target example.com --req False run
        python3 oneforall.py --target example.com --takeover False run
        python3 oneforall.py --target example.com --show True run

    Note:
        参数alive可选值True,False分别表示导出存活,全部子域结果
        参数port可选值有'default', 'small', 'large', 详见config.py配置
        参数fmt可选格式有 'csv','json'
        参数path默认None使用OneForAll结果目录生成路径

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

FLAGS
    --brute=BRUTEs
    --dns=DNS
        DNS解析子域(默认True)
    --req=REQ
        HTTP请求子域(默认True)
    --port=PORT
        请求验证子域的端口范围(默认只探测80端口)
    --valid=VALID
        只导出存活的子域结果(默认False)
    --fmt=FMT
        结果保存格式(默认csv)
    --path=PATH
        结果保存路径(默认None)
    --takeover=TAKEOVER
        检查子域接管(默认False)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_66945507/article/details/124649998

智能推荐

核电站问题he题解_分析化学核电站问问题-程序员宅基地

文章浏览阅读2.5k次。核电站问题「he」题解超短程序c++_分析化学核电站问问题

Spring普通类或Utils工具类调用service层,mapper层_utils 调用service-程序员宅基地

文章浏览阅读516次。//第一步@Componentpublic class Utills{//第二步 @Autowired private RegisterRpcService registerRpcService;//第三步 public static RegisterRpcService tRegisterRpcService; @PostConstruct public void init(){ tRegisterRpcService = regi..._utils 调用service

udp,ftp,smb,socket传输速度对比_smb速度和tcp速度-程序员宅基地

文章浏览阅读1.2w次,点赞3次,收藏3次。udp: 传输速度最快,但是不保证传输质量ftp: 比smb,http要快,但是对于1M以下的图片 http要快smb: 大一些的图片比http要快socket:是一种连接协议,不负责传数据,需要用socket搭建成tcp才可以传ftp,sftp:都是用tcp实现的终极传输,史上最快:多线上传,压缩上传,压缩+多线上传上述传输的极限都是带宽大小,多线上传这个不知道..._smb速度和tcp速度

相关-28. pytorch中register_parameter()和parameter()_pytorch .register_para-程序员宅基地

文章浏览阅读2k次。文章目录1. Parameter()2. register_parameter()3. 二者的区别1. Parameter()先看一下官方文档的定义和说明,点击这里torch.nn.parameter.Parameter(data=None, requires_grad=True)"""Parameter定义的变量,其实也是一种Tensor,但是其会被作为模型的参数(特殊的张量)Parameters是Tensor的子类,当和Module类一起使用时,会有一个特殊的属性 即:当被指派为模型的_pytorch .register_para

scipy.sparse.dia_matrix 中的 offsets 含义_dia.matric中offsets-程序员宅基地

文章浏览阅读1.2k次,点赞3次,收藏3次。https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.dia_matrix.html dia_matrix((data, offsets), shape=(M, N)) where the data[k,:] stores the diagonal entries for diagonal offsets[k] (See example below)这个真实太难懂了。。只好搞个例子。。。data = np.array([[1_dia.matric中offsets

Java语言有哪些特点?_java语言有什么特点-程序员宅基地

文章浏览阅读8.1k次,点赞3次,收藏7次。Sun公司对Java的定义:Java是一种具有“简单、面向对象、分布式、解释型、健壮、安全、与体系结构无关、可移植、高性能、多线程和动态执行”等特点的语言。_java语言有什么特点

随便推点

delete called on non-final ‘xxx‘ that has virtual functions but non-virtual destructor-程序员宅基地

文章浏览阅读3.7k次。Qt中遇到如下警告warning: delete called on non-final 'xxx' that has virtual functions but non-virtual destructor因为类中有纯虚函数。 只要纯虚函数, 就必须要虚析构函数。所以解决办法就是在原类中定义虚析构函数。..._has virtual functions but non-virtual destructor

excel培训机构_中金中国企业跨境并购流程、重点问题和交易架构设计(内部培训)42页...-程序员宅基地

文章浏览阅读449次。今天,资本库新增最新资料▼中金-跨境并购流程管理和交易架构设计下载IPO、并购重组最新内部文件扫描下方二维码下载审计、法律、投行、评估最新资料资本数据库原价449元扫描闫总微信二维码今天加入资本库,优惠价格298元并购圈隆重推出资本市场精选资料数据库,聚焦最新、最优资本市场政策解读资料,投资尽调资料,财务审计、资产评估、法律、保代培训资料,会计师事务所工作底稿、资产评估机构工作底稿......_跨境并购中的法律尽调 培训

LiveData的基本使用_livedata的用法-程序员宅基地

文章浏览阅读821次,点赞2次,收藏3次。我们在《ViewModel的基本使用》这篇文章中提到了,ViewModel的主要作用是存放页面所需要的各种数据,而当这些数据发生变化时,我们采用接口的方式实现对页面的通知。这样做是可行的,但如果要观察的数据很多,则需要定义大量的接口,代码显得冗余。为此,Android为我们提供了LiveData组件,帮助我们完成ViewModel与页面组件之间的通信。所以,LiveData通常是被放在ViewModel中使用。LiveData是一个可被观察的数据容器类。什么意思呢?我们可以将LiveData理解为一_livedata的用法

【matplotlib】python让scatter能够使不同类别的点有不同的颜色、大小和形状_py scatter 多色彩-程序员宅基地

文章浏览阅读9k次,点赞8次,收藏13次。尊重原创python让scatter能够使不同类别的点有不同的颜色、大小和形状 python自带的scatter函数参数中颜色和大小可以输入列表进行控制,即可以让不同的点有不同的颜色和大小,但是只能是同一种形状。例如例一:import numpy as npimport matplotlib.pyplot as pltdef plotMatrixPoint(Mat, Label):..._py scatter 多色彩

苹果产品机型对照_苹果型号号码对照表-程序员宅基地

文章浏览阅读4k次。iPhone机型对照:iPhone代号 iPhone机型 iPhone3,1 iPhone 4 iPhone3,2 iPhone 4 iPhone3,3 iPhone 4 iPhone4,1 iPhone 4s iPhone5,1 iPhone 5 iPhone5,2 iPhone 5 iPhone5,3 iPhone..._苹果型号号码对照表

Notepad++安装NppFTP插件连接远程Linux系统-程序员宅基地

文章浏览阅读423次。最近学习中使用到了centos,对vi编辑器使用很不熟练,通过搜索发现使用Notepad++的NppFTP插件,可以实现远程连接linux系统,方便对任何文本文件进行编辑,安装过程如下:1.打开Notepad++点击插件:2.搜索NppFTP,选中后点击安装:3.等待下载,安装:4.安装成功后,重启Notepad++,可以看到成功安装了NppFTP插件,点击Show NppFTP W...