Windows 7 UAC第二個漏洞技術(shù)分析與實(shí)驗(yàn)

2009/2/6 11:04:19    編輯:Windows7之家 - Mary Jane     字體:【

Win7之家afsion.com.cn):Windows 7 UAC第二個漏洞技術(shù)分析與實(shí)驗(yàn)

 前天發(fā)表了第一篇關(guān)于Win7 UAC的漏洞,當(dāng)然那個實(shí)現(xiàn)比較簡單,甚至有點(diǎn)“幼稚”。這不,第二彈馬上出來了。國外的技術(shù)blog作者都在議論這個東西,我結(jié)合自己的理解和實(shí)驗(yàn)也來談幾點(diǎn):
1.白名單

最早爆出新漏洞的仍舊是上次的2位作者withinwindows.com的Rafael Rivera和istartedsomething.com的Long Zheng。其中Rafael引用了這篇文章的分析,大致的意思就是說在Win7里面的UAC引入了一個“白名單”機(jī)制,下面是作者的原文:

Windows 7's UAC Whitelist:

The default UAC setting in Windows 7 is: "Don't notify me when I make changes to Windows settings."

What this really means is: "Don't notify me when Microsoft applications require administrator rights."

There is a hardcoded whitelist which allows only Microsoft's own applications (whether under interactive user control or not) to perform actions requiring admin rights (e.g. modifying C:Program Files) without triggering UAC prompts. If the user chooses to do the same operation in a competitor's program then they will see a UAC prompt (assuming the program supports UAC at all and UAC has not been completely disabled).

The whitelisted, silent elevation is only for Microsoft's software and the user cannot add or remove items on the whitelist.

而事實(shí)上,這個白名單不光光是這么簡單,作者在第二句話中強(qiáng)調(diào)了Microsoft applications,這里Asuka做一個很簡單的實(shí)驗(yàn),首先把win7中的記事本文件notepad.exe從system32目錄下拷貝到桌 面,然后雙擊打開,這個時候在打開的記事本中點(diǎn)擊文件->打開->然后把路徑定位到C:Program Files目錄,隨便找一個文件比如Internet Explorer,嘗試把它改一個名字,這個時候發(fā)現(xiàn)會彈出UAC的對話框

而如果用系統(tǒng)默認(rèn)的記事本(位于System32路徑下),做同樣的操作,可以發(fā)現(xiàn)并沒有彈出UAC的對話框。

這也就證明What this really means is: "Don't notify me when Microsoft applications require administrator rights."這個結(jié)論是不正確的。因?yàn)榈谝淮斡玫挠浭卤疚募彩荕icrosoft applications,而結(jié)果也需要提權(quán)才能夠進(jìn)行操作。

至于正確的結(jié)論,現(xiàn)在微軟還沒有公布相應(yīng)的文檔,而上面提到的白名單也是存在的,但是估計(jì)還和路徑有關(guān),這也是Asuka個人的猜測,就像在Vista Beta的時候,盆盆也做了很多的猜測,后來很多還真準(zhǔn)!

2.新漏洞

根據(jù)Rafael Rivera的新實(shí)驗(yàn),新漏洞的產(chǎn)生原因大致是這樣,由于Rundll32.exe位于白名單上,因此值得信任,在需要獲得high level權(quán)限的時候不需要UAC對話框確認(rèn),就可以實(shí)現(xiàn)。

因此,可以把Rundll32.exe做一個代理,而后面把一段有害的代碼編譯成dll,用rundll32.exe去調(diào)用,就可以輕而易舉的繞過UAC。

作者并因此寫了個程序,在這里可以下載。

hml

本文作者:Asuka