百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

OneForAll - 功能强大的子域收集工具

wptr33 2025-07-07 23:38 3 浏览

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

  • 不够强大,子域收集的接口不够多,不能做到对批量子域自动收集,没有自动子域解析,验证,FUZZ以及信息拓展等功能。
  • 不够友好,固然命令行模块比较方便,但是当可选的参数很多,要实现的操作复杂,用命令行模式就有点不够友好,如果有交互良好,高可操作的前端那么使用体验就会好很多。
  • 缺少维护,很多工具几年没有更新过一次,issues和PR是啥,不存在的。
  • 效率问题,没有利用多进程,多线程以及异步协程技术,速度较慢。


简介

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
  1. 安装

通过pip3安装OneForAll的依赖

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


  1. 更新

执行以下命令更新项目(可保存对/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目录生成相应结果:

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


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

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

其中类似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=BRUTE
        s
    --dns=DNS
        DNS解析子域(默认True)
    --req=REQ
        HTTP请求子域(默认True)
    --port=PORT
        请求验证子域的端口范围(默认只探测80端口)
    --valid=VALID
        只导出存活的子域结果(默认False)
    --fmt=FMT
        结果保存格式(默认csv)
    --path=PATH
        结果保存路径(默认None)
    --takeover=TAKEOVER
        检查子域接管(默认False)


总结

OneForAll 收集能力强大、支持子域爆破、支持子域验证、支持子域爬取、支持子域置换、支持子域接管、处理功能强大、速度极快、体验良好,是一款集百家之长,功能强大的全面快速子域收集工具。


相关推荐

抢先体验Windows 10 20H2新功能,该怎样操作呢?

Win10系统通常会在一年当中进行两次重大更新,分别于上下半年分别推出。上半年的更新主要针对功能的变化,而下半年则是提升系统稳定性。最近Win10下半年最重要的更新Windows1020H2已经开...

教程:如何关闭Win10/Win8.1/Win7管理共享

教程:如何关闭Win10/Win8.1/Win7管理共享出处:IT之家原创(晨风)默认情况下,Windows会创建一些隐藏的共享文件夹,这些文件夹在名称的末尾都有美元“$”标志。当用户在文件资源管理...

Win11学院:如何强制让Windows 11设备蓝屏

IT之家12月15日消息,在Win11系统中蓝屏(BSoD)也称为“停止错误”(StopError)和“错误检查”(BugCheck),通常情况下只有在遇到关键问题的时候才会出现。显然...

微软承认Windows 10新BUG:错误显示没有网络连接

来源:cnBeta.COM在7月补丁星期二活动中,微软发布的累积更新已经修复Windows10系统中的大量BUG。不过近日,微软承认了存在于Windows10May2020(20H...

一课译词:双标(双标英文怎么写)

PhotobyMarkusSpiskeonUnsplash“双标[shuāngbiāo]”,网络流行语,完整说法是“双重标准”,翻译为“doublestandard”。“双标”是指“对同...

知识科普:USB端口如何禁用和解锁?

2015-07-3005:32:00作者:赵为民经常有人会说,我要保护我的笔记本电脑的USB端口,在未经授权的情况下不能够访问。是否有专业的软件可以将USB端口锁死,然后在需要的时候解锁呢?是的,...

小迈科技 X Hologres:高可用的百亿级广告实时数仓建设

通过本文,我们将会介绍小迈科技如何通过Hologres搭建高可用的实时数仓。一、业务介绍...

Modbus-RTU通信(modbus rtu rtu over tcp)

通常情况下我们做Modbus通信的时候,都会先用测试软件进行测试,等通信测试通过之后,我们才会进行移植,我这边主要讲的是移植到PLC上,我现在这边还没有开始做PLC程序,那先把前期的用测试软件如何测...

警惕!利用Github进行水坑攻击安全风险通告

2022年5月19日,亚信安全CERT监测发现Github账户为rkxxz的用户发布了CVE-2022-26809和CVE-2022-24500的项目,项目内容介绍为:CVE-2022-26809...

手机越用越慢?小编教你如何用黑狱冰箱调教它!

看完智趣狗昨天推送的《看完秒懂!这就是Android手机越用越卡的原因!》一文后,我们不难知晓手机越用越慢多是体量更大的APP,以及APP之间相互唤醒而导致资源过度消耗引起的。所以,想让手机恢复高效率...

秒杀系统—3.第二版升级优化的技术文档一

大纲1.秒杀系统的服务细分和服务定位...

Redis命令介绍(二十五)HSET &amp; HSETNX

HSET将上送的键值对保存在key中存储的哈希表中。如果key不存在则创建一个新的哈希表。如果key已存在,则覆盖。在4.0版本后,HSET支持同时上送多键值对。...

IDEA用上这十大插件就很舒服(intellij idea插件推荐)

本文翻译自国外论坛medium,原文地址:https://medium.com/@xjpp22/top-10-plugins-for-intellij-idea-you-dont-want-to-m...

常用 Git 命令清单(git常用命令速查表)
常用 Git 命令清单(git常用命令速查表)

下面是整理的常用Git命令清单。几个专用名词的译名如下。...

2025-07-07 23:38 wptr33

GitHub|清晰理解本地目录、暂存区、本地仓库、远程仓库的交互

GitHub是一个在线平台,旨在促进在一个共同项目上工作的个人之间的代码托管、版本控制和协作。通过该平台,无论何时何地,都可以对项目进行操作(托管和审查代码,管理项目和与世界各地的其他开发者共同开发...