色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

詳細(xì)了解Windows Vista內(nèi)核的安全性

瀏覽:102日期:2023-08-21 09:34:51

Windows Vista通過許多新功能和改進(jìn)提高了系統(tǒng)的可靠性和您對系統(tǒng)與應(yīng)用程序問題的診斷能力。例如,內(nèi)核Windows事件跟蹤 (ETW) 記錄程序總是處于運(yùn)行狀態(tài),能夠生成有關(guān)文件、注冊表、中斷以及其他活動類型的跟蹤事件,并保存在循環(huán)緩沖區(qū)中。當(dāng)出現(xiàn)問題時,新的 Windows 診斷基礎(chǔ)結(jié)構(gòu) (WDI) 會捕獲緩沖區(qū)快照,并進(jìn)行本地分析或上載到 Microsoft 支持進(jìn)行故障排除。

新的 Windows 性能和穩(wěn)定性監(jiān)視器可以幫助用戶通過更改系統(tǒng)配置將錯誤(如崩潰和掛起)相互關(guān)聯(lián)。強(qiáng)大的系統(tǒng)修復(fù)工具 (SRT) 取代了故障恢復(fù)控制臺,用于不可啟動系統(tǒng)的離線恢復(fù)。

有三個方面依靠對系統(tǒng)進(jìn)行的內(nèi)核級更改,即需要您認(rèn)真閱讀的本文中的以下方面:內(nèi)核事務(wù)管理器 (KTM)、改進(jìn)的崩潰處理和以前的版本。

1.內(nèi)核事務(wù)管理器

軟件開發(fā)中最繁瑣的一個方面就是處理錯誤條件。特別是在進(jìn)行高級操作的過程中,應(yīng)用程序完成了一個或多個導(dǎo)致文件系統(tǒng)或注冊表更改的子任務(wù)。例如,應(yīng)用程序的軟件更新服務(wù)可能要進(jìn)行幾次注冊表更新,替換應(yīng)用程序的可執(zhí)行文件之一,而在它嘗試更新第二個可執(zhí)行文件時被拒絕訪問。如果服務(wù)不想將應(yīng)用程序留在因此導(dǎo)致的不一致狀態(tài),就必須跟蹤所有更改并為撤銷它們做好準(zhǔn)備。測試錯誤恢復(fù)代碼很困難,并經(jīng)常跳過,因此恢復(fù)代碼中的錯誤會讓努力徒勞無功。

為 Windows Vista 編寫的應(yīng)用程序通過使用 NTFS 中新的事務(wù)支持和使用內(nèi)核事務(wù)管理器的注冊表,不費(fèi)吹灰之力即可獲得自動錯誤恢復(fù)能力。當(dāng)應(yīng)用程序想進(jìn)行許多相關(guān)更改時,可以創(chuàng)建分布式事務(wù)處理協(xié)調(diào)器 (DTC) 事務(wù)和 KTM 事務(wù)處理,或直接創(chuàng)建 KTM 處理,并將對文件和注冊表項的修改與事務(wù)關(guān)聯(lián)起來。如果所有的更改成功,應(yīng)用程序會提交事務(wù)同時更改生效,但是在此之前任何時候,應(yīng)用程序可以回滾事務(wù),然后放棄更改。

其有利因素在于,其他應(yīng)用程序在提交事務(wù)后才能看到事務(wù)中的更改,而在 Windows Vista 和即將問世的 Windows Server(代號名為“Longhorn”)中使用 DTC 的應(yīng)用程序會通過 SQL Server、Microsoft Message Queue Server (MSMQ) 以及其他數(shù)據(jù)庫協(xié)調(diào)其事務(wù)。因此,使用 KTM 事務(wù)的應(yīng)用程序更新服務(wù)永遠(yuǎn)不會將應(yīng)用程序留在不一致的狀態(tài)。這就是 Windows Update 和系統(tǒng)還原使用事務(wù)的原因。

作為事務(wù)支持的核心,KTM 允許事務(wù)資源管理器(如 NTFS 和注冊表)對應(yīng)用程序所做的特定更改協(xié)調(diào)其更新。在 Windows Vista 中,NTFS 使用稱為 TxF 的擴(kuò)展來支持事務(wù)。注冊表使用稱為 TxR 的類似擴(kuò)展。這些內(nèi)核模式資源管理器與 KTM 一起協(xié)調(diào)事務(wù)狀態(tài),正如用戶模式資源管理器使用 DTC 跨多用戶模式資源管理器協(xié)調(diào)事務(wù)狀態(tài)一樣。第三方也可以使用 KTM 實(shí)施其自己的資源管理器。

TxF 和 TxR 都定義了一套新的文件系統(tǒng)和注冊表 API(與現(xiàn)有的類似,只不過它們包含事務(wù)參數(shù))。如果應(yīng)用程序想在事務(wù)中創(chuàng)建文件,首先要使用 KTM 創(chuàng)建事務(wù),然后將引起的事務(wù)處理傳遞給新文件創(chuàng)建 API。

TxF 和 TxR 都依賴在 Windows Server 2003 R2 中引入的公用日志文件系統(tǒng)或 CLFS (%SystemRoot%System32Clfs.sys) 的高速文件系統(tǒng)記錄功能。TxR 和 TxF 使用 CLFS 永久性地存儲提交事務(wù)之前的事務(wù)狀態(tài)更改。這樣可以讓它們提供事務(wù)恢復(fù)并確保即使在斷電時也可以恢復(fù)。除了 CLFS 日志,TxR 還創(chuàng)建了一組相關(guān)的日志文件,跟蹤 %Systemroot%System32ConfigTxr 中系統(tǒng)注冊表文件的事務(wù)更改(如圖 1 所示),同時還為每個用戶注冊表配置單元單獨(dú)創(chuàng)建幾組日志文件。TxF 在名為 $Extend$RmMetadata 的卷的隱藏目錄中存儲每個卷的事務(wù)數(shù)據(jù)。

2.增強(qiáng)的崩潰支持

當(dāng) Windows 遇到不可恢復(fù)的內(nèi)核模式錯誤時(無論是由于設(shè)備驅(qū)動程序錯誤、硬件故障還是操作系統(tǒng)問題),在出現(xiàn)“藍(lán)屏死機(jī)”現(xiàn)象和將物理內(nèi)存的部分或所有內(nèi)容寫入崩潰轉(zhuǎn)儲文件(如果配置為執(zhí)行此操作)后,它會嘗試終止系統(tǒng)來防止磁盤數(shù)據(jù)的損壞。轉(zhuǎn)儲文件非常有用,因?yàn)楫?dāng)您在系統(tǒng)崩潰后重啟時,Microsoft 在線崩潰分析 (OCA) 服務(wù)會分析這些文件找出根本原因。如果愿意,您也可以使用面向 Windows 的 Microsoft 調(diào)試工具自已進(jìn)行分析。

不過,在以前的 Windows 版本中,只有在會話管理器 (%Systemroot%System32Smss.exe) 進(jìn)程初始化分頁文件后才會啟用對崩潰轉(zhuǎn)儲文件的支持。這意味著在此之前任何嚴(yán)重錯誤會導(dǎo)致藍(lán)屏,但沒有轉(zhuǎn)儲文件。由于在 Smss.exe 啟動之前,會出現(xiàn)大量的設(shè)備驅(qū)動程序初始化,所以早期的崩潰永遠(yuǎn)不會引起崩潰轉(zhuǎn)儲,因此使原因診斷極為困難。

在所有引導(dǎo)啟動設(shè)備驅(qū)動程序初始化之后,但在系統(tǒng)啟動驅(qū)動程序加載之前,Windows Vista 通過初始化轉(zhuǎn)儲文件支持,可減少無轉(zhuǎn)儲文件生成的時間窗口。由于這一更改,如果在引導(dǎo)過程開始時出現(xiàn)崩潰,系統(tǒng)就可以捕捉崩潰轉(zhuǎn)儲,讓 OCA 幫助您解決問題。此外,Windows Vista 使用 64KB 塊將數(shù)據(jù)存儲到轉(zhuǎn)儲文件中,而以前的 Windows 版本使用 4KB 塊寫入文件。這一更改使得大型轉(zhuǎn)儲文件的寫入速度最多可提高 10 倍。

應(yīng)用程序崩潰處理功能在 Windows Vista 中也得以改進(jìn)。在以前的 Windows 版本中,當(dāng)應(yīng)用程序崩潰時,它會執(zhí)行未處理的異常處理程序。處理程序啟動 Microsoft 應(yīng)用程序錯誤報告 (AER) 進(jìn)程 (%Systemroot%System32Dwwin.exe),顯示對話框,指明程序崩潰,并詢問您是否要向 Microsoft 發(fā)送錯誤報告。不過,如果崩潰時進(jìn)程主線程的堆棧損壞,未處理的異常處理程序執(zhí)行時會崩潰,導(dǎo)致內(nèi)核終止進(jìn)程、程序窗口立即消失,并且沒有錯誤報告窗口。

Windows Vista 將錯誤處理從崩潰進(jìn)程的上下文移至新服務(wù),即 Windows 錯誤報告 (WER)。此服務(wù)由服務(wù)托管進(jìn)程中的 DLL (%Systemroot%System32Wersvc.dll) 實(shí)施。在應(yīng)用程序崩潰時,它仍然會執(zhí)行未處理的異常處理程序,但是該處理程序會向 WER 服務(wù)發(fā)送消息,并且服務(wù)會啟動 WER 錯誤報告進(jìn)程 (%Systemroot%System32Werfault.exe) 以顯示錯誤報告對話框。如果堆棧損壞并且未處理的異常處理程序崩潰,處理程序會再次執(zhí)行并且再次崩潰,最終消耗所有線程的堆棧(使用內(nèi)存區(qū)域),此時內(nèi)核會介入,并向服務(wù)發(fā)送崩潰通知消息。

3.卷影復(fù)制

Windows XP 引入了一種稱為卷影復(fù)制的技術(shù),可生成磁盤卷的時間點(diǎn)快照。備份應(yīng)用程序可以使用這些快照生成一致的備份映像,但是快照卻被從視圖中隱藏,并僅保持備份過程所持續(xù)的時間。

快照實(shí)際上并不是卷的完整副本。更確切地講,它們是較早還原點(diǎn)的卷視圖,由與卷扇區(qū)副本(在生成快照后已更改)重疊的活動卷數(shù)據(jù)組成。卷快照提供程序的驅(qū)動程序 (%Systemroot%System32DriversVolsnap.sys) 監(jiān)視針對卷的操作,備份扇區(qū)副本后才允許扇區(qū)更改,將與快照相關(guān)的文件中的原始數(shù)據(jù)存儲到卷的 System Volume Information 目錄中。

