Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Windows 7系統教程 >> win7系統基礎知識 >> Win7操作系統用戶帳戶控制功能詳解(1)

Win7操作系統用戶帳戶控制功能詳解(1)

日期:2017/1/24 14:25:17      編輯:win7系統基礎知識
在家庭和公司環境中,使用標准用戶帳戶可以提高安全性並降低總體擁有成本。當用戶使用標准用戶權限(而不是管理權限)運行時,系統的安全配置(包括防病毒和防火牆配置)將得到保護。這樣,用戶將能擁有一個安全的區域,可以保護他們的帳戶及系統的其余部分。對於企業部署,桌面IT經理設置的策略將無法被覆蓋,而在共享家庭計算機上,不同的用戶帳戶將受到保護,避免其他帳戶對其進行更改。
  
  但是,很久以來,Windows的用戶一直都在使用管理權限運行。因此,軟件通常都開發為使用管理帳戶運行,並且(通常無意間)依賴於管理權限。為了讓更多軟件能夠使用標准用戶權限運行,並且幫助開發人員編寫能夠使用標准用戶權限正常運行的應用程序,WindowsVista引入了用戶帳戶控制(UAC)。UAC集成了一系列技術,其中包括文件系統和注冊表虛擬化、受保護的系統管理員(PA)帳戶、UAC提升權限提示,以及支持這些目標的Windows完整性級別。我在我的會議演示文稿和TechNet雜志UAC內部信息一文中詳細討論了這些內容。
  
  Windows7沿用了UAC的目標,基礎技術相對未做改變。但是,它引入了UAC的PA帳戶可以運行的兩種新模式,以及某些內置Windows組件的自動提升機制。在此文章中,我將論述推動UAC技術發展的因素、重新探討UAC和安全性之間的關系、描述這兩種新模式,並介紹自動提升的具體工作方式。請注意,此文章中的信息反映了
  
  Windows7預發布版本的行為,該行為在許多方面與beta版有所不同。
  
  UAC技術
  
  UAC技術的最基本元素和直接效益在於它能使標准用戶更方便地使用Windows。演示示例展示了WindowsXP和WindowsVista上有關設置時區的權限要求的不同之處。在WindowsXP上,更改時區需要管理權限,實際上,即使是使用時間/日期控制面板小程序查看時區也需要管理權限。
  
  這是因為WindowsXP未將更改時間(安全敏感的系統操作)與更改時區(只是影響時間的顯示方式)區分開來。在WindowsVista(和Windows7)中,更改時區不是一項管理操作,並且時間/日期控制面板小程序也將管理操作與標准用戶操作進行了分隔。僅僅這一項更改就讓許多企業能夠為出差的用戶配置標准用戶帳戶,因為用戶將能夠調整時區來反映他們的當前位置。Windows7進一步做出了改進,比如刷新系統的IP地址、使用WindowsUpdate來安裝可選的更新和驅動程序、更改顯示DPI,以及查看標准用戶可訪問的當前防火牆設置。
  
  文件系統和注冊表虛擬化在後台工作,可以幫助許多無意間使用管理權限的應用程序在沒有管理權限的情況下也能正常運行。對於不必要地使用管理權限而言,最常見的情況是將應用程序設置或用戶數據存儲在注冊表或文件系統中系統所使用的區域內。舉例來說,某些舊版應用程序將其設置存儲在注冊表的系統范圍部分
  
  (HKEY_LOCAL_MacHINE/Software),而不是每用戶部分(HKEY_CURRENT_USER/Software),而注冊表虛擬化會將嘗試寫入系統位置的操作轉到HKEY_CURRENT_USER(HKCU)中的位置,同時保持應用程序兼容性。
  
  設計PA帳戶的目的是為了鼓勵開發人員將應用程序編寫為只需要標准用戶權限,同時使盡可能多的在管理組件和標准用戶組件之間共享狀態的應用程序能夠繼續工作。默認情況下,WindowsVista或Windows7系統上的第一個帳戶(在Windows的早期版本上為完全權限管理員帳戶)是PA帳戶。PA用戶執行的任何程序都使用標准用戶權限運行,除非用戶明確提升了應用程序,即授予應用程序管理權限。諸如安裝應用程序和更改系統設置等用戶活動會觸發提升權限提示。這些提升權限提示是最顯著的UAC技術,表現形式為切換到一個包含允許/取消對話框的屏幕,背景為灰色的桌面快照。
  
  在安裝之後創建的帳戶是標准用戶帳戶,默認情況下,這些帳戶通過一個“即時權限提升”提示提供提升功能,該提示要求提供將用於授予管理權限的管理帳戶的憑據。利用這一便捷功能,只要共享家庭計算機的家庭成員或更注重安全的使用標准用戶帳戶的用戶知道管理帳戶的密碼,他們就能夠用管理權限來運行應用程序,而不必手動切換到其他用戶登錄會話。此類應用程序的常見示例包括安裝程序以及家長控制配置。
  
  在啟用了UAC後,所有用戶帳戶(包括管理帳戶)都將使用標准用戶權限運行。這意味著,應用程序開發人員必須考慮他們的軟件默認情況下將沒有管理權限這一事實。這應會提醒他們將其應用程序設計為使用標准用戶權限工作。如果應用程序或其功能的某些部分需要管理權限,它可以利用提升機制來允許用戶解鎖該功能。通常,應用程序開發人員只需進行少許更改就可讓其應用程序使用標准用戶權限正常工作。如有關UAC的E7博客文章所述,UAC成功地改變了開發人員編寫軟件的方式。
  
  提升權限提示的另一個優點是:它們能夠在軟件想要對系統進行更改時“通知”用戶,並使用戶有機會來阻止這種情況。例如,如果用戶不信任或不想允許修改系統的軟件包要求管理權限,則它們可以拒絕提示。
  
  提升和惡意軟件安全性
  
  UAC的主要目標是讓更多用戶能夠使用標准用戶權限運行。但是,其中一項UAC技術看起來像是安全功能:許可提示。許多人認為,因為軟件必須要求用戶授予其管理權限,因此他們能夠防止惡意軟件獲得管理權限。提示是一種視覺暗示,它僅為其所述操作獲取管理權限,除此之外,用戶還可以切換到不同桌面來顯示提升對話框,以及使用Windows完整性機制,包括用戶界面特權隔離(UIPI),這些都使人們更加堅信這一理念。
  
  正如在WindowsVista推出之前我們所談到的,提升的主要目的不是安全性,而是其方便性:如果用戶必須通過登錄到管理帳戶或通過“快速用戶切換”切換到管理帳戶,從而切換帳戶以執行管理操作,則大多數用戶都只會切換一次,而不會切換回來。更改應用程序開發人員進行設計所針對的環境將不會有進展。那麼,安全桌面和Windows完整性機制的目的是什麼?
  
  為提示切換到不同桌面的主要原因是:標准用戶軟件無法“欺騙”提升權限提示,例如,它們無法通過在對話框上的發布者名稱上繪圖來欺騙用戶,讓用戶認為是Microsoft或另一個軟件供應商(而不是這些軟件)生成了提示,從而欺騙提升權限提示。這種替代桌面稱為“安全桌面”,因為它是系統(而不是用戶)所擁有的,就像系統顯示Windows登錄對話框的桌面一樣。
  
  使用其他桌面還有一個重要目的,就是為了實現應用程序兼容性:在正在運行其他用戶擁有的應用程序的桌面上,如果內置輔助功能軟件(比如屏幕鍵盤)能夠正常工作,那麼此時就有一個第三方軟件不能正常工作。當本地系統帳戶擁有的提升對話框顯示在用戶擁有的桌面上時,該軟件將無法正常工作。
  
  Windows完整性機制和UIPI的設計目的是在提升的應用程序周圍建立一道保護性屏障。它最初的目標其中之一是防止軟件開發人員投機取巧,利用已經提升的應用程序來完成管理任務。使用標准用戶權限運行的應用程序無法將合成鼠標或鍵盤輸入發送到提升的應用程序中,以使應用程序執行其指令,也無法將代碼注入提升的應用程序以執行管理操作。
  
  Windows完整性機制和UIPI在WindowsVista中用於保護模式InternetExplorer,使得感染IE的運行實例的惡意軟件更難於修改用戶帳戶設置,例如,將本身配置為在每次用戶登錄時啟動。盡管WindowsVista的一個早期設計目標是使用帶有安全桌面的提升、Windows完整性機制和UIPI,在使用標准用戶權限和管理權限運行的軟件之間建立一個堅不可摧的屏障(稱為安全邊界),但由於以下兩個原因,而導致該目標未能實現,並隨之被放棄:可用性和應用程序兼容性。
  
  首先,考慮提升對話框本身。它顯示將被授予管理權限的主要可執行文件的名稱和發布者。遺憾的是,盡管越來越多的軟件發布者為其代碼添加了數字簽名,但仍然有一些軟件發布者沒有這樣做,並且還有許多未添加簽名的舊版應用程序。對於未簽名的軟件而言,提升對話框只會顯示可執行文件的文件名,因此,對於某些惡意軟件(例如,已采用用戶帳戶運行並且正在監視未簽名Setup.exe應用程序安裝程序的提升)而言,將能夠將可執行文件替換為惡意的Setup.exe,而用戶卻一無所知(請參閱圖1)。
  
  其次,該對話框不會告知用戶可執行文件在啟動時將會加載哪些DLL。如果可執行文件位於用戶可以控制的目錄中,則使用用戶標准權限運行的惡意軟件將能夠替換該位置中軟件將使用的任何關聯DLL。此外,惡意軟件可以使用並行功能,使可執行文件加載應用程序或系統DLL的惡意版本。並且,除非用戶警惕地單擊詳細信息按鈕,並仔細查看為提升可執行文件列出的文件路徑,否則惡意軟件可以將可執行文件復制到名稱類似的位置,例如,/ProgramFiles/Vendor/Application.exe(注意應為“ProgramFiles”的內容中缺少的空格),在該位置中,惡意軟件將可控制應用程序加載哪些DLL。在圖2中,我已將Microsoft網絡監視器的一個組件復制到用戶創建的C:/ProgramFiles目錄(用戶可控制該目錄),並啟動了該組件。
  
  最後,為了實現應用程序兼容性,提升的應用程序與標准用戶環境共享實質性狀態,惡意應用程序可以使用該狀態來影響提升的應用程序的行為。就這一點而言,最直觀的示例就是用戶的注冊表配置文件HKEY_CURRENT_USER(HKCU)。該配置文件是共享的,因為用戶希望他們作為標准用戶注冊的設置和擴展能夠在提升的應用程序中工作。惡意軟件可以使用HKCU中注冊的外殼擴展來加載到使用任何外殼浏覽對話框(比如“打開文件”和“保存文件”)的已提升應用程序中。其他各種狀態也是共享的,特別是基本命名對象命名空間,應用程序將在其中創建同步和共享內存對象。舉例來說,惡意軟件可以利用該共享來劫持提升的應用程序使用的共享內存對象,從而對應用程序和系統造成危害。
  
  至於Windows完整性機制,由於我前面提到的提升問題,因此它作為屏障的有效性是有限的,而它還存在由於應用程序兼容性而導致的限制。舉例來說,UIPI不會阻止標准用戶應用程序在桌面上繪圖,這一點可能會被用來欺騙用戶,采用為惡意軟件授予管理權限的方式來與提升的應用程序交互。同時,Windows完整性機制也不能跨網絡應用。采用PA帳戶運行的標准用戶應用程序將能訪問PA帳戶具有管理權限的遠程系統上的系統資源。如果解決這些限制,將會對應用程序兼容性造成很大影響。盡管如此,我們一直在探尋提高系統安全性(例如,改善保護模式IE),同時解決應用程序兼容性問題並與軟件開發人員密切配合的方法。
  
  那麼,當您在啟用了UAC的情況下采用WindowsVistaPA帳戶運行時,您將得到什麼程度的惡意軟件防護?首先,請記住,要使任何這種情況發生,惡意軟件首先必須進入系統並且開始執行。Windows具有許多深層防御功能,其中包括數據執行保護(DEP)、地址空間加載隨機化(ASLR)、保護模式IE、IE8SmartScreen篩選器,以及可以幫助防止惡意軟件進入系統並運行的WindowsDefender。
  
  至於惡意軟件通過某種方式成功進入系統的情況,由於惡意軟件作者(比如合法的開發人員)假設用戶使用管理權限運行,因此大多數惡意軟件將無法正常工作。僅這一點可以被視為一種安全優勢。但是,已進入系統並且設計為可利用這些機會的惡意軟件將能夠在用戶第一次提升時獲得管理權限—但惡意軟件甚至不需要等待“實際”提升,因為它可以促成提升,而這種提升甚至可以欺騙最注重安全的用戶。我已經在我的UAC內部信息和Windows安全邊界演示文稿中公開演示過惡意軟件如何能夠劫持提升過程(演示位於安全邊界討論的1分03秒處)。但是,請記住,如果惡意軟件已經開始運行,它只需使用標准用戶權限就可達到惡意軟件想要達到的大部分目的,其中包括將本身配置為在每次用戶登錄時運行、竊取或刪除所有用戶的數據,或者甚至成為僵屍網絡的一部分。
Copyright © Windows教程網 All Rights Reserved