小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

訪問(wèn)控制:理解 Windows 文件和注冊(cè)表權(quán)限

 糖伯虎點(diǎn)秋香 2011-02-14

本文將介紹以下內(nèi)容:

  訪問(wèn)控制列表

  用戶權(quán)利

  文件系統(tǒng)權(quán)限

  注冊(cè)表及其權(quán)限

  本文使用了以下技術(shù):

  Windows Server 2008

訪問(wèn)控制:理解 Windows 文件和注冊(cè)表權(quán)限目錄

  對(duì)象安全描述符

  理解安全描述符 string_aces

  標(biāo)準(zhǔn)權(quán)利和特定權(quán)利

  完整性標(biāo)簽及其用法

  Object_guid 和 inherit_object_guid

  解釋安全描述符 string_aces

  Windows 資源保護(hù)

  設(shè)置安全文件系統(tǒng)權(quán)限

  管理注冊(cè)表及其權(quán)限

  總結(jié)

  只要系統(tǒng)中有所動(dòng)作,主體(可以是代表用戶或服務(wù)執(zhí)行操作的進(jìn)程或線程)都會(huì)在對(duì)象上執(zhí)行一些操作。比較常見(jiàn)的對(duì)象有文件、目錄和注冊(cè)表項(xiàng)。Windows 的基本安全機(jī)制包括使用可信的系統(tǒng)組件在執(zhí)行操作之前檢查權(quán)限和權(quán)利 (AccessCheck)。因此,可以通過(guò)設(shè)置權(quán)限和權(quán)利管理系統(tǒng)行為。因?yàn)樵谏形蠢斫鈾?quán)限和權(quán)利工作原理的情況下可能無(wú)法正確設(shè)置權(quán)限,所以我將首先介紹對(duì)象的安全設(shè)置及其處理方式,然后介紹如何為它們?cè)O(shè)置值。

  在深入探討技術(shù)細(xì)節(jié)之前,讓我們先使用 Windows 訪問(wèn)控制列表 (ACL) GUI 看看 Windows Server 2008 中的系統(tǒng)驅(qū)動(dòng)器根目錄權(quán)限。如果打開(kāi) Windows 資源管理器,選擇“安全”選項(xiàng)卡、右鍵單擊“本地磁盤(pán) (C:)”,并選擇“屬性”,我們會(huì)看到管理員具備完全控制權(quán)限。如果單擊“組或用戶名”下的 SYSTEM,將會(huì)看見(jiàn) SYSTEM 同樣具有完全控制權(quán)限。當(dāng)單擊“組或用戶名”下的 Users 時(shí),權(quán)限情況則比較復(fù)雜:圖 1 中系統(tǒng)上的用戶組具備 Read & Execute、List、Read 等權(quán)限。單擊“高級(jí)”按鈕將顯示出與該用戶組相關(guān)聯(lián)的權(quán)限的詳細(xì)視圖(請(qǐng)參閱圖 2)。

  圖 1 本地磁盤(pán) C 的用戶權(quán)限

  圖 2 C 盤(pán)的用戶權(quán)限高級(jí)視圖

  用戶組的成員可以在系統(tǒng)驅(qū)動(dòng)器根目錄下創(chuàng)建文件夾并向文件添加數(shù)據(jù)。如果單擊“編輯”按鈕,您將看到另一項(xiàng)對(duì)子文件夾的“特殊”授權(quán),如圖 3 所示。此操作需要管理員權(quán)限。

  圖 3 用戶特殊權(quán)利的編輯視圖

  您可以看到在 Windows Server 2008 中,普通用戶默認(rèn)可以在系統(tǒng)驅(qū)動(dòng)器的根目錄創(chuàng)建子文件夾,并向這些文件夾添加內(nèi)容。為 Windows Server 2008 中用戶組的成員提供該功能的原因是某些第三方軟件假定存在這些權(quán)限,而 Microsoft 不想破壞應(yīng)用程序的兼容性。

  現(xiàn)在讓我們開(kāi)始討論這些問(wèn)題涉及的技術(shù),并了解這些權(quán)限在用戶所能看見(jiàn)的 GUI 界面之下的工作原理。在 Windows 中所有命名的對(duì)象都具有安全描述符,它提供有關(guān)其所有者的信息,并列出哪些用戶和主體具有特定權(quán)限。描述符還可以指定必須在系統(tǒng)事件日志中記錄哪些對(duì)象訪問(wèn)權(quán)限。

  允許哪些主體(用戶、進(jìn)程等)操作某個(gè)對(duì)象或資源的信息在稱為 ACL 的數(shù)據(jù)結(jié)構(gòu)中指定。ACL 枚舉誰(shuí)(哪個(gè)主體)對(duì)具體對(duì)象具有哪類(lèi)訪問(wèn)權(quán)限。自由 ACL (DACL) 是 ACL 的一種,在這種類(lèi)型中對(duì)象的所有者可以更改權(quán)限。無(wú)論何時(shí)訪問(wèn)對(duì)象,都會(huì)將安全描述符與主體的權(quán)限進(jìn)行比較以檢驗(yàn)是否允許所請(qǐng)求的訪問(wèn)。

