1、信息搜集的重要性
(1)明確攻擊面
信息搜集能讓滲透測試人員清晰地勾勒出目標系統的邊界,包括其網絡拓撲結構、開放的服務端口、運行的軟件系統等。例如,通過信息搜集發現目標企業除了對外提供官網服務外,還有一個內部員工使用的辦公系統暴露在公網,這就大大擴展了攻擊面,為測試人員提供了更多的潛在攻擊點。
(2)發現潛在漏洞線索
搜集到的信息中可能隱藏著目標系統存在的漏洞線索。比如,通過查看目標網站使用的軟件版本信息,發現其運行的某個開源內容管理系統(CMS)版本存在已知的高危漏洞,這為后續利用該漏洞進行滲透提供了明確的方向。
(3)制定針對性策略
基于全面的信息搜集,滲透測試人員可以制定出更具針對性的測試策略。如果了解到目標系統對某些特定的網絡協議或服務依賴程度較高,那么在測試過程中就可以重點圍繞這些方面展開,提高滲透測試的效率和成功率。
2、信息搜集的主要內容
2.1 目標基本信息
2.1.1 域名信息搜集:
包括域名的注冊人、注冊時間、到期時間、DNS服務器等。通過查詢域名信息,可以了解目標企業的網絡資產分布情況,以及是否存在域名劫持等潛在風險。例如,發現目標企業的一個重要業務子域名指向了一個可疑的IP地址,可能暗示著該子域名已被攻擊者控制。
2.1.2 IP地址信息搜集:
確定目標系統的IP地址范圍,了解其所屬的網絡運營商、地理位置等。IP地址信息有助于分析目標網絡的拓撲結構,以及判斷其是否使用了云服務、CDN等技術。
2.2 網絡架構信息
- 網絡拓撲信息搜集:
嘗試繪制目標網絡的拓撲結構圖,包括路由器、交換機、防火墻等網絡設備的位置和連接關系。了解網絡拓撲可以幫助測試人員找到網絡中的關鍵節點和薄弱環節,例如,發現某個核心交換機存在配置漏洞,可能導致整個子網面臨安全風險。
- 開放端口和服務信息搜集:
使用端口掃描工具(如Nmap)掃描目標系統的開放端口,并識別運行在這些端口上的服務。不同的服務可能存在不同的安全漏洞,例如,開放的SSH服務如果使用弱密碼,就容易被暴力破解。
2.3 系統和軟件信息
- 操作系統類型和版本:通過分析目標系統返回的Banner信息、使用指紋識別工具(如Nmap的操作系統檢測功能)等方法,確定目標系統運行的操作系統類型(如Windows、Linux)和版本。不同操作系統版本的安全漏洞和防護機制存在差異,了解這些信息有助于選擇合適的攻擊手段。
- 應用程序信息:識別目標系統上運行的各種應用程序,包括Web服務器(如Apache、Nginx)、數據庫管理系統(如MySQL、Oracle)、中間件(如Tomcat、WebLogic)等。同時,獲取這些應用程序的版本信息,以便查找已知的安全漏洞。
2.3.1 2.4 人員和組織信息
- 員工信息:通過社交媒體、招聘網站、企業官網等渠道搜集目標企業員工的相關信息,如姓名、職位、聯系方式等。員工信息可能被用于社會工程學攻擊,例如,通過偽裝成企業內部員工發送釣魚郵件,誘使其他員工點擊惡意鏈接或下載惡意文件。
- 組織架構和業務流程:了解目標企業的組織架構和業務流程,有助于發現潛在的安全風險點。例如,發現某個部門的業務系統涉及大量敏感數據的處理,但安全防護措施相對薄弱,就可能成為攻擊的重點目標。
3、信息搜集的常用方法
3.1 被動信息搜集
2.3.1搜索引擎查詢:利用Google、百度等搜索引擎的高級搜索語法,如“site:目標域名”“intitle:關鍵詞”等,查找與目標系統相關的公開信息。例如,通過搜索“site:example.com filetype:pdf”可以找到目標網站上公開的PDF文檔,其中可能包含敏感信息。
谷歌語法
Site | 指定域名 |
---|---|
Inurl | URL中存在關鍵字的網頁 |
Intext | 網頁正文中的關鍵字 |
Filetype | 指定文件類型 |
Intitle | 網頁標題中的關鍵字 |
Link | link:baidu.com 即表示返回所有和baidu.com做了鏈接的URL |
Info | 查詢指定站點的一些基本信息 |
cache | 搜索Google里關于某些內容的緩存 |
site:可以限制你搜索范圍的域名。
inurl:用于搜索網頁上包含的URL,這個語法對尋找網頁上的搜索、幫助之類的很有用。
intext: 只搜索網頁部分中包含的文字(也就是忽略了標題、URL等的文字)
intitle:查找關鍵字的頁面,一般用于社工別人的webshell密碼
filetype:搜索文件的后綴或者擴展名
link:可以得到一個所有包含了某個指定URL的頁面列表。
常用語法:
查找后臺地址:site:域名 intitle:管理 | intitle:后臺 | 登陸 | 用戶名 | 密碼 | 驗證碼 | 系統 | 賬號
查找可注入點:site:域名 inurl:edit | lead | editor | Files
查找上傳漏洞:site:域名 inurl:file | lead | editor | Files
存在的數據庫:site:域名 inurl:asp?id= | web | edit
查看腳本類型:site:域名 filetype:asp/jsp/php
讓搜索引擎入庫:inurl:cm/data/templates/images/index/
2.3.2社交媒體和公開數據庫:關注目標企業及其員工在社交媒體平臺上的動態,從中獲取有價值的信息。此外,還可以查詢一些公開的數據庫,如Whois數據庫、企業信用信息公示系統等,獲取域名注冊信息、企業基本信息等。
**2.3.3網絡爬蟲:**使用網絡爬蟲工具(如Scrapy)自動抓取目標網站的內容,分析網站的結構和數據。網絡爬蟲可以幫助發現網站中隱藏的頁面、敏感信息泄露等問題。
3.2 主動信息搜集
3.2.1端口掃描:
使用Nmap等端口掃描工具對目標系統的IP地址范圍進行掃描,檢測開放的端口和運行的服務。端口掃描可以分為TCP掃描、UDP掃描等多種類型,根據不同的需求選擇合適的掃描方式。
(1)nmap工具功能
- 判斷服務器類型
- 探測開發端口
- 探測使用框架
- 探測使用中間件
- 探測主機漏洞
(2)nmap,探測全端口tcp掃描
-
掃描單個ip:nmap 127.0.0.1
-
掃描多個ip:nmap 192.168.1.1 192.168.1.2
-
掃描范圍:nmap 192.168.1.1 - 192.168.1.10
-
從文件中掃描:nmap -iL 1.txt
-
掃描C段:nmap 192.168.1.1/24
-
掃描除了192.168.1.100的所有地址:nmap 192.168.1.1/24 -exclude 192.168.1.100
-
指定掃描ip端口:nmap -p 80,443 192.168.1.1
-
掃描c段存活ip端口:nmap -sP 192.168.1.1/24
-
掃描操作系統版本識別:nmap -O 192.168.1.1
-
掃描開放端口對應的服務:nmap -sV 192.168.1.1
-
掃描常見漏洞、應用服務掃描:nmap --script=vuln 192.168.1.1
-
暴力破解:nmap --script=brute 192.168.1.1 不ping
-
掃描常見漏洞:nmap --script=vuln 192.168.1.1
-
繞過防火墻端口掃描:nmap -Pn 127.0.0.1
(3)參數參考
參數 | 說明 |
---|---|
-sT | TCP connect()掃描,這種方式會在目標主機的日志中記錄大批連接請求和錯誤信息。 |
-sS | 半開掃描,很少有系統能把它記入系統日志。不過,需要Root權限。 |
-sF -sN | 秘密FIN數據包掃描、Xmas Tree、Null掃描模式 |
-sP | ping掃描,Nmap在掃描端口時,默認都會使用ping掃描,只有主機存活,Nmap才會繼續掃描。 |
-sU | UDP掃描,但UDP掃描是不可靠的。 |
-SA | 這項高級的掃描方法通常用來穿過防火墻的規則集 |
-sV | 探測端口服務版本 |
-Pn | 掃描之前不需要用ping命令,有些防火墻禁止ping命令。可以使用此選項進行掃描 |
-v | 顯示掃描過程,推薦使用 |
-h | 幫助選項,是最清楚的幫助文檔 |
-p | 指定端口,如1 - 65535, 1433, 135, 22, 80等 |
-O | 應用遠程操作系統檢測,存在多個結果和-A可以一起用 |
-ON/-OX/-OG | 將報告寫入文件,分別是正常、XML、grepable三種格式 |
-T4 | 針對TCP端口禁止動態掃描延遲超過10ms |
-iL | 讀取主機列表,例如:-iL C:\ip.txt |
3.2.2 漏洞掃描:
利用專業的漏洞掃描工具(如Nessus、OpenVAS)對目標系統進行全面的漏洞檢測。這些工具可以根據已知的漏洞數據庫,自動檢測目標系統存在的安全漏洞,并生成詳細的報告。
3.2.3 指紋識別:
通過向目標系統發送特定的數據包,分析其返回的響應信息,識別目標系統的操作系統、應用程序類型和版本等信息。例如,使用Nmap的指紋識別功能可以快速準確地識別目標系統的相關信息。
3.2.3.1 信息搜集-win與linux識別
通過分析目標系統返回的Banner信息、使用指紋識別工具(如Nmap的操作系統檢測功能)等方法,確定目標系統運行的操作系統類型(如Windows、Linux)和版本。不同操作系統版本的安全漏洞和防護機制存在差異,了解這些信息有助于選擇合適的攻擊手段。
(1)區分大小寫
linux區分大小寫,win不區分大小寫。
(2)響應包
通過發送請求的響應包的server參數內容判斷服務器類型。
(3)ping
PING命令來查看TTL值從而判斷操作系統類型。
- TTL=128,這是WINNT/2K/XP。
- TTL=64,這是LINUX。
- TTL=256,這是UNIX。
(4)nmap工具
- 判斷服務器類型
- 探測開發端口
- 探測使用框架
- 探測使用中間件
- 探測主機漏洞
3.2.3.2 數據庫管理系統
根據開放的數據庫端口號判斷數據庫類型。
(1)關系型數據庫端口
- Oracle — 1521
- MySQL — 3306
- Sybase — 5000
- DB2 — 5000
- PostgreSQL — 5432
(2)NOSQL數據庫端口
- MongoDB — 27017
- Redis — 6379
3.2.3.3 中間件
- 響應包查看server使用的中間件
- 通過數據庫類型推測常用中間件
- 使用goby識別中間件、框架等信息
3.2.3.4 web指紋
(1)為什么收集web指紋?
- web指紋是網站使用的cms,基于識別出來的cms進行漏洞挖掘,識別網站使用的cms,基于識別出來的cms已知漏洞搜索。
(2)在線識別&離線識別
- 在線識別:https://finger.tidesec.com/
- 離線識別:https://github.com/TideSec/TDFinger
3.2.3.5 子域名查詢
- fofa、谷歌語法、在線子域查詢、oneforall、子域名挖掘機
- fofa:www.fofa.so
- 在線子域名:https://phpinfo.me/domain/
- 子域名挖掘機:https://github.com/epii/domainFinder
- oneforall:https://github.com/shmilylty/OneForAll
3.2.3.6 cdn識別
- https://www.cnblogs.com/qiuhai/p/9763739.html
3.2.3.7 目錄掃描
- 常用工具:御劍、Jsk、dirmap
- Jsk:https://github.com/k8gege/Jskscan-WebPathBrute
- 安裝教程
- pip install -r requirement.txt
- python dismap.py
4、信息搜集的注意事項
(1)合法合規
在進行信息搜集時,必須嚴格遵守法律法規和道德規范。未經授權的信息搜集行為可能構成違法犯罪,因此在開展滲透測試之前,一定要獲得目標企業的書面授權。
(2)隱蔽性
盡量減少信息搜集活動對目標系統的影響,避免引起目標系統的警覺。可以采用一些隱蔽的掃描技術和策略,如慢速掃描、隨機掃描等,降低被目標系統安全防護設備檢測到的概率。
(3)記錄和整理
對搜集到的信息進行詳細的記錄和整理,建立信息數據庫。這有助于在后續的滲透測試過程中快速查找和利用相關信息,提高測試效率。