◆伍喚宇 李亞茹 龍瀚林
Windows系統(tǒng)安全機制與安全技術分析
◆伍喚宇1李亞茹1龍瀚林2
(1.合肥工業(yè)大學 安徽 230031;2.哈爾濱工業(yè)大學(深圳) 廣東 518055)
Windows操作系統(tǒng)是目前世界上最流行的操作系統(tǒng)之一。自Windows操作系統(tǒng)在市場上出現(xiàn)以來,為臺式電腦,服務器和其他計算機系統(tǒng)范圍的各種平臺提供了解決方案。Windows10自從問世以來就一直備受用戶的關注和喜愛,成為微軟自Windows7以來的又一大革新,在功能體驗和安全性方面都有了很大程度的改進。為了進一步了解Windows操作系統(tǒng)的安全性,本文對Window內部的相關安全機制及以及Windows10的新安全技術進行了分析和研究。
Windows系統(tǒng);安全模型;安全機制
Windows10作為新一代的Windows操作系統(tǒng),內部集成了一系列的安全機制,同時應用了大量新的安全技術,其安全性在各個方面都得到了增強。Windows10中有傳統(tǒng)的安全模型和協(xié)議,包括自主訪問控制模型,完整性模型,特權隔離,完整性保護,用戶認證等,也有實現(xiàn)安全模型所采用的方案,例如完整性控制、用戶賬戶控制,訪問控制列表,安全標識符,Kerberos協(xié)議等,還有針對Windows的具體使用場景引入的其他安全方案,比如生物認證,基于虛擬化的安全等以及DEP和ASLR技術等。在本文中,首先對計算機系統(tǒng)的安全模型進行介紹,接下來介紹Windows中的安全模型和實現(xiàn)方法,最后介紹Windows10的新安全技術。
計算機信息系統(tǒng)的形式化安全模型的研究始于20世紀七十年代。形式化安全模型的需求最初來自軍事領域,但是隨著計算機系統(tǒng)在私人、商業(yè)等非軍事領域變得越來越重要,形式化安全需求也開始出現(xiàn)在個人和商業(yè)領域[1]。
20世紀末提出的幾種形式化安全模型是十分經(jīng)典的安全模型,至今仍在廣泛應用。它們主要可以歸類于以下幾種:自主訪問控制模型(DAC),強制訪問控制模型(MAC),完整性模型,基于角色的訪問控制模型(RBAC)以及信息流模型(Information-FlowModels)[2]。
自主訪問控制模型主要有HRU模型,具體實現(xiàn)有訪問控制矩陣、訪問控制表及前綴表等。
強制訪問控制模型主要有BLP模型,Biba模型,具體實現(xiàn)有Unix文件系統(tǒng)的Multics方案等。其中BLP側重于保密性,Biba模型側重于完整性。
完整性模型主要有Clark-Wilson[5]模型,在WindowsNT中許多功能都是對Clark-Wilson模型的實現(xiàn)。
基于角色的訪問控制模型主要有RBAC1,RBAC2,RBAC3,幾乎應用于所有數(shù)據(jù)庫.
信息流模型主要有四種[3]:基于格的信息流模型、基于進程代數(shù)的信息流模型、基于安全類型系統(tǒng)的信息流模型和基于自動機的信息流模型。
Windows操作系統(tǒng)與Linux不同,不支持強制訪問控制,而是采用自主訪問控制,并且沒有可支持不同訪問控制模型的通用框架[4]。
Windows訪問控制模型有兩個主要的組成部分,訪問令牌和安全描述符,分別屬于被訪問主體和被訪問主體。當Windows賬戶登錄時,系統(tǒng)從自身數(shù)據(jù)庫中查詢賬戶信息,用信息生成令牌,并且將令牌的副本賦給在賬戶環(huán)境里啟動的進程。當進程在對對象進行訪問時,系統(tǒng)會通過進程的令牌來進行訪問檢查。
在CW模型中,有以下性質:
(1)系統(tǒng)需要一個IVP來確認任何CDI的完整性;
(2)CDI只能由轉換過程(TP)來進行更改,且所有TP必須維護CDI的完整性;
(3)主體只能對特定的CDI執(zhí)行與其關聯(lián)的特定操作;
(4)訪問規(guī)則必須滿足責任分離要求;
(5)能夠對UDI運用的TP將其轉換為CDI;
(6)所有執(zhí)行的TP必須留下只寫的日志;
(7)只有特殊的主體被系統(tǒng)允許更改相關于驗證的列表。
相應的在WindowsNT中,分別有以下實現(xiàn):
(1)LSA負責檢查主體訪問令牌的安全信息;
(2)除管理員等少量用戶可以直接更改任何客體的屬性之外,其余用戶不具有此能力;
(3)主體帶有的訪問令牌包含了其被允許的操作;
(4)只有管理員可以訪問任何客體;
(5)用戶可將無ACL的客體轉為有ACL;
(6)只寫日志存在于WindowsNT;
(7)只有管理員能夠查看和執(zhí)行需要高安全等級的操作。
從上面一段的介紹中可以看出,WindowsNT滿足CW模型,也就是CW模型的安全機制可以由WindowsNT實現(xiàn)。
Windows中每個安全對象具有一定的完整性等級(IL),并且由一個SID來標記,默認值為中等。由低IL進程產(chǎn)生的對象,其完整性等級為低IL。當一個進程試圖訪問一個對象時,“SeAccessCheck”接口將檢查該進程的完整性等級,并判斷進程是否符合訪問控制列表。當訪問控制列表允許訪問,但是主體的完整性等級低于客體,訪問也不會被執(zhí)行。
完整性等級還被用于Windows消息子系統(tǒng),用來實現(xiàn)用戶界面特權隔離(UIPI)。UIPI的主要功能是防止低完整性等級處理窗口向高完整性等級窗口發(fā)送消息。在Vista之前的Windows操作系統(tǒng),許多程序請求下管理員權限運行,但是實際上并沒有必要。在Vista中增加了對這些請求的控制,但是為了兼容Vista之前編寫的32位并且沒有運行在管理員權限下的程序,在Vista之后的Windows版本新引入了文件虛擬化與注冊表虛擬化機制。在用戶使用標準賬戶時,若標準賬戶下的程序試圖對系統(tǒng)范圍的文件或注冊表進行修改,系統(tǒng)會將這個操作映射到用戶范圍的虛擬位置。
用戶賬戶控制(UAC)是在Vista中為了提高安全性引入的功能,通知用戶是否允許應用程序使用驅動器和系統(tǒng)文件以防止惡意軟件損害系統(tǒng)。但是此功能在Vista中只有開啟和關閉兩種選項,這導致頻繁的彈窗通知。Windows7上則加入了兩種UAC級別,這兩種級別的區(qū)別在于其中一個在彈窗時會進入安全桌面,這個安全桌面屬于SYSTEM賬戶,原用戶賬戶下的程序無法知道UAC彈窗的情況,也無法繞過UAC提示框;而另一個彈窗則沒有進入安全桌面,依然使用原有賬戶的桌面環(huán)境,相對前一級別來說安全性有所降低。
在以往的Windows版本中,服務與用戶進程都運行在同一個會話下。Vista后的版本中服務運行在“隔離會話0”中。這意味著正常服務不會顯示事件或者任何彈出對話框與用戶的互動,它會一直靜默而用戶將無法注意到它。如果有個進程嘗試彈出通知框給用戶以獲取用戶輸入,它會一直待命,因為用戶無法看到對話框。用戶所登錄的交互會話實質上是一個終端的服務器。微軟認可的從在隔離會話0中運行的服務發(fā)送消息方法是使用WTSSendMessage,它是Windows終端服務API的一部分。用服務隔離的方式可以提高服務的安全性。
Windows保護機制主要由DEP(數(shù)據(jù)執(zhí)行保護)、GS(一種編譯選項)、ASLR(地址隨機化)及SafeSEH(安全結構化異常處理)等安全技術組成。這些安全技術通過從不同方面給攻擊者制造障礙,增加攻擊者實施緩沖區(qū)溢出攻擊的難度,進而提升系統(tǒng)內存的安全性。其中,DEP技術能夠在內存上(如棧和堆)執(zhí)行額外檢查以阻止惡意代碼的運行,GS棧保護技術對棧中內容進行檢查保護程序的返回地址,ASLR技術通過對棧和堆等線性區(qū)布局的隨機化加大攻擊者預測目的地址的難度,防止攻擊者定位shellcode地址和系統(tǒng)調用地址,SafeSEH技術通過SEH句柄驗證及鏈驗證來保護SEH節(jié)點。這幾種安全技術既相互獨立又互為補充,共同組成了Windows抵御緩沖區(qū)溢出攻擊的完整的安全機制。
NTLM是網(wǎng)絡認證協(xié)議,發(fā)展于LM協(xié)議,與LM協(xié)議機制相同,但是采用了不同的加密算法,基于挑戰(zhàn)/響應。目前LM協(xié)議已經(jīng)淘汰。NTLM協(xié)議只支持Windows系統(tǒng),其過程主要分為三步:協(xié)商、質詢、驗證。
在Windows2000Serve之前微軟主要使用NTLM進行驗證。隨著Windows2000的發(fā)行,微軟采用Kerberos作為身份驗證協(xié)議。它不僅比NTLM更安全、更高效,而且在其他系統(tǒng)上比如UNIX和Linux實現(xiàn)得很理想,并且能應用于Windows和Unix以及Linux系統(tǒng)之間。
Kerberos協(xié)議的主要目標是利用密鑰系統(tǒng)向客戶/服務器提供更完善的認證服務。此協(xié)議不依賴主機的地址信任和操作系統(tǒng)的認證,并且不要求安全的通信信道。Kerberos通過傳統(tǒng)的密碼技術執(zhí)行認證服務,主要包括四個部分:主機,服務器和KDC。KDC主要負責認證、訪問票據(jù)的分發(fā)及對整個過程的管理,主機利用訪問票據(jù)訪問服務器。
Windows7中推出了一種稱為家庭的功能加強的家庭和小型網(wǎng)絡體驗。用戶可以在家里共享數(shù)據(jù),并且可以在計算機之間使用線上ID進行身份驗證。用戶需要將其Windows用戶賬戶顯式地鏈接到在線ID來使用功能。認證由一種叫作基于公鑰算法的公共用戶到用戶協(xié)議支持,也叫作PKU2U。
憑證保護使用基于虛擬化的安全方案將NTLM和Kerberos等使用的憑證和密碼存儲于本地安全中心(LSA),和操作系統(tǒng)中的其他組件隔離開來。LSA中只存放憑證和經(jīng)過簽名的少量操作系統(tǒng)二進制文件,這些二進制文件被加載和執(zhí)行前都要通過簽名驗證,以此確保其中憑證的安全。
Vista中重新設計了登錄方案。這個方案刪除了圖形標志和身份驗證的基礎結構,并添加了憑據(jù)提供程序拓展模型。該憑證提供程序基礎結構是一組在第三方拓展了關于用戶輸入憑據(jù)的用戶體驗時能提供一致性的接口,并將其集成到常見的Windows憑據(jù)對話框。隨著指紋驗證越來越普遍,定義一個用來管理和使用這些技術的通用框架從而推動指紋識別發(fā)展和增強可靠性的措施顯然十分必要。在Windows7之后,微軟添加了新的Windows生物識別框架(WBF)。WBF旨在更方便地支持生物識別認證設備。在Windows7中,WFB只支持指紋識別器[6],但在Windows10時已經(jīng)進行了拓展。目前已經(jīng)有很多支持面部識別的筆記本。
Windows生物識別服務(WBS)的主要作用是把相同的WBF聯(lián)系起來。WBS提供與生物識別設備驅動程序的接口,也提供了Windows生物識別框架API,允許應用程序與這些生物識別設備進行互動。
Windows10應用Hyper-V技術,允許一部分組件運行于與其他組件相隔離的虛擬環(huán)境中,并可以完全控制這些組件所持有的全部內存頁面的屬性,以此來保護重要的數(shù)據(jù)和服務不受侵害。被置于虛擬環(huán)境的惡意軟件即使獲取了對操作系統(tǒng)內核的訪問權限,其攻擊手段也將被極大地限制。Hyper-V虛擬機監(jiān)控程序代碼量小,且通過UEFI和系統(tǒng)內核一道啟動,能夠確保其本身不被攻擊者利用。
Windows10在1903更新中加入了沙箱機制。其本質上也是基于虛擬化的安全方案,不同的是沙箱是一種用于一次性執(zhí)行不受信任的軟件的措施,且和虛擬機一樣支持快照和克隆。當它啟用時,Windows為其動態(tài)地生成一個映像,其中的大多數(shù)文件不可更改,采用軟鏈接的方式附著于鏡像上。映像執(zhí)行時,宿主Windows內存中的多數(shù)共享庫以不允許修改的方式直接映射至沙箱的內存空間,并且沙箱中的任務調度由宿主系統(tǒng)的調度器完成,就如Linux系統(tǒng)上KVM所做的一樣。沙箱每次被關閉時,所有對文件進行的修改都會被丟棄。
WindowsDefender高級威脅防護是集防護、泄露后檢測、自動調查和響應為一體的統(tǒng)一平臺。它依托云技術以提供自動化的安全防護;借助機器學習和高級行為分析來發(fā)現(xiàn)和追蹤攻擊;運用高級運行時分析,自動調查和修復高級攻擊帶來的影響;為用戶提供基于遙測功能的安全專家服務。
在本文中,我們介紹了最主要的幾種計算機信息系統(tǒng)安全模型,并對Windows的安全模型進行了分析,同時還介紹了Windows針對各種場景采取的安全措施。這些措施在極大地增強Windows系統(tǒng)的安全性的同時也關注著用戶的使用體驗。今天,人們的隱私受到空前的威脅,勒索病毒和加密貨幣挖掘也正悄然復蘇;但我們有理由相信,隨著高級威脅防護的推廣和基于虛擬化的安全的廣泛運用,Windows系統(tǒng)仍然能夠持續(xù)勝任用戶的安全需求。
[1]Carl E. Landwehr,F(xiàn)ormal Models for Computer Security [J].Computer Surveys,Vol 13,No 3,September 1981.
[2]M .Harrison,W. Ruzzo. and J. Ullman. Protection in Operating Systems[J]. Communications of the ACM,19(8):461-471,August1986.
[3]吳澤智,陳性元,楊智,杜學繪.信息流控制研究進展[J].軟件學報,2017,28(1):135-159.
[4]李奇,周學海,陳香蘭.Windows訪問控制實施框架的研究與設計[J].計算機系統(tǒng)應用,2009(12):83-87.
[5]D.Clark,D.Wilson,A Comparison of Commercial and Military Computer Security Policies[J].IEEE Symposium on Security and Privacy,184-194,IEEE,1987.
[6]Chris Corio. An Introduction to Security in Windows 7[M]. TechNet Magazine,May 2009,13-20.