Windows 认证理论
我们在之前已经讨论了 NTLM 认证、Kerberos 认证、LSA 与 LSASS、SAM 等概念。在这小节,我们将对 Windows 认证理论做一个整合、归纳以及延伸。
Windows 认证类型与形式
发生在 Windows 环境中的认证过程,可以是本地认证,以及域认证。
本地认证
本地认证,例如是使用本地账户登陆主机。我们对于个人用的主机进行登陆往往就是本地登陆。本地用户只存在于特定系统,即只有该系统才知道有哪些本地用户,例如 SRV01\David。尽管系统与系统之间是互相独立的,但是不同的系统却可能有着相似甚至相同的帐号密码。例如 SRV01\David,SRV02\David。我们之前知道了本地系统的信息存储于 SAM 之中,当用户以本地账户认证的时候,Windows 会根据 SAM 中的记录验证凭证。
域认证
域认证,例如是员工通过分发的域账户登陆工作站并访问内部资源。总之,域认证与本地认证是不同的机制。域用户和群组呈现在具体的 AD 域中,所有的域系统, (或在受信任的域中) 知道如何应对认证,它们会将认证的流程委派给域控制器。域用户和主机数据存储于 NTDS (NT 目录服务) 数据库中,当有用户尝试认证,域控制器则根据记录来验证凭证。
而认证的形式,可以笼统地分为物理认证以及远程认证。
物理认证
当用户在电脑面前,输入凭证并登陆,那么这是物理认证,适用于本地用户和域用户,只要目标系统知道认证的帐号。在 AD 中,默认情况下,任何域用户可以物理登陆任何域主机。但是,绝大多数情况下,我们没有机会在目标的环境中实现物理登陆。
远程认证
与物理认证有所不同的是,默认情况下需要特定权限才能进行远程登陆,例如属于本地管理员分组,远程桌面用户分组。因此,我们应该关心的还是远程认证。
为了理解接下来的概念,我们需要对 Windows 认证机制很熟悉。
Windows 认证重要概念
认证包/安全支持提供程序 AP/SSP
虽然在前面的小节有讨论过了,让我们再回顾一下。AP/SSP 通过分析登陆数据来认证 Windows 用户,不同的 AP/SSP 对多种登陆过程以及认证协议提供支持。AP/SSP 以 DLL 形式存在,被 LSA 所加载和使用。常见的 AP/SSP 有 NTLM,Kerberos,WDigest,Credman 等。微软所提供的 AP 有 CSSP,Microsoft Negotiate,Microsoft NTLM,Microsoft Kerberos,Microsoft Digest SSP,以及 Secure Channel。
AP 提供了 Windows 充当客户端和认证服务器所需的逻辑。对于客户端,想要通过 Windows 认证连接到特定服务。对于服务器,想要让服务或应用程序支持 Windows 认证
SSP 接口
微软提供 SSP 接口以简单地将应用程序与认证系统无缝继承。
SSPI 的作用主要有这些:安全包管理、凭证管理、安全上下文管理、消息支持。