請(qǐng)注意:Windows 還支持針對(duì)對(duì)象的系統(tǒng) ACL (SACL),并已在許多版本中使用 SACL 設(shè)置建立了需要記錄到審核日志的事件。在 Windows Server 2008 和 Windows Vista 中,SACL 已擴(kuò)展至能夠攜帶完整性級(jí)別信息。

  該完整性標(biāo)簽將用于建立“低級(jí)”標(biāo)簽,用它標(biāo)記 LowRights Internet Explorer 中的 Internet Explorer 進(jìn)程。“系統(tǒng)”和“高級(jí)”標(biāo)簽用于保護(hù)重要的系統(tǒng)資源。Windows 消息泵可以根據(jù)消息的完整性級(jí)別過(guò)濾消息。例如,中級(jí)進(jìn)程不會(huì)接收低級(jí)進(jìn)程發(fā)送的消息,而高級(jí)進(jìn)程不會(huì)接收來(lái)自低級(jí)或中級(jí)進(jìn)程的消息。

  此時(shí),完整性級(jí)別保護(hù)起到的是緩解的作用,而不是真正用于安全保護(hù)的安全屏障。在后續(xù)版本中,隨著它逐漸成為真正的安全屏障,它的作用會(huì)大大加強(qiáng)。

  與其它現(xiàn)代操作系統(tǒng)一樣,Windows 依靠 DACL 進(jìn)行常規(guī)訪問(wèn)控制決策。此處我將重點(diǎn)介紹 DACL。系統(tǒng)要決定是否允許某個(gè)主體對(duì)某個(gè)對(duì)象執(zhí)行操作需要檢查以下幾項(xiàng)內(nèi)容:主體的權(quán)限、主體的令牌,以及對(duì)象的安全描述符。對(duì)象的二進(jìn)制安全描述符將隨主體的令牌一起傳遞給 AccessCheck 例程。隨后將準(zhǔn)備所請(qǐng)求的訪問(wèn)掩碼位向量,該向量代表訪問(wèn)權(quán)限檢查成功所必須具備的訪問(wèn)權(quán)利。該向量將隨主體的安全描述符一同傳遞給 AccessCheck 例程,然后由該例程根據(jù)所請(qǐng)求的訪問(wèn)和對(duì)象的 DACL 檢查用戶的安全令牌并考量主體權(quán)限(通常基于角色或成員關(guān)系,例如管理員)。

  如果主體的權(quán)限滿意所請(qǐng)求的訪問(wèn),則授予訪問(wèn)權(quán)限。否則將按順序檢查 DACL 訪問(wèn)控制條目 (ACE)。一旦安全系統(tǒng)能夠證明允許所有請(qǐng)求的訪問(wèn)組件或拒絕其中任何請(qǐng)求,它將相應(yīng)返回成功或失敗。

  因此,ACE 的 DACL 列表應(yīng)該按照適當(dāng)?shù)捻樞蚺判?。?biāo)準(zhǔn)(規(guī)范)的排序應(yīng)當(dāng)是首先安排顯式拒絕,然后是顯式允許、一般(組)拒絕和組允許。如果不使用規(guī)范排序可能會(huì)導(dǎo)致預(yù)想不到的允許或拒絕。

對(duì)象安全描述符

  雖然安全描述符是二進(jìn)制數(shù)據(jù)結(jié)構(gòu),但它需要依賴安全描述符字符串格式提供便于用戶閱讀的文本格式。字符串格式的安全描述符是以 null 結(jié)尾的字符串,它包含指明以下四個(gè)主要組件的令牌:所有者 (O:)、主要組 (G:)、DACL (D:) 和 SACL (S:),如圖 4 所示。

  圖 4 安全描述符

  安全描述符 (SID) 通過(guò)結(jié)構(gòu)化提供解析信息,并包含 96 位隨機(jī)信息(并有可能包含 32 位序列計(jì)數(shù)器)以作為所有者的唯一標(biāo)識(shí)符。string_aces(以字符串格式表示的 ACE)是 DACL 中顯式授予或拒絕權(quán)限和 SACL 中設(shè)置策略的結(jié)構(gòu)。每個(gè) string_ace 都包含在圓括號(hào)當(dāng)中并采用以下結(jié)構(gòu):

  (ace_type;ace_flags;rights;object_guid;inherit_
  object_guid;account_sid)

  只有那些正常訪問(wèn)相關(guān)對(duì)象所必需的權(quán)限必須存在。通常,安全描述符將省略 owner_sid 和 group_sid。如果在創(chuàng)建時(shí)未明確指定,那么安全描述符的所有者字段將設(shè)置為調(diào)用對(duì)象創(chuàng)建的主體的 SID。組字段設(shè)置為主體安全令牌的主要組。如果不需要審核對(duì)象或設(shè)置完整性標(biāo)簽,則不存在 SACL。

  在 string_aces 中,只包含那些必要的字段(最小集合為 ace_type、權(quán)利和對(duì)象,通常為 account_sid)。一般不包含 object_guid 和 inherit_object_guid。系統(tǒng)將按從前到后的順序解析 ACE,直到授予或拒絕訪問(wèn)權(quán)限為止。因此,ACE 的順序很重要。“拒絕權(quán)限”應(yīng)該放置在“允許權(quán)限”之前。

  不包含 ACE 的 ACL 是空 DACL。因?yàn)?ACE 授予特定主體對(duì)某個(gè)對(duì)象的訪問(wèn)權(quán)限,所以任何主體都無(wú)法訪問(wèn)具有空 DACL 的對(duì)象。沒(méi)有 DACL 的對(duì)象稱為 NULL DACL。具有 NULL DACL 的對(duì)象沒(méi)有安全性,任何人都可以完全控制這種對(duì)象。因此,請(qǐng)不要設(shè)置空 DACL 或 NULL DACL。

