我們來詳細解析一下滲透測試中信息收集(Information Gathering)的完整內容、步驟及工具方法。信息收集是整個滲透測試的基石,其深度和廣度直接決定了后續測試的成功率,因此有“滲透測試成功與否,90%取決于信息收集”的說法。
一、信息收集的核心目標
-
繪制攻擊面:盡可能全面地發現與目標相關的所有資產(域名、IP、子域名、端口、服務、人員等)。
-
縮小攻擊范圍:從海量信息中識別出關鍵、脆弱、易受攻擊的點,為后續深度測試提供方向。
-
建立目標畫像:了解目標的技術棧、組織結構、安全態勢,甚至員工習慣,以便發起更具針對性的攻擊(如釣魚攻擊)。
二、信息收集的分類與步驟
信息收集通常分為兩大類:被動信息收集和主動信息收集。標準的流程是先進行被動收集,再進行主動收集,以避免過早觸發目標的入侵檢測系統(IDS/IPS)。
步驟一:被動信息收集(Passive Reconnaissance)
-
定義:在不與目標系統直接交互的情況下,通過第三方渠道獲取信息。目標無法感知到你的探測行為,因此非常隱蔽。
-
核心原則:所有信息都來自公開渠道或第三方數據庫,不向目標發送任何數據包。
步驟二:主動信息收集(Active Reconnaissance)
-
定義:直接與目標資產進行交互,以獲取更詳細、更準確的信息。這種行為會被目標的監控設備(如防火墻、IDS)日志記錄,存在被發現的風險。
-
核心原則:在獲得授權的前提下進行,并且通常是在被動信息收集之后,用于驗證和深化已知信息。
三、信息收集的詳細內容與方法
下面我們按照從外圍到核心的順序,詳解信息收集的具體內容和所用工具方法。
1. 初始信息收集(Initial Discovery)
-
內容:明確測試范圍。如果目標是公司,首先要確定其官方域名、子公司、收購公司等。
-
方法:
-
公司官網:了解業務、產品、新聞(如使用了新的CMS系統)。
-
搜索引擎(Google Hacking):使用Google高級搜索語法(如?
site:target.com filetype:pdf
,?inurl:admin
,?intitle:"index of /"
)查找敏感文件、目錄、錯誤信息等。 -
社交媒體(LinkedIn, GitHub):在LinkedIn上尋找員工技術棧信息;在GitHub上搜索員工誤上傳的代碼、配置文件、API密鑰等敏感信息。
-
第三方商情平臺(如天眼查、企查查):了解組織架構、子公司、投資關系,從而擴大目標范圍。
-
2. 域名系統(DNS)信息收集
-
內容:獲取所有關聯的域名和子域名,以及對應的IP地址。
-
方法與工具:
-
WHOIS查詢:獲取域名注冊信息(注冊人、郵箱、電話、DNS服務器)。
-
工具:
whois
?命令、在線WHOIS網站(如?whois.domaintools.com)。
-
-
子域名枚舉(Subdomain Enumeration):這是最關鍵的一步,旨在發現主域名下的所有子域名(如?
dev.target.com
,?api.target.com
)。-
工具:
-
被動枚舉:
Sublist3r
,?Amass
,?Subfinder
(通過搜索引擎、證書透明度日志、DNS聚合商等第三方數據源獲取)。 -
字典爆破:
gobuster
,?ffuf
,?dnsrecon
(使用強大的字典進行暴力猜解)。 -
證書透明度(CT)日志:
crt.sh
?網站是寶藏,可以查詢到為某個域名簽發的所有SSL證書,從而發現子域名。
-
-
-
DNS記錄查詢:獲取A, AAAA, MX(郵件服務器), TXT, SPF, DMARC, CNAME等記錄。
-
工具:
dig
,?nslookup
,?dnsrecon
。 -
在線工具:DNSDumpster。
-
-
3. 網絡拓撲與IP發現
-
內容:確定目標的IP地址段、網絡架構(CDN?云服務器?)、真實的服務器IP(繞過CDN)。
-
方法與工具:
-
判斷CDN:通過多地Ping(如?
www.boce.com
)查看IP是否一致。 -
查找真實IP:
-
查詢歷史DNS記錄(如 SecurityTrails, ViewDNS)。
-
查詢子域名的IP(很多子域名可能直接解析到真實IP)。
-
通過郵件服務器源頭(發送一封郵件,查看郵件頭中的服務器IP)。
-
利用SSL證書信息(
censys.io
,?shodan.io
)。
-
-
IP段查詢:通過?
arin.net
(北美)或?apnic.net
(亞太)等RIR查詢目標擁有的ASN(自治系統號)和IP地址段。
-
4. 端口掃描(Port Scanning)
-
內容:發現目標IP開放了哪些端口,從而判斷運行了哪些服務。
-
方法與工具:
-
全連接掃描:
nmap -sT <target_ip>
(準確但易被記錄)。 -
半開掃描(SYN掃描):
nmap -sS <target_ip>
(默認方式,更快更隱蔽)。 -
服務與版本探測:
nmap -sV <target_ip>
(嘗試識別端口上運行服務的具體版本)。 -
操作系統探測:
nmap -O <target_ip>
(通過指紋識別目標OS)。 -
詳細腳本掃描:
nmap -A <target_ip>
(綜合掃描,包含版本、OS、腳本等)或使用NSE腳本?nmap --script=<script-name>
。 -
Masscan:最快的端口掃描器,適用于大范圍IP段掃描。
-
5. 服務指紋識別與漏洞枚舉
-
內容:準確識別開放端口上運行的服務、應用、版本號,并查找已知的漏洞或錯誤配置。
-
方法與工具:
-
Banner Grabbing:使用?
netcat
?或?telnet
?直接連接端口獲取服務橫幅信息。-
nc -nv <target_ip> 80
,然后輸入?HEAD / HTTP/1.0
。
-
-
漏洞掃描器:
Nessus
,?OpenVAS
(自動化程度高,但噪音大,需謹慎使用)。 -
專項工具:
-
Web服務器:
WhatWeb
,?Wappalyzer
(瀏覽器插件,識別Web技術棧)。 -
SMB共享:
enum4linux
,?smbclient
。 -
SNMP服務:
snmpwalk
,?onesixtyone
。
-
-
6. Web應用信息收集(如果存在Web服務)
-
內容:這是針對Web滲透測試的重點,收集一切與Web相關的信息。
-
方法與工具:
-
目錄與文件發現:使用字典爆破隱藏的目錄和文件(如后臺、備份文件、配置文件)。
-
工具:
gobuster
,?dirb
,?dirsearch
,?ffuf
。 -
字典:
SecLists
?項目提供了優秀的字典集合。
-
-
爬取網站:
OWASP ZAP
,?Burp Suite
?的蜘蛛功能。 -
分析技術棧:
Wappalyzer
?識別前端框架、Web服務器、編程語言等。 -
查找參數:從JavaScript文件中挖掘API接口、隱藏參數。
-
檢查安全頭:如?
X-Frame-Options
,?CSP
,?HSTS
?等是否存在缺失或錯誤配置。 -
虛擬主機掃描:
gobuster vhost
。
-
7. 其他信息收集
-
人員信息:為社工釣魚做準備,收集郵箱(
theHarvester
)、姓名、職位、社交動態。 -
公開漏洞情報:在 Exploit-DB, GitHub, NVD 等平臺搜索已公開的目標相關組件的漏洞和EXP。
四、工具總結清單
類別 | 工具名稱 | 主要用途 |
---|---|---|
子域名枚舉 | Sublist3r, Amass, Subfinder, Assetfinder | 被動子域名發現 |
Gobuster, ffuf, dnsrecon | 暴力破解子域名 | |
crt.sh | 證書透明度日志查詢 | |
DNS查詢 | dig, nslookup, dnsrecon | 各類DNS記錄查詢 |
端口掃描 | Nmap?(王者) | 綜合端口掃描、版本探測、OS識別 |
Masscan | 高速端口掃描 | |
Netcat (nc) | 網絡瑞士軍刀,手動Banner抓取 | |
Web應用掃描 | Burp Suite?(Professional) | 代理、爬蟲、漏洞掃描(全能) |
OWASP ZAP | Burp的免費替代品,功能強大 | |
Gobuster, dirsearch, ffuf | 目錄/文件/子域名/VHost爆破 | |
WhatWeb, Wappalyzer | Web應用指紋識別 | |
瀏覽器開發者工具 | 手動分析請求、響應、JS文件 | |
綜合情報平臺 | Shodan | 搜索引擎 for 物聯網設備 |
Censys | 類似Shodan | |
FOFA | 國內的網絡空間測繪引擎 | |
ZoomEye | 知道創宇的網絡空間測繪引擎 | |
其他 | theHarvester | 搜索郵箱、主機名、子域名 |
Metasploit (輔助模塊) | 集成了多種信息收集功能 | |
SearchSploit | 搜索Exploit-DB中的漏洞利用代碼 | |
SecLists | 偉大的字典集合,不是工具但至關重要 |
五、最佳實踐與注意事項
-
授權第一:始終在獲得書面授權的前提下進行測試,明確測試范圍(哪些IP/域名可以測,哪些絕對不能碰)。
-
先被動,后主動:最大程度減少對目標的影響和被發現的風險。
-
記錄一切:使用工具(如?
KeepNote
,?Dradis
)或筆記詳細記錄每一步的發現,這些信息在后續階段和報告編寫中至關重要。 -
自動化與手動結合:自動化工具提高效率,但手動分析才能發現邏輯更深層的漏洞和關鍵信息。不要完全依賴工具。
-
持續進行:信息收集并非一次性階段,在整個滲透測試過程中,根據新發現可能需要不斷回頭進行更深入的信息收集。
信息收集是一個需要耐心、創造力和細致心態的過程。掌握得越熟練,你就越能像攻擊者一樣思考,從而更好地幫助客戶防御真正的威脅。