Windows Server 2003 使用其共享文件夾的影副本對服務(wù)器上的管理員和客戶端系統(tǒng)上的用戶公開快照管理。此功能啟用了持續(xù)快照,用戶可通過 Explorer 屬性對話框中的“以前的版本”選項卡訪問它,因?yàn)槠湮募A和文件位于服務(wù)器的文件共享部分。

Windows Vista“以前的版本”功能為所有客戶端系統(tǒng)提供了此支持,即自動創(chuàng)建卷快照(通常每天一次),您可以通過使用共享文件夾影副本所用的相同界面的 Explorer 屬性對話框訪問快照。這樣可讓您查看、還原或復(fù)制您可能意外修改或刪除的文件和目錄的舊版本。雖然從技術(shù)角度來講這并不是新技術(shù),但 Windows Vista“以前的版本”實(shí)施的卷影復(fù)制優(yōu)化了 Windows Server2003在客戶端桌面環(huán)境中使用的功能。

Windows Vista 還充分利用了卷快照,以統(tǒng)一用戶和系統(tǒng)數(shù)據(jù)保護(hù)機(jī)制,避免保存冗余的備份數(shù)據(jù)。當(dāng)應(yīng)用程序安裝或配置更改造成錯誤或不合需要的行為時,您可以使用“系統(tǒng)還原”(在 Windows NT® 系列的操作系統(tǒng) Windows XP 中引入的一項功能)將系統(tǒng)文件和數(shù)據(jù)還原成創(chuàng)建還原點(diǎn)時其存在的狀態(tài)。

在 Windows XP 中,“系統(tǒng)還原”使用文件系統(tǒng)過濾器驅(qū)動程序(可以看到在文件級別的更改的一種驅(qū)動程序類型)在系統(tǒng)文件更改時備份其副本。在 Windows Vista 中,“系統(tǒng)還原”使用卷快照。當(dāng)您在 Windows Vista 中使用“系統(tǒng)還原”用戶界面返回到還原點(diǎn)時,您實(shí)際上是從與活動卷的還原點(diǎn)關(guān)聯(lián)的快照復(fù)制已修改的系統(tǒng)文件的較早版本。

4.BitLocker

Windows Vista 是迄今為止最安全的 Windows 版本。除了包含 Windows Defender 反間諜軟件引擎外,Windows Vista 還引入了大量的安全和縱深防御功能,包括 BitLocker™ 整卷加密功能、內(nèi)核模式代碼的代碼簽名、受保護(hù)的進(jìn)程、地址空間加載隨機(jī)化以及對 Windows 服務(wù)安全和用戶帳戶控制的改進(jìn)。

操作系統(tǒng)在運(yùn)行時只能增強(qiáng)其安全策略,因此當(dāng)系統(tǒng)的物理安全可能受到危害和從操作系統(tǒng)之外訪問數(shù)據(jù)時,您必須采取其他措施保護(hù)數(shù)據(jù)。諸如 BIOS 密碼和加密的基于硬件的機(jī)制,是通常用來防止未經(jīng)授權(quán)進(jìn)行訪問的兩種技術(shù),尤其是便攜式計算機(jī),最有可能丟失或被盜。

Windows 2000 引入了加密文件系統(tǒng) (EFS),并且在其 Windows Vista 體現(xiàn)中,EFS 包括了對以前實(shí)施功能的許多改進(jìn),包括性能改進(jìn)、支持分頁文件的加密和在智能卡上存儲用戶 EFS 密鑰。不過,您無法使用 EFS 保護(hù)對系統(tǒng)敏感區(qū)域的訪問,如注冊表配置單元文件。例如,如果組策略允許您登錄到便攜式計算機(jī)(甚至在沒有連接到域時),您的域憑據(jù)驗(yàn)證程序會在注冊表中緩存,因此攻擊者可以使用工具獲取您的域帳戶密碼哈希,并用來嘗試使用密碼破解程序獲取您的密碼。密碼會讓他們有權(quán)訪問您的帳戶和 EFS 文件(假設(shè)您沒有把 EFS 密鑰存儲在智能卡上)。

為了易于加密整個引導(dǎo)卷(包含 Windows 目錄的卷),包括其所有系統(tǒng)文件和數(shù)據(jù),Windows Vista 引入了整卷加密功能,稱為 Windows BitLocker 驅(qū)動器加密。與由 NTFS 文件系統(tǒng)驅(qū)動程序?qū)嵤┎⒃谖募墑e操作的 EFS 不同,BitLocker 在卷級別使用整卷加密 (FVE) 驅(qū)動程序 (%Systemroot%System32DriversFvevol.sys) 進(jìn)行加密,如圖 4 中圖解所示。

FVE 是過濾器驅(qū)動程序,因此它會自動查看 NTFS 發(fā)送到卷的所有 I/O 請求,在其寫入時加密塊,在其讀取時(在初始配置使用 BitLocker 時,會使用分配到塊的完整卷加密密鑰 (FVEK) 讀取它們)解密塊。默認(rèn)情況下,使用 128 位 AES 密鑰和 128 位擴(kuò)散器密鑰加密卷。因?yàn)榧用芎徒饷馨l(fā)生在 I/O 系統(tǒng)的 NTFS 之下,所以卷在 NTFS 看來好象沒有加密,并且 NTFS 甚至不需要知道已啟用了 BitLocker。不過,如果您嘗試從 Windows 外讀取卷上的數(shù)據(jù),它又看來象是隨機(jī)數(shù)據(jù)。

