本節書摘來自異步社區《黑客秘笈——滲透測試實用指南》一書中的第2章2.3節 外部或內部的主動式信息收集,作者【美】Peter Kim(彼得 基姆),更多章節內容可以訪問云棲社區“異步社區”公眾號查看。
2.3 外部或內部的主動式信息收集
黑客秘笈——滲透測試實用指南
主動式信息收集就是通過主動掃描確認目標安裝的操作系統和網絡服務,并發現潛在漏洞的過程。即主動式信息收集必定對指定的網絡段進行掃描。無論是在網絡的內部還是外部進行掃描,主動式信息收集都要采用得當的掃描工具。
本書不會詳細介紹掃描器的運行方法,畢竟大多數讀者已經非常熟悉掃描工具了。如果您尚未掌握掃描工具的使用方法,我推薦您用社區版的Nexpose,或者用試用版的Nessus進行練習。在家里或者實驗室里進行網絡掃描,了解這些工具獲取可發現哪些類型的信息,使用認證信息進行掃描的方法,以及網絡上所產生的流量類型。這些掃描程序會頻繁地觸發IDS/IPS告警。在熟悉常見的掃描工具之后,我們可開始更深入地了解這種方式的信息收集。
2.3.1 網絡掃描的流程
本節講述進行高效掃描的方法,它涉及掃描的工具、流程和相關技術。我的掃描流程大體分為以下幾個步驟。
用Nexpose/Nessus掃描。
用Nmap掃描。
用自定義的Nmap掃描。
用PeepingTom抓取屏幕。
1.用Nexpose/Nessus進行網絡漏洞掃描
這兩款工具可謂大名鼎鼎,它們都是速度最快、效果最佳的掃描工具。通常,我會對它們進行詳細的調整,然后使用一款工具進行詳細的安全檢查。如果時間緊迫,我會首先使用以前的配置文件進行掃描,僅檢測已知的安全漏洞,然后使用默認的預設配置進行第二次掃描。雖然第一次掃描的速度很快,但是往往只會得到一些重要的發現。
先來大致說一下漏洞掃描器。在第1章,我推薦您購買Nexpose或者Nessus 掃描程序。至于哪一個掃描器的品質更佳,就是見仁見智的問題了。我確實用過絕大部分的商業掃描程序,但是這些程序里沒有一款可稱得上是完美的或者是極致的解決方案。若將這些工具進行比較,總會發現它們功能都不完備,總是或多或少地缺少點什么。所以,我們最好采用多個工具進行漏洞掃描。當然,預算往往不會允許我們什么都買。
如果只能從中選一,那我推薦Tenable的Nessus漏洞掃描器。從它能掃描的IP地址數量以及費用(1500美元)來進行綜合評定,還是Nessus比較劃算。而Nexpose的咨詢許可證價格是Nessus的兩倍,所能掃描的IP數量也有限制。不過您最好還是在購買前確認一下價格,因為行情可能隨時不同。
本文將通過案例說明多個掃描工具的必要性。例如,使用專業版的Nexpose對我的網站進行掃描。在掃描時,我指定了標準的漏洞掃描配置文件,并沒有進行深入的Web應用程序檢測。Nexpose給出了4個嚴重的警告,詳細情況如圖2.8所示。
然后,我們使用專業版的Tenable Nessus掃描程序進行相同的掃描,并指定了相似的配置文件。可見,掃描結果大有不同。僅僅對我的網站進行掃描,就能存在這么大的區別。可想而知,在大規模的掃描中,掃描結果也不會更為接近。如圖2.9所示,Nessus發現了3個中級的警告,5個低級別警告。


