在kali中使用metasploit,需要先開啟PostgreSQL數據庫服務和metasploit服務,然后就可以完整的利用msf數據庫查詢exploit和記錄了。這一點比bt5要方便很多,所以現在就放棄了bt5。
4 ]3 f. Q5 F5 [
具體命令與截圖
- service postgresql start
- service metasploit start
如果不想每次開機都這樣,還可以配置隨系統啟動。
- update-rc.d postgresql enable3 Q$ C+ _- H# n. P! }
- update-rc.d metasploit enable

( I1 U1 H: o# ]. v8 i9 x7 ?9 ]
' a' s1 H! n. }& S. p% B
0 w" e. a/ F* w( y9 D8 k
0x02 metasploit目錄結構
之所以會講到這,是因為我認為框架代碼是用來學習的一個非常好的來源。並且metasploit是用ruby腳本語言編寫,所以閱讀起來非常方便。 在滲透,exploit編寫過程前理解框架的優勢以及大致內容則能夠快速構建出自己的工具或者找到已知可用的工具。這樣不僅有利於得到結果,也提高了效 率。
這里只介紹幾個目錄,也希望讀者能把modules下auxiliary的模塊大致都看一遍。這樣有個印象也便於快速查找。
對於工具的使用,沒有會不會的。只是有沒有發現而已。目錄大概看一遍,這個問題就差不多了吧!
* h4 x: ^+ j2 H2 `. g" L

7 ~/ j6 e* x* W/ R+ L
Kali中msf的路徑為/usr/share/metasploit-framework
modules
首先看modules目錄:

& x4 Q% L- Q: n* S8 l
這里
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生成腳本,就會發現它 只是返回了指定長度的空格而已。

, r0 i8 G# s, Q2 i( ?
& p! T5 J1 i7 i* Y9 N5 G
payloads:這里面列出的是攻擊載荷,也就是攻擊成功后執行的代碼。
比如我們常設置的windows/meterpreter/reverse_tcp就在這個文件夾下。
Post:后滲透階段模塊,在獲得meterpreter的shell之后可以使用的攻擊代碼。
比如常用的hashdump、arp_scanner就在這里。
data
其次是data目錄:
這里存放的是metasploit的腳本引用文件,重點介紹幾個文件

]# Q! [7 ?. E7 t
+ ?* i$ U1 n& q5 }! p+ [
0 K0 J* L W* F; T6 }5 Q
第一個是data下js文件夾下的detect,這里面存放的是metasploit的探針文件。如果看過metasploit瀏覽器攻擊腳本的代 碼,就會發現調用了一個js庫,然后檢查當前請求是否符合被攻擊環境。如果符合則發送攻擊代碼,否則中斷。Memory中主要是一些堆噴射代碼。在大部分 瀏覽器漏洞利用過程,堆噴射是一個不可或缺的過程(當然不是絕對的!)。並且不同的瀏覽器及版本間,堆噴射代碼都有所不同。所以這里給出的探針代碼和堆噴 射代碼是不是一個非常好的學習資源呢? script
最后是msf下script目錄中的resource目錄:
/ F$ m$ _2 @- B6 u8 u0 H

6 m, s( W9 I& ?/ f5 X6 k4 y* k
這里的rc腳本相當於windows下的批處理腳本,在某些情況下會有一定便捷性。比如Veil在生成免殺payload的同時也會生成一個rc腳 本,此時使用msfconsole –r xx.rc便可以快速的建立一個和payload對應的handler,亦或在攻過程中需要你反復的 set exploit,那么就可以使用這個批處理腳本了,而這個目錄下則是一些給定的rc腳本,雖然你可能不習慣這樣使用,但作為改寫自己的rc腳本的 資源也不錯。
0x03 metasploit基本命令( a. U' X% q6 r$ ^( t$ T9 K
列一些其他文章中不常提到的命令或者是我經常碰到或使用的方法。
Msfpayload

! F) p. X* Z- K+ H7 Q$ \
這是我最常用的一個命令,用來生成payload或者shellcode。
在不知道payload名稱又不想開msfconsole搜索的時候可以用msfpayload –l |grep “windows”這樣的命令查詢。
-o 選項可以列出payload所需的參數。
msfencode

4 g5 c7 @: y; B+ Z
msf中的編碼器,早期為了編碼繞過AV,現在我常用msfpayload與它編碼exploit的壞字符串。
msfconsole
開啟metasploit的console,有個重要的參數 –r,加載resources腳本
數據庫有關命令
hosts

, u2 w/ f' P. v6 W
( V2 d: R# l6 ?3 C: m1 `% i
這里可以使用hosts查詢指定字段的內容,可用的字段下面有列出。或者也可以使用hosts –S “keyword” 進行搜索。
Creds

8 O5 e0 J, s2 Z
1 ]0 `" Z' ]3 @+ y, }$ Y) s! z( \
Creds命令可以列出成功獲取到的信息,比如用戶名密碼,數據庫密碼,開放端口及服務等。
Console中有關命令search

/ n4 `2 W, W0 Z& v* |! I% |4 z& E
/ Y+ {+ w& h" X
搜索一切可以use的模塊,常用的方法是search 直接加關鍵詞,比如search 08_067,但是我們也可以根據cve編號查找。通常用nessus掃到的漏洞都有cve信息,這里我們就可以這樣搜索了。* Y, ~& d& W; M1 E7 |" ^* l

) {9 x6 L& s$ a/ \& K+ d) t
& J8 U3 u3 ~2 N" h, q
將屏幕輸出重定向到某個文件中,在使用HTTP弱口令破解、,內網http目錄等不會記錄在creds中的內容時你怎樣解決查詢成功結果的?反正這 個問題我快要瘋了。 要不就改寫exploit,不成功不打印,要不就重定向之后自己再grep吧。如果有好的方法,一定要分享啊!
show advanced
<ignore_js_op>

+ @9 e7 ]# G8 m
8 v0 t0 x- t: e% h
將屏幕輸出重定向到某個文件中,在使用HTTP弱口令破解、,內網http目錄等不會記錄在creds中的內容時你怎樣解決查詢成功結果的?反正這 個問題我快要瘋了。 要不就改寫exploit,不成功不打印,要不就重定向之后自己再grep吧。如果有好的方法,一定要分享啊!
show advanced

. V/ t( I% a. _: U
; e% k, i1 v# V! N/ \+ w3 a
在選定一個module(exploit,payload …)之后,使用show advanced命令可以顯示關於此module的高級選項,具體內容會在后面”metasploit tricks and tips”中分享。
0x04 攻擊示例
同樣我還是選擇ms08_067這個漏洞,並且隨便輸入一個ip,演示下最基本的攻擊過程(為了讓基礎篇看起來更完整點)結束基礎篇的分享。說明:

# j: u* L. ]; q c) V
從圖中也可以看出一次基本的攻擊過程大概是這樣的:
- 選擇exploit (use exploit/windows/smb/ms08_067_netapi)
- 選擇payload
- 設置參數 (set RHOST,set LPORT …)
- 執行攻擊) v-