Windows Vista系統賬戶保護機制初探
最近Vista又有了很多新聞,還有Vista中的新成員WMP11也閃亮登場。今天,我們就一起來看看Vista中是如何保護賬戶安全的。
通常在提到微軟的操作系統時,我們最關心的永遠都是安全性。因為普及率非常高,再加上全球無數各種水平的用戶都在使用它,同時在微軟的操作系統上執行有大量質量良莠不齊的應用程式,這一切結合起來就讓微軟產品的安全問題非常突出。
例如前兩年曾肆虐網路的衝擊波、振蕩波、斯文等病毒,都是利用了微軟產品的漏洞以及用戶的粗心大意傳播開的。
微軟自然不會讓這種問題繼續下去。在去年很長的一段時間裡,微軟全部的開發人員都停下了手頭的開發工作,開始對現有產品進行安全性檢查。這個檢查直接影響了Windows XP
SP2和Vista的推出時間,不過從檢查之後發佈的Windows XP SP2和Windows Server 2003 SP1來看,安全性確實得到了很大提高,長時間的等待是值得的。
雖然在打過修正檔之後安全性得到了一定提高,不過這畢竟還是在現有漏洞上打修正檔,總會讓人覺得不夠放心。那麼全新的下一代操作系統在安全性方面會有什麼進步?我們可以通過Vista測試版體驗一下。本文以
5219版Vista為例,在該版本中,安全性方面最主要的一個改進就是增加了一個叫做用戶賬戶保護的功能(User Account Protection,UAP)。
Vista發展動態
Vista新成員WMP11亮相
作為Windows捆綁的播放器,
WMP一直擁有巨大的用戶群,它每一次新版本的發佈都為很多Windows的粉絲們所關注。最近,WMP11的發佈終於在Vista Beta1推出4個月後有了眉目。從抓圖來看,WMP11增加了預覽功能,可以顯示視頻文件的縮略圖。其用戶界面大體上與前作相同,但在細節上,更突出了面板的質感,和晶瑩剔透的Vista配合而相得益彰。

漂亮的Vista WMP11
你可能覺得,這是一套相當安全並且方便的機制,因為只要在登入系統的時候輸入一次
用戶名和密碼,就可以在整個登入過程中直接執行任何具有權限的操作。同時只要保護好
SAM資料庫,也就不用擔心系統的安全問題。然而事實遠非如此,這樣的做法雖然方便,不過卻相當不安全。
我們可以考慮這樣的情況:使用管理員賬戶登入系統後,我們執行的任何程式自然也將具有管理員權限。如果我們不小心執行了網上下載的含有惡意程式的文件會怎樣?惡意程式在執行的時候會使用當前用戶的訪問憑據,也就是說程式的工作行程也具有了管理員權限,進而該工作行程可以對系統進行任何操作。意識到其中包含的風險了吧。
所以很多介紹系統安全的文章都會建議,平時使用電腦的時候最好不要用管理員賬戶登入,而是用權限小一些的賬戶,只有在偶爾需要進行維護或者其他必要操作的時候才使用管理員賬戶,或者直接使用Runas命令。這樣才能保證系統安全。
小知識:不得不提的Runas命令
這裡再介紹一下Runas命令。通過該命令,我們可以在保持當前用戶登入的情況下使用其他用戶的身份執行程式。例如,對於開始表表菜單中某個程式的快捷方式,我們只需要在該快捷方式上點擊滑鼠右鍵,然後點擊「執行方式」命令,接著在彈出的交談視窗中選擇「下列用戶」選項,指定一個用戶名並輸入密碼。這樣程式就可以使用指定的用戶身份執行了。
當然,如果你喜歡使用命令行方式,也可以執行CMD打開命令提示字元,使用類似這樣的命令:「runas user:要使用的用戶名 要執行的程式的路徑和名稱」,按下Enter鍵,並輸入該用戶的密碼。例如通過「runas user:administrator regedit」這樣的命令就可以使用Administrator的身份執行註冊表編輯器。
雖然我們可以在平時使用權限低的用戶名登入,但在需要執行特定操作的時候使用runas命令,不過這還是有些麻煩,同時需要進行的額外操作也太多。為了解決這一問題,Vista中提供了UAP功能。
在介紹這個功能之前,我們先瞭解一下Windows中的各種權限是如何控制的。這部分主要以單機或工作組環境下的Windows XP Professional為例,同時也適用於Windows 2000/2003,不適用於Windows 98。
系統安裝好後,所有用戶的憑據訊息(也就是用戶名和密碼)都被儲存在本機SAM(Security Accounts Manager,安全賬戶管理器)資料庫中。當用戶登入系統時,首先要輸入用戶名和密碼,這些訊息由winlogon工作行程獲取,並由LSA(Local Security Authority,本機安全驗證)子系統提交到SAM資料庫中驗證。
如果SAM資料庫中有符合條件的記錄,那麼LSA子系統就會產生一個訪問令牌(Access Token),並傳遞給用戶。當該用戶需要執行程式或訪問資源的時候,系統首先會在用戶持有的訪問令牌中查找相應的權限訊息,然後和想要進行的操作所需要具有的權限進行比較,如果權限足夠,那麼就可以進行操作;反之操作則會被禁止。
以執行程式為例,當我們試圖啟動一個程式的時候,系統會使用我們的訪問令牌來啟動程式,這樣被啟動的程式就擁有了和令牌所有者一樣的權限。為了證實這一點,我們可以打開Windows任務管理器的工作行程選擇項。該選擇項下列出了當前系統中的所有工作行程,每個工作行程在「用戶名」一欄就顯示了該工作行程的「身份」。
以圖1中的幾個工作行程為例,csrss.exe是系統工作行程,因此用戶名一欄顯示的是「SYSTEM」;emeditor.exe是當前登入用戶啟動的程式,因此用戶名一欄顯示的是當前用戶的用戶名;emule.exe雖然也是當前用戶啟動的,不過在啟動的時候使用了Runas命令,因此看起來該程式就好像其他用戶啟動的。當然,因為這三個工作行程使用了不同的訪問令牌(也就是用戶身份),那麼這三個程式的權限也就會有所不同。

工作行程顯示
啟用該功能之後,Vista實際上自動執行在一個被減少了很多特權的安全級別上。如果因為某些操作,系統需要更高的權限,就會顯示一個交談視窗,並要你輸入密碼。這個密碼只能用於發起這次請求的操作,隨後你進行的其他操作,哪怕是由此前的操作導致的額外操作,全部都是以最低的權限執行的。