這兩個例子說明這兩款程序有很大差別。大致進行比較,就會發現Nexpose檢測出了Wordpress路徑泄露漏洞,而Nessus沒能發現這一問題。
雖然掃描器很有用,也是進行網絡滲透的必備工具,但是您要了解它們的優點和局限性。
Nmap——抓取旗標(banner)
在抓取旗標之前,我通常會調整掃描選項,使用Nmap程序對常見端口進行操作系統和網絡服務的檢測掃描。如果時間充裕,我還會對所有的65535個端口進行掃描。在Nmap進行常規掃描的同時,我還會指定它運行一個抓取旗標的Nmap腳本。后文將會對此進行說明。
進行完整的漏洞掃描會很耗時間。我們可以利用Nmap腳本,在端口掃描的同時,抓取基本的端口信息。這些信息也有助于我們制定更具針對性的攻擊計劃。
希望您不僅會用Nmap程序,更要了解它的原理。我認為Namp是一款具備模塊化特性的快速而高效的掃描工具,足以滿足常規的掃描需求。推薦您參考Fydor撰寫的介紹Nmap的圖書(http://www.amazon.com/Nmap-Network-Scanning-Official-Discovery/dp/0979958717)。本節重點介紹使用Nmap識別操作系統和網絡服務的方法,所以我最關注的問題是如何掃描所有的65535個端口,以及如何檢測開放端口并獲取旗標信息。
這種方法還可用來發現同一個網絡環境發生的具體變化。在客戶要求您每月都進行一次例行掃描的時候,這種方法正好可以非常快速簡單地發現網絡情況的具體變化(需要一些輔助腳本)。
在前文的安裝階段,我們安裝了HD Moore的banner-plus.nse腳本。這也是它在映射整個網絡時所用的腳本 1。它提供了一種可以快速識別開放端口旗標頁面信息的方法。運行掃描的命令大致如下:
nmap —script /usr/share/nmap/scripts/banner-plus.nse —min-rate=400 —min-parallelism=512 -p1-65535 -n -Pn -PS -oA/opt /peepingtom/ report
這些選項的含義如下所示。
—script 設置安裝階段下載的banner-plus腳本的位置。
—min-rate 保證掃描會在一定時間內結束。
—min-parallelism 設置并行掃描的數量。
-p1-65535 對所有的端口(即65535個端口)進行掃描。
-n 禁用DNS解析(可以加快掃描速度)。
-Pn 禁用ping(許多服務器會過濾掉外網的ping請求)。
-PS 使用TCP SYNping的方式進行主機探測。
-oA 導出所有類型的報告。
適當調整—min-rates和—min-parallelisms選項,可獲得最佳的網絡性能和穩定性(更多的信息可參考http://nmap.org/book/man-performance.html)。我用這些數據來創建了一個簡單的視圖,可以查看服務、漏洞的版本以及其他一些具體的信息。Nmap可以把掃描以各種不同的文件格儲存在/opt/peepingtom/文件夾中。在稍后介紹有關截屏的時候,我們再詳細介紹它的掃描結果。這一小節將演示這些數據的使用方法。
下一節將展示快速獲取旗標數據信息,以及在掃描結果中進行快速檢索的方法。為了獲取最快的檢索速度,我的后臺數據庫采用的是MongoDB程序,而前端數據檢索的功能由PHP實現。此外,本例還用到了Python語言的腳本程序,用它解析Nmap生成的XML文件,繼而把有關數據儲存到數據庫中。之后,我編寫了前端的PHP查詢頁面。因為我們掃描的目標是IP很多的16位子網,所以首要任務就是提高旗標信息的檢索速度。如果時間充裕,今后我會將把這個Web應用程序放在公網上。日后,您只要上傳xml文件,就可以看到檢索結果了。
我建立了一個滿足上述需求的程序,并且給它取名為名為internet-scan。它可以快速地檢索特定的旗標、端口和IP地址。更棒的是,它可以查詢漏洞系統的旗標頁面。雖然的確有人會偽造旗標信息,但是以往的滲透測試經歷表明,旗標信息還算得上是可靠的判斷依據。internet-scan的初始化頁面如圖2.10所示。
在收集到所有旗標信息之后,我們可使用正則表達進行快速檢索,搜索那些有漏洞可利用的網絡服務。我會采取多種方式對旗標信息進行排序。例如,在某次對16位子網(CIDR表示法)的掃描結果中,我通過這種方法篩選出了以下這些旗標(見圖2.11)。


旗標里暗含著“這臺主機存在可利用的漏洞”或“這臺主機已經被攻陷”的信息。喔!我們看到了含有scada信息的旗標,它代表該主機可能與電信網格系統有關……有沒有那些與終端服務有關的旗標呢?旗標信息確實可以揭示出哪些網絡服務存在缺陷,繼而可獲取該設備的普通(非特權)shell。
我事先寫好了一個查詢數據庫的腳本程序,它可以檢索特定類型的操作系統、應用程序版本或者其他信息。在評估規模較大的網絡時,這個腳本可以提高查詢效率。例如,我使用正則表達檢索IIS有關的旗標信息,可以得到圖2.12所示的結果。

這種方法可以快速地抓取65000多端口的旗標,繼而利用internet-scan對旗標進行快速解析,節省了大量的時間。
2.用Peeping Tom進行截屏
接下來,我們再次處理Nmap的掃描結果。在進行了大范圍的端口掃描之后,滲透測試人員面臨的首要問題是如何組織數據。我們要從海量數據中判斷攻擊哪些目標比較容易得手,哪些目標是應該首先攻擊的目標。如果目標網絡承載著100多個網站,那么人工訪問的方式絕對不可取。使用鼠標逐一單擊訪問的方法不僅十分耗時,而且可能找不到任何漏洞。多數網站的絕大多數網頁都不是滲透的對象,我們大體看一眼就可以評判其對于滲透測試的價值。Peeping Tom正是這樣一個輔助我們評判網頁滲透價值的自動化工具。它可以對指定IP和指定端口的所有HTTP(s)服務進行快照,以一種簡單易讀的方式展現出來。
這意味著,使用工具下載了網站的HTML頁面之后,只需要對頁面進行簡要的評估就可篩選出較易滲透的網站,或者更值得投入精力進行滲透的網站。請注意,滲透測試通常就是在跟時間賽跑,因為我們沒有太多的時間可以浪費。
其他程序的輸出數據,要經過整理和處理才能傳給Peeping Tom使用。Gnmap.pl腳本可以把前面的Nmap結果處理為Peeping Tom所需的IP列表2。此時,我們需要使用以下命令:
cd /opt/peepingtom/
cat report.gnmap | ./gnmap.pl | grep http | cut -f 1,2 -d "," | tr "," ":" > http_ips.txt
上述命令可篩選出運行著HTTP服務的IP地址,并把整理結果保存到http_ips.txt文件中。而后,我們可以用Peeping Tom處理這個文件,對網站內容進行截屏快照。運行Peeping Tom的命令如下:
python ./peepingtom.py -p -i http_ips.txt
使用Peeping Tom處理Nmap掃描結果的情況如下所示。請注意,Peeping Tom確實可能對部分HTTP服務無能為力。遇到這種情況,測試人員只能手動訪問那些網站了。
python ./peepingtom.py -h
Usage: peepingtom.py [opt ions]
peepingtom.py - Tim Tomes (@LaNMaSteR53) (www.lanmaster53.com)
Options:
—version show program's version number and exit
-h, —help show thi s help message and exit
-v Enable verbose mode.
-i INFILE File input mode. Name of input file. [IP: PORT]
-u URL Single URL input mode. URL as a string.
-q PyQt4 capture mode. PyQt4 python modules required.
-p Phantonjs capture mode. Phantomjs required.
python ./peepingtom.py -p -i http_ips.txt
[*] Storing data in ‘131229_230336/’
[*] http: //192.168.58.20 200. Good.
[*] https: //192.168.58.20 200. Good.
[*] http: //192.168.58.21 403. Good.
[*] https: //192.168.58.21 <Connect ion refused>. Visit manually from report.
[*] http: //192.168.58.25 <No route to host>.Visit manually from report.
[*] https: //192.168.58.25 <No route to host>.Visit manually from report
[*] http: //192.168.58.35 <Connect ion refused>.Visit manually from report.
[*] http: //192.168.58.48 200. Good.
[*] https: //192.168.58.48 200. Good.
待Peeping Tom處理完畢,它會在peepingtom的文件夾內新建一個以時間戳命名的文件夾。該文件夾中會有多個圖片文件和一個名為report.html的文件。我們使用瀏覽器打開report.html,很容易就能知道哪些頁面有滲透價值,哪些頁面沒有滲透價值。它的掃描結果如圖2.13所示。

在報告文件里,可以看到很多網頁的屏幕快照。它以網頁形式提供了與服務器、日期、HTTP應答相關的信息。在對100多個Web服務器進行滲透測試的時候,Peeping Tom在幾分鐘內就能完成所有的處理,必定會大大地簡化您的操作。
那么您到底要重點關注什么呢?這恐怕就是見仁見智的問題了,并沒有對所有人都適用的答案。對我而言,我通常會對以下內容感興趣:
Apache Tomcat;
需要認證的頁面;
JBoss;
網絡設備的默認網頁;
ColdFusion;
內容管理系統(CMS);
WordPress;
Wikis;
Joomla;
版權信息早于2012年的網頁;
測試中或者開發中的網站;
VoIP頁面。
關注這些信息的原因是,它們通常都會含有漏洞,而且這些漏洞可能導致系統被攻陷或者數據被非法訪問的問題。Apache、JBoss、ColdFusion程序都有大量的著名漏洞,其中部分exploit程序的源代碼可謂觸手可及。
舉例如下。
ColdFusion的案例:http://www.exploit-db.com/exploits/25305/。
JBoss的案例:http://www.rapid7.com/db/modules/exploit/multi/http/jboss_maindeployer。
Apache的案例:http://www.rapid7.com/db/modules/exploit/multi/http/tomcat_mgr_deploy。
我還對那些需要認證的網站格外感興趣。認證這一現象意味著網站的應用程序會有額外的功能,而且其Web應用程序很有可能存在安全問題或者默認的密碼。
從這些信息入手,您就能快速發現漏洞,并且大致了解您所測試的網絡。雖說本書不是詳細的網絡掃描指南,但是借助這種方法,您可以進行更有效、更快速的網絡掃描。
1https://community.rapid7.com/community/infosec/sonar/blog/2013/10/30/project-sonar-one-month-later。
2http://pauldotcom.com/wiki/index.php/Episode291。
本文僅用于學習和交流目的,不代表異步社區觀點。非商業轉載請注明作譯者、出處,并保留本文的原始鏈接。