使用Metasploit繞過UAC的多種方法
使用者帳戶控制(簡稱UAC)是微軟公司在其Windows Vista,及更高版本作業系統中採用的一種控制機制。通過本文你將瞭解它是如何保護你免受惡意軟體侵害的,以及忽略UAC提示將可能給你係統帶來的麻煩。
UAC簡介
什麼是使用者帳戶控制?
UAC是在Windows Vista及更高版本作業系統中採用的一種控制機制,它以預見的方式阻止不必要的系統範圍更改。
換句話說,它是Windows的一項安全功能,支援你阻止任何對系統未經授權的更改操作行為。UAC確保僅在管理員授權的情況下進行某些更改。如果管理員不允許更改,則不會執行這些更改,並且Windows也不會發生任何的改變。
UAC是如何運作的?
一旦程式執行涉及系統更改/特定任務就會觸發UAC。除非嘗試執行它們的程序以管理員許可權執行,否則這些操作都將被阻止。沒有管理員許可權將無法執行以下操作:
登錄檔修改(如果登錄檔項位於如HKEY_LOCAL_MACHINE下(因為它影響多個使用者),它將是隻讀的)
載入裝置驅動程式
DLL注入
修改系統時間(clock)
修改使用者帳戶控制設定(通過登錄檔可以啟用/禁用它,但你需要正確的許可權才能執行該操作)
修改受保護的目錄(例如Windows資料夾,Program Files)
計劃任務(例如,以管理員許可權自啟動)
注: ofollow" rel="nofollow,noindex" target="_blank">UAC 的作用並不是幫你阻止惡意軟體或識別程式是否為惡意程式,這主要取決於使用者。如果使用者以管理員許可權執行程式,UAC將提醒使用者並要求使用者提供確認。
5種繞過UAC的方法
首先,假設我們已獲取目標系統的meterpreter shell,並得到了一個meterpreter session 1。然後,我們鍵入以下命令提權並檢視許可權。
getsystem getuid
如果你並未取得system/admin許可權,那你就要想辦法繞過目標系統的UAC保護。
Windows提權UAC保護繞過
該模組將通過程序注入,利用受信任的釋出者證書繞過Windows UAC。 它將為我們生成另一個關閉UAC的shell(session 2)。
msf > use exploit/windows/local/bypassuac msf exploit windows/local/bypassuac) > set session 1 msf exploit(windows/local/bypassuac) > exploit
從圖片中可以看到meterpreter session 2已被開啟,現在我們鍵入以下命令提權並檢視許可權。
getsystem getuid
可以看到我們已將許可權提升為了NT AUTHORITY\SYSTEM。現在如果你輸入“shell”命令,你將獲得具有管理員許可權的命令提示符。
Windows提權UAC保護繞過(記憶體注入)
該模組將通過程序注入,利用受信任的釋出者證書繞過Windows UAC。 它將為我們生成另一個關閉UAC的shell(session 2)。該模組將直接執行在記憶體中的反射DLL中,由於它並不觸碰硬碟,因此可以最大限度地降低被安全檢測的概率。但該模組的使用需要選擇正確的架構(對於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 session 2已被開啟,現在我們鍵入以下命令提權並檢視許可權。
getsystem getuid
可以看到我們已將許可權提升為了NT AUTHORITY\SYSTEM。現在如果你輸入“shell”命令,你將獲得具有管理員許可權的命令提示符。
Windows提權UAC保護繞過(通過FodHelper登錄檔項)
該模組通過在當前使用者配置單元下劫持登錄檔中的特殊鍵,並插入將在啟動Windows fodhelper.exe應用程式時呼叫的自定義命令來繞過Windows 10 UAC。它將為我們生成另一個關閉UAC的shell。雖然該模組修改了登錄檔,但它會在呼叫payload後清除該鍵。相比之前的模組,該模組對架構系統並無特別要求。如果指定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 session 2已被開啟,現在我們鍵入以下命令提權並檢視許可權。
getsystem getuid
可以看到我們已將許可權提升為了NT AUTHORITY\SYSTEM。現在如果你輸入“shell”命令,你將獲得具有管理員許可權的命令提示符。
Windows提權UAC保護繞過(通過Eventvwr登錄檔項)
該模組通過在當前使用者配置單元下劫持登錄檔中的特殊鍵,並插入將在啟動Windows fodhelper.exe應用程式時呼叫的自定義命令來繞過Windows 10 UAC。它將為我們生成另一個關閉UAC的shell。雖然該模組修改了登錄檔,但它會在呼叫payload後清除該鍵。相比之前的模組,該模組對架構系統並無特別要求。如果指定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 session 2已被開啟,現在我們鍵入以下命令提權並檢視許可權。
getsystem getuid
可以看到我們已將許可權提升為了NT AUTHORITY\SYSTEM。現在如果你輸入“shell”命令,你將獲得具有管理員許可權的命令提示符。
Windows提權UAC保護繞過(COM處理程式劫持)
此模組將通過在HKCU配置單元中,建立COM處理程式登錄檔項來繞過Windows UAC。當載入某些高完整性程序時將會引用這些登錄檔項,從而導致程序載入使用者控制的DLL。這些DLL中包含了可提升許可權的payload。在呼叫payload後該模組將會清除該鍵。該模組的使用需要選擇正確的架構,但在當前低許可權的Meterpreter session下架構可以不同。如果指定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 session 2已被開啟,現在我們鍵入以下命令提權並檢視許可權。
getsystem getuid
可以看到我們已將許可權提升為了NT AUTHORITY\SYSTEM。現在如果你輸入“shell”命令,你將獲得具有管理員許可權的命令提示符。
*參考來源: hackingarticles , FB小編 secist 編譯,轉載請註明來自FreeBuf.COM