PTES-情報蒐集

01 概述


在《PTES-滲透測試執行標準》中介紹了滲透測試的一般流程,其中簡要介紹了情報蒐集的目標。

情報蒐集的目標是儘可能多的收集滲透對象的信息(網絡拓撲、系統配置、安全防禦措施等),在此階段收集的信息越多,後續階段可使用的攻擊矢量就越多。

因為情報蒐集可以確定目標環境的各種入口點(物理、網絡、人),每多發現一個入口點,都能提高滲透成功的幾率。

情報蒐集的方法多種多樣,本文主要介紹情報蒐集中一些常用的方法。首先對情報蒐集的方法進行分類,然後分別從Web應用、主機兩個層面對情報蒐集的方法進行簡要介紹。

02 分類


根據是否與目標直接交互,可將情報蒐集分為被動情報蒐集和主動情報蒐集。

被動情報蒐集

不與目標直接交互;利用OSINT(公開資源情報),通過搜索引擎及其他手段從各種公開的資源中獲取目標的信息。

常用工具和技術:Google Hacking、Shadon、Zoomeye、Whois等。

主動情報蒐集

與目標直接交互;通過請求響應、掃描等方式獲取目標的信息,會在目標服務器留下痕跡。

03 Web應用


Web應用的情報蒐集可以從以下幾個方面著手:

IP(IP資產)

滲透測試往往是從Web應用開始,Web應用滲透結束,就會著手主機層面的滲透。要對主機進行滲透,首先得知道主機的IP地址。

對於安全服務來說,客戶一般會提供詳細的Web資產和主機資產,不需要我們去搜集這些信息;但傳統的滲透,這些都需要我們自己去搜集。

獲取到的IP信息,首先可用於主機層面的滲透。其次,企業一般都會有一個或多個IP段,或者運用虛擬主機技術,在一個主機上運行多個站點,所以還可用於旁站,C段。

可用於IP信息蒐集的工具有:whois、nmap、nslookup等。

子域名(Web資產)

很多時候,滲透測試是從一個域名開始。但一個企業往往會有多個子域名及其他相關業務,就像鵝廠有遊戲,有即時通訊等等。

如果只關注一個域名的話,往往會少蒐集到很多信息。而且主域名和子域名的關注程度和安全程度可能有所不同,通過子域名枚舉,可以發現更多評估範圍內的域名,探測到一些隱藏的服務,能夠提高漏洞被發現的幾率。

可用於子域名枚舉的工具有:Google、Sublist3r、knockpy等。

指紋識別(中間件資產)

每件事物都有指紋,根據指紋,我們能得到很多有用的信息。比如,警察蒐集指紋,對比指紋庫就知道犯人是誰;一看手機logo就知道是什麼牌子的手機。

同樣,計算機也有指紋。通過指紋識別,我們可以判斷目標系統使用了哪些組件,組件的版本等。

指紋識別的一種方式是查看源代碼,特別是當系統使用了框架和CMS(內容管理系統)的時候。

框架和CMS一般都會有自己獨特的圖標、js文件、css文件、版權信息Powered By、標籤屬性值、註釋等等,比如Django框架中,表單默認是帶csrf_token驗證的,在源代碼中我們可以找到隱藏的token字段。

PTES-情報蒐集

只要我們找到了指紋特徵,就很容易判斷系統使用的框架,然後去網上查找框架是否有漏洞可利用即可。甚至,還可以下載框架源碼去做代碼審計。

除了查看源代碼,還可以通過與目標交互獲取指紋。查看文件後綴,查看目錄URL,查看Cookie,查看首部字段X-Powered-By和Server,查看報錯頁面等等。

PTES-情報蒐集

比如我們通過交互,發現這個頁面。熟悉的校友應該知道,這是IIS的報錯頁面,那麼操作系統很可能是Windows,因為IIS主要是搭配Windows系統使用。

