史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > Windows 10 各種疑難討論專區 > Windows 10 疑難討論 Q & A 精華區
忘記密碼?
論壇說明 標記討論區已讀

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2007-02-15, 05:47 PM   #1 (permalink)
論壇副主管
 
Omar Lin 的頭像
榮譽勳章
UID - 236058
在線等級: 級別:40 | 在線時長:1834小時 | 升級還需:11小時級別:40 | 在線時長:1834小時 | 升級還需:11小時級別:40 | 在線時長:1834小時 | 升級還需:11小時級別:40 | 在線時長:1834小時 | 升級還需:11小時級別:40 | 在線時長:1834小時 | 升級還需:11小時
註冊日期: 2006-04-28
VIP期限: 無限期
文章: 7917
精華: 0
現金: 5755 金幣
資產: 298611 金幣
預設 教學 - Windows Vista IE保護模式深度剖析



原文摘自

ITECN Blog

,作者:盆盆
原文地址:
點擊查看

ITECN Blog

是由近40位微軟MVP和MCT、還有微軟員工組成,旨在宣傳微軟IT Pro技術
文章作者 盆盆
技術難度 Level300
內容簡介 深度剖析了IE保護模式為什麼能夠幫助Windows Vista 達到前所未有的安全級別(甚至大大超過UAC能夠達到的保護程度),同時還介紹了IE保護模式是如何利用文件虛擬重定向幫助老的IE加載項解決兼容性問題,真正完美實現
既安全

又方便

且兼容
的目的。最後還將介紹如何利用建立NTFS軟鏈接的方法巧妙解決IE保護模式的Bug,讓不兼容的IE插件可以順利地在IE 7中順利運行。
如今這世上,可謂真假莫辨,真的可以變成假的,假的也可以宣稱自己是真的。這不,這幾天筆者就遇到了一個非常怪異的問題,差點被IE保護模式功能的虛擬重定向功能給搞糊塗了。不過總算藉此機會好好瞭解一下IE保護模式,對於Windows Vista的這個新增安全功能又平添了幾分信心。

原理簡述

IE保護模式(Protected Mode),以前也叫做IE低權利(Low Rights)。在拙作
《您必須知道的IE 7安全特性》
裡,已經就IE保護模式的基本原理做了簡單的論述。這裡需要強調一下的是,IE保護模式可能是Windows Vista裡最嚴厲的安全措施,比我們熟知的UAC(用戶帳戶控制)還要嚴厲。事實上,IE保護模式依賴於Windows Vista的以下三大特性:
(1) UAC(用戶帳戶控制)
相信大家已經很熟悉了,可以讓管理員帳戶自動獲得一個標準用戶的訪問令牌,以提升系統安全性。
(2) MIC(強制完整性控制)
這是Windows Vista安全架構中新增加的一種檢測機制。大家知道,Windows 2000/XP安全體系裡,系統把進程的訪問令牌和資源的訪問控制列表進行匹配比較,以確認該進程是否具有訪問該資源的權限。而在Windows Vista下,除了遵守傳統的安全控制機制外,還必須檢查進程和資源對象的完整性級別,完整性級別低的進程,不能寫入完整性級別高的資源對象。
有點暈,是不是?沒事,下文就會對這個概念進行詳細的實例闡述!
(3) UIPI(用戶界面特權隔離)
完整性級別低的進程,不能向完整性級別高的進程發送Window消息。

怪異的權限問題

提示 假設Windows Vista安裝在D盤,當前的登錄帳戶為管理員,帳戶名是Admin。紅色的命令提示符窗口表示命令行工具只能在管理員權限下運行,藍色的命令提示符窗口表示可以在UAC權限下運行。
遇到這個案例也有一點運氣的成分:不知為什麼,在筆者的計算機上,無法在IE瀏覽器裡正常打開「紫光拼音輸入法」,非常麻煩。但是在其他朋友的機器上,並沒有重複這個問題,甚至在虛擬機裡也不存在這個問題!
這個問題困擾了我很長一段時間,甚至迫使我不得不改用其他輸入法工具,這使得資質魯鈍、不懂得「靈活變通」的我感到非常鬱悶……在IE頁面裡按Ctrl+Space組合鍵,嘗試呼出「紫光拼音」的輸入狀態條,結果失敗,在這個過程中,如果用Filemon工具進行監測,結果會看到當IE瀏覽器嘗試往D:\Users\Admin\AppData\Roaming\Unispim目錄裡寫入文件(例如usrwl.dat)時,會出現Access Denied錯誤,如下圖所示。看來這就是問題的根源了,很顯然紫光拼音把它的重要配置文件都存在[用戶配置文件夾]裡,只有具備讀寫權限,紫光拼音才能正常工作。
http://blogs.itecn.net/photos/winvista/images/2964/original.aspx

完整性級別的深遠影響

看起來,只不過是IE進程沒有D:\Users\Admin\AppData\Roaming\Unispim目錄的寫入權限。這還不簡單,修改一下權限不就行了?
然而如果用AccessChk命令檢查NTFS權限,發現當前帳戶Admin對D:\Users\Admin\AppData\Roaming\Unispim目錄擁有讀寫權限,如下圖所示。
http://blogs.itecn.net/photos/winvista/images/2965/original.aspx
這就奇怪了,明明Admin帳戶有權寫入該目錄,為什麼系統要說「不」呢?這裡就要應用到前面所說的MIC機制。原來在Windows Vista底下,系統不光是查看資源對象的ACL,還要查看進程和資源對像各自的完整性級別(Integrity Level),就算進程滿足資源對象的ACL要求,如果進程的完整性級別更低,那麼該進程還是無法擁有資源對象的寫入權限。這就好比男女雙方求愛,除了看對方的經濟收入等條件(相當於ACL),還要看是否門當戶對(相當於完整性級別)J。
而運行在保護模式下的IE瀏覽器,IE進程的完整性級別是Low,這可以從它的訪問令牌裡得知。借助Process Explorer查看IE進程屬性的「安全」標籤頁,可以看到其訪問令牌裡有一個「Mandatory Label\Low Mandatory Level」的SID(相應的標誌位是「Integrity」),這表明IE進程的完整性級別是「Low」。
看來D:\Users\Admin\AppData\Roaming\Unispim目錄的完整性級別一定比IE進程高,所以IE進程才無法寫入該目錄。那麼如何查看目錄的完整性級別呢?非常可惜Windows Vista目前還沒有提供查看的工具。不過幸運的是,Sysinternals所提供的AccessChk可以方便地進行查看。
提示 由於聰明的Mark(Sysinternals的掌門,《Windows Internals》一書的作者)已經就職於微軟, Windows Vista可能會內置這款工具。
在命令提示符下運行以下命令,就可以查看該目錄下所有文件的完整性級別:
AccessChk -i D:\Users\Admin\AppData\Roaming\Unispim
可以看到該目錄下的所有文件的完整性級別都是「Medium」,如下圖所示,難怪IE進程要被拒絕了!
http://blogs.itecn.net/photos/winvista/images/2966/original.aspx
可見,IE保護模式有多厲害!在UAC模式下,應用程序會盡可能運行在普通用戶權限下,但至少還是可以訪問[用戶配置文件夾]裡的內容,因為這時候應用程序的完整性級別也是「Medium」,所以不會受到限制。

獨立的四套班子

讀者朋友可能會問,既然IE瀏覽器運行在「Low」的級別,那麼它怎麼能夠訪問IE臨時文件、歷史等工作目錄,這些目錄不都是在[用戶配置文件夾]裡,它們的完整性級別應該是「Medium」啊?
原來,對於保護模式下的IE瀏覽器來說,它擁有一套獨立的「四套班子」:
(1) IE臨時文件: %userprofile%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Low
(2) 系統臨時目錄: %userprofile%\AppData\Local\Temp\Low
(3) Cookies: %userprofile%\AppData\Roaming\Microsoft\Windows\Cookies\Low
(4) 歷史: %userprofile%\AppData\Local\Microsoft\Windows\History\Low
這些目錄的完整性級別都是「Low」,以便IE進程能夠正常訪問。
注意
值得一提的是,收藏夾並沒有保護模式IE的獨立版本,這又是為什麼?原來無論是訪問收藏夾,還是添加收藏夾,都會借助User代理進程(User Broker)完成,該代理程序和IE瀏覽器位於同一個目錄,進程映像名為ieuser.exe。
代理進程的引入,充分體現了Windows安全設計中的特權分離思想:
Windows Vista把傳統IE瀏覽器,把傳統的IE進程一分為三,分別負責不同安全等級的任務。把最常用的、無需特權的網頁瀏覽任務交給IE進程本身去完成;把中等特權的任務(例如保存圖片),交給用戶代理進程(ieuser.exe)去完成;把高特權的任務(例如安裝加載項),交給管理員代理進程去完成(ieinstal.exe)。而老版本的Windows則是把所有的任務,不管其所需的安全等級,都交由一個IE進程去完成。
http://blogs.itecn.net/photos/winvista/images/2967/original.aspx

IE保護模式的文件虛擬重定向

然而奇怪的是,為什麼紫光拼音只是在我這台計算機上有點「水土不服」,而在別的計算機上卻能夠過得好好的?
這就要說到IE保護模式的另外一個優勢了:
如果IE保護模式只有這點「防守」的能耐,那麼它還不足於成為IE 7+瀏覽器最重要的安全特性。事實上,IE保護模式既具備嚴厲的安全措施(防守),同時又具備靈活的兼容性手段(進攻),可以說是攻守兼備。
原來Windows Vista為了能夠讓絕大多數加載項都能在IE瀏覽器上正常運行,IE保護模式採用一種虛擬重定向技術。
原來IE保護模式在以下目錄中,創建一個和[用戶配置文件夾]完全一致的目錄層次[擁有「Low」的完整性級別]:
%userprofile%\AppData\Local\Microsoft\Windows\Temporary Internet Files\Virtualized
例如D:\Users\Admin,對於IE保護模式來說,還有一套完全一致的虛擬版本:
D:\Users\Admin\AppData\Local\Microsoft\Windows\Temporary Internet Files\Virtualized\D\Users\Admin
這樣,如果IE加載項需要修改[用戶配置文件夾]下的文件,系統就會自動重定向到該文件的「虛擬」版本,對於該加載項來說,它根本不知道自己被IE保護模式欺騙了。
在其他正常的計算機上,當在IE保護模式下呼出紫光拼音輸入法時,利用Filemon工具進行檢測,會發現當紫光拼音想要修改D:\Users\Admin\AppData\Roaming\Unispim下的usrwl.dat文件時,實際上是修改D:\Users\Admin\AppData\Local\Microsoft\Windows\Temporary Internet Files\Virtualized\D\Users\Admin\AppData\Roaming\Unispim目錄下的usrwl.dat文件,如下圖所示,所以紫光拼音可以正常工作。
http://blogs.itecn.net/photos/winvista/images/2968/original.aspx
提示
不少讀者朋友提到某些第三方的Web應用程序也有安全模式的功能。確實現在不少開發商都注意到安全的重要性,但是IE保護模式的安全效果,無疑更佔上風。以電驢eMule為例,其安全模式是在系統裡新增一個名為eMule_Secure的普通用戶,然後借助runas的方法以該普通用戶身份運行eMule,以達到安全目的。這種方法的安全級別,和Windows Vista的UAC處於同一層次,比起IE保護模式,其安全性還是有所不如。更重要的是,UAC和IE保護模式,既安全、又方便、且兼容。
唯一遺憾的是,筆者的這台計算機,不知道出於什麼原因,無論是Beta 2、5456,還是最新的5472.5版本,紫光拼音輸入法無法正常觸發IE的虛擬重定向功能,所以導致拒絕訪問的錯誤。

巧妙的解決辦法

作為一名狂熱的Windows Vista愛好者,自然不能束手就擒,也不能把電腦砸了,所以咱還得好好想想解決辦法。以下兩個解決辦法:
1.假作真時真亦假
由於暫時沒有現成的工具可以修改目錄的完整性級別,同時Windows Vista不能替我效勞實現虛擬重定向,那就我們就自己動手創建!
假如我們把D:\Users\Admin\AppData\Roaming\Unispim目錄設置為某個「Low」目錄的軟鏈接(Soft Link),那麼每次紫光拼音試圖訪問D:\Users\Admin\AppData\Roaming\Unispim目錄時,都會被NTFS文件系統自動重新定向到這個完整級別為「Low」的新目錄中,這樣就可以順利達到目的了。
由於我們知道D:\Users\Admin\AppData\Local\Microsoft\Windows\Temporary Internet Files\Low目錄具有「Low」完整性級別,所以先在其下新建一個Unispim子目錄,該子目錄會自動繼承「Low」完整性級別。
先刪除D:\Users\Admin\AppData\Roaming\Unispim目錄下的所有內容,然後可以借助Linkd命令行工具,把D:\Users\Admin\AppData\Roaming\Unispim目錄「映射」到D:\Users\Admin\AppData\Local\Microsoft\Windows\Temporary Internet Files\Low\Unispim目錄,如下圖所示。運行完命令後,記住必須重啟或者註銷後重新登錄一下。
http://blogs.itecn.net/photos/winvista/images/2969/original.aspx
從《Windows Internals》裡我們可以瞭解到,這種「映射」機制,實際上是給NTFS文件增加一個重解析點的屬性。用Filemon工具可以檢測到,當紫光拼音訪問D:\Users\Admin\AppData\Roaming\Unispim目錄下的某個文件時,會被自動「REPARSE」(重解析)到D:\Users\Admin\AppData\Local\Microsoft\Windows\Temporary Internet Files\Low\Unispim目錄下,如下圖所示。
http://blogs.itecn.net/photos/winvista/images/2970/original.aspx
這種方法雖然是個特例,但是大家也可以借鑒用於其他IE加載項不能正常工作的情況。
提示 不推薦映射到D:\Users\Admin\AppData\Local\Microsoft\Windows\Temporary Internet Files\virtualized目錄下,否則可能干擾正常的虛擬重定向功能。
2.把網頁添加到可信區域
如果不想那麼麻煩,也可以把所需文字輸入的網頁添加到可信站點列表。因為在可信區域裡,IE瀏覽器默認運行在非保護模式,也就是運行在普通的UAC安全級別。這樣紫光拼音就可以正常訪問D:\Users\Admin\AppData\Roaming\Unispim目錄,因為這時候IE進程和該目錄的完整性級別是一樣的。
在下圖中,可以看到IE瀏覽器的狀態欄上顯示該網頁位於Internet區域,保護模式處於啟用狀態,這時候雙擊這裡即可打開IE的安全設置。
http://blogs.itecn.net/photos/winvista/images/2989/original.aspx
可以看到,可信站點區域默認禁用「保護模式」,如下圖所示。只要把指定的網站加入到可信站點列表中,就可以正常使用紫光拼音。
http://blogs.itecn.net/photos/winvista/images/2972/original.aspx

參考資料

1.《Protected Mode in Vista IE7》,參見微軟IE Team的官方Blog:
http://blogs.msdn.com/ie/archive/2006/02/09/528963.aspx


P.S 轉載自大陸網站,給各位參考!
__________________
http://e-hom.idv.tw/data/omar/omar-3.gif
Omar Lin 目前離線  
送花文章: 1003, 收花文章: 1547 篇, 收花: 5246 次
向 Omar Lin 送花的會員:
quasar (2007-03-08)
感謝您發表一篇好文章
 


主題工具
顯示模式

發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 02:25 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1