Metasploit是一款開源的安全漏洞檢測工具,


Metasploit是一款開源的安全漏洞檢測工具,可以幫助安全和IT專業人士識別安全性問題,驗證漏洞的緩解措施,並管理專家驅動的安全性進行評估,適合於需要核實漏洞的安全專家,同時也適合於強大進攻能力的滲透測試專家。Metasploit提供真正的安全風險情報,這這種可以擴展的模型將負載控制、編碼器、無操作生成器和漏洞整合在一起,使Metasploit成為一種研究高危漏洞的途徑。它集成了各平台上常見的溢出漏洞和流行的shellcode ,並且不斷更新。最新版本的MSF包含了750多種流行的操作系統及應用軟件的漏洞,以及224個shellcode,作為安全工具,Metasploit在安全檢測中用着不容忽視的作用,並為漏洞自動化探測和及時檢測系統漏洞提供了有力保障。

Metasploit使用教程

一、搭建metasploit環境
Windows環境下安裝
安裝時需要注意要關閉殺毒軟件,如果安裝有殺毒軟件,會提示在metasploit的安裝目錄下檢測到病毒或木馬。
二、metasploit的使用
Metasploit目前提供了三種用戶使用接口,一個是GUI模式,另一個是console模式,第三種是CLI(命令行)模式。原來還提供一種WEB模式,目前已經不再支持。目前這三種模式各有優缺點,建議在MSF console模式中使用。在console中幾乎可以使用MSF所提供的所有功能,還可以在console中執行一些其它的外部命令,如ping。
Windows下GUI啟動方式,從開始菜單——Metasploit Framework——Metaspliit GUI即可。如下圖所示:

其GUI模式啟動后界面如圖2所示:

Windows下console模式的啟動方式與GUI方式類似,啟動后界面如圖3所示:

Metasploit的使用較為簡單,了解其基本命令即可。下面以console的使用方式為例說明如何使用:
輸入help或?可查看幫助信息。

下面以exploit中的ms04_045_wins為例進行說明。
1、show exploits,

2、info exploit/windows/wins/ms04_045_wins,查看其描述信息。

3、use exploit/windows/wins/ms04_045_wins,使用此exploit。

4、show options,查看相應的選項

