大家好,我是你们的技术探险家!
当你按下电脑开机键,在登录界面输入密码时,你正在进行一场本地认证。当你登录后,试图访问公司内网的文件共享服务器时,你又将发起一次网络认证。这两者,构成了 Windows 认证安全的两个核心战场。
攻击者的目标,正是要在这两个战场上取得突破。他们或者攻陷一台“孤岛”般的机器,窃取本地凭证;或者在庞大的“帝国”网络中,伪造一张能通往任何地方的“护照”。今天,我们就以这两个视角,深度剖析 Windows 认证的攻防演义。
🏰 阶段一:“孤岛的城墙” —— 本地认证与 SAM 的秘密
本地认证,指的是在一台独立的、不依赖网络中其他服务器的情况下,验证用户身份的过程。这是所有安全的第一道门。
1. “密码账本”:SAM 数据库
-
是什么?:SAM (Security Account Manager) 是 Windows 系统中一个至关重要的文件,位于 C:WindowsSystem32configSAM
。你可以把它想象成这台电脑的“本地户口本”或“密码账本”。 -
存了什么?:它以加密形式存储了本机所有本地用户的账户信息,以及密码的 NTLM 哈希值。 -
工作原理:当你输入密码进行本地登录时,系统会计算你输入密码的 NTLM 哈希,并与 SAM 数据库中存储的哈希进行比对。如果一致,登录成功。注意,整个过程比对的是哈希,而非明文密码。
2. 本地认证的“软肋”与攻击手法
-
离线攻击 (Offline Attack)
如果攻击者能物理接触到你的硬盘,或者通过其他操作系统的 Live CD 启动电脑,他就可以从硬盘中直接复制出 SAM 文件。之后,他可以从容地使用彩虹表或暴力破解工具(如
ophcrack
,hashcat
)对 SAM 中的哈希进行离线破解,尝试还原出原始密码。 -
内存凭据窃取 (Credential Dumping)
这是更现代、更危险的攻击方式。即便在系统运行时 SAM 文件本身是锁定的,但为了验证登录和进行网络活动,用户的凭据哈希会被加载到内存中的
lsass.exe
(Local Security Authority Subsystem Service) 进程里。攻击者一旦获得管理员权限,就可以使用Mimikatz
等工具,直接从 LSASS 进程中“倾倒”出明文密码和 NTLM 哈希。 -
哈希传递 (Pass-the-Hash, PtH)
这是从本地突破到网络的关键一步。如果攻击者获取了本地管理员账户的 NTLM 哈希,而网络中其他服务器也使用了相同的本地管理员账户和密码(这是非常常见但极其危险的配置错误),攻击者就可以直接利用这个哈希,通过 PtH 技术登录到其他服务器,实现横向移动。
3. 加固“孤岛”的城墙
-
LAPS (Local Administrator Password Solution):微软官方免费工具,解决本地管理员密码复用问题的“银弹”。它能为域内每一台计算机的本地管理员账户,自动生成一个随机、复杂、且定期更换的密码,并将其安全地存储在 Active Directory 中。这使得通过 PtH 进行横向移动变得极其困难。 -
Credential Guard: Windows 10/11 企业版和 Windows Server 的一项强大功能。它使用虚拟化安全 (VBS) 技术,将 lsass.exe
进程隔离在一个受严密保护的虚拟化环境中,使得Mimikatz
等工具几乎无法再从内存中窃取凭据。
🌐 阶段二:“帝国的通行证” —— 网络认证的攻防
当你需要访问网络资源时,就需要一个能在整个“帝国”(Active Directory 域)内证明你身份的“通行证”。
1. NTLM 挑战/应答:年迈但不可忽视的信使
NTLM 虽已年迈,但在许多网络中为了兼容性依然存在。它的核心是挑战/应答 (Challenge/Response) 机制,但其设计在今天看来充满风险。
1.1 NTLMv1 vs. NTLMv2:一场不公平的较量
了解 NTLM 的版本差异至关重要:
-
NTLMv1: 极其脆弱的元老。它使用固定的 8 字节 Challenge,Response 的计算方式也存在严重漏洞,可以被轻易地破解和中继。在任何现代环境中,都应彻底禁用 NTLMv1。 -
NTLMv2: 一个显著的改进。它引入了客户端随机数 (Client Nonce) 和时间戳,使得 Challenge 和 Response 都变得更加复杂和独特,极大地增强了抗重放和抗破解能力。
防御操作:通过组策略 (GPO) 强制全域使用 NTLMv2。路径:
Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Local Policies -> Security Options
策略:Network security: LAN Manager authentication level
推荐值:Send NTLMv2 response only. Refuse LM & NTLM
(Level 5)
1.2 核心风险(一):NTLM 中继攻击 (NTLM Relay) 深度剖析
这是 NTLM 最经典的“原罪”。
-
攻击原理: 想象一个“不诚实的邮差”(攻击者)。 -
你(客户端)想给文件服务器(目标)送一封需要身份验证的信。 -
你把信交给了邮差(攻击者)。 -
邮差拿着你的信,跑到真正的文件服务器那里说:“我是你,我要送这封信。” -
服务器为了验证邮差,给了他一个“验证问题”(Challenge)。 -
邮差自己不回答,而是跑回来把这个问题交给你。 -
你用你的“秘密知识”(密码哈希)解答了这个问题,把答案(Response)交还给邮差。 -
邮差拿着你的答案,成功向服务器证明了“他就是你”,从而获得了访问权限。 -
实战工具: 攻击者常使用 Responder.py
来毒化网络(如 LLMNR/NBT-NS 欺骗)以捕获认证请求,并使用ntlmrelayx.py
(Impacket 工具包) 将这些请求中继到其他服务器,从而在该服务器上执行命令或转储本地 SAM。 -
防御 NTLM 中继: -
SMB 签名 (SMB Signing): 极其重要的防御措施。通过 GPO 强制开启 SMB 签名,它会为每个 SMB 数据包进行数字签名,中间人无法篡改或重放数据包,从而有效阻止针对 SMB 协议的 NTLM 中继。 -
EPA (Extended Protection for Authentication): 针对 HTTPS 的防护。它将认证过程与 TLS 通道绑定,确保客户端和服务端是直接通信,防止中继。 -
LDAP/LDAPS 签名: 强制开启 LDAP 签名和 LDAPS (LDAP over SSL) 可以阻止针对域控的 LDAP 中继攻击。
1.3 核心风险(二):哈希传递 (Pass-the-Hash) 与离线破解
-
PtH: 正如在本地认证中提到的,攻击者获得 NTLM 哈希后,可以直接用它在网络中进行认证,无需密码原文。 -
离线破解: 即使强制使用 NTLMv2,如果攻击者能捕获到 Challenge/Response 对(例如通过 Responder
),并且用户的密码较弱,他们依然可以尝试使用hashcat
等工具进行离线暴力破解。
2. Kerberos:现代域认证的黄金标准
Kerberos 是当前 AD 域环境中认证的黄金标准,其流程可以用一个“游乐园”的例子来理解:
-
角色扮演:
-
你 (Client): 游客 -
域控制器 (KDC): 游乐园的“售票中心” -
认证服务 (AS): “1号窗口”,验证身份并发放“入园通票”(TGT) -
票据授予服务 (TGS): “2号窗口”,用“入园通票”兑换具体“项目门票”(Service Ticket) -
文件服务器 (Service Server): 你想玩的“过山车”项目 -
认证流程:
-
购买“入园通票” (TGT): 你用密码向 AS 证明身份,获得加密的 TGT。 -
兑换“项目门票” (Service Ticket): 你向 TGS 出示 TGT,申请访问“过山车”的票。 -
检票游玩: 你向“过山车”出示项目门票,服务器验证后允许访问。 -
Kerberos 的攻防:
-
Kerberoasting: 攻击者请求一个用弱密码账户运行的服务的“项目门票”,然后离线破解这张票,获取服务账户的明文密码。 -
黄金/白银票据 (Golden/Silver Tickets): 攻击者窃取了域控的核心密钥 ( krbtgt
账户密钥)后,可以伪造任意用户的“入园通票”(黄金票据),从而获得整个域的最高权限。攻击者偷到了某个具体“项目”(如文件服务器)的“检票机密钥”,他就能伪造该项目的无限次门票。
🚀 阶段三:“迈向未来”—— 无密码与纵深防御
无论是本地认证还是网络认证,其演进的方向都是更安全、更便捷。
1. Windows Hello 与无密码时代
核心思想: 从“你知道什么(密码)”转向“你拥有什么(设备)”和“你是什么(生物特征)”。它基于非对称加密,你的私钥安全地存储在硬件中(如 TPM 芯片),登录时只通过网络发送签名,私钥本身绝不离开设备,能有效抵御网络钓鱼和中继攻击。
2. 统一防御手册:加固你的认证体系
-
加固本地:部署 LAPS,在关键服务器上启用 Credential Guard。 -
限制网络:在域策略中,尽可能禁用或限制 NTLM 的使用,强制使用 Kerberos。开启 SMB 签名防止中继攻击。 -
强化域安全: -
为服务账户使用强密码(25位以上)或组管理服务账户 (gMSA),有效防御 Kerberoasting。 -
实施分层管理模型 (Tiered Access Model),将域管(Tier 0)的凭据与普通服务器(Tier 1)、用户PC(Tier 2)严格隔离。 -
持续监控: -
本地/网络登录: 监控 EventID 4624
/4625
。 -
Kerberos 活动: 监控 EventID 4768
/4769
(票据请求)。 -
凭据窃取: 监控 Sysmon EventID 10
对lsass.exe
的异常访问。 -
拥抱未来:积极推动多因素认证 (MFA) 和 Windows Hello for Business 的全面落地。
结语
Windows 认证安全是一个涉及本地和网络两个层面的立体战场。攻击者往往从攻破一台主机的“本地城墙”开始,窃取凭证,进而觊觎整个网络的“通用通行证”。
作为防御者,我们必须建立纵深防御思维:既要用 LAPS 和 Credential Guard 加固每一座“孤岛”,也要通过强化 Kerberos、严格限制并加固(如开启SMB签名)仍在使用的 NTLM、以及实施分层模型来保卫整个“帝国”的神经中枢。只有同时看护好这两个战场,才能构建真正安全、有弹性的身份认证体系。
原文始发于微信公众号(格格巫和蓝精灵):Windows认证安全深度解析:从“单机密码”到“域内通行证”的攻防演义
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论