根據這篇文章,我們可以先存疑,該系統存不存在HTTP.sys遠程代碼執行漏洞。另外,系統存不存在IIS解析漏洞,解析漏洞又常與文件上傳漏洞配合使用,要利用解析漏洞,就要先找到系統的上傳漏洞。然後IIS有沒有啟用WebDAV呢?WebDAV中的COPY/MOVE方法可是不安全的,和PUT方法搭配口味更佳~

哇,感覺世界都是我的了!

總之,指紋識別的目標是:What、Version

什麼服務器,服務器版本
什麼數據庫,數據庫版本
什麼OS,OS版本
什麼語言,語言版本
什麼框架,框架版本
什麼組件,組件版本

可用於指紋識別的工具有:whatweb、httprint、CMSmap、在線識別等。

源代碼

查看源代碼還有可能獲取到其他敏感信息。

目前絕大多數的網頁由3部分組成:HTML(結構)、CSS(樣式)、JavaScript(動作),瀏覽器會將代碼解析成對我們友好的頁面,但很多細節並不會在頁面中展示給我們,比如:隱藏的表單、JavaScript代碼等,因此對源代碼的審計是很有必要的。

很多校友對源代碼的審計可能停留在html文件中,但js文件也需要審計。

一次工作,在js文件中找到了一個積分接口,但頁面沒有入口。我直接構造url,發起請求,個人賬戶的積分蹭蹭往上漲。與客戶開發人員交流後,得知積分要消費才會漲,積分也可以兌換東西。這個時候就可以將其定義為漏洞了。

目錄/文件

在摸清目標資產情況(IP資產、Web資產、中間件資產)之後,我們就可以摸索Web應用的結構了。

在測試大型的系統時,我個人的習慣是先查看一下Web應用整體的功能點和鏈接結構(接口),然後保證所有的功能點和接口都測試到就行。

因為系統不可能每個鏈接結構都不一樣,一般都會存在複用的情況,除非功能不同。比如充話費,共用一個接口,充值金額不同只要修改接口中的話費id即可。

在測試的時候,我只需要測試其中一種金額就行了,或者測試兩種,觀察一下其中的規律,看有沒有漏洞存在,可千萬別1-100塊都試一下。如果一頓操作猛如虎,將系統中所有鏈接都一個個去點擊抓包分析,效率往往會低很多。

如何查看鏈接結構?我們可以把鼠標移動到要點擊的鏈接上,瀏覽器下方會顯示出來,或者點擊鏈接,查看瀏覽器地址欄中的URL,或者抓包,這些方法都可以。

PTES-情報蒐集

以上是摸索Web應用結構的一種情況,能提高我們滲透的效率。還有一種情況,就是查看特殊的目錄和文件。

何為特殊的目錄和文件?

網站後臺:/admin、/manage、/wp-login.php 等
Web管理入口:Tomcat Web管理頁面、phpmyadmin管理頁面 等
探針類文件:phpinfo.php 等
備份文件:網站源碼、數據庫、配置 等
配置文件:數據庫、服務器 等
robots.txt
其他可造成信息洩露的文件

要查看這些目錄和文件,有兩種方法:一是手工構造,利用自身經驗以及之前蒐集到的信息,構造路徑,查看目錄和文件是否存在;二是利用字典跑出來。蒐集這些目錄和文件有什麼用,應該不用我說明了吧?

可用於目錄/文件蒐集的工具有:Burpsuite、DirBuster、google等。

郵箱/電話/工號/...

幾乎所有的網站都存在登錄功能。要想登錄系統,兩種辦法:一是利用其他漏洞登錄,二是老老實實輸入賬號密碼。

第二種方法也包含兩種情況:暴力破解、明確獲取到賬號密碼,這都涉及到郵箱/電話/工號等信息的蒐集。

如果明確獲取到了賬號密碼,這當然是幸運的;如果沒有明確獲取到賬號密碼,我們也可以根據蒐集到的郵箱/電話/工號等信息,去發現命名規律,然後生成字典去爆破。

