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
  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目錄生成相應結果:

圖片

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=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 收集能力強大、支持子域爆破、支持子域驗證、支持子域爬取、支持子域置換、支持子域接管、處理功能強大、速度極快、體驗良好,是一款集百家之長,功能強大的全面快速子域收集工具。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM