安全系統(tǒng)組件(Security system components)
以下是實(shí)現(xiàn)Windows 安全性的核心組件和數(shù)據(jù)庫:
安全引用監(jiān)視器(SRM,Security Reference Monitor):這是Windows 執(zhí)行體(%SystemRoot%\System32\Ntoskrnl.exe)中的一個(gè)組件忆肾,它負(fù)責(zé):定義訪問令牌數(shù)據(jù)結(jié)構(gòu)來表示一個(gè)安全環(huán)境朝群、執(zhí)行對象的安全訪問檢查、特權(quán)管理(用戶權(quán)限)涉波,以及生成所有的結(jié)果安全審計(jì)消息。
本地安全權(quán)威子系統(tǒng)(LSASS,Local Security Authority Subsystem Service):這是一個(gè)運(yùn)行%SystemRoot%\System32\Lsass.exe鏡像文件的用戶模式進(jìn)程芒填,它負(fù)責(zé)本地系統(tǒng)安全策略(比如允許哪些用戶登陸到本地機(jī)器上、密碼策略空繁、授予用戶和用戶組的特權(quán)殿衰,以及系統(tǒng)安全審計(jì)設(shè)置)、用戶認(rèn)證盛泡,以及發(fā)送安全審計(jì)消息到事件日志(Event Log)中闷祥。本地安全權(quán)威服務(wù)是LSASS加載的一個(gè)庫,它實(shí)現(xiàn)了這些功能中的絕大部分傲诵;
LSAIso.exe(獨(dú)立 LSA):被LSASS用來保存用戶令牌的哈希值凯砍,之前是保存在LSASS的內(nèi)存中。因?yàn)長SAIso.exe是一個(gè)運(yùn)行在VTL1中的Trustlet(隔離用戶模式進(jìn)程)拴竹,普通進(jìn)程悟衩,甚至是普通內(nèi)核都無法獲取該進(jìn)程的地址信息。LSASS與LSAIso通過ALPC通信時(shí)會(huì)保存一個(gè)密碼哈希值的加密塊栓拜。
LSASS策略數(shù)據(jù)庫(Lsass policy database):這是包含本地系統(tǒng)安全策略設(shè)置的數(shù)據(jù)庫局待。該數(shù)據(jù)庫被存儲(chǔ)在注冊表中通過ACL保護(hù)的一個(gè)區(qū)域,位于HKLM\SECURITY的下面菱属。它包含了諸如此類的信息:哪些域是可信的钳榨,從而可以認(rèn)證用戶的登錄請求;誰允許訪問系統(tǒng)纽门,以及如何訪問(交互式登錄薛耻,網(wǎng)絡(luò)登錄,或者服務(wù)登陸)赏陵;分配給誰哪些特權(quán)饼齿;執(zhí)行哪一種安全審計(jì)饲漾。LSASS策略數(shù)據(jù)庫也保存一些“秘密”,包括域登錄(domain logon)在本地緩存的信息缕溉,以及Windows服務(wù)的用戶-賬戶登錄信息考传;
安全賬戶管理器服務(wù)(SAM,Security Accounts Manager):這個(gè)服務(wù)負(fù)責(zé)管理一個(gè)數(shù)據(jù)庫证鸥,該數(shù)據(jù)庫包含了本地機(jī)器上已定義的用戶名和組僚楞。SAM服務(wù)是在%SystemRoot%\System32\Samsrv.dll中實(shí)現(xiàn)的,它被加載到LSASS進(jìn)程中枉层;
SAM數(shù)據(jù)庫:它包含了已定義的本地用戶和用戶組泉褐,連同它們的口令和其他屬性。在域控制器上鸟蜡,SAM并不保存定義在域中的用戶膜赃,而是保存了該系統(tǒng)的管理員恢復(fù)賬戶的定義以及其口令。該數(shù)據(jù)庫被儲(chǔ)存在注冊表的HKLM\SAM下揉忘,默認(rèn)僅允許Local System具有完全控制的權(quán)限跳座,其他用戶,即使是管理員組的成員泣矛,也無法訪問該注冊表項(xiàng)的內(nèi)容疲眷。
活動(dòng)目錄(Active Directory):這是一個(gè)目錄服務(wù),它包含了一個(gè)數(shù)據(jù)庫乳蓄,其中存放了關(guān)于域中對象的信息。這里夕膀,域(domain)是有一組計(jì)算機(jī)和與它們相關(guān)聯(lián)的安全組構(gòu)成的虚倒,每個(gè)計(jì)算機(jī)組被當(dāng)做單個(gè)實(shí)體來管理。這里的對象包括用戶产舞、組和計(jì)算機(jī)魂奥。域用戶和組的口令信息和特權(quán)也被存儲(chǔ)在活動(dòng)目錄中,而活動(dòng)目錄則是在一組被指定為該域的域控制器(domain controller)的機(jī)器之間進(jìn)行復(fù)制的易猫〕苊海活動(dòng)目錄服務(wù)器運(yùn)行在LSASS進(jìn)程中,其實(shí)現(xiàn)模塊為%SystemRoot%\system32\Ntdsa.dll准颓。
認(rèn)證包(Authentication packages):包括運(yùn)行在LSASS進(jìn)程和客戶進(jìn)程環(huán)境中的動(dòng)態(tài)鏈接庫哈蝇,它們實(shí)現(xiàn)了Windows的認(rèn)證策略。認(rèn)證DLL負(fù)責(zé)認(rèn)證一個(gè)用戶攘已,其做法是炮赦,檢查一個(gè)給定的用戶名和口令是否匹配,如果匹配的話样勃,則向LSASS返回有關(guān)用戶安全身份的細(xì)節(jié)信息吠勘,以供LSASS利用這些信息來生成一個(gè)令牌性芬;
交互式登錄管理器(Winlogon):這是一個(gè)用戶模式進(jìn)程,它運(yùn)行的是%SystemRoot%\System32\Winlogon.exe剧防,負(fù)責(zé)相應(yīng)SAS和管理交互式登錄會(huì)話植锉。例如,當(dāng)用戶登陸的時(shí)候峭拘,Winlogon創(chuàng)建用戶的第一個(gè)進(jìn)程俊庇;
登錄用戶界面(LogonUI):這是一個(gè)用戶模式進(jìn)程,它運(yùn)行的是%SystemRoot%System32棚唆、LoginUI.exe暇赤,向用戶顯示登錄界面,讓他們在此界面中認(rèn)證他們在系統(tǒng)上的身份宵凌。LogonUI通過各種不同的方法鞋囊,向各個(gè)憑證提供者查詢用戶的登錄憑證;
憑證提供者(CP瞎惫,Credential Profiders):這是多個(gè)進(jìn)程內(nèi)COM對象溜腐,運(yùn)行在LogonUI進(jìn)程(當(dāng)SAS執(zhí)行的時(shí)候根據(jù)需要由Winlogon啟動(dòng))中,用來獲得一個(gè)用戶名的名稱和口令瓜喇,智能卡的PIN碼挺益,或生物測量數(shù)據(jù)(例如指紋)。標(biāo)準(zhǔn)CP有authui.dll乘寒,SmartcardCredentialProvider.dll望众, BioCredProv.Dll,以及FaceCredentialProvider.dll伞辛,Win10新加的面部識(shí)別提供者烂翰。
網(wǎng)絡(luò)登錄服務(wù)(Netlogon):這是一個(gè)windows服務(wù)(\Windows\Systemew\Netlogon.dll),它建立起與域控制器之間的安全通道蚤氏。諸如交互式登錄或者LAN管理器和NTLMv1和v2的認(rèn)證驗(yàn)證之類的安全請求甘耿,均通過此安全通道來發(fā)送。Netlogon也用于活動(dòng)目錄中的登錄竿滨;
內(nèi)核安全設(shè)備驅(qū)動(dòng)程序(KSecDD):這是一個(gè)內(nèi)核模式函數(shù)庫佳恬,它實(shí)現(xiàn)了高級本地過程調(diào)用(ALPC)接口;其他的內(nèi)核模式安全組件于游,包括加密文件系統(tǒng)(EFS毁葱,Encrypting File System),利用該接口與用戶模式下的LSASS進(jìn)行通信贰剥。KSecDD位于%SystemRoot%\System32\Drivers\Ksecdd.sys中头谜;
AppLocker:這是一種機(jī)制,它允許管理員指定哪些可執(zhí)行文件鸠澈、DLL和腳本可以被指定的用戶或者組使用柱告。AppLocker由一個(gè)驅(qū)動(dòng)程序(%SystemRoot%\System32\Drivers\AppId.sys)和一個(gè)運(yùn)行在SvcHost進(jìn)程中的服務(wù)(%SystemRoot%\System32\AppIdSvc.dll)組成截驮。
實(shí)驗(yàn):觀察HKLM\SAM和 HKLM\Security
psexec -s -i -d c:\windows\regedit.exe