metasploit 滲透測試筆記(基礎篇)

wyzsk發表於2020-08-19
作者: DM_ · 2014/06/04 19:40

0x00 背景


筆記在kali linux(32bit)環境下完成,涵蓋了筆者對於metasploit 框架的認識、理解、學習。

這篇為基礎篇,並沒有太多技巧性的東西,但還是請大家認真看啦。

如果在閱讀中有任何問題都可以與我郵件聯絡([email protected]

0x01 在kali中使用metasploit


在kali中使用metasploit,需要先開啟PostgreSQL資料庫服務和metasploit服務,然後就可以完整的利用msf資料庫查詢exploit和記錄了。這一點比bt5要方便很多,所以現在就放棄了bt5。

具體命令與截圖

service postgresql start
service metasploit start

enter image description here

如果不想每次開機都這樣,還可以配置隨系統啟動。

update-rc.d postgresql enable
update-rc.d metasploit enable

enter image description here

0x02 metasploit目錄結構


之所以會講到這,是因為我認為框架程式碼是用來學習的一個非常好的來源。並且metasploit是用ruby指令碼語言編寫,所以閱讀起來非常方便。在滲透,exploit編寫過程前理解框架的優勢以及大致內容則能夠快速構建出自己的工具或者找到已知可用的工具。這樣不僅有利於得到結果,也提高了效率。

這裡只介紹幾個目錄,也希望讀者能把modules下auxiliary的模組大致都看一遍。這樣有個印象也便於快速查詢。

對於工具的使用,沒有會不會的。只是有沒有發現而已。目錄大概看一遍,這個問題就差不多了吧!

enter image description here

Kali中msf的路徑為/usr/share/metasploit-framework

modules

首先看modules目錄:

enter image description here

這裡

Auxiliary:輔助模組,
encoders:供msfencode編碼工具使用,具體可以使用 msfencode –l
exploits:攻擊模組 每個介紹msf的文章都會提到那個ms08_067_netapi,它就在這個目錄下。
nops:NOP (No Operation or Next Operation) sled,由於IDS/IPS會檢查資料包中不規則的資料,所以在某些場合下(比如針對溢位攻擊),某些特殊的滑行字串(NOPS x90x90...)則會因為被攔截而導致攻擊失效,所以此時需要修改exploit中的NOPs.nops資料夾下的東西會在payload生成時用到(後面會有介紹)。比如我們開啟php的NOPS生成指令碼,就會發現它只是返回了指定長度的空格而已。

enter image description here

payloads:這裡面列出的是攻擊載荷,也就是攻擊成功後執行的程式碼。比如我們常設定的windows/meterpreter/reverse_tcp就在這個資料夾下。
Post:後滲透階段模組,在獲得meterpreter的shell之後可以使用的攻擊程式碼。比如常用的hashdump、arp_scanner就在這裡。

data

其次是data目錄:

這裡存放的是metasploit的指令碼引用檔案,重點介紹幾個檔案

enter image description here

第一個是data下js資料夾下的detect,這裡面存放的是metasploit的探針檔案。如果看過metasploit瀏覽器攻擊指令碼的程式碼,就會發現呼叫了一個js庫,然後檢查當前請求是否符合被攻擊環境。如果符合則傳送攻擊程式碼,否則中斷。Memory中主要是一些堆噴射程式碼。在大部分瀏覽器漏洞利用過程,堆噴射是一個不可或缺的過程(當然不是絕對的!)。並且不同的瀏覽器及版本間,堆噴射程式碼都有所不同。所以這裡給出的探針程式碼和堆噴射程式碼是不是一個非常好的學習資源呢? script

最後是msf下script目錄中的resource目錄:

enter image description here

這裡的rc指令碼相當於windows下的批處理指令碼,在某些情況下會有一定便捷性。比如Veil在生成免殺payload的同時也會生成一個rc指令碼,此時使用msfconsole –r xx.rc便可以快速的建立一個和payload對應的handler,亦或在攻過程中需要你反覆的set exploit,那麼就可以使用這個批處理指令碼了,而這個目錄下則是一些給定的rc指令碼,雖然你可能不習慣這樣使用,但作為改寫自己的rc指令碼的資源也不錯。

0x03 metasploit基本命令


列一些其他文章中不常提到的命令或者是我經常碰到或使用的方法。

Msfpayload

enter image description here

這是我最常用的一個命令,用來生成payload或者shellcode。

在不知道payload名稱又不想開msfconsole搜尋的時候可以用msfpayload –l |grep “windows” 這樣的命令查詢。

-o 選項可以列出payload所需的引數。

msfencode

enter image description here

msf中的編碼器,早期為了編碼繞過AV,現在我常用msfpayload與它編碼exploit的壞字串。

msfconsole

開啟metasploit的console,有個重要的引數 –r,載入resources指令碼

資料庫有關命令

hosts

enter image description here

這裡可以使用hosts查詢指定欄位的內容,可用的欄位下面有列出。或者也可以使用hosts –S “keyword” 進行搜尋。

Creds

enter image description here

Creds命令可以列出成功獲取到的資訊,比如使用者名稱密碼,資料庫密碼,開放埠及服務等。

Console中有關命令

search

enter image description here

搜尋一切可以use的模組,常用的方法是search 直接加關鍵詞,比如search 08_067,但是我們也可以根據cve編號查詢。通常用nessus掃到的漏洞都有cve資訊,這裡我們就可以這樣搜尋了。

enter image description here

spool

enter image description here

enter image description here

將螢幕輸出重定向到某個檔案中,在使用HTTP弱口令破解、,內網http目錄等不會記錄在creds中的內容時你怎樣解決查詢成功結果的?反正這個問題我快要瘋了。 要不就改寫exploit,不成功不列印,要不就重定向之後自己再grep吧。如果有好的方法,一定要分享啊!

show advanced

enter image description here

在選定一個module(exploit,payload …)之後,使用show advanced命令可以顯示關於此module的高階選項,具體內容會在後面”metasploit tricks and tips”中分享。

0x04 攻擊示例


同樣我還是選擇ms08_067這個漏洞,並且隨便輸入一個ip,演示下最基本的攻擊過程(為了讓基礎篇看起來更完整點)結束基礎篇的分享。說明:

enter image description here

從圖中也可以看出一次基本的攻擊過程大概是這樣的:

1. 選擇exploit (use exploit/windows/smb/ms08_067_netapi)
2. 選擇payload
3. 設定引數 (set RHOST,set LPORT …)
4. 執行攻擊
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章