9月24日亞洲馳名安然手藝峰會(huì)SyScan在北京召開(kāi)。在大年夜會(huì)上Instruder做了《深進(jìn)思慮UAC背后的安然標(biāo)題問(wèn)題》演講。會(huì)后筆者針對(duì)這一議題做了具體闡發(fā)與測(cè)試,就UAC晉升用戶權(quán)限的的標(biāo)題問(wèn)題做了總結(jié)與闡發(fā)。
研究布景:此刻WIN7把持系統(tǒng)以經(jīng)大年夜量普及,UAC的安然機(jī)制以成為滲入過(guò)程中最為較著的絆腳石,UAC會(huì)使大年夜量滲入東西掉效,木馬沒(méi)法運(yùn)行,若何沖破UAC的層層防護(hù)是一向以來(lái)研究的重點(diǎn)。
研究目標(biāo):顛末進(jìn)修與研究應(yīng)當(dāng)實(shí)現(xiàn),在當(dāng)前用戶權(quán)限下,繞過(guò)UAC提示直接運(yùn)行法度,并可以實(shí)現(xiàn)點(diǎn)竄啟動(dòng)項(xiàng),釋放文件到系統(tǒng)目次等功能,而這一過(guò)程必需在用戶沒(méi)有肆意發(fā)覺(jué)的環(huán)境下完成。
研究方案
1、白名單機(jī)制:從用戶賬戶節(jié)制對(duì)權(quán)限進(jìn)行呵護(hù)的根基過(guò)程可以看到,在用戶以治理員權(quán)限運(yùn)行法度的過(guò)程中,用戶賬戶節(jié)制在向用戶進(jìn)行提權(quán)扣問(wèn)前,將會(huì)先查詢本地系統(tǒng)中的白名單以決定是 否直接放行,是以,白名單機(jī)制是用戶賬戶節(jié)制中的一個(gè)首要部門(mén)。用戶賬戶節(jié)制限制著法度利用高級(jí)權(quán)限才能進(jìn)行的把持,可是,如許的機(jī)制一樣也會(huì)對(duì)系統(tǒng)本身的法度造成影響,微軟也不??聪到y(tǒng)法度的運(yùn)行也扣問(wèn)用戶,因?yàn)樗麄儽旧硎前踩坏摹J且?,微軟則在 UAC 中添加了白名單機(jī)制,即在系統(tǒng)中記實(shí)有一張表單,對(duì)表單中的系統(tǒng)法度,將不限 制其直接晉升到治理員權(quán)限。系統(tǒng)中的白名單法度有多個(gè),此中,msconfig、taskmgr、perfmon、cleanmgr 等平常平凡常常利用的法度都在此中。
2、實(shí)現(xiàn)直接提權(quán):比較常常利用的操縱系統(tǒng)法度的編制是操縱系統(tǒng)動(dòng)態(tài)加載 DLL的特點(diǎn),在系統(tǒng)中還有一份名單為 KnownDlls,當(dāng)一個(gè)法度需要?jiǎng)討B(tài)加載 DLL 的時(shí)辰,會(huì)先在這份名單當(dāng)中進(jìn)行查找,假定找到則加載響應(yīng)路徑的DLL 文件,假定沒(méi)有找到則遵循當(dāng)前目次、 System32 目次的挨次進(jìn)行查找,是以假定能找到一個(gè)法度動(dòng)態(tài)調(diào)用的 DLL 文件不在KnownDlls 中,而在 System32 下面,則可以捏造一個(gè)響應(yīng)的 DLL,來(lái)實(shí)現(xiàn)借助其他法度來(lái) 履行需要的把持。在所有白名單法度中,正好有如許一個(gè)法度,即 sysprep.exe,它的位置為 System32/sysprep/,而它在啟動(dòng)時(shí),會(huì)動(dòng)態(tài)加載一個(gè) CRYPTBASE.DLL,這個(gè) DLL 在 System32 下面,是以 sysprep.exe 會(huì)在當(dāng)前目次尋覓的時(shí)辰加載掉敗,繼而轉(zhuǎn)到 System32 目次查找, 試著姑且生成一個(gè)假的 CRYPTBASE.DLL 放在 sysprep 文件夾下,在 sysprep.exe啟動(dòng)時(shí),將加載假的 CRYPTBASE.DLL,從而履行我們需要的把持。sysprep.exe 加載假 CRYPTBASE.DLL線程注進(jìn)白名單中的法度全數(shù)都在系統(tǒng)目次傍邊,是以要把生成的假 DLL 復(fù)制到法度目次中, 將會(huì)因?yàn)闄?quán)限標(biāo)題問(wèn)題而觸發(fā) UAC,如許便掉效了。是以,需要出格的編制來(lái)把假 DLL 給復(fù)制到系統(tǒng)目次內(nèi),并且不會(huì)觸發(fā)系統(tǒng)的權(quán)限節(jié)制。這一步的把持也需要系統(tǒng)白名單的法度來(lái)實(shí)現(xiàn),選用的法度為EXPLORER過(guò)程,起首利用長(zhǎng)途線程的編制把DLL注進(jìn)到EXPLORER過(guò)程,然后再經(jīng)由過(guò)程EXPLORER把CRYPTBASE.DLL復(fù)制到指定目次UAC不會(huì)提示。所有把持完成后啟動(dòng)sysprep.exe我們的DLL就會(huì)被加載,從而繞過(guò)成功。但這個(gè)別例錯(cuò)誤謬誤也很較著,在注進(jìn)EXPLORER過(guò)程時(shí),殺毒軟件已開(kāi)端存眷了。
SyScan大年夜會(huì)中的編制
與傳統(tǒng)編制也有近似的地方,議題作者Instruder采取的編制也是白名單的編制但又有不合的地方,很是奇妙,作者利用的編制為操縱把持系統(tǒng)本身的進(jìn)級(jí)法度WUSA.EXE,讀取釋放文件,這個(gè)過(guò)程是不會(huì)觸發(fā)UAC的,操縱這個(gè)機(jī)制可以輕松沖破UAC限制,下面我們一步一步演示實(shí)現(xiàn),起首把wusa.exe找出來(lái),此文件位于 c:\windows\syswow64目次如圖1所示。

