你改了密码,但攻击者根本不需要密码

Windows 域环境里有个让人不安的事实:你的密码经过 NTLM 哈希处理后,那个哈希值本身就能直接充当身份凭证。这意味着攻击者拿到哈希,根本不用还原出明文密码,就能直接拿它去认证其他机器。这就是 Pass-the-Hash 攻击。

原理很简单。NTLM 认证流程中,客户端用密码的 NTLM 哈希对服务器发来的 challenge 进行加密运算,生成 response 发回去。服务器验证这个 response 是否正确。关键在于——整个过程中明文密码从未参与运算,哈希本身就足够完成认证。所以攻击者只要从内存(比如 mimikatz 从 LSASS 进程抓取)或者磁盘(SAM 数据库、NTDS.dit)里拿到那个哈希,就能横向移动到同一域内的其他机器。

更扎心的是,即便你改了密码,旧哈希在某些场景下仍然有效。Windows 的 Kerberos 实现中存在一个"NTLM 凭证缓存"机制,用户改密码后,旧密码的哈希会在一段时间内继续被系统保留,用于解密之前加密的数据。攻击者如果在这段窗口期内拿到旧哈希,依然可以冒充该用户。

防御思路有几个方向:一是在高权限账户上启用受限模式(Restricted Admin Mode),让 NTLM 认证不再接受哈希直接传递;二是用 Credential Guard 把哈希隔离在虚拟化容器里,让 mimikatz 抓不到;三是减少本地管理员权限的横向重用——如果每台机器的本地管理员密码都不同,一张哈希就只能打一台。核心原则就是:

#Security