《黑客秘笈——滲透測試實用指南》—第2章2.3節 外部或內部的主動式信息收集...

本節書摘來自異步社區《黑客秘笈——滲透測試實用指南》一書中的第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個低級別警告。


1ad074090c44fd2e30aeb6c5da60bc3b83949ac5


a147aedf7470816c895b16eaf65e22a367788884

這兩個例子說明這兩款程序有很大差別。大致進行比較,就會發現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)。


ff59f2cc52258df303121f7cf4ae07afbd906683


afb477102c743c39cf66ef3e0c3e7285d4ccd861

旗標里暗含著“這臺主機存在可利用的漏洞”或“這臺主機已經被攻陷”的信息。喔!我們看到了含有scada信息的旗標,它代表該主機可能與電信網格系統有關……有沒有那些與終端服務有關的旗標呢?旗標信息確實可以揭示出哪些網絡服務存在缺陷,繼而可獲取該設備的普通(非特權)shell。

我事先寫好了一個查詢數據庫的腳本程序,它可以檢索特定類型的操作系統、應用程序版本或者其他信息。在評估規模較大的網絡時,這個腳本可以提高查詢效率。例如,我使用正則表達檢索IIS有關的旗標信息,可以得到圖2.12所示的結果。


6ce3aad13d81623dec9015fd20f958aaafbf7570

這種方法可以快速地抓取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所示。


ab07c33041fe9782e4b5ce624b26ca73670cea4f

在報告文件里,可以看到很多網頁的屏幕快照。它以網頁形式提供了與服務器、日期、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。
本文僅用于學習和交流目的,不代表異步社區觀點。非商業轉載請注明作譯者、出處,并保留本文的原始鏈接。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456637.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456637.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456637.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Storm集群的安裝及簡單使用

目錄前言&#xff1a;1、集群部署的基本流程2、Storm常用操作命令&#xff08;了解&#xff09;3、Storm集群的進程及日志熟悉&#xff08;知道對應的日志的位置出了問題知道去哪找原因&#xff09;4、Storm源碼目錄分析&#xff08;重要&#xff09;總結&#xff1a; 目錄 前…

【python】錯誤、異常和文件---復習筆記

錯誤、異常和文件 1. 異常處理 錯誤指的是代碼有語法問題&#xff0c;無法解釋運行&#xff0c;必須改正后才能運行 如果代碼沒有語法問題&#xff0c;可以運行&#xff0c;但會出運行時的錯誤&#xff0c;例如除零錯誤&#xff0c;下標越界等問題&#xff0c;這種在運行期間…

關于使用百度ueditor時的一些問題

本來這些問題直接在百度貼吧里回答不就完事了,可是好死不死的,百度貼吧里老出現 未知錯誤&#xff0c;錯誤號&#xff1a;230274 看來還是算了,自己做一個隨筆記錄一下好了 關于我們獲取里面的內容時,老是會有一個<p>來包著,而且還老是多出來一個<br/> 這邊是這么處…

Storm的通信機制

目錄前言&#xff1a;1、Worker進程間通信原理2、Worker進程間技術(Netty、ZeroMQ)3、Worker 內部通信技術(Disruptor)總結&#xff1a; 目錄 前言&#xff1a; 這篇文章&#xff0c;博客主要介紹下Storm中Worker進程間和進程內部通信的原理和技術。整篇內容僅供了解&#x…

《Windows PowerShell實戰指南(第2版)》——1.4 搭建自己的實驗環境

本節書摘來自異步社區《Windows PowerShell實戰指南&#xff08;第2版&#xff09;》一書中的第1章&#xff0c;第1.4節&#xff0c;作者&#xff1a;【美】Don Jones&#xff08;道瓊斯&#xff09; , Jeffery Hicks&#xff08;杰弗瑞希克斯&#xff09;著&#xff0c;更多章…

已解決]求問not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9為什么不等于0呢???

