OneForAll 使用手冊
一、概述
OneForAll 是一款功能強大的子域名收集工具,旨在幫助安全測試人員和網絡管理員全面發現目標域名的所有子域名,為后續的安全評估和漏洞測試提供基礎支持。它集成了多種子域名發現方法,包括搜索引擎查詢、DNS 枚舉、API 調用等,能夠高效地獲取目標域名的子域名信息,并支持結果的導出和分析。
核心功能
- 多源子域名收集:支持從多種來源收集子域名,包括但不限于搜索引擎(Google、Bing 等)、證書透明度日志、DNS 記錄查詢、API 接口(如 Shodan、Censys 等)以及爆破枚舉等方式,確保盡可能全面地發現目標域名的子域名。
- 智能結果處理:自動對收集到的子域名進行有效性驗證,排除無效或不存在的子域名,提高結果的準確性。同時,支持對子域名進行分類統計,如按 IP 地址、響應狀態碼等進行分組,方便用戶快速了解子域名的分布情況。
- 靈活的輸出格式:支持將結果以多種格式輸出,如 CSV、JSON、TXT 等,滿足不同場景下的使用需求。用戶可以根據需要選擇合適的輸出格式,以便進一步分析或導入到其他工具中使用。
- 自定義配置:提供豐富的配置選項,允許用戶根據實際需求調整收集策略,如設置線程數、超時時間、是否使用爆破等。此外,還支持自定義字典文件,用于子域名爆破,提高發現隱藏子域名的概率。
二、安裝與配置
安裝環境準備
OneForAll 基于 Python 開發,安裝前需確保系統已安裝 Python 環境(建議 Python 3.6 及以上版本),同時安裝pip
包管理工具(一般 Python 安裝時會默認安裝)。
安裝步驟
- 通過 GitHub 倉庫安裝
- 打開終端(Linux 或 macOS 系統)或命令提示符(Windows 系統),使用
git
命令克隆 OneForAll 的 GitHub 倉庫:
bash
?git clone https://github.com/shmilylty/OneForAll.git
- 進入克隆后的目錄:
bash
?cd OneForAll
- 使用
pip
安裝依賴庫:
bash
pip install -r requirements.txt
- 打開終端(Linux 或 macOS 系統)或命令提示符(Windows 系統),使用
- 直接下載源碼安裝
- 若無法使用
git
,也可從 GitHub 倉庫頁面直接下載源碼壓縮包,解壓后進入解壓目錄,執行上述pip install -r requirements.txt
命令安裝依賴庫。
- 若無法使用
配置 API 密鑰(可選)
OneForAll 支持使用多種 API 接口來獲取子域名信息,如 Shodan、Censys 等。為了獲得更全面的結果,建議配置相關 API 密鑰:
- 打開 OneForAll 目錄下的
config/api_config.yaml
文件。 - 根據文件中的注釋,填寫相應的 API 密鑰信息,如 Shodan 的 API Key、Censys 的 API ID 和 Secret 等。
- 保存文件即可完成 API 密鑰的配置。
三、基本使用方法
簡單掃描示例
使用 OneForAll 進行子域名掃描的基本命令格式如下:
bash
python3 oneforall.py --target example.com run
其中,--target
參數指定要掃描的目標域名,run
表示執行掃描操作。執行上述命令后,OneForAll 會自動從多種來源收集example.com
的子域名信息,并在掃描完成后顯示結果。
指定輸出格式
OneForAll 支持多種輸出格式,可通過--fmt
參數指定:
bash
python3 oneforall.py --target example.com --fmt csv run
上述命令將掃描結果以 CSV 格式輸出,常見的輸出格式還包括json
、txt
等。
保存結果到文件
使用--output
參數可以將掃描結果保存到指定文件:
bash
python3 oneforall.py --target example.com --output result.csv run
執行后,掃描結果將保存到result.csv
文件中。
四、高級功能與參數詳解
子域名爆破
OneForAll 支持使用字典進行子域名爆破,以發現更多隱藏的子域名:
bash
python3 oneforall.py --target example.com --brute True run
默認情況下,OneForAll 會使用內置的字典文件進行爆破。若需要使用自定義字典,可通過--wordlist
參數指定:
bash
python3 oneforall.py --target example.com --brute True --wordlist /path/to/wordlist.txt run
限制掃描范圍
可通過--level
參數限制掃描的子域名層級:
bash
python3 oneforall.py --target example.com --level 2 run
上述命令將只掃描二級子域名(如sub.example.com
),不掃描更深層級的子域名(如sub.sub.example.com
)。
多目標掃描
若需要同時掃描多個目標域名,可使用--targets
參數指定包含多個域名的文件:
bash
python3 oneforall.py --targets /path/to/targets.txt run
其中,targets.txt
文件應包含一行一個的目標域名。
啟用 API 收集
若已配置 API 密鑰,可通過--api
參數啟用 API 收集功能:
bash
python3 oneforall.py --target example.com --api True run
啟用后,OneForAll 會使用配置的 API 接口獲取子域名信息,提高掃描的全面性。
調整線程數和超時時間
通過--thread
參數可以調整掃描線程數,提高掃描速度:
bash
python3 oneforall.py --target example.com --thread 50 run
使用--timeout
參數可以設置請求超時時間(單位:秒):
bash
python3 oneforall.py --target example.com --timeout 10 run
五、實戰案例
案例一:全面掃描單個目標
需求:對example.com
進行全面的子域名掃描,包括 API 查詢和爆破,并將結果保存為 JSON 格式。
命令:
bash
python3 oneforall.py --target example.com --api True --brute True --fmt json --output example_result.json run
執行該命令后,OneForAll 會先通過 API 接口獲取子域名信息,再使用字典進行爆破,最后將結果以 JSON 格式保存到example_result.json
文件中。
案例二:批量掃描多個目標
需求:對多個目標域名進行批量掃描,并將結果統一保存到一個 CSV 文件中。
步驟:
- 創建一個文本文件
targets.txt
,包含要掃描的多個域名,每行一個域名,例如:
plaintext
example1.com
example2.com
example3.com
- 執行以下命令進行批量掃描:
bash
python3 oneforall.py --targets targets.txt --fmt csv --output batch_result.csv run
掃描完成后,所有目標域名的子域名信息將匯總到batch_result.csv
文件中。
案例三:深度掃描特定層級子域名
需求:掃描example.com
的三級子域名(如sub.sub.example.com
),并使用自定義字典進行爆破。
命令:
bash
python3 oneforall.py --target example.com --level 3 --brute True --wordlist custom_words.txt run
其中,custom_words.txt
是包含自定義子域名前綴的字典文件。
六、注意事項
- 法律合規:在使用 OneForAll 進行子域名掃描時,務必確保獲得目標系統所有者的明確授權。未經授權的掃描行為可能違反法律法規,引發法律風險。
- 掃描頻率控制:頻繁的掃描請求可能會觸發目標網站的防護機制(如 WAF),導致 IP 被封禁。因此,在掃描過程中,建議合理控制掃描頻率,避免對目標系統造成過大壓力。
- 結果驗證:盡管 OneForAll 會對收集到的子域名進行有效性驗證,但掃描結果仍可能存在誤報或漏報情況。對于重要的子域名信息,建議進行人工驗證,確保結果的準確性。
- API 使用限制:若使用 API 接口進行子域名收集,需注意各 API 提供商的使用限制和配額。過度使用可能導致 API 密鑰被封禁或限制訪問。
- 更新工具:OneForAll 會不斷更新和優化,定期檢查 GitHub 倉庫,及時更新工具,以獲取新功能和漏洞修復。