用戶賬戶控制(UAC)是微軟開發(fā)出的一套安全控制機(jī)制,其目的是為了限制未經(jīng)授權(quán)的應(yīng)用程序以管理員等級的權(quán)限執(zhí)行,但是當(dāng)管理員提供了密碼并允許該程序執(zhí)行的話,那么這個非特權(quán)應(yīng)用仍然能夠以管理員權(quán)限運(yùn)行。這也就意味著,由于用戶賬戶控制機(jī)制的存在,滲透測試人員就可以通過Meterpreter來阻止這種提權(quán)方法。
下圖即為UAC阻止應(yīng)用程序提權(quán)的演示樣例:

Matt Nelson在其發(fā)布的技術(shù)博客中解釋稱,通過劫持注冊表鍵,我們是有可能利用類似Event Viewer(事件查看器)這樣的原生Windows服務(wù)來繞過用戶賬戶控制(UAC)的。首先,Event Viewer(事件查看器)的進(jìn)程(eventvwr.exe)是以高級完整權(quán)限運(yùn)行的;其次,Event Viewer(事件查看器)是Microsoft Management Console(微軟管理控制臺)通過注冊表進(jìn)行加載的,因此我們的這個假設(shè)完全是可以實(shí)現(xiàn)的。
手動實(shí)現(xiàn)
在新版本的Windows(包括Vista及其之后版本)平臺中,進(jìn)程是以三種不同的權(quán)限等級運(yùn)行的。系統(tǒng)可以通過這三個不同的等級來確定進(jìn)程最終以哪一種權(quán)限來運(yùn)行:
-高級:管理員權(quán)限
-中級:標(biāo)準(zhǔn)用戶權(quán)限
-低級:受限制權(quán)限
我們可以根據(jù)Process Explorer(進(jìn)程查看器)來確定一個進(jìn)程所分配到的權(quán)限等級。當(dāng)事件查看器出于運(yùn)行過程中時,我們可以通過下面這兩個因素來檢查Windows進(jìn)程的權(quán)限:
1. 系統(tǒng)通過微軟管理控制臺(mmc.exe)加載事件查看器;
2. 事件查看器以高級完整權(quán)限運(yùn)行;
從下圖中可以看到,事件查看器進(jìn)程是以高級權(quán)限運(yùn)行的:

這里需要注意的是,當(dāng)eventvwr.exe被執(zhí)行之后,它會嘗試在下面這兩個注冊表地址中搜索mmc.exe:
-HKCU\Software\Classes\mscfile\shell\open\command
-HKCR\mscfile\shell\open\command
由于第一個注冊表地址并不存在,因此mmc.exe會以第二個注冊表地址運(yùn)行,隨后該地址便會加載文件eventvwr.msc并將相關(guān)信息顯示給用戶。
下圖即為MMC以及事件查看器的相關(guān)信息:

這樣一來,攻擊者就有可能創(chuàng)建一個壓根不存在的注冊表地址來以高級權(quán)限運(yùn)行某個進(jìn)程了,而這樣就可以允許攻擊者繞過目標(biāo)系統(tǒng)的用戶賬戶控制(UAC)。
下圖顯示的是攻擊者通過事件查看器來提升命令控制臺(CMD)權(quán)限的操作界面:

當(dāng)eventvwr.exe得到執(zhí)行之后,它將會直接打開命令控制臺窗口,而且在整個過程中系統(tǒng)既不會彈出用戶賬戶控制窗口,也不會請求高級權(quán)限。如下圖所示:

這項(xiàng)攻擊技術(shù)的隱蔽性非常高,因?yàn)檎麄過程根本無需觸及硬盤,而且也不需要進(jìn)行任何的進(jìn)程注入,這樣就可以防止被那些基于進(jìn)程行為監(jiān)控的反病毒產(chǎn)品或安全解決方案所檢測到。
自動化實(shí)現(xiàn)
需要注意的是,我們還可以通過一個不可檢測的惡意Payload來代替之前所彈出的命令控制臺窗口,這樣不僅可以允許我們通過Meterpreter會話來實(shí)現(xiàn)自動化提權(quán),而且還可以執(zhí)行很多其他的系統(tǒng)級指令。我們可以在注冊表中加載自定義Payload:

我們可以在進(jìn)程查看器中看到,進(jìn)程pentestlab3.exe再一次以高級權(quán)限運(yùn)行了:

Metasploit的handler模塊可以捕獲到提權(quán)的Meterpreter會話,而此時我們就可以給目標(biāo)應(yīng)用進(jìn)行提權(quán)了,因?yàn)槲覀儸F(xiàn)在已經(jīng)繞過了目標(biāo)系統(tǒng)的用戶賬戶控制。

Metasploit
除了上面所描述的技術(shù)方法之外,我們也可以使用Metasploit提供的模塊來實(shí)現(xiàn)整個攻擊過程的自動化,并自動返回一個高權(quán)限的Meterpreter會話。命令如下:
exploit/windows/local/bypassuac_eventvwr
通過事件查看器繞過用戶賬戶控制(Metasploit版):

|