not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9 ----> (not 1&#xff09;)or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9) ----> 0 or 0 or 4 or 6 or 9 ----> 0 or 4 or 6 or 9 ----> 4 or 6 or 9 4

C#外圍工具資源

1、MATH.NET數學庫:可以用于 矩陣計算方程求根插值擬合。。。2、轉載于:https://www.cnblogs.com/liq07lzucn/p/6227443.html

Storm程序的并發機制原理總結

文章目錄目錄前言&#xff1a;1、概念2、配置并行度總結&#xff1a;目錄 前言&#xff1a; 為了在以后的實踐中提高Storm程序執行的效率&#xff0c;我們還是有必要了解下對應的Storm程序的并發機制。&#xff08;哈哈&#xff0c;雖然以博主小菜鳥的水平還沒有接觸到這種提…

《無線網絡:理解和應對互聯網環境下網絡互連所帶來的挑戰》——第2章 無線生態系統 2.1無線標準化過程...

本節書摘來自華章出版社《無線網絡&#xff1a;理解和應對互聯網環境下網絡互連所帶來的挑戰》一書中的第2章&#xff0c;第2.1節&#xff0c;作者&#xff1a;&#xff08;美&#xff09;杰克L.伯班克&#xff08;Jack L. Burbank&#xff09;等著&#xff0c;更多章節內容可以…

Flask模板01

模板 在前面的示例中&#xff0c;視圖函數的主要作用是生成請求的響應&#xff0c;這是最簡單的請求。實際上&#xff0c;視圖函數有兩個作用&#xff1a;處理業務邏輯和返回響應內容。在大型應用中&#xff0c;把業務邏輯和表現內容放在一起&#xff0c;會增加代碼的復雜度和…

★數學上最大的數是多少?

數學上最大的數是多少&#xff1f; 怪羅科普 收藏(282)| 閱讀(117678)人類已經使用數長達千年之久。普遍認為&#xff0c;數的概念最先源于史前人類開始使用手指進行計數。這最終演變成符號語言&#xff0c;然后在沙子、墻壁和木頭等物體上作標記。 我們已經向前發展了一大步&…

Flask模板02

3.4 控制語句 常用的幾種控制語句&#xff1a; 模板中的if控制語句 app.route(/user) def user():user dongGereturn render_template(user.html,useruser)<html><head>{% if user %}<title> hello {{user}} </title>{% else %}<title> welc…

Storm任務提交過程及目錄樹介紹

目錄前言&#xff1a;1、Storm 任務提交的過程2、Storm相關的目錄樹總結&#xff1a; 目錄 前言&#xff1a; 對于任何一個組件來說&#xff0c;了解它相關的任務提交的過程是非常有必要的&#xff08;畢竟生產中遇到一些Bug時&#xff0c;你如果知道內部執行的過程&#xf…

《Adobe InDesign CS6中文版經典教程》—第1課1.5節修改文檔的縮放比例

本節書摘來自異步社區《Adobe InDesign CS6中文版經典教程》一書中的第1課1.5節修改文檔的縮放比例&#xff0c;作者【美】Adobe公司,更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 1.5 修改文檔的縮放比例Adobe InDesign CS6中文版經典教程InDesign中的控件讓用戶能…

隨機生成一定范圍的隨機數

function randomNum(min,max) { return Math.ceil(Math.random()*(max-min)min); } min,max最小最大范圍數字。轉載于:https://www.cnblogs.com/kingzlz/p/6229586.html

【python】Flask視圖

2.1 從 Hello World 開始 Flask程序運行過程&#xff1a; 所有Flask程序必須有一個程序實例。 Flask調用視圖函數后&#xff0c;會將視圖函數的返回值作為響應的內容&#xff0c;返回給客戶端。一般情況下&#xff0c;響應內容主要是字符串和狀態碼。 當客戶端想要獲取資源…

大數據之Kafka入門簡介

目錄前言&#xff1a;1、Kafka是什么2、JMS是什么3、Kafka核心組件&#xff08;重點&#xff09;總結&#xff1a; 目錄 前言&#xff1a; 作為流式計算中的一個組件&#xff0c;對于它的組成以及運行的原理&#xff0c;學習者也需要相關的了解。以下主要簡單介紹了kafka是什…

oracle的安裝與plsql的環境配置

1&#xff0c;首先得有oracle的安裝包和plsql的安裝包&#xff0c;安裝包地址可見百度云 http://pan.baidu.com/s/1miTqhmg 2.解壓下來進入0817賬套&#xff0c;找到set.exe文件&#xff0c;雙擊安裝即可 注意的是安裝的時候有兩個目錄是要自己創建的&#xff0c;否則安裝不成功…

如何在Docker容器中運行GUI程序

如何在Docker容器中運行GUI程序 各位&#xff0c;今天我們將學習如何在Docker之中運行GUI程序。我們可以輕易地在Docker容器中運行大多數GUI程序且不出錯。Docker是一個開源項目&#xff0c;提供了一個打包、分發和運行任意程序的輕量級容器的開放平臺。它沒有語言支持、框架或…

【python】Get與Post的區別?(面試官最想聽到的答案)

GET和POST是HTTP請求的兩種基本方法&#xff0c;要說它們的區別&#xff0c;接觸過WEB開發的人都能說出一二。 最直觀的區別就是GET把參數包含在URL中&#xff0c;POST通過request body傳遞參數。 你可能自己寫過無數個GET和POST請求&#xff0c;或者已經看過很多權威網站總結出…