去年在給聯通還是電信某個系統測試的時候,登錄頁面明確提示使用工號登錄,查看系統相關源碼,沒有發現工號的蹤影。我在網上查了一下,工號是4位數,然後利用登錄頁面的用戶枚舉漏洞,使用burpsuite的Intruder模塊,從1111-9999中獲取到了幾個系統存在的賬號,然後利用字典爆破出了密碼,使用的是弱密碼,可能是測試賬號忘記刪除了。如果不仔細蒐集信息,使用字母字典或者不是4位數的數字字典,那可能永遠都跑不出賬號。

可用於郵箱信息收集的工具有:whois、The Harvester等。

github

作為全球最大的“同性社交”網站,github包含了海量的信息。這些信息中,不乏大量的“個人社交”信息。

PTES-情報蒐集

魯迅說過:“朋友多了路好走”。當你無路可走的時候,不妨出來交交朋友。像上面的截圖,用戶名、密碼、IP地址、端口、數據庫名直接告訴你,都不需要去SQL注入,一條明路就這麼出現了。

當然,除了github,還有其他“社交”網站:gitee、coding等。

04 主機


相對Web應用,主機層面主要關注端口開放情況以及端口banner。

服務器通過不同端口向用戶提供不同的服務,服務器就像一座房子,而端口就是一扇扇門,通過門進出房間(請求與響應),不同的門對應不同的房間。

每多開放一個端口,就多開一扇門,小偷打開門進入房子的成功率就高一分。當然,小偷需要開鎖才能打開門,該用什麼方式開鎖,取決於鎖的種類以及鎖的安全級別,這些都能在端口號和端口banner中獲取。

端口

每臺服務器都有65536個端口,端口號範圍:0~65535。不同的端口對應不同的服務:

FTP:21
SNMP:161
SMB:445
rsync:873
redis:6379
memcache:11211

有一定基礎的校友看到這些端口,應該能明白我想表達什麼:FTP匿名登錄、SNMP弱口令、給我哭、未授權、未授權、DRDOS。

設想一下,你在給客戶測試準備上線的管理系統,你測試了半個月,Web應用竟然沒任何問題。你:開發人員真棒,上線吧。結果上線5分鐘,掛馬2000個,檢查發現上面那些端口服務器都開放了且都是默認配置。根據《網絡安全法》,你可能需要喝幾杯茶。

簡單的舉例,大家應該能明白全面蒐集信息的重要性,這也是我將情報蒐集分Web應用和主機兩個層面的原因,主機端口掃描能幫助我們發現更多可行的攻擊途徑。當然,端口漏洞遠遠不止這麼點,需要靠校友們不斷的去儲備知識和積累經驗。

可用於端口掃描的工具:nmap、nessus、shodan、censys.io等。

Banner

通常情況下,端口掃描不僅能獲取到服務器的端口開放情況,還能獲取到端口banner信息。

通過banner信息,可以獲取到服務器操作系統以及運行在其開放端口的服務的信息,包括正在運行的應用程序以及操作系統的版本。

獲取到版本有什麼用呢?這就要藉助互聯網的力量了。互聯網上有各種信息,漏洞信息也不例外,特別是各大安全站點,往往會有漏洞的詳細信息,poc、exploit等。

獲取到版本信息後,我們可以在網上查詢該版本的軟件和操作系統是否有已公佈的漏洞,是否有poc和exploit,進而去驗證和利用漏洞。

可用於banner獲取的工具:telnet、nmap、netcat、shodan、censys.io等。

05 結語


情報蒐集的方法和技術遠遠不止這些,一篇文章是介紹不完的。這裡我只是簡單的介紹情報蒐集的一些思路,起到一個拋磚引玉的效果,希望校友們能夠發散思維,形成自己的一套蒐集方案。

篇幅問題,細節不再深究,後續我再一個一個給大家講解。不要小看情報蒐集,組合發散延伸,會讓你在滲透後續階段如虎添翼。


分享到:


相關文章: