強大的子域搜集工具-OneForAll


項目介紹

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

在滲透測試中信息收集的重要性不言而喻,子域收集是信息收集中必不可少且非常重要的一環,目前網上也開源了許多子域收集的工具,但是總是存在以下部分問題:

  • 不夠強大,子域收集的接口不夠多,不能做到對批量子域自動收集,沒有自動子域解析,驗證,FUZZ以及信息拓展等功能。
  • 不夠友好,固然命令行模塊比較方便,但是當可選的參數很多,要實現的操作復雜,用命令行模式就有點不夠友好,如果有交互良好,高可操作的前端那么使用體驗就會好很多。
  • 缺少維護,很多工具幾年沒有更新過一次,issues和PR是啥,不存在的。
  • 效率問題,沒有利用多進程,多線程以及異步協程技術,速度較慢。

為了解決以上痛點,此項目應用而生,正如其名,我希望OneForAll是一款集百家之長,功能強大的全面快速子域收集終極神器🔨。

 

功能特性

  • 收集能力強大,詳細模塊請閱讀收集模塊說明
    1. 利用證書透明度收集子域(目前有6個模塊:censys_apicertspottercrtshentrustgooglespyse_api
    2. 常規檢查收集子域(目前有4個模塊:域傳送漏洞利用axfr,檢查跨域策略文件cdx,檢查HTTPS證書cert,檢查內容安全策略csp,檢查robots文件robots,檢查sitemap文件sitemap,利用NSEC記錄遍歷DNS域dnssec,后續會添加NSEC3記錄等模塊)
    3. 利用網上爬蟲檔案收集子域(目前有2個模塊:archivecrawlcommoncrawl,此模塊還在調試,該模塊還有待添加和完善)
    4. 利用DNS數據集收集子域(目前有23個模塊:binaryedge_apibufferovercebaiduchinazchinaz_apicircl_apidnsdb_apidnsdumpsterhackertargetip138ipv4info_apinetcraftpassivedns_apiptrarchiveqianxunrapiddnsriddlerrobtexsecuritytrails_apisitedossierthreatcrowdwzpcximcx
    5. 利用DNS查詢收集子域(目前有5個模塊:通過枚舉常見的SRV記錄並做查詢來收集子域srv,以及通過查詢域名的DNS記錄中的MX,NS,SOA,TXT記錄來收集子域)
    6. 利用威脅情報平台數據收集子域(目前有6個模塊:alienvaultriskiq_apithreatbook_apithreatminervirustotalvirustotal_api該模塊還有待添加和完善)
    7. 利用搜索引擎發現子域(目前有18個模塊:askbaidubingbing_apiduckduckgoexaleadfofa_apigiteegithubgithub_apigooglegoogle_apishodan_apisosogouyahooyandexzoomeye_api),在搜索模塊中除特殊搜索引擎,通用的搜索引擎都支持自動排除搜索,全量搜索,遞歸搜索。
  • 支持子域爆破,該模塊有常規的字典爆破,也有自定義的fuzz模式,支持批量爆破和遞歸爆破,自動判斷泛解析並處理。
  • 支持子域驗證,默認開啟子域驗證,自動解析子域DNS,自動請求子域獲取title和banner,並綜合判斷子域存活情況。
  • 支持子域接管,默認開啟子域接管風險檢查,支持子域自動接管(目前只有Github,有待完善),支持批量檢查。
  • 處理功能強大,發現的子域結果支持自動去除,自動DNS解析,HTTP請求探測,自動篩選出有效子域,拓展子域的Banner信息,最終支持的導出格式有rstcsvtsvjsonyamlhtmlxlsxlsxdbflatexods
  • 速度極快,收集模塊使用多線程調用,爆破模塊使用massdns,默認配置下速度最少能達到10000pps,子域驗證中DNS解析和HTTP請求使用異步多協程,多線程檢查子域接管風險。
  • 體驗良好,各模塊都有進度條,異步保存各模塊結果。

 

環境需求

Windows平台必須使用3.8.0以上版本

 

使用指南

 下載

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

 

安裝

你可以通過pip3安裝OneForAll的依賴,以下為Windows系統下使用pip3安裝依賴的示例:注意:如果你的Python3安裝在系統Program Files目錄下,如:C:\Program Files\Python38,那么請以管理員身份運行命令提示符cmd執行以下命令!

cd OneForAll/
python -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/
python oneforall.py --help

 

 

 

 

使用

python oneforall.py --target baidu.com run

 

查詢結果

baidu.com.csv是每個主域下的子域收集結果。

all_subdomain_result_1583034493.csv是每次運行OneForAll收集到子域的匯總結果,包含baidu.com.csv,方便在批量收集場景中獲取全部結果。

result.sqlite3是存放每次運行OneForAll收集到子域的SQLite3結果數據庫,其數據庫結構如下圖:

Database

其中類似baidu_com_origin_result表存放每個模塊最初子域收集結果。

其中類似baidu_com_resolve_result表存放對子域進行解析后的結果。

其中類似baidu_com_last_result表存放上一次子域收集結果(需要收集兩次以上才會生成)。

其中類似baidu_com_now_result表存放現在子域收集結果,一般情況關注這張表就可以了。

 

oneforall.py使用幫助

python oneforall.py --help
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 --target ./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 --format 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配置
        參數format可選格式有'rst', 'csv', 'tsv', 'json', 'yaml', 'html',
                          'jira', 'xls', 'xlsx', 'dbf', 'latex', 'ods'
        參數path默認None使用OneForAll結果目錄生成路徑

ARGUMENTS
    TARGET
        單個域名或者每行一個域名的文件路徑(必需參數)

FLAGS
    --brute=BRUTE
        使用爆破模塊(默認False)
    --dns=DNS
        DNS解析子域(默認True)
    --req=REQ
        HTTP請求子域(默認True)
    --port=PORT
        請求驗證子域的端口范圍(默認只探測80端口)
    --valid=VALID
        只導出存活的子域結果(默認False)
    --format=FORMAT
        結果保存格式(默認csv)
    --path=PATH
        結果保存路徑(默認None)
    --takeover=TAKEOVER
        檢查子域接管(默認False)

 


免責聲明!

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



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