FVEK 使用卷主密鑰 (VMK) 加密,并存儲在卷的特殊元數(shù)據(jù)區(qū)域。當(dāng)您配置 BitLocker 時,會有許多關(guān)于如何保護(hù) VMK 的選項,取決于系統(tǒng)的硬件功能。如果系統(tǒng)有符合 TPM 規(guī)范 v1.2 的受信任的平臺模塊 (TPM),并有相關(guān)的 BIOS 支持,則您可以使用 TPM 加密 VMK(讓系統(tǒng)使用存儲在 TPM 中的密鑰或存儲在 USB 閃存設(shè)備中的密鑰加密 VMK),或使用 TPM 存儲的密鑰和在系統(tǒng)啟動時輸入的 PIN 加密密鑰。對于沒有 TPM 的系統(tǒng),BitLocker 提供使用存儲在外部 USB 閃存設(shè)備中的密鑰加密 VMK 的選項。在任何情況下,您都需要一個未加密的 1.5GB NTFS 系統(tǒng)卷,在該卷中存儲了啟動管理器和引導(dǎo)配置數(shù)據(jù)庫 (BCD)。

使用 TPM 的優(yōu)勢在于,如果 BIOS 或系統(tǒng)啟動文件在啟用 BitLocker 后做出更改,BitLocker 會使用 TPM 功能確保不解密 VMK 和解除對引導(dǎo)卷的鎖定。當(dāng)您第一次加密系統(tǒng)卷,以及每次對提及的所有組件執(zhí)行更新時,BitLocker 會借助于 TPM 設(shè)備驅(qū)動程序 (%Systemroot%System32DriversTpm.sys) 計算這些組件的 SHA-1 哈希,并將稱為測量的每個哈希存儲到不同的 TPM 平臺配置注冊表 (PCR)。接下來,它使用 TPM 密封 VMK,該操作使用存儲在 TPM 中的私鑰加密 TPM 和與 BitLocker 傳遞到 TPM 的其他數(shù)據(jù)一起存儲在 PCR 中的值。然后,BitLocker 將密封的 VMK 和加密的 FVEK 存儲在卷的元數(shù)據(jù)區(qū)域。

當(dāng)系統(tǒng)啟動時,它會測量自己的哈希和 PCR 加載代碼,并將哈希寫入 TPM 的第一個 PCR。然后,它哈希 BIOS,并將該測量存儲到相應(yīng)的 PCR。接下來,BIOS 按啟動序列哈希下一個組件,即引導(dǎo)卷的主引導(dǎo)記錄 (MBR),此過程會一直繼續(xù),直到測量操作系統(tǒng)加載器。運(yùn)行的每個后續(xù)代碼段負(fù)責(zé)測量其加載的代碼,并將測量結(jié)果存儲到 TPM 中相應(yīng)的注冊表。最后,當(dāng)用戶選擇要啟動哪個操作系統(tǒng)時,啟動管理器 (Bootmgr) 會從卷讀取加密的 VMK,并要求 TPM 取消密封。只有所有測量與密封 VMK 時相同時(包括可選的 PIN),TPM 才成功解密 VMK。

您可以考慮將此方案作為驗(yàn)證鏈,其中啟動序列中的每個組件會描述 TPM 的下一個組件。只有所有描述與提供的原始描述相符時,TPM 才泄露其秘密。因此,即使卸下磁盤并裝到其他系統(tǒng)、使用不同的操作系統(tǒng)啟動系統(tǒng)或引導(dǎo)卷上未加密文件遭到破壞,BitLocker 也會保護(hù)加密數(shù)據(jù)。

5.代碼完整性驗(yàn)證

作為內(nèi)核模式設(shè)備驅(qū)動程序執(zhí)行的惡意軟件(包括 rootkit)與內(nèi)核在相同的權(quán)限級別運(yùn)行,因此最難識別和刪除。這類惡意軟件可以修改內(nèi)核和其他驅(qū)動程序的行為,以便使其變得不可見。內(nèi)核模式代碼功能的 Windows Vista 代碼完整性,也稱為內(nèi)核模式代碼簽名 (KMCS),僅允許加載由開發(fā)人員發(fā)布和經(jīng)過數(shù)字簽名的設(shè)備驅(qū)動程序,這些開發(fā)人員已經(jīng)過為數(shù)不多的證書頒發(fā)機(jī)構(gòu) (CA) 之一的審查。默認(rèn)情況下,KMCS 在 Windows Vista 64 位系統(tǒng)上強(qiáng)制執(zhí)行。

因?yàn)樽C書頒發(fā)機(jī)構(gòu)會對其服務(wù)收取費(fèi)用并進(jìn)行基本的背景檢查,如驗(yàn)證業(yè)務(wù)識別,所以很難產(chǎn)生在 64 位 Windows Vista 上運(yùn)行的匿名內(nèi)核模式惡意軟件。此外,設(shè)法溜過驗(yàn)證進(jìn)程的惡意軟件可能會留下線索,這些線索在受到危害的系統(tǒng)發(fā)現(xiàn)惡意軟件時,可以反擊作者。KMCS 還有一些次要的用途,如在懷疑驅(qū)動程序有使客戶系統(tǒng)崩潰的錯誤和解除高清晰度多媒體內(nèi)容鎖定(我會在稍后簡單介紹)時,會向 Windows 在線崩潰分析團(tuán)隊提供聯(lián)系信息。

