安全系统组件(Security system components)
以下是实现Windows 安全性的核心组件和数据库:
安全引用监视器(SRM,Security Reference Monitor):这是Windows 执行体(%SystemRoot%\System32\Ntoskrnl.exe)中的一个组件,它负责:定义访问令牌数据结构来表示一个安全环境、执行对象的安全访问检查、特权管理(用户权限),以及生成所有的结果安全审计消息。
本地安全权威子系统(LSASS,Local Security Authority Subsystem Service):这是一个运行%SystemRoot%\System32\Lsass.exe镜像文件的用户模式进程,它负责本地系统安全策略(比如允许哪些用户登陆到本地机器上、密码策略、授予用户和用户组的特权,以及系统安全审计设置)、用户认证,以及发送安全审计消息到事件日志(Event Log)中。本地安全权威服务是LSASS加载的一个库,它实现了这些功能中的绝大部分;
LSAIso.exe(独立 LSA):被LSASS用来保存用户令牌的哈希值,之前是保存在LSASS的内存中。因为LSAIso.exe是一个运行在VTL1中的Trustlet(隔离用户模式进程),普通进程,甚至是普通内核都无法获取该进程的地址信息。LSASS与LSAIso通过ALPC通信时会保存一个密码哈希值的加密块。
LSASS策略数据库(Lsass policy database):这是包含本地系统安全策略设置的数据库。该数据库被存储在注册表中通过ACL保护的一个区域,位于HKLM\SECURITY的下面。它包含了诸如此类的信息:哪些域是可信的,从而可以认证用户的登录请求;谁允许访问系统,以及如何访问(交互式登录,网络登录,或者服务登陆);分配给谁哪些特权;执行哪一种安全审计。LSASS策略数据库也保存一些“秘密”,包括域登录(domain logon)在本地缓存的信息,以及Windows服务的用户-账户登录信息;
安全账户管理器服务(SAM,Security Accounts Manager):这个服务负责管理一个数据库,该数据库包含了本地机器上已定义的用户名和组。SAM服务是在%SystemRoot%\System32\Samsrv.dll中实现的,它被加载到LSASS进程中;
SAM数据库:它包含了已定义的本地用户和用户组,连同它们的口令和其他属性。在域控制器上,SAM并不保存定义在域中的用户,而是保存了该系统的管理员恢复账户的定义以及其口令。该数据库被储存在注册表的HKLM\SAM下,默认仅允许Local System具有完全控制的权限,其他用户,即使是管理员组的成员,也无法访问该注册表项的内容。
活动目录(Active Directory):这是一个目录服务,它包含了一个数据库,其中存放了关于域中对象的信息。这里,域(domain)是有一组计算机和与它们相关联的安全组构成的,每个计算机组被当做单个实体来管理。这里的对象包括用户、组和计算机。域用户和组的口令信息和特权也被存储在活动目录中,而活动目录则是在一组被指定为该域的域控制器(domain controller)的机器之间进行复制的。活动目录服务器运行在LSASS进程中,其实现模块为%SystemRoot%\system32\Ntdsa.dll。
认证包(Authentication packages):包括运行在LSASS进程和客户进程环境中的动态链接库,它们实现了Windows的认证策略。认证DLL负责认证一个用户,其做法是,检查一个给定的用户名和口令是否匹配,如果匹配的话,则向LSASS返回有关用户安全身份的细节信息,以供LSASS利用这些信息来生成一个令牌;
交互式登录管理器(Winlogon):这是一个用户模式进程,它运行的是%SystemRoot%\System32\Winlogon.exe,负责相应SAS和管理交互式登录会话。例如,当用户登陆的时候,Winlogon创建用户的第一个进程;
登录用户界面(LogonUI):这是一个用户模式进程,它运行的是%SystemRoot%System32、LoginUI.exe,向用户显示登录界面,让他们在此界面中认证他们在系统上的身份。LogonUI通过各种不同的方法,向各个凭证提供者查询用户的登录凭证;
凭证提供者(CP,Credential Profiders):这是多个进程内COM对象,运行在LogonUI进程(当SAS执行的时候根据需要由Winlogon启动)中,用来获得一个用户名的名称和口令,智能卡的PIN码,或生物测量数据(例如指纹)。标准CP有authui.dll,SmartcardCredentialProvider.dll, BioCredProv.Dll,以及FaceCredentialProvider.dll,Win10新加的面部识别提供者。
网络登录服务(Netlogon):这是一个windows服务(\Windows\Systemew\Netlogon.dll),它建立起与域控制器之间的安全通道。诸如交互式登录或者LAN管理器和NTLMv1和v2的认证验证之类的安全请求,均通过此安全通道来发送。Netlogon也用于活动目录中的登录;
内核安全设备驱动程序(KSecDD):这是一个内核模式函数库,它实现了高级本地过程调用(ALPC)接口;其他的内核模式安全组件,包括加密文件系统(EFS,Encrypting File System),利用该接口与用户模式下的LSASS进行通信。KSecDD位于%SystemRoot%\System32\Drivers\Ksecdd.sys中;
AppLocker:这是一种机制,它允许管理员指定哪些可执行文件、DLL和脚本可以被指定的用户或者组使用。AppLocker由一个驱动程序(%SystemRoot%\System32\Drivers\AppId.sys)和一个运行在SvcHost进程中的服务(%SystemRoot%\System32\AppIdSvc.dll)组成。
实验:观察HKLM\SAM和 HKLM\Security
psexec -s -i -d c:\windows\regedit.exe