01工具介紹 (下載地址見最後)
在hw等攻防演練中,資訊收集做為演練廚師階段最重要的步驟,方式方法尤為重要,好的工具達到事半功倍的效果。OneForAll是一款集百家之長,功能強大的全面快速子域收集終極神器。
解決以下痛點:
在滲透測試中資訊收集的重要性不言而喻,子域收集是資訊收集中必不可少且非常重要的一環,目前網上也開源了許多子域收集的工具,但是總是存在以下部分問題:
-
不夠強大,子域收集的介面不夠多,不能做到對批次子域自動收集,沒有自動子域解析,驗證,FUZZ以及資訊擴充等功能。
-
不夠友好,固然命令列模組比較方便,但是當可選的引數很多,要實現的操作複雜,用命令列模式就有點不夠友好,如果有互動良好,高可操作的前端那麼使用體驗就會好很多。
-
缺少維護,很多工具幾年沒有更新過一次,issues和PR是啥,不存在的。
-
效率問題,沒有利用多程序,多執行緒以及非同步協程技術,速度較慢。
02 功能特性
-
收集能力強大,詳細模組請閱讀收集模組說明。
-
利用證書透明度收集子域(目前有6個模組:
censys_api
,certspotter
,crtsh
,entrust
,google
,spyse_api
) -
常規檢查收集子域(目前有4個模組:域傳送漏洞利用
axfr
,檢查跨域策略檔案cdx
,檢查HTTPS證書cert
,檢查內容安全策略csp
,檢查robots檔案robots
,檢查sitemap檔案sitemap
,利用NSEC記錄遍歷DNS域dnssec
,後續會新增NSEC3記錄等模組) -
利用網上爬蟲檔案收集子域(目前有2個模組:
archivecrawl
,commoncrawl
,此模組還在除錯,該模組還有待新增和完善) -
利用DNS資料集收集子域(目前有24個模組:
bevigil_api
,binaryedge_api
,bufferover
,cebaidu
,chinaz
,chinaz_api
,circl_api
,cloudflare
,dnsdb_api
,dnsdumpster
,hackertarget
,ip138
,ipv4info_api
,netcraft
,passivedns_api
,ptrarchive
,qianxun
,rapiddns
,riddler
,robtex
,securitytrails_api
,sitedossier
,threatcrowd
,wzpc
,ximcx
) -
利用DNS查詢收集子域(目前有5個模組:透過列舉常見的SRV記錄並做查詢來收集子域
srv
,以及透過查詢域名的DNS記錄中的MX,NS,SOA,TXT記錄來收集子域) -
利用威脅情報平臺資料收集子域(目前有6個模組:
alienvault
,riskiq_api
,threatbook_api
,threatminer
,virustotal
,virustotal_api
該模組還有待新增和完善) -
利用搜尋引擎發現子域(目前有18個模組:
ask
,baidu
,bing
,bing_api
,duckduckgo
,exalead
,fofa_api
,gitee
,github
,github_api
,google
,google_api
,shodan_api
,so
,sogou
,yahoo
,yandex
,zoomeye_api
),在搜尋模組中除特殊搜尋引擎,通用的搜尋引擎都支援自動排除搜尋,全量搜尋,遞迴搜尋。 -
支援子域爆破,該模組有常規的字典爆破,也有自定義的fuzz模式,支援批次爆破和遞迴爆破,自動判斷泛解析並處理。
-
支援子域驗證,預設開啟子域驗證,自動解析子域DNS,自動請求子域獲取title和banner,並綜合判斷子域存活情況。
-
支援子域爬取,根據已有的子域,請求子域響應體以及響應體裡的JS,從中再次發現新的子域。
-
支援子域置換,根據已有的子域,使用子域替換技術再次發現新的子域。
-
支援子域接管,預設開啟子域接管風險檢查,支援子域自動接管(目前只有Github,有待完善),支援批次檢查。
-
處理功能強大,發現的子域結果支援自動去除,自動DNS解析,HTTP請求探測,自動篩選出有效子域,擴充子域的Banner資訊,最終支援的匯出格式有
txt
,csv
,json
。 -
速度極快,收集模組使用多執行緒呼叫,爆破模組使用massdns,DNS解析速度每秒可解析350000以上個域名,子域驗證中DNS解析和HTTP請求使用非同步多協程,多執行緒檢查子域接管風險。
-
體驗良好,各模組都有進度條,非同步儲存各模組結果。
03 使用演示
python3 oneforall.py --target example.com run
python3 oneforall.py --targets ./example.txt run
04 結果說明
我們以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
表存放現在子域收集結果,一般情況關注這張表就可以了。
工具作者:shmilylty 專案地址:
https://github.com/shmilylty/OneForAll/releases/tag/v0.4.5
網盤下載:
「OneForAll-0.4.5.zip」
連結:https://pan.quark.cn/s/f7efe03e125e