現(xiàn)在我們有必要看看安全描述符的實(shí)際內(nèi)容。下面是 Windows Server 2008 系統(tǒng)驅(qū)動(dòng)器根目錄的安全描述符(請(qǐng)注意 cacls 是用于檢查和設(shè)置 ACL 的早期命令行例程,現(xiàn)已由 icacls 代替。遺憾的是,icacls 不支持使用命令行開(kāi)關(guān)輸出以標(biāo)準(zhǔn)安全描述符定義語(yǔ)言 (SDDL) 表示的結(jié)果,在 cacls 中該開(kāi)關(guān)為 /S 標(biāo)志):

訪問(wèn)控制:理解 Windows 文件和注冊(cè)表權(quán)限

C:>cacls c:/ /s
c:"D:PAI(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;OICI;0x1200a9;;;BU)(A;CI;LC;;;BU)(A;CIIO;DC;;;BU)(A;OICIIO;GA;;;CO)"

  根據(jù)我們已經(jīng)了解的有關(guān)安全描述符的知識(shí),您可以從開(kāi)頭的“D:”看出尚未聲明所有者關(guān)系或組成員關(guān)系,而且該描述符是 DACL。該 DACL 是受保護(hù)的:已經(jīng)設(shè)置了“P”和 Windows NT 5.0 繼承標(biāo)記。隨后是一組需要進(jìn)行解釋的 ace_strings。

  理解安全描述符 string_aces

  回想一下前面講述的 string_aces 格式。圖 5 中定義了有效的 ace_types,圖 6 中定義了有效的 ace_flags。用于繼承的 ace_flags 是 ACE 繼承的決定因素。

  圖 5 有效的 ace_types

  圖 6 有效的 ace_flags

  ACE 權(quán)利由字符串表明,該字符串指出 ACE 控制的訪問(wèn)權(quán)利。它可以是訪問(wèn)權(quán)利的十六進(jìn)制字符串表示(例如“0x7800003F”),也可以是連續(xù)的 Rights 字符串(例如“CCLCSWLOCRRC”),稍后我將介紹后面這種格式。十六進(jìn)制表示及其各個(gè)數(shù)位的值如 圖 7 所示。

圖 7 ACL 訪問(wèn)掩碼

  系統(tǒng)對(duì)所有對(duì)象使用一種 ACE 權(quán)利位圖表示。對(duì)不同的對(duì)象來(lái)說(shuō),并不是所有的位都有意義。只應(yīng)用那些適用于某個(gè)對(duì)象的權(quán)利。標(biāo)準(zhǔn)權(quán)利是對(duì)所有安全對(duì)象都通用的權(quán)限。泛型權(quán)利是為各種對(duì)象指定相似類(lèi)型權(quán)利的簡(jiǎn)便方法。泛型權(quán)利的規(guī)范映射為一組適當(dāng)?shù)木唧w權(quán)限集合。當(dāng)指定 SACL 時(shí),完整性標(biāo)簽也將使用 ACE 權(quán)利字段進(jìn)行編碼。圖 8 中列出了各種對(duì)象的可用權(quán)利。

  圖 8 泛型權(quán)利

  有許多大致等同的權(quán)利映射在使用時(shí)并無(wú)區(qū)別。完全控制 (FC) 等同于 Generic_All (GA)。對(duì)于文件系統(tǒng),F(xiàn)ile All (FA) 是適用的完全控制聲明。Key All (KA) 是適用于注冊(cè)表的完全控制聲明。泛型聲明常用于更適合聲明的地方,但會(huì)根據(jù)需要映射為適當(dāng)?shù)奈募到y(tǒng)或注冊(cè)表項(xiàng)聲明。SDDL 表達(dá)式常常混合這些術(shù)語(yǔ),因此您需要了解等同的術(shù)語(yǔ)。

  標(biāo)準(zhǔn)權(quán)利和特定權(quán)利

  許多對(duì)象都可以分配權(quán)利。除文件和目錄外,還有注冊(cè)表項(xiàng)、進(jìn)程、桌面等。要查看完整的列表,請(qǐng)參閱圖 A 到圖 J。我們將會(huì)討論文件系統(tǒng)和注冊(cè)表的權(quán)限,圖 9 和圖 10 中提供了這些對(duì)象的特定權(quán)利。

  圖 9 特定文件權(quán)利

  圖 10 特定注冊(cè)表權(quán)利

  完整性標(biāo)簽及其用法

  前面提到過(guò),如果存在完整性標(biāo)簽,則它將存儲(chǔ)在對(duì)象的 SACL 中。對(duì)象隱含具有中級(jí)完整性,因此如果某個(gè)對(duì)象沒(méi)有完整性標(biāo)簽,則它將具備中級(jí)完整性。同樣地,如果安全令牌沒(méi)有完整性標(biāo)簽,則它也將具備中級(jí)完整性。低級(jí)完整性標(biāo)簽用于標(biāo)記低權(quán)利進(jìn)程,例如低權(quán)利 Internet Explorer 及相關(guān)的非受信對(duì)象。“高級(jí)”和“系統(tǒng)”級(jí)別用于幫助將這些對(duì)象從中級(jí)和低級(jí)進(jìn)程和對(duì)象中隔離出來(lái)。完整性標(biāo)簽如圖 11 所示。

  圖 11 完整性標(biāo)簽

  Object_guid 和 inherit_object_guid

  Object_guid 和 inherit_object_guid 用于指定 Active Directory 中對(duì)象的安全性。不會(huì)使用它們來(lái)保護(hù)文件系統(tǒng)和注冊(cè)表安全。ACE 字符串內(nèi) ace_type 字段中的“OA”和“OD”分別對(duì)應(yīng)于對(duì)象允許和對(duì)象拒絕 ACE。在本例中,object_guid 持有正在請(qǐng)求權(quán)限的對(duì)象的 guid,而 inherit_object_guid 持有它所繼承權(quán)限的那個(gè)對(duì)象的 guid。

  ACE 結(jié)構(gòu)中的 account_sid 字段代表將授予或拒絕 ACE 中所指定訪問(wèn)權(quán)利的安全主體。account_sid 字段可能持有某個(gè) SID,它可能是對(duì)用戶基本無(wú)用的長(zhǎng)結(jié)構(gòu)標(biāo)識(shí)符,或者是某個(gè)通用帳戶的簡(jiǎn)寫(xiě)“SID 字符串”標(biāo)記。只要有利于增加系統(tǒng)的可讀性,就可以使用通用帳戶的 SID 字符串標(biāo)記。通用或公認(rèn)帳戶及其 SID 字符串表如圖 J 所示。

