网站首页 > 教程文章 正文
在渗透测试中信息收集的重要性不言而喻,子域收集是信息收集中必不可少且非常重要的一环,目前网上也开源了许多子域收集的工具,但是总是存在以下部分问题:
- 不够强大,子域收集的接口不够多,不能做到对批量子域自动收集,没有自动子域解析,验证,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 版)
- 下载
由于该项目处于开发中,会不断进行更新迭代,下载时请使用git clone克隆最新代码仓库,国内推荐使用码云进行克隆比较快:
git clone https://gitee.com/shmilylty/OneForAll.git
或者:
git clone https://github.com/shmilylty/OneForAll.git
- 安装
通过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
- 更新
执行以下命令更新项目(可保存对/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 收集能力强大、支持子域爆破、支持子域验证、支持子域爬取、支持子域置换、支持子域接管、处理功能强大、速度极快、体验良好,是一款集百家之长,功能强大的全面快速子域收集工具。
猜你喜欢
- 2024-12-31 站长在线:宝塔面板出现漏洞,站长如何做才能让网站更加安全?
- 2024-12-31 干货|常见端口渗透总结
- 2024-12-31 第1篇:FTP暴力破解
- 2024-12-31 初涉内网,提权那些事
- 2024-12-31 一款开源内网扫描工具,提供了一键自动化全方位的漏洞扫描
- 2024-12-31 一款全面且强大可平替xray的扫描器,支持被动主动扫描-漏洞探测
- 2024-12-31 腾讯安全预警:KoiMiner木马再活跃 控制者或来自黑客论坛
- 2024-12-31 基于Python的渗透测试信息收集系统的设计和实现
- 2024-12-31 SQL 爆破攻击近期多见,中招系统遭遇流氓软件推装
- 2024-12-31 黑客攻下一台服务器,总共分几步
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- md5 sha1 (32)
- mybatis plus page (35)
- semaphore 使用详解 (32)
- update from 语句 (32)
- vue @scroll (38)
- 堆栈区别 (33)
- 在线子域名爆破 (32)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)