5、set RHOST    192.168.1.200,設置目標
6、set RPORT    7777,設置端口
7、set PAYLOAD generic/shell_bind_tcp,設置使用的shellcode
8、exploit,執行攻擊
對於上面的步驟,有些並不是必須,比如第2步,GUI界面的使用方法與其類似,並且更加簡單,但有些功能可能無法使用。
在Linux上使用時,在終端上輸入msfconsole即可啟動終端模式。輸入msfgui即可啟動GUI模式。使用方式與windows上類似。
三、Metasploit攻擊方法分類
使用的版本共有635種溢出(exploit)模塊,314種輔助(auxiliary)模塊,215種加載(payload)模塊,27種編碼(encoder),8種nops。
exploits總的來說共分為兩類溢出(exploit)攻擊方法,即主動溢出和被動溢出。主動溢出是針對目標主機的漏洞主動的進行攻擊以獲得控制權限,被動溢出是針對目標主機被動的監聽然后獲得相應的操作。在所有的exploit中,針對windows平台的最多,比其它所有平台的總和還要多。
緩沖區溢出是指當計算機向緩沖區內填充數據位數時超過了緩沖區本身的容量溢出的數據覆蓋在合法數據上,理想的情況是程序檢查數據長度並不允許輸入超過緩沖區長度的字符,但是絕大多數程序都會假設數據長度總是與所分配的儲存空間相匹配,這就為緩沖區溢出埋下隱患.操作系統所使用的緩沖區又被稱為"堆棧". 在各個操作進程之間,指令會被臨時儲存在"堆棧"當中,"堆棧"也會出現緩沖區溢出。
緩沖區溢出是一種非常普遍、非常危險的漏洞,在各種操作系統、應用程序中廣泛存在。利用緩沖區溢出可民導致程序運行失敗、系統死機、重新啟動等后,也可以利用其獲得非授權指令,甚至系統特權,進而進行各種非法的操作。
在當前網絡與分布式系統安全中,被廣泛利用的50%以上都是緩沖區溢出。緩沖區溢出中,最為危險的是堆棧溢出,因為入侵者可以利用堆棧溢出,在函數返回時改變返回程序的地址,讓其跳轉到任意地址,帶來的危害一種是程序崩潰導致拒絕服務,另外一種就是跳轉並且執行一段惡意代碼,比如得到shell,然后為所欲為。
通過往程序的緩沖區寫超出其長度的內容,造成緩沖區的溢出,從而破壞程序的堆棧,造成程序崩潰或使程序轉而執行其它指令,以達到攻擊的目的。造成緩沖區溢出的原因是程序中沒有仔細檢查用戶輸入的參數。
隨便往緩沖區中填東西造成它溢出一般只會出現"分段錯誤"(Segmentation fault),而不能達到攻擊的目的。最常見的手段是通過制造緩沖區溢出使程序運行一個用戶shell,再通過shell執行其它命令。如果該程序屬於root且有suid權限的話,攻擊者就獲得了一個有root權限的shell,可以對系統進行任意操作了。
緩沖區溢出攻擊之所以成為一種常見安全攻擊手段其原因在於緩沖區溢出漏洞太普遍了,並且易於實現。而且,緩沖區溢出成為遠程攻擊的主要手段其原因在於緩沖區溢出漏洞給予了攻擊者他所想要的一切:植入並且執行攻擊代碼。被植入的攻擊代碼以一定的權限運行有緩沖區溢出漏洞的程序,從而得到被攻擊主機的控制權。
緩沖區溢出攻擊的目的在於擾亂具有某些特權運行的程序的功能,這樣可以使得攻擊者取得程序的控制權,如果該程序具有足夠的權限,那么整個主機就被控制了。一般而言,攻擊者攻擊root程序,然后執行類似"exec(sh)"的執行代碼來獲得root權限的shell。為了達到這個目的,攻擊者必須達到如下的兩個目標:
1. 在程序的地址空間里安排適當的代碼。
2. 通過適當的初始化寄存器和內存,讓程序跳轉到入侵者安排的地址空間執行。
每當一個函數調用發生時,調用者會在堆棧中留下一個活動紀錄,它包含了函數結束時返回的地址。攻擊者通過溢出堆棧中的自動變量,使返回地址指向攻擊代碼。通過改變程序的返回地址,當函數調用結束時,程序就跳轉到攻擊者設定的地址,而不是原先的地址。這類的緩沖區溢出被稱為堆棧溢出攻擊(Stack Smashing Attack),是目前最常用的緩沖區溢出攻擊方式。
函數指針可以用來定位任何地址空間。例如:"void (* foo)()"聲明了一個返回值為void的函數指針變量foo。所以攻擊者只需在任何空間內的函數指針附近找到一個能夠溢出的緩沖區,然后溢出這個緩沖區來改變函數指針。在某一時刻,當程序通過函數指針調用函數時,程序的流程就按攻擊者的意圖實現了。它的一個攻擊范例就是在Linux系統下的superprobe程序。
在C語言中包含了一個簡單的檢驗/恢復系統,稱為setjmp/longjmp。意思是在檢驗點設定"setjmp(buffer)",用"longjmp(buffer)"來恢復檢驗點。然而,如果攻擊者能夠進入緩沖區的空間,那么"longjmp(buffer)"實際上是跳轉到攻擊者的代碼。象函數指針一樣,longjmp緩沖區能夠指向任何地方,所以攻擊者所要做的就是找到一個可供溢出的緩沖區。
在metasploit中溢出模塊(Exploit)共分為13種,分別是:ais、bsdi、dialup、freebsd、hpux、irix、linux、multi、netware、osx、solaris、unix、windows。其中windows下面的最多。
輔助(Auxiliary)模塊共分為13種,分別是admin、client、crawler、dos、fuzzers、gather、pdf、scanner、server、sniffer、spoof、sqli、voip。
加載(payload)模塊共分為13種,分別是aix、bsd、bsdi、cmd、generic、java、linux、netware、osx、php、solaris、tty、windows。
四、Metasploit架構
Metasploit Framework並不止具有exploit(溢出)收集功能,它使你專注於創建自己的溢出模塊或者二次開發。很少的一部分用匯編和C語言實現,其余均由ruby實現。

