前言:
今天將第二章前四節整理出來了,后面四節弄完再發出來,感覺這個分享形式也蠻不錯,每天學習一點點,慢慢就進步一大點。第二章主要講述了一些信息收集的方法及處理。今天分享的四節是標紅色的部分:
第二章:偵察
介紹
被動信息收集
使用Recon-ng收集信息
使用Nmap掃描和標識服務
標識web應用程序防火牆
確定HTTPS加密參數
使用瀏覽器的開發工具分析和更改基本行為
獲取和修改cookie
利用robots.txt
一起翻譯的老哥們:
大T,
博客鏈接:http://thr0cyte.xyz/
Gr33k,
博客鏈接:http://www.zhanghuijun.top/
花花,
博客鏈接:http://to0ls.cn/
MrLee,
博客鏈接:https://www.tcp.red/
R1ght0us,
博客鏈接:http://www.r1ght0us.xyz/
7089bat,只有此公眾號。
介紹
不管是針對網絡還是web應用程序,滲透測試都有一套相同的流程。這一套流程可以增加我們發現漏洞的可能性,並且利用到盡可能多的漏洞來影響系統。例如:
-
信息收集
-
資產列舉
-
漏洞利用
-
維持訪問
-
清理痕跡
在滲透測試中,信息收集是測試人員必須做的一件事情,信息收集需要收集存在於網絡中的資產,如防火牆、IDS、IPS等。還要盡可能收集所有有關公司、網絡、員工的信息。針對於web滲透測試,這一階段主要講如何收集web應用,數據庫,用戶和服務器的信息。
信息收集的質量取決於滲透測試的成功與否。我們得到的信息越多,測試的目標就越多。就有更多的選擇去發現漏洞並利用。
一.被動信息收集
被動信息收集是指不影響目標系統的前提下獲得信息,比如在搜索引擎,數據庫緩存等這樣的第三方機構收集。
在這節中,我們將從大量在線服務中獲取信息,[這些公共來源的數據集合也被稱為開源智能(OSINT)]。 被動信息收集可以在測試公共網站或應用中摸清我們目標的一個大概情況並發現對滲透測試人員有用的信息。
准備
為了在公共資源中獲取信息,我們需要讓kali虛擬機連接互聯網,並配置成NAT網絡地址轉換模式。此步驟可以參考第一章中所介紹的方法,它會教你設置kali及靶機環境,並且設置NAT模式代替Host-only模式。
怎么做…
我們將用zonetransfer.me此域名作為我們的目標,zonetransfer.me是Robin Wood在digi.ninja網站創建的,它可以演示允許公共DNS區域傳輸的后果。
1. 我們首先使用whois獲取它的注冊信息:
# whoiszonetransfer.me
2. 另外一個工具是dig,它可以獲取域名信息和DNS解析信息。
# dig nszonetransfer.me
3. 一旦我們獲得了DNS服務器的信息,就可以嘗試區域傳輸攻擊來獲取服務器解析的所有主機名。仍然使用dig:
# dig axfr@nsztm1.digi.ninja zonetransfer.me
很幸運,dns服務器支持區域傳輸,我們獲得了一個完整的子域列表以及解析情況。接着就可以選擇一個脆弱的目標來完成滲透攻擊了。
4.現在可以使用theharvester來獲取目標網站的郵箱、主機名、IP地址信息。
# theharvester -b all -d zonetransfer.me
5.如果想不直接查詢服務器來獲得網站使用的軟件版本信息,可以使用Netcraft工具。登陸https://toolbar.netcraft.com/site_report輸入想查詢的域名即可:
6.獲得一個網站以前的頁面信息在測試中也很有用。可以在https://archive.org/web/web.php:
這個網站回溯網站以前版本的靜態副本。
如何工作…
在這節教程中,我們利用了大量不同工具來收集目標信息。在linux命令行中使用whois查詢了網站的注冊信息,還獲得了網站dns服務器的信息和管理員的個人信息,比如管理員的郵箱、公司名、電話等等。Whois還可以查詢ip地址的歸屬者信息。接着,我們使用了dig獲取了目標dns服務器的信息,並使用區域傳輸獲得了所有子域名(dig區域傳輸只適用於沒有正確配置的dns服務器)
通過使用harvester,獲得了有關於目標域的郵箱、主機名和ip地址,其中-b all選項指使用所有支持的查詢,-d后面指定搜索的目標域
然后我們使用netcraft獲得了目標網站使用的技術信息和更新以前的情況。這使我們能夠在進一步測試中不再查詢真實站點。
Wayback machine網站是一種存儲網站靜態副本並保存記錄的服務器。在這里,可以看到舊版本中發布的信息,有時候對web應用的更新可能會泄露敏感數據。
其他
此外,我們可以使用谷歌先進的搜索選項不直接訪問來尋找目標系統的敏感信息。例如:
site: zonetransfer.me intext:password
我們還可以在最近發現漏洞的頁面中查找目標域的存在。在這些網站上面可以查找到一些泄露的信息或成功的攻擊:
-
openbugbounty.org(只有xss和csrf)可以利用谷歌語法site: openbugbounty.org intext:目標網站 查找相關漏洞
-
pastebin.com 匿名黑客會在上面發布攻擊過程
-
zone-h.org 有些惡意黑客會來這里吹噓他們的成就,主要使篡改網站
二.使用Recon-ng收集信息
Recon-ng是一種信息收集工具,它使用許多不同的來源來收集數據,例如:Google,Twitter和Shodan。
在本文中,我們將學習Recon-ng的基礎知識,並使用它來收集關於我們的目標的公共信息。
准備
盡管Recon-ng已經在Kali Linux中安裝,但它的一些模塊需要API密鑰用於查詢在線服務。此外,擁有API密鑰將允許您在某些服務中執行更高級的搜索或避免查詢限制。可以通過在每個搜索引擎上完成注冊來生成這些密鑰。
怎么做…
讓我們做一個基本的查詢來說明Recon-ng的工作原理:
1.要從Kali Linux啟動Recon-NG,請使用“應用程序”菜單(應用程序|01-信息收集|recon-ng)在終端中鍵入recon-ng命令:
2.我們將看到一個命令行界面。查看我們的模塊,我們可以鍵入show modules命令。
3.假設我們要搜索域名的所有子域名和DNS服務器不響應區域傳輸。我們可以暴力破解子域名; 要做到這一點,我們首先加載brute_hosts模塊:use recon/ domains-hosts/brute_hosts。
4.要了解使用任何模塊時需要配置的選項,我們可以使用show options命令。
5.要為選項指定值,我們使用命令set:set source zonetransfer.me。
6.一旦我們設置了所有選項,我們就會發出run命令來執行模塊:
7.暴力猜解完成需要一些時間,它會顯示很多信息。完成后,我們可以查詢Recon-ng數據庫以獲取發現的主機(show hosts):
它是如何工作的…
Recon-ng是查詢搜索引擎、眾多社交工具和API的包裝器媒體,通過互聯網檔案和數據庫,以獲取有關網站、網絡信息、應用程序、服務器、主機、用戶、電子郵件地址等。它的工作原理是整合不同功能的模塊,例如Google、Twitter、LinkedIn或Shodan等,或者對DNS服務器執行查詢。它還具有將結果導入數據庫或生成各種格式報告的功能,例如HTML,MS Excel或CSV。
另請參閱…
還有另一個非常有用的信息收集和開源智能工具,默認包含在Kali Linux,是Maltego(https://www.paterva.com/web7/buy/maltego-clients/maltego-ce.php),許多滲透測試人員較為喜歡的一款工具。此工具提供圖形用戶界面顯示所有內容元素(電子郵件地址,人員,域名,公司等)在圖中,可視地顯示元素之間的關系。 例如:代表一個人的節點將通過一條線連接到該人的電子郵件地址以及該電子郵件地址所屬的域名。
三.使用Nmap進行掃描和識別服務
Nmap是世界上使用最多的端口掃描器,它可以用於識別活動主機、掃描TCP和UDP開放端口、檢測防火牆、獲取在遠程主機上運行的服務版本,甚至使用腳本發現和利用漏洞。
在此小節中,我們將使用Nmap來識別在目標應用服務器上運行的所有服務及版本,為了方便學習,我們將在對Nmap的幾次演示中進行此操作,也可以使用一條命令完成。
准備
我們需要讓我們的靶機 vm_1 運行起來
如何工作…
本小節的所有任務都可以通過一個命令來完成,為了更好的說明它們的功能和結果,這里分別展示了它們:
1. 首先,我們想要知道服務器是否響應ping,或者主機是否是啟動狀態:
#nmap –sn 192.168.56.11
2. 現在,我們可以知道這個主機是在啟動的狀態,讓我們看看它的哪些端口是打開的:
#nmap 192.168.56.11
3. 現在我們將告訴Nmap向服務器詢問它正在運行的服務版本,並且據此來猜測操作系統:
# namp–sV –o 192.168.56.11
我們可以看到,我們的 vm_1 很可能是一個Linux操作系統(Nmap無法准確的確定它)。它使用Apache 2.2.14 web服務器、PHP 5.3p1、Jetty 6.1.25等等。
它是如何工作的…
Nmap是一個端口掃描器;這代表着它將數據包發送到指定IP地址上的一些TCP或UDP端口,並且檢查是否有響應。如果有,則表示端口是開放的;即服務在該端口上運行。
在第一條命令中,對於 –sn 參數,我們指示Nmap只檢查該服務器是否響應ICMP請求(或者是ping)。我們的服務器給出了響應,所以該主機是在存活狀態的。
第二條命令是調用Nmap最簡單的方法;它只指定目標IP,它所做的是ping服務器;如果它做出響應,Nmap會向一個包含1000個TCP端口的列表d送探測,以查看哪個端口以及如何執行,然后它會報告顯示哪些端口是打開的結果。
第三條命令在第二條命令的基礎上添加了以下兩個參數:
-
-sV:請求找到每個開放端口banner-header或自我標識,也就是每個端口運行服務的版本
-
-o:告訴Nmap嘗試使用從開放端口和版本信息的信息來猜測目標上運行的操作系統。
其他功能
使用Nmap時的其他有用參數如下所示:
-
-sT:默認情況下,當它作為root用戶運行時,Nmap使用一種稱為SYN掃描的掃描類型。使用這個參數,我們強制掃描器執行完全連接掃描,它速度較慢,並且會在服務器日志中留下一條記錄,但不太可能被入侵檢測系統檢測到或被防火牆阻止。
-
-Pn:如果我們已經知道主機時存活的但是沒有響應ping,我們可以使用這個參數告訴Nmap跳過ping測試並掃描所有指定的目標(假設它們已經啟動)
-
-v:這是冗長模式。Nmap將展示更多關於它正在掃描中的信息。這個參數可以在同一個命令中多次使用,使用的越多,得到的反饋就越多(-vv或-v –v –v –v )
-
-p:N1,N2,…N3:如果要測試特定端口或一些非標准端口,我們可能需要使用這個參數,其中N1到Nn時我們希望Nmap掃描的端口號。例如,要掃描21、80到90和137,參數獎是-p 21,80-90,137。另外,使用-p- Nmap將掃描0到65之間的所有端口和536端口
-
--script=script_name:Nmap包含許多有用的腳本,用於漏洞檢查,掃描或者識別,登錄測試,命令執行,用戶枚舉等等。使用此參數告訴Nmap在目標的開放端口上運行腳本。您可能想了解以下Nmap使用的一些腳本:https://nmap.org/nsedoc/scripts/。
另請參閱
盡管Nmap是最流行的,但它並不是唯一可用的端口掃描器,根據不同的環境,它可能不是最好的選擇。Kali Linux中還有其他的一些替代方案,例如:
-
Unicornscan
-
Hping3
-
Masscan
-
Amap
-
Metasploit’s scanning modules
四.識別Web應用防火牆
互聯網應用程序防火牆是一種檢查發送至網絡服務器的程序包的設置或軟件,它識別和阻止一些基於正則表達式或簽名的惡意程序包。
如果一個未探測到的WAF阻止了我們的請求或禁止了我們的IP地址我們就會在滲透測試中遇到很多問題。當我們進行滲透測試時偵查階段必須包括探測和識別WAF,入侵監測系統和入侵預防系統等,這是為了采取必要的措施,以防被這些保護裝置阻止或禁止。
用這個方法我們就可以用不同的方法和Kai linux包含的工具在我們和目標之間去檢測和識別一個互聯網應用程序防火牆的存在。
怎么做…
有很多方法來檢測應用程序是否受到Waf和IDs的保護;在攻擊的時候被阻止和拉入黑名單是最糟糕的事情,所以我們會使用Nmap和wafw00f來確定我們的目標是否存在WAF。
1.Nmap有幾個腳本可以來測試WAF中是否存在於所有檢測到的HTTP端口.讓我們來 嘗試一下
# nmap -sT -sV -p 80,443,8080,8081 --script=http-waf-detect192.168.56.11
看起來沒有WAF來保護這個服務器
現在,我們在有防火牆保護的服務器上嘗試相同的命令。在這里,我們使用example.com來座椅虛構的名稱;可以來嘗試任何受保護的服務器。
# nmap -p 80,443 --script=http-waf-detect www.example.com
3.Nmap還有一個腳本可以幫助我們來更准確地識別正在使用的WAF。這個腳本是: http-waf-fingerprint:
# nmap -p 80,443 --script=http-waf-fingerprint www.example.com
Kali Linux中還有另一個工具,可以幫助我們來檢測識別WAF的工具,就是wafw00f
假如www.example.com是一個受WAF保護的網站:
# wafw00f www.example.com
它是怎么工作的…
WAF檢測的工作原理是向服務器發送特定的請求,然后分析響應;例如,在HTTPWAF檢測的情況下,它發送一些惡意的數據包,並且在尋找數據包被阻止,拒絕或者檢測的指示符時比較響應.HTTPWAF指紋也會出現同樣的情況,這個腳本也嘗試解釋這種響應,並且根據已知的IDSs和WAF,對其分類.同樣也適用wafw00f。
原版連接:關注下面微信公眾號,回復“資源”,即可獲取原版pdf一份。