“所有者權(quán)利”的 OW 聲明是 Windows Server 2008 和 Windows Vista 中新增的聲明。在以前版本中,對(duì)象的創(chuàng)建者/所有者 (CO) 具有讀控制 (RC) 標(biāo)準(zhǔn)權(quán)限和對(duì)該對(duì)象的 Write_DAC (WD) 權(quán)限,以便所有者能夠設(shè)置該對(duì)象的安全性。如果用戶是某個(gè)組的成員并創(chuàng)建了大量對(duì)象,這種方法會(huì)出現(xiàn)問(wèn)題。如果該用戶離開(kāi)該組,他可能仍然會(huì)擁有對(duì)這些對(duì)象的控制,因?yàn)樗沁@些對(duì)象的所有者,所以可以獲得這些對(duì)象的 RC 和 Write_DAC 權(quán)限。對(duì) OW 所有者的 ACE 限制可以防止向所有者隱性授予 RC/WD 權(quán)限,除非在 ACL 中向任何其它相關(guān) ACE 的所有者 ACE 顯式授予這些權(quán)限。這種方法可以抑制以前版本中的安全隱患。

  解釋安全描述符 string_aces

  對(duì)系統(tǒng)驅(qū)動(dòng)器根目錄運(yùn)行 cacls 命令的輸出如下:

訪問(wèn)控制:理解 Windows 文件和注冊(cè)表權(quán)限

"D:PAI(A;OICI;FA;;;SY)(A;OICI;FA;;;BA)(A;OICI;0x1200a9;;;BU)(A;CI;LC;;;BU)(A;CIIO;DC;;;BU)
  (A;OICIIO;GA;;;CO)"

  為提高可讀性對(duì)其進(jìn)行解析后,結(jié)果如下:

訪問(wèn)控制:理解 Windows 文件和注冊(cè)表權(quán)限

"D:PAI
(A;OICI;FA;;;SY)
(A;OICI;FA;;;BA)
(A;OICI;0x1200a9;;;BU)(A;CI;LC;;;BU)(A;CIIO;DC;;;BU)
(A;OICIIO;GA;;;CO)"

  這是一個(gè)受保護(hù)的 DACL,設(shè)置了流行文件系統(tǒng)的自動(dòng)繼承標(biāo)志。受保護(hù)標(biāo)志的含義是不會(huì)繼承可繼承的父權(quán)利;該 DACL 受到保護(hù),不能繼承父對(duì)象的權(quán)利。在本例中沒(méi)有父項(xiàng),因?yàn)樗歉夸洝?/div>

內(nèi)置管理員和系統(tǒng)將得到文件(來(lái)自對(duì)象繼承)和目錄(來(lái)自容器繼承,即 CI)可繼承的 File All 權(quán)利。這意味著此 DACL 將遞歸授予根目錄下所有文件和目錄的 File All 權(quán)限—必須檢查受保護(hù) DACL 中的授權(quán)是唯一的例外,那會(huì)禁止繼承。CO 將獲得根目錄下所有文件和目錄的 Generic_All 權(quán)限(由于僅繼承標(biāo)記),該權(quán)限將映射為 File All。

  對(duì)內(nèi)置用戶的授權(quán)更為有趣。第一個(gè) string_ace 將應(yīng)用到根目錄及其子目錄中所有的文件和目錄,授予 List、Read、ReadEA、Traverse、Execute、ReadAttr、ReadControl 和 Sync 權(quán)限。第二個(gè) string_ace 授予在根目錄及其子目錄中 AddSubDir 的權(quán)限(由于 IO—僅繼承標(biāo)志),而第三個(gè) string_ace 授予子目錄的 AddFile 權(quán)限。這與您使用 Windows 資源管理器的 ACL 圖形化界面查看這些權(quán)限時(shí)看到的一樣。

  Windows 資源保護(hù)

  從 Windows Server 2008 和 Windows Vista 開(kāi)始,組件將在其清單中聲明所需的安全設(shè)置,該清單將由 Microsoft 代碼簽名根項(xiàng)進(jìn)行簽名。該清單指定 ACL 及與文件關(guān)聯(lián)的其他權(quán)限。因此,當(dāng)安裝某個(gè)組件時(shí),它將自帶適當(dāng)?shù)陌踩O(shè)置。此外,系統(tǒng)管理員還可以使用 Windows 資源保護(hù) (WRP) 防止操作系統(tǒng)文件受到意外損壞。WRP 依賴新的系統(tǒng)級(jí)別實(shí)體 Trusted Installer 擁有并管理系統(tǒng)文件和文件夾。

  在 Windows Vista 中還增加了允許普通用戶安裝授權(quán)組件的便利功能。“超級(jí)用戶”角色將不再需要,因此將刪除包含“超級(jí)用戶”SID 的 ACE 實(shí)例。“超級(jí)用戶”組仍然存在,但會(huì)對(duì)組件清單進(jìn)行掃描并刪除所有 PU 權(quán)限授予實(shí)例。

  讓我們看看系統(tǒng)目錄中有哪些新權(quán)限。同時(shí)這也是閱讀并理解 SDDL 的一個(gè)良機(jī):