▲圖1
找到這個(gè)文件后,運(yùn)行一下,看一下它的具體利用編制,具體環(huán)境如圖2所示。

▲圖2
找到WUSA.EXE后我們還要找一個(gè) MSU的文件用來(lái)做測(cè)試用,我從本身電腦中隨便搜刮一些MSU文件出來(lái)如圖3所示。

▲圖3
到今朝為至預(yù)備東西根基就需了,我們來(lái)做嘗試,利用WUSA.EXE把一個(gè)MSU文件釋放一下,看可否成功,嘗試編制以下,復(fù)制一個(gè)MSU文件到D:\TEMP目次,然后在CMD下切換目次到c:\windows\syswow64,最后運(yùn)行wusa.exe d:\temp\msu.msu /extract:d:\temp 這時(shí)候看到一個(gè)很快的進(jìn)度一閃而過(guò),我比較癡頑沒(méi)能抓下圖來(lái),往D:\TEMP目次看一下是甚么環(huán)境如圖4所示。

▲圖4
可以看出文件以成功釋放,如許很好,下一步繼續(xù)嘗試,把釋放目次點(diǎn)竄一下,直接釋放到系統(tǒng)目次WINDOWS下,看會(huì)若何表示,履行wusa.exe d:\temp\msu.msu /extract:c:\windows
成果很抱負(fù),成功釋放并且沒(méi)有觸發(fā)UAC提示,而我此時(shí)的UAC設(shè)置如圖5所示。

▲圖5
到今朝為至我們可以考慮一些***的工作了,好比釋放一些木馬病毒DLL劫持的文件到系統(tǒng)目次這模樣,不會(huì)觸發(fā)UAC法度,同時(shí)木馬與病毒也會(huì)開(kāi)機(jī)啟動(dòng)了,再繼續(xù)向下嘗試吧今朝思路上是沒(méi)標(biāo)題問(wèn)題了,那么要考慮的是MSU文件了,這個(gè)文件看一下是有微軟數(shù)字簽名的如圖6、7所示。

▲圖6

▲圖7
標(biāo)題問(wèn)題隨之而來(lái),WUSA.EXE會(huì)對(duì)MSU文件進(jìn)行簽名校驗(yàn)嗎?這個(gè)我們可以經(jīng)由過(guò)程粉碎數(shù)字簽名來(lái)驗(yàn)證一下,利用16進(jìn)制編纂東西把MSU文件隨便添加幾個(gè)字節(jié)如圖8所示。

▲圖8
此刻數(shù)字簽名以經(jīng)被破解,無(wú)效了,如圖9所示。

▲圖9
清理之前釋放的文件后,再運(yùn)行一下進(jìn)行釋放檢測(cè),看下成果,呵呵成果很是抱負(fù),仍然成功釋放,這申明 WUSA.EXE對(duì)MSU文件是沒(méi)有簽名校驗(yàn)的,我們可以隨便捏造MSU文件了。
代替MSU文件
顛末一系列的測(cè)試,已知道,只要弄定MSU文件就成大年夜功成功了,msu 文件擴(kuò)大名與 Windows 更新自力安裝法度相聯(lián)系關(guān)系。msu 文件中包含以下內(nèi)容:
Windows Update 元數(shù)據(jù),此元數(shù)據(jù)描述了 .msu 文件包含的每個(gè)更新包。一個(gè)或多個(gè) .cab 文件,每個(gè) .cab 文件代表一個(gè)更新。一個(gè) .xml 文件,此 .xml 文件對(duì) .msu 更新包進(jìn)行描述。
看起來(lái)仍是蠻復(fù)雜的模樣,呵呵能不克不及偷偷懶,想其它編制進(jìn)行繞過(guò)呢,微軟的東西對(duì)本身的文件格局兼容性,應(yīng)當(dāng)是不錯(cuò)的,既然是文件包,那就測(cè)試微軟的CAB包。繼續(xù)嘗試,把MSU文件,換成CAB文件測(cè)試,成果很抱負(fù),仍然可以成功,那么我們的后續(xù)工作就很簡(jiǎn)單了,只要把想釋放的文件緊縮到CAB包,再操縱上述編制便可以成功釋放了,并且全部過(guò)程很是安閑,不會(huì)有UAC提示。