KMCS 使用 Windows 十多年來一直采用的公鑰加密技術(shù),并要求內(nèi)核模式代碼包括由受信任證書頒發(fā)機(jī)構(gòu)之一生成的數(shù)字簽名。如果發(fā)布者將驅(qū)動程序提交給 Microsoft Windows 硬件質(zhì)量實(shí)驗(yàn)室 (WHQL),并且驅(qū)動程序通過了可靠性測試,則 Microsoft 會充當(dāng)簽署代碼的證書頒發(fā)機(jī)構(gòu)。大多數(shù)發(fā)布者將通過 WHQL 獲得簽名;但是如果驅(qū)動程序沒有 WHQL 測試程序,發(fā)布者不想提交到 WHQL 測試,或者驅(qū)動程序是在系統(tǒng)啟動早期加載的引導(dǎo)啟動驅(qū)動程序,則發(fā)布者必須自己簽署代碼。為此,他們必須首先從 Microsoft 確定為受信任內(nèi)核模式代碼簽名的證書頒發(fā)機(jī)構(gòu)之一獲得代碼簽名證書。然后,作者通過數(shù)字方式哈希代碼,通過使用私鑰進(jìn)行加密來簽署哈希,并將證書和加密的哈希包含在代碼中。

當(dāng)驅(qū)動程序嘗試加載時,Windows 會使用存儲在證書中的公鑰解密包含在代碼中的哈希,然后驗(yàn)證哈希與代碼中包含的哈希是否匹配。證書的真實(shí)性也通過相同的方式進(jìn)行檢查,但使用 Windows 附帶的證書頒發(fā)機(jī)構(gòu)的公鑰。

Windows 還檢查相關(guān)的證書鏈,一直檢查到 Windows 啟動加載器和操作系統(tǒng)內(nèi)核中嵌入的根頒發(fā)機(jī)構(gòu)之一。嘗試加載未簽名的 64 位驅(qū)動程序不應(yīng)該發(fā)生在生產(chǎn)系統(tǒng),因此不同于“即插即用”管理器(它在指向加載沒有確認(rèn)是否通過 WQHL 測試簽名的驅(qū)動程序時顯示警告對話框),64 位 Windows Vista 在阻止加載未簽名驅(qū)動程序時,在無提示的情況下隨時將事件寫入代碼完整性應(yīng)用程序事件日志,如圖 5 所示。32 位 Windows Vista 也檢查驅(qū)動程序簽名,但允許加載未簽名的驅(qū)動程序。阻止它們將會破壞升級的 Windows XP 系統(tǒng)(要求在 Windows XP 上加載驅(qū)動程序,并且還允許支持僅存在 Windows XP 驅(qū)動程序的硬件)。不過,32 位 Windows Vista 還會在加載未簽名驅(qū)動程序時將事件寫入代碼完整性事件日志。

因?yàn)榇a簽名通常用來將代碼標(biāo)記為經(jīng)過嚴(yán)格測試的官方發(fā)行版本,所以發(fā)布者通常并不想對測試代碼簽名。因此,Windows Vista 包括可以使用 Bcdedit 工具(在 TechNet 雜志 2007 年 3 月份我的文章中介紹過)啟用和禁用的測試簽名模式,它將加載使用由內(nèi)部證書頒發(fā)機(jī)構(gòu)生成的測試證書經(jīng)過數(shù)字簽名的內(nèi)核模式驅(qū)動程序。此模式設(shè)計為供程序員在開發(fā)其代碼時使用。當(dāng) Windows 處于此模式時,它會在桌面上顯示標(biāo)記,如圖中所示。

6.受保護(hù)的進(jìn)程

下一代多媒體內(nèi)容,如 HD-DVD、BluRay 和高級訪問內(nèi)容系統(tǒng) (AACS) 下許可的其他格式,在以后幾年內(nèi)會變得更加常見。Windows Vista 包括許多技術(shù),統(tǒng)稱為受保護(hù)的媒體路徑 (PMP),AACS 標(biāo)準(zhǔn)要求在播放此類內(nèi)容時使用這些技術(shù)。PMP 包括受保護(hù)的用戶模式音頻 (PUMA) 和受保護(hù)的視頻路徑 (PVP),它們一直為音頻和視頻驅(qū)動程序及媒體播放機(jī)應(yīng)用程序提供機(jī)制,以防止未授權(quán)軟件或硬件捕獲高清晰度格式的內(nèi)容。

PUMA 和 PVP 定義特定于音頻和視頻播放機(jī)、設(shè)備驅(qū)動程序和硬件的接口和支持,但是 PMP 也依賴在 Windows Vista 中引入的一般內(nèi)核機(jī)制,即稱為受保護(hù)的進(jìn)程。受保護(hù)的進(jìn)程以標(biāo)準(zhǔn)的 Windows 進(jìn)程構(gòu)造為基礎(chǔ),該構(gòu)造封裝了運(yùn)行的可執(zhí)行映像、其 DLL、安全上下文(進(jìn)程運(yùn)行所在的帳戶及其安全權(quán)限),及在進(jìn)程內(nèi)執(zhí)行代碼但阻止某些訪問類型的線程。

標(biāo)準(zhǔn)進(jìn)程實(shí)施訪問控制模式,允許使用“調(diào)試程序”權(quán)限完全訪問進(jìn)程所有者和管理帳戶。完全訪問允許用戶查看和修改進(jìn)程的地址空間,包括映射到進(jìn)程的代碼和數(shù)據(jù)。用戶也可以將線程注入進(jìn)程。這些訪問類型與 PMP 的要求不一致,因?yàn)樗鼈冊试S未授權(quán)代碼獲取存儲在播放內(nèi)容的進(jìn)程中的高清晰度內(nèi)容和數(shù)字版權(quán)管理 (DRM) 密鑰的訪問權(quán)限。

受保護(hù)的進(jìn)程限制訪問一組受限的信息和進(jìn)程管理界面,包括查詢進(jìn)程的映像名和終止或掛起進(jìn)程。但是,內(nèi)核通過一般的進(jìn)程查詢功能(返回有關(guān)系統(tǒng)上所有進(jìn)程的數(shù)據(jù))為受保護(hù)的進(jìn)程提供診斷信息,因此不要求直接訪問進(jìn)程。訪問可能會損壞只允許通過其他受保護(hù)的進(jìn)程訪問的媒體。

此外,為避免從內(nèi)部受到危害,加載到受保護(hù)進(jìn)程的所有可執(zhí)行代碼(包括其可執(zhí)行映像和 DLL)必須由 Microsoft (WHQL) 使用受保護(hù)的環(huán)境 (PE) 標(biāo)記簽名,或者(如果是音頻編解碼器)由開發(fā)人員使用從 Microsoft 獲得的 DRM 簽名證書簽名。因?yàn)閮?nèi)核模式代碼可以獲取任何進(jìn)程的完全訪問權(quán)限(包括受保護(hù)的進(jìn)程),并且 32 位 Windows 允許加載未簽名的內(nèi)核模式代碼,所以內(nèi)核可為受保護(hù)的進(jìn)程提供 API,以查詢內(nèi)核模式環(huán)境的“清潔度”,并僅在沒有加載未簽名代碼時使用結(jié)果解除對高級內(nèi)容的鎖定。

沒有特定識別受保護(hù)進(jìn)程的 API,但是您可以間接地根據(jù)有關(guān)它們的受限信息以及甚至無法從管理帳戶進(jìn)行調(diào)試來識別它們。音頻設(shè)備圖形隔離進(jìn)程 (%Systemroot%System32Audiodg.exe) 用于播放使用內(nèi)容加密系統(tǒng) (CSS) 編碼的 DVD,并在“任務(wù)管理器”窗格中標(biāo)識為受保護(hù)的進(jìn)程。事實(shí)上,即使使用管理權(quán)限運(yùn)行,任務(wù)管理器也無法獲得其命令行、虛擬化和數(shù)據(jù)執(zhí)行保護(hù)狀態(tài)。

7.地址空間加載隨機(jī)化

不管采取什么措施,如數(shù)據(jù)執(zhí)行保護(hù)和增強(qiáng)的編譯器錯誤檢查,惡意軟件作者都會繼續(xù)找到緩沖區(qū)溢出漏洞,這些漏洞使他們能夠感染面向網(wǎng)絡(luò)的進(jìn)程(如 Internet Explorer、Windows 服務(wù)及第三方應(yīng)用程序),獲得進(jìn)入系統(tǒng)的立足點(diǎn)。不過,在設(shè)法感染進(jìn)程后,他們必須使用 Windows API 通過修改用戶或系統(tǒng)配置設(shè)置來完成讀取用戶數(shù)據(jù)或建立永久存在的最終目的。

使用 DLL 導(dǎo)出的 API 入口點(diǎn)連接應(yīng)用程序,通常由操作系統(tǒng)加載器處理,但是這些類型的惡意軟件感染不會從加載器的服務(wù)中受益。惡意軟件在以前的 Windows 版本中還沒有出現(xiàn)過此類問題,因?yàn)閷τ谌魏翁囟ǖ?Windows 版本,系統(tǒng)可執(zhí)行映像和 DLL 總在同一個位置加載,讓惡意軟件假定 API 駐留在固定的地址。

Windows Vista 地址空間加載隨機(jī)化 (ASLR) 功能使惡意軟件不可能知道 API 的位置,方法是通過每次系統(tǒng)啟動時在不同位置加載系統(tǒng) DLL 和可執(zhí)行文件。在啟動進(jìn)程早期,內(nèi)存管理器會從用戶模式地址空間頂部 16MB 區(qū)域的 256 個 64KB 對齊地址中隨機(jī)選取一個作為 DLL 映像加載偏差。由于在映像標(biāo)頭中有新的動態(tài)重新定位標(biāo)記的 DLL 加載到進(jìn)程中,因此內(nèi)存管理器會從映像加載偏差地址開始并繼續(xù)將 DLL 選取到內(nèi)存中。

具有標(biāo)記組的可執(zhí)行文件會得到類似的處理,在存儲在其映像標(biāo)頭中的 16MB 基本加載地址內(nèi)以隨機(jī)的 64KB 對齊點(diǎn)加載。此外,如果使用給定的 DLL 或可執(zhí)行文件的所有進(jìn)程卸載后再次加載它,內(nèi)存管理器會重新選擇一個隨機(jī)的加載位置。圖 7 所示為一個 32 位 Windows Vista 系統(tǒng)的示例地址空間布局,包括 ASLR 選取映像加載偏差和可執(zhí)行文件加載地址的區(qū)域。

只有具有動態(tài)重新定位標(biāo)記的映像(包括所有 Windows Vista DLL 和可執(zhí)行文件)才能重新定位,因?yàn)橐苿釉杏诚窨赡軙袛嚅_發(fā)人員對其映像加載位置所做的內(nèi)部假設(shè)。Visual Studio 2005 SP1 增加了對設(shè)置標(biāo)記的支持,以便第三方開發(fā)人員可以充分利用 ASLR。

將 DLL 加載地址隨機(jī)分布到 256 個位置之一,并不會使惡意軟件猜不出正確的 API 位置,但是它會嚴(yán)重限制網(wǎng)絡(luò)蠕蟲傳播的速度,并且可以阻止僅有一次機(jī)會感染系統(tǒng)的惡意軟件以可靠地運(yùn)行。此外,ASLR 的重新定位策略的第二個好處是,地址空間壓縮比在以前的 Windows 版本上的更加緊密,為連續(xù)內(nèi)存分配創(chuàng)建更大的可用內(nèi)存區(qū)域,減少內(nèi)存管理分配以跟蹤地址空間布局的頁表數(shù),以及最小化轉(zhuǎn)換旁路緩沖器 (TLB) 遺漏。

8.服務(wù)安全性改進(jìn)

Windows 服務(wù)成為理想的惡意軟件目標(biāo)。許多服務(wù)都提供通過網(wǎng)絡(luò)訪問其功能,這很可能會暴露遠(yuǎn)程可利用的訪問系統(tǒng)的機(jī)會,而大多數(shù)服務(wù)運(yùn)行都使用比標(biāo)準(zhǔn)用戶帳戶更多的權(quán)限,如果它們被惡意軟件利用,則會提供在本地系統(tǒng)上提升權(quán)限的機(jī)會。因此,Windows 以在 Windows XP SP2 中所做的更改為始不斷完善,將權(quán)限和對指定服務(wù)的訪問權(quán)限降為僅其角色需要的權(quán)限。例如,Windows XP SP2 引入了本地服務(wù)和網(wǎng)絡(luò)服務(wù)帳戶(僅包括服務(wù)以前一直運(yùn)行的本地系統(tǒng)帳戶權(quán)限的子集)。這樣可以在利用服務(wù)時最小化攻擊者獲取的訪問權(quán)限。

通過使用像 Sysinternals 提供的 Process Explorer 一樣的工具,在兩個不同的引導(dǎo)會話中比較進(jìn)程的 DLL 加載地址,您可以很容易看到 ASLR 的效果。在從兩個不同會話截取的這兩個屏幕快照中,Ntdll.dll 首先在地址 0x77A30000、然后在地址 0x77750000 加載到 Explorer。在以前的文章中,就介紹了服務(wù)如何在其會話中與用戶帳戶分開運(yùn)行,但是 Windows Vista 還通過進(jìn)一步降低分配給大多數(shù)服務(wù)對文件、注冊表項及防火墻端口的權(quán)限和訪問權(quán)限,以擴(kuò)大其最小權(quán)限原則的使用。Windows Vista 為每種服務(wù)定義了一組唯一的新帳戶,稱為服務(wù)安全標(biāo)識符 (SID)。服務(wù)可以對其資源設(shè)置權(quán)限,這樣只有其服務(wù) SID 擁有訪問權(quán)限,避免在服務(wù)出現(xiàn)安全漏洞時以相同用戶帳戶運(yùn)行的其他服務(wù)擁有訪問權(quán)限。您可以使用 sc showsid 命令后接服務(wù)名稱來查看服務(wù)的 SID,如圖 8 所示。

服務(wù) SID 保護(hù)對特定服務(wù)所擁有資源的訪問權(quán)限,但默認(rèn)情況下,服務(wù)對其運(yùn)行的用戶帳戶可以訪問的所有對象仍有訪問權(quán)限。例如,在“本地服務(wù)”帳戶中運(yùn)行的服務(wù)可能無法訪問在不同進(jìn)程(該進(jìn)程使用參考服務(wù) SID 的權(quán)限保護(hù)其對象)中以“本地服務(wù)”運(yùn)行的另一服務(wù)創(chuàng)建的資源;但是,它仍可以讀取和寫入“本地服務(wù)”(以及“本地服務(wù)”所屬的任何組,如“服務(wù)組”)有權(quán)訪問的任何對象。

因此,Windows Vista 引入了稱為限制寫入服務(wù)的新受限服務(wù)類型,可讓服務(wù)僅對其服務(wù) SID、Everyone 組及分配到登錄會話的 SID 可訪問的對象允許寫入訪問權(quán)限。為了實(shí)現(xiàn)這一點(diǎn),它會使用重新引入 Windows 2000 的受限 SID 類型。當(dāng)打開對象的進(jìn)程是限制寫入服務(wù)時,訪問 - 檢查算法會發(fā)生變化,這樣尚未以受限和非受限方式分配到進(jìn)程的 SID 就無法用來為進(jìn)程授予對象的寫入權(quán)限。您可以使用以下命令查看服務(wù)是否受限:sc qsidtype [service]