C:>cacls c:windows /s
C:Windows "D:PAI(A;;FA;;;S-1-5-80-956008885-3418522649-18310
38044-1853292631-2271478464)(A;CIIO;GA;;;S-1-5-80-956008885-3
418522649-1831038044-1853292631-2271478464)(A;;0x1301bf;;;SY}
(A;OICIIO;GA;;;SY)(A;;0x1301bf;;;BA)(A;OICIIO;GA;;;BA)(A;;0x1200a9;;;BU)
(A;OICIIO;GXGR;;;BU)(A;OICIIO;GA;;;CO)"

  “可信的安裝程序”的 SID 是 S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464。使用 TI 作為簡(jiǎn)寫(xiě),我們可以發(fā)現(xiàn)下面的內(nèi)容:

C:Windows "D:PAI
(A;;FA;;;TI)(A;CIIO;GA;;;TI)
(A;;0x1301bf;;;SY)(A;OICIIO;GA;;;SY)
(A;;0x1301bf;;;BA)(A;OICIIO;GA;;;BA)
(A;;0x1200a9;;;BU)(A;OICIIO;GXGR;;;BU)
(A;OICIIO;GA;;;CO)"

  通過(guò)解讀,您可以看出這是受保護(hù)的 ACE,它使用 Windows NT 5.0 繼承模型應(yīng)用到 C:Windows。

  “可信的安裝程序”對(duì) C:Windows 具有完全控制權(quán)限,并具有 C:Windows 下所有子容器(由于是 CI,僅繼承)的 Generic_All 權(quán)限。

  系統(tǒng)和管理員擁有對(duì) C:Windows 的 Read、Write、Append、ReadEA、WriteEA、Execute、ReadAttr、WriteAttr、Del、RCtl 和 Sync 權(quán)限(等于 SDGRGWGX 權(quán)限)。這相當(dāng)于 Generic_All 減去 Write_Owner 和 Write_DAC 權(quán)限;這表示除更改所有者和 ACL 以外,“管理員”和“系統(tǒng)”具有其他全部權(quán)限。“BA”和“SY”擁有對(duì)子文件和目錄對(duì)象的 Generic_All 權(quán)限。

由于管理員能接管所有權(quán),所以他仍然可以聲明 WriteOwnership 權(quán)限并在任何情況下取得控制權(quán)。管理員和系統(tǒng)在安全方面不相上下。但由于有了該權(quán)限,管理員可以繞開(kāi) WRP ACL 控制。

  CO 還擁有子文件和目錄對(duì)象的 Generic_All 權(quán)限。內(nèi)置用戶擁有對(duì) C:Windows 的 Read、ReadEA、Execute、ReadAttr、RCtl 和 Sync 權(quán)限(等于 GRGX 權(quán)限),并擁有 C:Windows 下子目錄和文件的 GRGX 權(quán)限。

  所有的系統(tǒng)文件和文件夾都包含受保護(hù)的 ACL,它們授予“可信的安裝程序”完全控制權(quán)限。“可信的安裝程序”對(duì)文件的控制不在系統(tǒng)根目錄的聲明中表述,而是在 Windows 組件的單獨(dú)聲明中表述。

  設(shè)置安全文件系統(tǒng)權(quán)限

  在了解文件系統(tǒng) ACL 的工作原理和解讀方法之后,讓我們看看如何進(jìn)行設(shè)置。如果正在安裝某個(gè)應(yīng)用程序,您應(yīng)該將它安裝到默認(rèn)的 Program Files 位置。該位置的默認(rèn) ACL 將為管理員和本地系統(tǒng)提供完全控制權(quán)限,這并無(wú)不妥。

  如果將應(yīng)用程序安裝到其它位置,或者允許用戶選擇喜歡的位置安裝應(yīng)用程序,那您將會(huì)遇到問(wèn)題:其它驅(qū)動(dòng)器和系統(tǒng)驅(qū)動(dòng)器的非系統(tǒng)及非應(yīng)用程序區(qū)域的默認(rèn) ACL 并不十分安全。在這種情況下,您必須使用受保護(hù)的適當(dāng) DACL 顯式控制文件夾的 ACL。安裝應(yīng)用程序最簡(jiǎn)單安全的方法是復(fù)制 Program Files 文件夾的安全設(shè)置。如果選擇不這么做,那您可以設(shè)置 DACL 使非管理員無(wú)法更改 DACL 和可執(zhí)行文件的所有權(quán),并使其無(wú)法在包含可執(zhí)行文件的目錄中寫(xiě)入、附加或刪除文件。

  如果您設(shè)置 DACL,基本規(guī)則是不希望管理員或其它用戶執(zhí)行由用戶編寫(xiě)的代碼。如果存在問(wèn)題的文件夾位于受信區(qū)域(Windows、Program Files 等),則可假定它也是受信的,這時(shí)問(wèn)題更為突出。這樣做將允許管理員提升權(quán)限 (EoP) 并增加跨用戶攻擊的風(fēng)險(xiǎn)。因此,如果某位用戶可以向文件夾寫(xiě)入文件,則其它用戶和管理員應(yīng)該不能執(zhí)行這些文件。

