Windows 7 UAC第二個漏洞技術分析與實驗

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

Win7之家afsion.com.cn):Windows 7 UAC第二個漏洞技術分析與實驗

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

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

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.

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

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

這也就證明What this really means is: "Don't notify me when Microsoft applications require administrator rights."這個結論是不正確的。因為第一次用的記事本文件也是Microsoft applications,而結果也需要提權才能夠進行操作。

至于正確的結論,現在微軟還沒有公布相應的文檔,而上面提到的白名單也是存在的,但是估計還和路徑有關,這也是Asuka個人的猜測,就像在Vista Beta的時候,盆盆也做了很多的猜測,后來很多還真準!

2.新漏洞

根據Rafael Rivera的新實驗,新漏洞的產生原因大致是這樣,由于Rundll32.exe位于白名單上,因此值得信任,在需要獲得high level權限的時候不需要UAC對話框確認,就可以實現。

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

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

hml

本文作者:Asuka