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

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

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

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

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

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

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

Metasploit的handler模塊可以捕獲到提權(quán)的Meterpreter會(huì)話,而此時(shí)我們就可以給目標(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)整個(gè)攻擊過程的自動(dòng)化,并自動(dòng)返回一個(gè)高權(quán)限的Meterpreter會(huì)話。命令如下:
exploit/windows/local/bypassuac_eventvwr
通過事件查看器繞過用戶賬戶控制(Metasploit版):

|