Windows本地认证机制与安全解析
文章目录
目录
- 本地认证概述
- SAM文件与lsass.exe进程
- LM Hash与NTLM Hash加密流程
- 本地认证中的安全问题
1. 本地认证概述
什么是本地认证?
- 本地认证指计算机不依赖网络,直接通过本地存储的账号密码验证用户身份。常见于工作组环境。
- 关键组件:
- Winlogon.exe:管理用户登录/注销,显示登录界面。
- Lsass.exe:负责安全策略与身份验证,对比用户输入与存储的密码。
- SAM文件:存储本地用户密码的加密哈希值(路径:
C:\Windows\System32\config\SAM)。
认证流程
- 用户输入账号密码后,
Winlogon.exe将信息传递给Lsass.exe。 Lsass.exe将明文密码加密为哈希值,与SAM文件中的哈希值对比。- 匹配则登录成功,否则失败。
2. SAM文件与lsass.exe进程详解
SAM文件
- 作用:存储本地用户的账号名、LM Hash、NTLM Hash等信息。
- 安全限制:
- 默认不可直接查看、修改或删除(需系统权限或工具)。
- 密码以哈希值存储,非明文。
lsass.exe进程
- 核心功能:
- 执行本地安全策略(如密码复杂度、账户锁定)。
- 加密用户输入的密码,与SAM文件对比验证。
- 在内存中暂存明文密码(某些场景下可被攻击者利用)。
3. LM Hash与NTLM Hash加密流程
LM Hash(已逐步淘汰)
- 转换大写:明文密码转为大写(如
Admin@123→ADMIN@123)。 - 填充补零:密码不足14字节时补零(如
ADMIN@123→补至14字节)。 - 分组加密:分两组7字节,转换为二进制后每7位补零,形成DES密钥。
- DES加密:用固定字符串
KGS!@#$%加密,生成两组8字节哈希,拼接为最终LM Hash。
- 缺陷:仅支持14位以下密码,安全性低(默认禁用)。
NTLM Hash(主流)
- 转十六进制:明文密码转为十六进制(如
Admin@123→41646D696E40313233)。 - Unicode编码:每个字节后补零(如
41 00 64 00...)。 - MD4加密:对Unicode字符串进行MD4哈希运算,生成32位十六进制值。
- 优势:支持长密码,安全性更高。
NTLM-Hash加密(现行标准)
# NTLM-Hash生成示例
原始密码:Admin@123
1. 转16进制 → 41646D696E40313233
2. 转Unicode → 410064006D0069006E004000310032003300
3. MD4加密 → 570a9a65db8fba761c1008a51d4c95ab
4. 本地认证中的安全问题
常见攻击手段
- SAM文件窃取:通过物理访问或提权工具导出SAM文件,破解哈希值。
- 内存转储:利用工具(如Mimikatz)提取
lsass.exe内存中的明文密码或哈希。 - Pass-the-Hash:直接使用哈希值进行身份验证,绕过密码明文输入。
防御建议
- 禁用LM Hash:设置密码长度超过14位,或通过组策略禁用。
- 保护SAM文件:限制物理访问,启用BitLocker加密磁盘。
- 监控lsass.exe:禁用内存中明文存储功能,监控异常进程访问。
- 启用Credential Guard(企业版功能):隔离敏感凭据,防止内存攻击。
总结:本地认证依赖SAM文件和lsass.exe进程,但存在哈希泄露与内存攻击风险。通过禁用弱加密算法、加强权限管控及启用高级安全功能,可有效提升系统安全性。
2391

被折叠的 条评论
为什么被折叠?