乍一看似乎任何時(shí)候您都不應(yīng)該允許用戶向 Windows、System、Program Files 的文件夾中寫(xiě)入文件。但有許多充分的理由需要執(zhí)行這類(lèi)寫(xiě)入操作。最常見(jiàn)的是記錄錯(cuò)誤日志數(shù)據(jù)。如果可執(zhí)行文件在用戶憑據(jù)下運(yùn)行并且需要記錄錯(cuò)誤,那它需要具備錯(cuò)誤日志文件夾的寫(xiě)入/附加權(quán)限。(如果將錯(cuò)誤記錄到多用戶系統(tǒng)中每個(gè)用戶的位置,則需要將記錄數(shù)據(jù)傳遍整個(gè)系統(tǒng),而不用與可執(zhí)行文件相關(guān)聯(lián)。應(yīng)用程序和服務(wù)器通常寫(xiě)入共享文件夾或注冊(cè)表項(xiàng)。)您會(huì)在注冊(cè)表中發(fā)現(xiàn)相同的問(wèn)題,使用用戶權(quán)限運(yùn)行的進(jìn)程經(jīng)常會(huì)把錯(cuò)誤信息存儲(chǔ)在特定的機(jī)器注冊(cè)表項(xiàng)中。

  請(qǐng)不要將用戶可寫(xiě)的文件與可執(zhí)行文件混放在一起。應(yīng)該使用不同的目錄存放必須信任的文件(例如可執(zhí)行文件)和必須不被信任的文件(例如可能由不受信任的用戶編寫(xiě)的任何文件)。為目錄設(shè)置適當(dāng)?shù)?ACL—管理員控制可執(zhí)行文件,而用戶可以讀取/執(zhí)行但不能寫(xiě)入。注冊(cè)表項(xiàng)和子項(xiàng)也適用相同的原則。

  客戶端和服務(wù)器的不同之處在于:服務(wù)器管理員假定比管理員用戶具備更多的知識(shí)。服務(wù)器管理員知道他們必須拒絕執(zhí)行來(lái)自系統(tǒng)非受信區(qū)域的代碼。通過(guò)建立命名規(guī)范將數(shù)據(jù)文件與系統(tǒng)中的可執(zhí)行文件隔離,您可以就可執(zhí)行文件的可靠性為管理員提供指南—日志子目錄并不可信,因此必須禁止用戶創(chuàng)建或更改這些子目錄,防止他們欺騙安全命名規(guī)則。

  在客戶端環(huán)境中,更容易誘騙管理員用戶執(zhí)行某些代碼。對(duì)于此類(lèi)天真的管理員來(lái)說(shuō),具備用戶寫(xiě)入權(quán)限的目錄必須禁止管理員具有執(zhí)行特權(quán),以防止用戶在其中安裝可執(zhí)行文件并誘騙管理員用戶運(yùn)行這些文件而導(dǎo)致系統(tǒng)遭到破壞。例如,如果您的應(yīng)用程序或服務(wù)需要存儲(chǔ)以用戶權(quán)限寫(xiě)入的日志信息,那您應(yīng)該創(chuàng)建日志子目錄以存儲(chǔ)這些數(shù)據(jù)。管理員不應(yīng)有該子目錄的執(zhí)行權(quán)限。可以在前面顯式拒絕任何人執(zhí)行文件,例如添加 D;OI;WP;;;WD。這樣可以防止在允許用戶寫(xiě)入或更改文件的目錄中發(fā)生跨用戶攻擊。

在很多情況下可能需要用戶能夠共享數(shù)據(jù)(盡管我們不希望用戶在共享區(qū)域共享和執(zhí)行代碼)。例如,家庭用戶(或者他的照片查看應(yīng)用程序)可能會(huì)創(chuàng)建類(lèi)似 C:Photos 這樣的目錄。該用戶希望能夠允許多個(gè)用戶在此目錄中寫(xiě)入文件并使其能夠編輯該目錄中的各種照片。 Windows Vista 中系統(tǒng)驅(qū)動(dòng)器根目錄的默認(rèn) ACL 支持這種應(yīng)用。另一種常見(jiàn)的共享情況是用戶希望在某個(gè)文件夾中放置數(shù)據(jù)供其它用戶讀取。只允許數(shù)據(jù)創(chuàng)建者刪除或修改這些數(shù)據(jù),但其他用戶可以復(fù)制數(shù)據(jù)和編輯副本。這是一種共享讀取方案,Windows Server 2008 的系統(tǒng)驅(qū)動(dòng)器默認(rèn)使用此方案。

  現(xiàn)在考慮另外一種情形:您選擇鎖定系統(tǒng)驅(qū)動(dòng)器,或具體而言,針對(duì)共享使用 ACL 設(shè)置文件夾。您需要選擇適合這兩種情況的 ACL,而不是常見(jiàn)方案。我們希望管理員能夠管理對(duì)象,同時(shí)還希望防止因在這些文件夾中執(zhí)行代碼而出現(xiàn)安全問(wèn)題(請(qǐng)注意:此處的 ACE 甚至?xí)柚顾姓邚倪@些文件夾執(zhí)行代碼)。

  以下是共享讀取 ACE:

