利用metasploit繞過UAC的5種方式
大家好,今天,我們將淺析使用者帳戶控制(簡稱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將提醒使用者並且需要使用者進行確認。
另請閱讀: ofollow,noindex">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許可權。