另一個變化是讓服務(wù)更容易阻止在相同帳戶中運(yùn)行的其他服務(wù)對其創(chuàng)建的服務(wù)擁有訪問權(quán)限。在以前的 Windows 版本中,對象的創(chuàng)建者也是對象的所有者,而且所有者能夠讀取和更改其對象的權(quán)限,允許其對自己對象的完全訪問權(quán)限。Windows Vista 引入了新的所有者權(quán)限 SID,如果在對象的權(quán)限中存在 SID,則 SID 可以限制所有者對其對象的訪問權(quán)限,甚至?xí)h除設(shè)置和查詢權(quán)限的權(quán)利。

對 Windows Vista 中服務(wù)安全模式的進(jìn)一步改進(jìn),可以讓服務(wù)開發(fā)人員確切地指定當(dāng)服務(wù)在系統(tǒng)上注冊時,此服務(wù)需要什么安全權(quán)限才能操作。例如,如果服務(wù)需要生成審核事件,它就可以列出“審核”權(quán)限。

當(dāng)“服務(wù)控制管理器”啟動托管一個或多個 Windows 服務(wù)的進(jìn)程時,它就為在該進(jìn)程中僅包括服務(wù)所需權(quán)限的進(jìn)程創(chuàng)建了一個安全令牌(列出進(jìn)程用戶帳戶、組成員身份和安全權(quán)限的內(nèi)核對象)。如果服務(wù)指定了其運(yùn)行的帳戶不可用的權(quán)限,則服務(wù)無法啟動。當(dāng)“本地服務(wù)”帳戶進(jìn)程中未運(yùn)行任何需要(例如)“調(diào)試程序”權(quán)限的服務(wù)時,“服務(wù)控制管理器”會從進(jìn)程的安全令牌中剝奪此權(quán)限。因此,如果服務(wù)進(jìn)程被破壞,惡意代碼無法利用進(jìn)程中運(yùn)行的服務(wù)未明確請求的權(quán)限。sc qprivs 命令會報告服務(wù)已請求的權(quán)限。

9.查看限制寫入服務(wù)

在 Windows Vista 上只有一種托管服務(wù)進(jìn)程托管受限服務(wù),您可以使用進(jìn)程查看工具(如 Process Explorer)將它識別為具有以下命令行的進(jìn)程:svchost -k LocalServiceNoNetwork

配置在此進(jìn)程中運(yùn)行的服務(wù)包括基本篩選引擎、診斷策略服務(wù)、Windows 防火墻、性能日志和警報及 Windows Media Center 服務(wù)啟動程序。

此屏幕顯示文本格式的基本篩選引擎的服務(wù) SID (NT SERVICEBFE),第一次列出時有受限標(biāo)記,再次列出時沒有受限標(biāo)記,因此進(jìn)程對該帳戶可以訪問的資源擁有訪問權(quán)限。不過,它不必對“本地服務(wù)”帳戶通常可以訪問的其他對象擁有訪問權(quán)限。例如,因?yàn)?NT AUTHORITYSERVICE 帳戶不會在有受限標(biāo)記的進(jìn)程令牌中出現(xiàn),所以進(jìn)程無法修改僅對令牌(有受限標(biāo)記)中此帳戶而不是其他帳戶授予寫入權(quán)限的對象。

在此進(jìn)程中運(yùn)行的服務(wù)還會限制其權(quán)限,因?yàn)樵趯傩詫υ捒虻撞苛谐龅臋?quán)限是可用于“本地服務(wù)”帳戶的子集。

結(jié)束語

有些功能和改進(jìn)本文沒有涉及或提及,如面向應(yīng)用程序開發(fā)人員的新的工作線程池、新的同步機(jī)制(如共享讀取器/編寫器鎖定)、服務(wù)線程標(biāo)記、對在線 NTFS 磁盤檢查和卷大小調(diào)整的支持以及稱為高級本地過程調(diào)用 (ALPC) 的新內(nèi)核 IPC 機(jī)制。

標(biāo)簽: Windows系統(tǒng)
主站蜘蛛池模板: 成人18网址在线观看 | 国产成人在线小视频 | 久夜色精品国产一区二区三区 | 日本免费大黄在线观看 | 欧美日韩日本国产 | 怡红院在线视频全部观看 | 欧美成人艳星在线播放 | 亚洲国产片在线观看 | 午夜在线视频一区二区三区 | 亚洲精品成人一区二区aⅴ 亚洲精品成人一区二区www | 亚洲视频在线观看免费 | 毛片视频网址 | 日韩欧美国产另类 | 搞黄网站免费观看 | 日本在线理论片 | 黄色福利站 | 中文字幕无线码中文字幕网站 | 日韩加勒比在线 | 免费看的一级片 | 国产精品久久久久久久久免费观看 | 完全免费在线视频 | 亚洲精品在线免费观看视频 | 亚洲免费成人 | 欧美一级片免费观看 | 日本加勒比系列 | 99亚洲自拍| 欧美成人性色生活片免费在线观看 | 成人欧美精品大91在线 | 最新亚洲一区二区三区四区 | 欧美性一区二区三区 | 日本黄大片影院一区二区 | 中国一级毛片 | 欧美成人免费香蕉 | 久草网视频在线观看 | 久久93精品国产91久久综合 | 美女黄网站色一级毛片 | 久久九九亚洲精品 | 免费高清不卡毛片在线看 | 国产精品高清在线观看地址 | 欧美久久久久欧美一区 | 国产欧美日韩在线一区二区不卡 |