訪問(wèn)控制:理解 Windows 文件和注冊(cè)表權(quán)限

D:P(D;OI;WP;;;WD)(A;OICI;FA;;;BA)(A;OICI;FA;;;SY)(A;OICI;FA;;;CO)(A;CI;0x1200af;;;AU)(A;OI;GR;;;AU)

  以下是協(xié)作性 ACE:

訪問(wèn)控制:理解 Windows 文件和注冊(cè)表權(quán)限

D:P(D;OI;WP;;;WD)(A;OICI;FA;;;BA)(A;OICI;FA;;;SY)(A;OICI;FA;;;CO)(A;OICI;SDGRGW;;;AU)

  請(qǐng)注意:兩個(gè) ACL 都以拒絕所有人執(zhí)行 ACE、對(duì)象繼承(應(yīng)用到文件)開(kāi)始,從而防止用戶系統(tǒng)和跨用戶攻擊。然后為管理員,系統(tǒng)(系統(tǒng)實(shí)際上不需要)和 CO 提供完全控制權(quán)限 (File All)。

對(duì)于“共享讀取”方案來(lái)說(shuō),因?yàn)榇耸跈?quán)在 CI 和目錄方面的限制,經(jīng)過(guò)驗(yàn)證的用戶將獲得 List、AddFile、AddSubDir、ReadEA、Traverse、ReadAttr、RCtl 和 Sync 權(quán)限,單獨(dú)得到對(duì)所有文件的 Generic Read 權(quán)限。對(duì)于“協(xié)作”方案來(lái)說(shuō),經(jīng)過(guò)驗(yàn)證的用戶將獲得文件和目錄的 Delete、Generic Read 和 Generic Write 權(quán)限。

  管理注冊(cè)表及其權(quán)限

  Windows 將許多狀態(tài)信息存儲(chǔ)在 Windows 注冊(cè)表中。注冊(cè)表數(shù)據(jù)以“配置單元”格式存儲(chǔ),數(shù)據(jù)存儲(chǔ)在項(xiàng)和子項(xiàng)當(dāng)中,可以將二者視為容器(子項(xiàng)不視為對(duì)象)。

  用戶特定數(shù)據(jù)存儲(chǔ)在 Hive Key Users (HKEY_USERS) 的相應(yīng)用戶中。如您所料,這種數(shù)據(jù)大多可由用戶寫(xiě)入。在任何會(huì)話內(nèi),HKey_Current_User (HKCU) 都將指向 HKEY_USERS 的適當(dāng)部分。

  系統(tǒng)和機(jī)器信息存儲(chǔ)在 HKEY_LOCAL_MACHINE (HKLM) 配置單元中。HKLM 中包含的是各種系統(tǒng)服務(wù)的信息,其中大多數(shù)現(xiàn)在均使用本地服務(wù)或網(wǎng)絡(luò)服務(wù)組的有限權(quán)限運(yùn)行。服務(wù)和應(yīng)用程序可以在其注冊(cè)表項(xiàng)中存儲(chǔ)狀態(tài)信息。這些信息應(yīng)該存儲(chǔ)在子項(xiàng)(隸屬服務(wù)項(xiàng)或服務(wù)項(xiàng)包含的項(xiàng))當(dāng)中。切勿通過(guò) ACL 處理服務(wù)項(xiàng),使該服務(wù)具有對(duì)其自身服務(wù)項(xiàng)的 SetKey 權(quán)限(或者 WDac 或 WOwn 權(quán)限,這些權(quán)限可能會(huì)導(dǎo)致此類(lèi)攻擊),因?yàn)檫@樣會(huì)使該服務(wù)能夠指向不同的可執(zhí)行文件。此類(lèi)錯(cuò)誤可能導(dǎo)致服務(wù)主機(jī)遭到 EoP 攻擊,因?yàn)榉?wù)控制管理器可能會(huì)在系統(tǒng)加載時(shí)也加載該服務(wù)所指向的可執(zhí)行文件。

  為 HKLM 設(shè)置 DACL 的一般原則是必須使用戶不能寫(xiě)入或修改此數(shù)據(jù)、相關(guān)聯(lián)的 ACL 和所有權(quán)。與設(shè)置系統(tǒng)區(qū)域中文件系統(tǒng) DACL 的指導(dǎo)原則一樣,使用用戶權(quán)限或在受限環(huán)境中運(yùn)行的應(yīng)用程序或服務(wù)需要記錄錯(cuò)誤消息時(shí),屬于特例情況。對(duì)這種情況的指導(dǎo)原則與文件系統(tǒng)中解決類(lèi)似問(wèn)題的原則相似—為此類(lèi)信息創(chuàng)建單獨(dú)的項(xiàng)并為其設(shè)置適當(dāng)?shù)?ACL。因此,敏感信息可以通過(guò) ACL 設(shè)置給受信主體(管理員、系統(tǒng)等),而日志數(shù)據(jù)也可在需要時(shí)允許寫(xiě)入。