TOOLS        集成了各種實用工具,多數為收集的其它軟件
PLUGINS        各種插件,多數為收集的其它軟件。直接調用其API,但只能在console模式下工作。
MODULES    目前的Metasploit Framework 的各個模塊
MSF core        表示Metasploit Framework core 提供基本的API,並且定義了MSF的框架。並將各個子系統集成在一起。組織比較散亂,不建議更改。
MSF Base        提供了一些擴展的、易用的API以供調用,允許更改
Rex LIBRARIES        Metasploit Framework中所包含的各種庫,是類、方法和模塊的集合
CLI            表示命令行界面
GUI            圖形用戶界面
Console        控制台用戶界面
Web            網頁界面,目前已不再支持
Exploits        定義實現了一些溢出模塊,不含payload的話是一個Aux
Payload        由一些可動態運行在遠程主機上的代碼組成
Nops        用以產生緩沖區填充的非操作性指令
Aux            一些輔助模塊,用以實現輔助攻擊,如端口掃描工具
Encoders        重新進行編碼,用以實現反檢測功能等
/msf3/plugins主要包括一些數據庫插件、會話插件、線程插件、socket插件等;
/ postgresql/lib/plugins主要是postgresql的調試插件和分析插件。還有一些其它的插件,比如ruby插件等。
/tools主要是一些輔助工具,如vncviewer、7za等。
/msf3/tools主要是一些轉化工具,如memdump、ruby工具等。
MSF core定義了整個軟件的架構方式,提供了一些基本的API,主要由匯編和C語言來實現,一般情況下不允許直接調用。共有136個匯編文件,7個.h文件,681個.C文件。MSF core組織的比較散亂,不建議更改。
匯編部分主要完成的是與相應的操作系統(如windows、linux等)有關的功能,主要是shellcode的實現等。
C語言完成的功能比較多,主要是meterpreter的實現和一些工具性的應用,包括ruby相關、內存相關(如memdump.c,屬於memdump軟件包,用於在DOS和Windows 9x 中dump或copy 4GB以內的地址空間)、網絡相關(pcaprub.c,屬於libpcap軟件包的一部分,是ruby中網絡的一部分)、反檢測相關(timestomp.c,屬於timestomp軟件,用於修改文件的時間戳)等。其工具性的應用多是直接來自於其它工具軟件。
Meterpreter是MSF core中最重要的一部分,其本身是一個具有多種功能的動態payload,並且可以在運行時動態擴展。它提供了交互式shell的基礎。整個運行在內存當中,但它並不創建新的進程,並且使用了加密的通信方法,能有效避免檢測。
MSF base分布在很多文件夾當中,定義了大量的實用API,例如svn API、scan API、encode API、更新API、操作API、數據庫API、exploit API、GUI API、java API、meterpreter API、php API、snmp API、模塊API、ruby API、網絡API等……主要供modules下的相關程序進行調用,開發人員也可直接調用其API。
五、Metasploit二次開發方法
Metasploit中的類和方法具有很好的可讀性,並且采用了元編程的思想,使得進行二次開發更加方便快捷。簡單的說一個程序能夠產生另一個程序,就是元編程。ruby、python等均可方便的采用元編程思想。metasploit中前四個字母正好是meta,猜測其是Metaprogramming的含義。
Metasploit中所有的模塊都從Msf::Module中繼承,並且所有的模塊有一個共享的API庫。
在Metasploit中修改的exploit、payload等模塊時,直接找到相應的文件修改並保存,重新啟動console即可看到自己修改后的模塊的效果。
在metasploit當中增加exploit、auxiliary等模塊時,最快捷的方法是仿照現有的模塊方式、使用metasploit中提供的協議(比如使用metasploit中的socket方法,而不使用ruby中的socket方法,meterpreter對socket進行的封裝和擴展功能,使用起來更加方便,增加了代理、ssh等特征)。模塊寫好后放在相應的目錄,重新啟動console即可看到自己所增加的模塊部分。
下面是一些攻擊經常使用的模塊的位置:
auxiliary模塊位於/msf3/modules/auxiliary/下。
Exploits模塊位於/msf3/modules/exploits/下。
Payloads模塊位於/msf3/modules/payloads/下。
Nops模塊位於/msf3/modules/nops下。
Encoders模塊位於/msf3/modules/encoders/下。
另外在core部分也有一些exploit、aux等,其作用是為上述的攻擊部分提供基礎,被上述模塊調用。在windows或是在linux中都使用上述方法進行二次開發。后面會詳細的介紹新增一個exploit的方法和過程。
六、安全軟件常用檢測方法
1、基於事務發生的時間戳,時間
2、發現可疑文件時,尋找其它具有類似MAC地址的文件,位置
3、根據文件擴展名和簽名,文件特征
4、對於系統內文件創建MD5校驗,內容
5、查找相應的關鍵字,關鍵字
6、對文件的內容進行行為分析,行為分析。安全軟件預先知道大量的病毒指令序列,可對文件內容進行檢測,如果發現匹配的序列就發出警告。
7、檢查當前的進程、端口、文件系統等,狀態檢查
8、在文件寫入磁盤時進行檢測。
七、Metasploit反檢測方法
針對安全軟件常用的檢測方法,metasploit當中集成了一些反檢測的方法。還有一些相應的建議。
1、在metasploit中使用了meterpreter方法提供一些實用的API。但是meterpreter整個運行在內存當中;但它並不創建新的進程;並且使用了加密的通信方法;並且能夠有效的消除入侵證據。整個過程大約在1秒內完成。避免了一些安全軟件對於進程的檢測。
2、內置了27種encode模塊,可對metasploit中的exploit進行編碼(encode),以避免反病毒軟件檢測。27 種encode如下:
Name Rank Description
-------------------
cmd/generic_sh good Generic Shell Variable Substitution Command Encoder
cmd/ifs low Generic ${IFS} Substitution Command Encoder
cmd/printf_php_mq good printf(1) via PHP magic_quotes Utility Command Encoder
generic/none normal The "none" Encoder
mipsbe/longxor normal XOR Encoder
mipsle/longxor normal XOR Encoder
php/base64 great PHP Base64 encoder
ppc/longxor normal PPC LongXOR Encoder
ppc/longxor_tag normal PPC LongXOR Encoder
sparc/longxor_tag normal SPARC DWORD XOR Encoder
x64/xor normal XOR Encoder
x86/alpha_mixed low Alpha2 Alphanumeric Mixedcase Encoder
x86/alpha_upper low Alpha2 Alphanumeric Uppercase Encoder
x86/avoid_utf8_tolower manual Avoid UTF8/tolower
x86/call4_dword_xor normal Call+4 Dword XOR Encoder
x86/context_cpuid manual CPUID-based Context Keyed Payload Encoder
x86/context_stat manual stat(2)-based Context Keyed Payload Encoder
x86/context_time manual time(2)-based Context Keyed Payload Encoder
x86/countdown normal Single-byte XOR Countdown Encoder
x86/fnstenv_mov normal Variable-length Fnstenv/mov Dword XOR Encoder
x86/jmp_call_additive normal Jump/Call XOR Additive Feedback Encoder
x86/nonalpha low Non-Alpha Encoder
x86/nonupper low Non-Upper Encoder
x86/shikata_ga_nai excellent Polymorphic XOR Additive Feedback Encoder
x86/single_static_bit manual Single Static Bit
x86/unicode_mixed manual Alpha2 Alphanumeric Unicode Mixedcase Encoder
x86/unicode_upper manual Alpha2 Alphanumeric Unicode Uppercase Encoder
很多反病毒軟件是基於簽名(signature-based)技術來進行病毒檢測的,metasploit可以使用相應的payload將簽名更改,從而達到反檢測的目的。比如對一個軟件采用多種編碼方法以應對安全軟件的檢測,比如"ABC"這三個字母對於某個漏洞而言具有攻擊性,編碼時對每個字母采用不同的編碼方式以逃避安全軟件的檢測。
3、內置日志刪除模塊,可以刪除相應的事務日志,以避免檢測。
4、metasploit framework中集成了timestomp(用於修改文件時間戳)、slacker(用於隱藏文件)、SAM Juicer(meterpreter的一部分,用於從SAM中轉儲哈希)、偽造MAC地址等工具用於消除入侵證據。
5、避免使用一些明顯具有木馬或病毒含義的名子或關鍵字,如"灰鴿子"等肯定會引起安全軟件的注意。
6、所開發的模塊盡量放在目標機多個存儲位置,以避免所有的模塊被安全軟件一次清除
7、攻擊安全軟件,使安全軟件失效,目前還未開發。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM