1.LSA、SAM、NTDS区别

1. LSA、SAM、NTDS区别

特性 LSA (Local Security Authority) SAM (Security Accounts Manager) NTDS (NT Directory Services) / NTDS.dit
类型 核心安全进程/子系统 (LSASS.EXE) 本地数据库文件 (C:\Windows\System32\config\SAM) 域数据库文件 (C:\Windows\NTDS\NTDS.dit,在域控制器上)
功能 管理本地安全策略,执行用户认证,生成访问令牌,管理 LSA Secrets 存储本地用户和组账户信息(用户名、密码哈希) 存储域中所有用户、组、计算机和其他 Active Directory 对象的信息(包括密码哈希)
范围 单个 Windows 计算机 单个 Windows 计算机的本地用户账户(工作组模式下主要使用,域环境下仍存在但角色不同) 整个 Active Directory 域
关系 使用 SAM 数据库进行本地认证,使用 NTDS 数据库进行域认证,并管理 LSA Secrets 为 LSA 提供本地用户账户信息 为 LSA 提供域用户和资源信息,是域环境中认证和授权的基石

理解这三者之间的关系非常重要,尤其是在安全领域。攻击者常常会尝试从 LSASS 进程内存中提取凭据(例如,LSA Secrets 或缓存的密码哈希),或者通过复制 SAM 或 NTDS.dit 文件来获取用户密码哈希,从而进行横向移动或权限提升

2. LSASS

LSASS (Local Security Authority Subsystem Service) 是 Windows 操作系统中一个至关重要的系统进程,它的文件名是 lsass.exe。它是 本地安全机构 (LSA) 的实现,负责执行 Windows 系统的安全策略。

2.1. LSASS 的核心功能

  • 用户认证: 当用户尝试登录 Windows 系统时(无论是本地登录还是通过域登录),LSASS 负责验证用户的用户名和密码(或其他凭据)。它会与 SAM (Security Accounts Manager) 数据库(本地用户)或 NTDS.dit 数据库(域用户)进行交互,以确认用户的身份。
  • 生成访问令牌: 一旦用户成功通过认证,LSASS 会为该用户创建一个访问令牌 (Access Token)。这个令牌包含了用户的安全标识符 (SID)、所属的用户组、以及系统授予该用户的各种权限。所有由该用户启动的进程都会继承这个访问令牌,从而决定了它们能够访问哪些资源和执行哪些操作。
  • 管理安全策略: LSASS 负责管理和执行本地安全策略,例如密码复杂性要求、账户锁定策略、用户权限分配等。
  • 凭据存储与管理: LSASS 在其内存中临时存储了用于认证的敏感信息,包括用户的密码哈希(如 NTLM 哈希和 Kerberos 票据)以及前面提到的 LSA Secrets(如服务账户密码、缓存的域凭据加密密钥等)。这些凭据是为了实现单点登录和各种安全服务所必需的。
  • 安全审计: LSASS 还会将重要的安全事件记录到 Windows 安全日志中,以便管理员进行审计和安全分析。

3. LSA Secrets

LSA Secrets 是 Windows 操作系统中一个非常敏感且受保护的存储区域,由 本地安全机构 (LSA) 管理。它存储了系统为了执行各种安全相关任务所需的加密敏感数据

3.1. LSA Secrets 存储了什么?

LSA Secrets 存储的数据通常是为了在系统重启后仍然保持持久性的凭据和敏感信息,包括但不限于:

  • 计算机账户密码: 如果计算机加入了 Active Directory 域,那么它在域中的账户密码会作为 LSA Secret 存储。
  • 服务账户密码: 某些非交互式服务(即那些不需要用户登录即可运行的服务)如果配置了特定的用户账户来运行,其密码可能会作为 LSA Secret 存储。这包括了 SQL Server、IIS 应用程序池等使用的账户密码。
  • 缓存的域凭据加密密钥 (NL$KM): 这是用于加密和保护缓存的域用户登录凭据(MsCache)的关键。
  • DPAPI (Data Protection API) 本地密钥: 用于保护用户数据和系统数据加密的密钥。
  • 自动登录 (AutoLogon) 密码: 如果系统配置了自动登录功能,相关的密码可能会被存储。
  • 其他敏感信息: 历史上有时也会存储一些其他类型的密码,比如旧版 Internet Explorer 密码、RAS 连接密码等,尽管现代 Windows 版本对此有更严格的限制。

3.2. LSA Secrets 的存储位置和保护

LSA Secrets 主要存储在 Windows 注册表中的以下位置:

  • HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets
    这些数据是加密的。解密这些秘密需要一个 引导密钥 (Boot Key),这个密钥本身也是从注册表中的其他地方派生出来的,并与系统硬件和安装相关联。