您需要盡力避免的情況是用戶修改受信任的參數(shù)(例如關(guān)閉反病毒或防間諜軟件服務(wù))或使用用戶或管理員使用的工具篡改數(shù)據(jù)。假設(shè)當(dāng)調(diào)用“記事本”時(shí)它會(huì)加載 C:windowsnotepad.exe。C:windows 的默認(rèn) ACL 不允許攻擊者修改此可執(zhí)行文件。如果攻擊者可以重寫(xiě)從“記事本”圖標(biāo)到其可執(zhí)行文件的鏈接,則攻擊者可以將該圖標(biāo)鏈接到其他文件(例如 C:toolsload_rootkit.exe)并加載它。這樣可以在加載 rootkit 之后再加載“記事本”,從而使用戶感覺(jué)不到系統(tǒng)已經(jīng)遭到破壞。

  如果攻擊者可以通過(guò)注冊(cè)表驅(qū)動(dòng)鏈接,那文件系統(tǒng)中保護(hù)性的 ACL 將起不到多大作用。您還可能受到從受限系統(tǒng)服務(wù)向其它系統(tǒng)服務(wù)發(fā)起的攻擊。在 Windows Vista 和 Windows Server 2008 中,服務(wù)將按照其所需要的權(quán)限劃分為不同的組。這種服務(wù)隔離技術(shù)提供的深度防御保護(hù)需要服務(wù)權(quán)限配置,這樣服務(wù)(特別是跨服務(wù)組的服務(wù))之間將無(wú)法互相篡改數(shù)據(jù)。

  正如我們需要考慮防止用戶添加或鏈接到惡意可執(zhí)行文件一樣,我們還必須防止服務(wù)更改其權(quán)限和功能。服務(wù)的 ChangeConf 權(quán)限必須限定給管理員、系統(tǒng)或可信的安裝程序,因?yàn)樵摍?quán)限允許處理器更改服務(wù)的權(quán)限。

  總結(jié)

  Windows 提供了非常豐富的權(quán)限控制功能,它們可用于允許操作、阻止操作并提供對(duì)新威脅的深度防御。這一豐富的訪問(wèn)控制功能自然會(huì)令加大復(fù)雜性。

  以下幾項(xiàng)一般指導(dǎo)原則可以幫助您避免出現(xiàn)各種問(wèn)題。例如,系統(tǒng)默認(rèn)配置相對(duì)比較安全。您應(yīng)該盡可能使用這些配置。如果將應(yīng)用程序安裝到 Program Files 以外的位置,請(qǐng)使用程序文件 ACL。在某些情況下,您可能希望限制一些默認(rèn)權(quán)限,例如默認(rèn)授予用戶的驅(qū)動(dòng)器權(quán)限;但請(qǐng)記住如果確實(shí)需要這么做,您應(yīng)該準(zhǔn)備好查找和處理潛在的應(yīng)用程序兼容性問(wèn)題。

最重要的指導(dǎo)原則是嚴(yán)禁管理員或系統(tǒng)帳戶執(zhí)行或通過(guò)指針指向用戶能夠?qū)懭牖蛐薷牡拇a。同樣重要的是用戶不能執(zhí)行或通過(guò)指針指向另一個(gè)用戶能夠?qū)懭牖蛐薷牡拇a。這些指導(dǎo)原則適合本文中討論的各種安全問(wèn)題。如果您所做的更改都遵守這些指導(dǎo)原則,那您將可以避免大多數(shù)嚴(yán)重的安全問(wèn)題。

  有關(guān)訪問(wèn)控制組件的更多信息,請(qǐng)參閱 MSDN 中的“訪問(wèn)控制組件”。有關(guān) ace_string 訪問(wèn)掩碼組件的信息,請(qǐng)參閱 MSDN“ACCESS_MASK”文章,其中包含對(duì)文件、目錄、注冊(cè)表項(xiàng)和共享內(nèi)容特殊權(quán)限的介紹。有關(guān)受限 SID 的其他信息,請(qǐng)參閱 MSDN“受限令牌”文章。

  權(quán)利的完整列表

  圖 A 標(biāo)準(zhǔn)權(quán)利

  圖 B 文件和目錄的特定權(quán)利

  圖 C 文件映射和注冊(cè)表的特定權(quán)限

  圖 D 服務(wù)控制管理器和服務(wù)的特定權(quán)利

  圖 E 進(jìn)程和線程的特定權(quán)利

  圖 F WindowStations 和桌面的特定權(quán)利

  圖 G 符號(hào)鏈接和事件的特殊權(quán)利

  圖 H 信號(hào)量和互斥體的特定權(quán)利

  圖 I 管道和令牌的特定權(quán)利

  圖 J 通用或公認(rèn)的帳戶及其 SID 字符串

  John R. Michener 是 Microsoft 的高級(jí)安全項(xiàng)目經(jīng)理。他在大約 5 年前加入 Microsoft Windows 安全團(tuán)隊(duì)。John 擁有 20 多年系統(tǒng)安全方面的經(jīng)驗(yàn)并曾經(jīng)三次進(jìn)行安全領(lǐng)域的創(chuàng)業(yè)。他是 Windows 軟件保證團(tuán)隊(duì)的密碼和權(quán)限專家。您可以通過(guò) jmichene@microsoft.com 與他聯(lián)系。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多