梳理:Layer子域名挖掘機實操指南)
簡介Layer 子域名挖掘機 4.2 紀念版以免安裝壓縮包形式發(fā)布適用于網(wǎng)絡(luò)安全工程師、滲透測試人員及安全愛好者開展子域名資產(chǎn)發(fā)現(xiàn)與攻擊面梳理。該工具采用字典枚舉、DNS 查詢與證書透明度等組合策略可批量探測目標主域名下的隱藏子域名為漏洞評估、邊界排查和防護加固提供前期支撐。包體共 5 個文件整體約 4MB其中 exe 為主程序入口兩個 dll 文件提供加密與網(wǎng)絡(luò)解析功能xml 為可編輯的配置參數(shù)txt 為內(nèi)置字典用戶可直接運行或按需替換詞匯。目前已有 713 人學(xué)習(xí)/下載。借助此包可快速搭建子域名挖掘環(huán)境既能了解工具調(diào)用原理又能借助自帶字典開展實際掃描適合用于授權(quán)范圍內(nèi)的安全測試、CTF 解題或校園網(wǎng)資產(chǎn)梳理等場景。 在授權(quán)范圍內(nèi)的資產(chǎn)梳理和漏洞挖掘任務(wù)里子域名收集永遠是第一件要做的事情。目標資產(chǎn)有多大、對外暴露了哪些系統(tǒng)、有沒有被遺忘的測試環(huán)境很多時候都藏在主域名下面那些不起眼的子域名記錄里。我最初接觸 Layer 子域名挖掘機就是在一場授權(quán)測試的資產(chǎn)盤點階段當(dāng)時手頭只有一個主域名和幾個關(guān)聯(lián)域名用這個工具跑完一輪直接多出來幾十個可訪問的Web站點后續(xù)的測試面一下子清晰了很多。這篇文章就以“Layer子域名挖掘機 4.2 紀念版.zip”這個經(jīng)典的zip包形態(tài)為切入點聊聊這個工具的歷史定位、子域名挖掘背后的原理、完整實操流程以及我在使用過程中踩過的坑和排查經(jīng)驗。內(nèi)容適合三類人看剛?cè)腴T安全評估、想系統(tǒng)梳理資產(chǎn)的新手需要日常做資產(chǎn)臺賬管理的藍隊同學(xué)以及想把手動子域名枚舉流程自動化、規(guī)范化的一線工程師。1. 工具定位與版本認知1.1 4.2紀念版到底是什么來頭Layer 子域名挖掘機是一款典型的 Windows 圖形化子域名枚舉工具。它做得早更新周期長網(wǎng)上流傳的版本也很多4.2 屬于流傳比較廣、功能相對穩(wěn)定的一版?!凹o念版”這個后綴在安全工具圈并不少見通常是作者在某個節(jié)點發(fā)布的最終版本、收藏版本或者只是打包者為了區(qū)分而加的標識。不管命名動機如何一個不爭的事實是即便今天有大量開源命令行工具很多人拿到這個 zip 包解壓后仍然能用得很順手。這個工具核心解決的需求很簡單你給它一個主域名它通過字典爆破、DNS解析驗證、多個公開接口聚合等方式把目標域名下存活的子域名列表找出來。對于信息收集階段來說子域名越多意味著攻擊面越廣也意味著資產(chǎn)清單越完整。Layer 的價值就在于把這些原本需要手動敲命令、拼接口的操作封裝成了一個勾選框式的圖形界面。1.2 zip綠色版為什么能活這么久工具以 zip 壓縮包形式分發(fā)而不是像商業(yè)軟件那樣做安裝程序這背后其實是很務(wù)實的選擇。安裝包會往系統(tǒng)目錄寫文件、改注冊表還經(jīng)常捆綁各種附加組件而 zip 綠色版解壓即用不污染系統(tǒng)也方便在多臺機器之間拷貝。尤其在企業(yè)內(nèi)部做資產(chǎn)排查時U盤里放一個解壓好的工具目錄換機器就能直接跑非常省事。我做安全評估時也一直保留著這種“零安裝”的習(xí)慣。除了 Layer 之外像 Python 官方提供的嵌入式運行時壓縮包比如 python-3.8.9-embed-amd64.zip、nvm-windows 的 zip 安裝包、PowerShell 7 的便攜版都是同樣的設(shè)計思路。它們解決的是同一個痛點運行環(huán)境不應(yīng)該成為使用工具的阻礙。zip 包天然適合工具分發(fā)解壓到指定目錄、配置一下路徑就可以工作出了環(huán)境問題直接刪除重來不留后患。1.3 子域名收集在整體安全評估中的位置很多人會把子域名挖掘簡單理解成“爆破子域名的工具”但實際上它是整個信息收集鏈條的起點。一次完整的評估流程通常是確定主域名 - 收集子域名 - 解析IP - 端口掃描 - 識別服務(wù) - 尋找漏洞。其中子域名收集決定了后面這些環(huán)節(jié)能畫多大的范圍圖。舉個實際案例我遇到過某個目標的官網(wǎng)只有幾個頁面看起來沒什么可測的但用 Layer 跑了一圈發(fā)現(xiàn)了 dev、test、api、jenkins 等一批子域名其中測試環(huán)境還在用默認口令。如果跳過子域名枚舉這個風(fēng)險點可能根本不會被發(fā)現(xiàn)。這就是子域名收集的價值它不是掃描器而是給掃描器劃定工作范圍的導(dǎo)航圖。2. 子域名挖掘的核心原理2.1 一個子域名解析背后的DNS機制要理解子域名挖掘必須先理解 DNS 的解析過程。當(dāng)你在瀏覽器輸入blog.example.com時系統(tǒng)會先向配置的 DNS 服務(wù)器發(fā)起查詢詢問這個主機名對應(yīng)的 IP 地址。整個 DNS 系統(tǒng)中子域名的存在主要體現(xiàn)在各類解析記錄里最常見的是 A 記錄IPv4地址、AAAA 記錄IPv6地址、CNAME 記錄別名指向另一個域名、NS 記錄子域名的權(quán)威DNS服務(wù)器等。子域名挖掘本質(zhì)上做的事情就是大量構(gòu)造可能存在的名稱然后看這些名稱能不能通過 DNS 查詢得到有效響應(yīng)。如果unknown-name.example.com返回 NXDOMAIN域名不存在說明這個子域名大概率不存在如果返回一個真實 IP 或 CNAME則說明它是存活的。這個原理聽起來很簡單但實際工程化的時候要考慮的因素不少比如查詢速度、超時設(shè)置、泛解析干擾、結(jié)果去重等。2.2 枚舉邏輯字典爆破與被動收集Layer 這類工具通常采用“主動爆破 被動收集”的組合策略。主動爆破是拿著預(yù)置字典里的每一個詞條逐個拼接為完整域名去發(fā)起 DNS 查詢。舉個例子字典里有admin、mail、vpn這些詞工具就會查詢admin.example.com、mail.example.com、vpn.example.com等記錄是否存在。被動收集則是通過第三方數(shù)據(jù)源來獲取目標域名的子域名記錄。SSL 證書透明度日志Certificate Transparency Log是一個非常有效的數(shù)據(jù)源因為很多組織在申請證書時會把所有子域名列在證書的 SAN 字段里。搜索引擎緩存、DNS 數(shù)據(jù)集、歷史解析記錄等也是常見的數(shù)據(jù)來源。主動爆破依賴字典覆蓋度被動收集依賴數(shù)據(jù)源覆蓋度兩者結(jié)合往往能取得比單一方式好得多的效果。2.3 字典質(zhì)量決定結(jié)果上限在多次實測之后我越來越認同一個觀點子域名挖掘的最終效果60% 取決于字典質(zhì)量30% 取決于數(shù)據(jù)源數(shù)量只有 10% 取決于工具本身。Layer 自帶的基礎(chǔ)字典對于常規(guī)目標夠用但遇到一些命名風(fēng)格特殊的企業(yè)效果就比較一般了。比如一家做物流的公司子域名可能是sz001.example.com這樣的城市縮寫加編號一家做游戲的公司子域名可能是按項目代號命名的project-a.example.com。這時候就需要針對目標行業(yè)、公司歷史、產(chǎn)品線去定制字典。我的習(xí)慣是把默認字典里的高頻詞保留再結(jié)合目標公司官網(wǎng)的導(dǎo)航、招聘信息里的項目名、歷史新聞里的產(chǎn)品名來擴充實測效果提升非常明顯。這個道理不復(fù)雜但很多人會忽略總以為換一個更“智能”的挖掘工具就能解決問題其實工具只是執(zhí)行者字典才是決策者。3. 完整實操從解壓到結(jié)果落地3.1 環(huán)境準備與解壓注意事項拿到的Layer子域名挖掘機4.2紀念版.zip首先需要正確解壓。這里有幾個容易被忽略的細節(jié)解壓路徑不要帶中文和空格建議放在D:\Tools\Layer這類純凈目錄下避免某些組件因為路徑編碼問題加載失敗。工具是圖形界面程序需要 Windows 環(huán)境。如果手里只有 Kali 或其他 Linux 系統(tǒng)可以嘗試用 wine 運行但兼容性不一定好更推薦的做法是在 Linux 上用命令行工具完成同樣的事情。解壓時如果提示壓縮包損壞先不要急著刪文件。之前有朋友遇到過解壓到一半報could not find eocd這個錯誤通常表示 zip 文件的末尾目錄記錄缺失基本可以判定是下載不完整。解決辦法是檢查文件大小是否和發(fā)布頁一致或者換渠道重新下載。360、Windows Defender 等殺毒軟件對這類工具經(jīng)常報毒這是正?,F(xiàn)象。建議在確認文件哈??尚诺那疤嵯掳压ぞ吣夸浖尤氚酌麊?。我之前在 Kali 下也遇到過類似從 zip 部署工具的問題解壓后還有權(quán)限不夠的情況記得用chmod x給可執(zhí)行文件加執(zhí)行權(quán)限。Windows 下的綠色工具雖然沒有這個煩惱但如果你的系統(tǒng)開啟了受控文件夾訪問也要記得放行。3.2 目標配置與掃描參數(shù)調(diào)優(yōu)解壓后運行主程序界面并不復(fù)雜。在目標域名輸入框里填主域名即可注意不要帶http://或https://前綴只要域名本身。例如填example.com不需要引號。參數(shù)方面我建議這樣設(shè)置線程數(shù)普通目標設(shè)置為 20 到 50 即可不要一上來就拉滿幾百線程。線程過高容易導(dǎo)致 DNS 查詢超時增多誤報率也會上升而且部分目標可能對高頻查詢有限制很容易把自己的 IP 封掉。超時時間默認值一般夠用如果網(wǎng)絡(luò)環(huán)境比較差可以適當(dāng)調(diào)高但不要調(diào)到 10 秒以上否則整體掃描時間會變得不可接受。延遲如果目標有防護建議開啟延遲和隨機延遲模擬更自然的手動查詢節(jié)奏。字典選擇上優(yōu)先使用“常用字典 自定義字典”的組合。Layer 支持加載外部字典我通常會把高頻率姓氏拼音、城市縮寫、業(yè)務(wù)關(guān)鍵詞單獨整理成一個文件作為主字典的補充。接口選項方面建議把能勾選的公開接口都勾上雖然會影響速度但被動收集數(shù)據(jù)的覆蓋面通常比主動爆破更廣。3.3 結(jié)果去重、驗證與導(dǎo)出掃描完成后工具會列出發(fā)現(xiàn)的所有子域名。這里必須做一步驗證工作并不是所有列出的條目都是真實可用的。第一步是去重。多個數(shù)據(jù)源可能返回同一條記錄列表里可能包含重復(fù)項合并去重后再進入下一步。第二步是實時驗證。Layer 的結(jié)果基于掃描當(dāng)刻的 DNS 狀態(tài)但 CDN 切換、記錄刪除都會導(dǎo)致結(jié)果失效尤其是 CNAME 記錄掃描時存在、幾天后可能就變成了殘留的懸空記錄。第三步是端口級驗證子域名存在不代表服務(wù)可用建議用腳本批量請求 80 和 443 端口篩選出真正可訪問的 Web 資產(chǎn)。結(jié)果導(dǎo)出時我一般同時導(dǎo)出 txt 和 csv 兩個格式。txt 格式方便直接循環(huán)處理csv 格式方便在表格里維護資產(chǎn)臺賬。后續(xù)處理我會配合 httpx、nuclei 這類工具做存活探測和漏洞掃描三層銜接起來整體效率會高很多。4. 常見問題與排查技巧4.1 解壓報錯與啟動失敗處理這個工具在分發(fā)和運行過程中最常見的就是解壓和啟動問題。我把幾種典型情況整理成了一個速查表問題現(xiàn)象原因分析處理方法解壓報could not find eocdzip 中央目錄缺失文件下載不完整檢查文件大小重新下載解壓報failed to copy spatial iop zip磁盤空間不足或殺毒軟件攔截寫入清理空間、暫時退出殺軟再解壓運行提示缺少 DLL 或組件系統(tǒng)缺少 .NET Framework 或 VC 運行庫安裝對應(yīng)運行庫后重試雙擊無反應(yīng)殺毒軟件攔截或目錄權(quán)限異常加入白名單用管理員權(quán)限運行360 彈窗報毒工具被殺軟誤報校驗哈??尚藕蠹尤胄湃螀^(qū)之前有同事解壓報failed to copy spatial iop zip我當(dāng)時第一反應(yīng)是磁盤空間滿了后來發(fā)現(xiàn)其實是企業(yè)版安全軟件在后臺實時掃描把文件復(fù)制過程拖垮了。這種問題排查思路其實一樣先確認文件是否完整再排除殺軟干擾最后檢查磁盤和權(quán)限。還有一個小技巧命令行驗證壓縮包完整性可以用unzip -t file.zipLinux/Windows子系統(tǒng)下或者 Windows 自帶右鍵“全部解壓”如果提示某個文件 CRC 校驗失敗說明這個壓縮包在傳輸過程中已經(jīng)損壞最好重新獲取而不是強行解壓。4.2 掃描結(jié)果異常誤報、漏報與封IP掃描結(jié)果出現(xiàn)大量無效地址最常見的原因是目標域名配置了泛解析。泛解析是指 DNS 服務(wù)器對所有不存在的子域名也返回一個指定的 IP不少 CDN 和云廠商默認就是這樣。如果不做處理爆破出來的記錄會“看起來全是活的”感覺收獲很大實際全是無效數(shù)據(jù)。判斷方法也很簡單隨便輸一個不存在的名稱比如this-name-definitely-not-exists.example.com如果它也能解析出 IP說明目標存在泛解析。這種情況下我會把泛解析返回的 IP 加入過濾列表然后重新對掃描結(jié)果做一輪清洗。漏報問題則多半出在字典和線程配置上。字典太小、覆蓋詞不夠自然找不到深層子域名線程數(shù)設(shè)置過大導(dǎo)致查詢超時也可能漏掉一些響應(yīng)較慢的記錄。如果發(fā)現(xiàn)結(jié)果明顯偏少不要急著怪工具先想想是不是字典和配置的問題。關(guān)于封 IP我遇到過不止一次。目標防護策略比較嚴格時高頻 DNS 查詢很快會觸發(fā)攔截。解決思路是在 Layer 里適當(dāng)調(diào)低線程、增加延遲或者避開業(yè)務(wù)高峰時段再跑。一次掃描不是唯一途徑也可以分散成多個時段分批執(zhí)行。4.3 關(guān)于zip加密與偽“無視密碼”安全類工具以 zip 包分發(fā)時附帶密碼是很普遍的做法一方面是為了防止文件在傳輸環(huán)節(jié)被篡改另一方面也是作者對分發(fā)范圍的一種控制。很多用戶習(xí)慣在搜索引擎里搜“zip密碼移除”“zip壓縮包密碼破解工具”“無視密碼直接解壓”這類關(guān)鍵詞但這里我要潑一盆冷水正規(guī)加密 zip 在密碼強度足夠的情況下暴力破解的成本是很高的所謂“無視密碼直接解壓”基本都是標題黨。如果在解壓 Layer zip 時提示需要密碼先確認來源渠道有沒有標注密碼常見的是作者博客、發(fā)布說明或者注釋文件里給出解壓密碼。我見過有人把壓縮包注釋里的密碼漏看了白白折騰了半小時。如果確實沒有密碼我的建議是換一個有授權(quán)來源的渠道獲取工具而不是花大量精力和加密算法較勁。工具拿到手之后也建議順手做一次校驗確保 zip 包沒有被二次打包或植入過額外文件。5. 聯(lián)動擴展與個人經(jīng)驗5.1 從結(jié)果到戰(zhàn)果批量存活探測與接管檢測Layer 輸出了子域名列表這只是信息收集的起點。我更推薦把結(jié)果接入命令行工具鏈做自動化處理。以 Linux 環(huán)境為例先用 Layer 導(dǎo)出subs.txt然后用 httpx 做批量 HTTP 存活探測命令大致如下httpx -l subs.txt -title -status-code -tech-detect -o alive.txtalive.txt里就是真正可以訪問的 Web 資產(chǎn)接著可以交給端口掃描工具或漏洞掃描器去做更深入的檢測。整個流程下來從子域名列表到可用的目標清單只需要幾分鐘。接管檢測是一個經(jīng)常被忽略但價值很高的步驟。簡單來說如果一條子域名記錄是指向某個第三方服務(wù)的 CNAME比如sub.example.com CNAME old-bucket.s3.amazonaws.com而這個第三方資源已經(jīng)被釋放或不再被任何人使用那么攻擊者就可能通過重新注冊這個資源來“接管”子域名。檢測方法并不復(fù)雜拿到 CNAME 目標后手動嘗試解析目標域名如果返回 NXDOMAIN就存在接管的可能性。這類問題在子域名掃描結(jié)果里出現(xiàn)的頻率比想象中高。5.2 一套適合日常摸排的組合思路我現(xiàn)在的常規(guī)做法是Layer 負責(zé)快速摸底命令行工具鏈負責(zé)精確驗證最后把結(jié)果匯總到資產(chǎn)清單里。Layer 的優(yōu)勢在于圖形界面交互直觀適合做一次性、臨時性的資產(chǎn)排查如果要做周期性監(jiān)測我建議配合定時任務(wù)調(diào)度命令行工具這樣既能覆蓋 Layer 的功能又能實現(xiàn)無人值守。每次跑完掃描我都會把結(jié)果歸檔到按月份命名的目錄里方便回溯對比。等下一次再掃同一目標時直接 diff 前后兩次的子域名列表新增的記錄往往就是最值得關(guān)注的變化點。有一次我就是在例行巡檢的 diff 中發(fā)現(xiàn)了一個剛上線的測試站點這個站點沒有加入任何正式資產(chǎn)臺賬但實際已經(jīng)暴露在公網(wǎng)上了。最后分享一個小技巧Layer 這類工具跑出的子域名不要直接當(dāng)成最終結(jié)論DNS 層面“存在”和 IP 層面“可達”、業(yè)務(wù)層面“重要”是三個完全不同的概念。把掃描結(jié)果做一次解析 - 端口 - HTTP指紋的三層驗證你手里的資產(chǎn)地圖才是真正能指導(dǎo)后續(xù)工作的版本。這也是我使用 Layer 幾年以來最深的一個體會工具負責(zé)幫你找到線索但真正體現(xiàn)專業(yè)度的永遠是接下來怎么驗證、怎么分析、怎么把線索變成判斷。本文還有配套的精品資源點擊獲取