- 目录
- 1. 序章
- 2. 计算机网络与协议
- 3. 信息收集
- 4. 常见漏洞攻防
- 5. 语言与框架
- 6. 内网渗透
- 7. 云安全
- 8. 防御技术
- 9. 认证机制
- 10. 工具与资源
- 11. 手册速查
- 12. 其他
9.9. NTLM 身份验证
9.9. NTLM 身份验证
9.9.1. NTLM认证
NTLM是NT LAN Manager的缩写,NTLM是基于挑战/应答的身份验证协议,是 Windows NT 早期版本中的标准安全协议。
9.9.1.1. 基本流程
- 客户端在本地加密当前用户的密码成为密码散列
- 客户端向服务器明文发送账号
- 服务器端产生一个16位的随机数字发送给客户端,作为一个challenge
- 客户端用加密后的密码散列来加密challenge,然后返回给服务器,作为response
- 服务器端将用户名、challenge、response发送给域控制器
- 域控制器用这个用户名在SAM密码管理库中找到这个用户的密码散列,然后使用这个密码散列来加密chellenge
- 域控制器比较两次加密的challenge,如果一样那么认证成功,反之认证失败
9.9.1.2. Net-NTLMv1
Net-NTLMv1协议的基本流程如下:
- 客户端向服务器发送一个请求
- 服务器接收到请求后,生成一个8位的Challenge,发送回客户端
- 客户端接收到Challenge后,使用登录用户的密码hash对Challenge加密,作为response发送给服务器
- 服务器校验response
Net-NTLMv1 response的计算方法为
- 将用户的NTLM hash补零至21字节分成三组7字节数据
- 三组数据作为3DES加密算法的三组密钥,加密Server发来的Challenge
这种方式相对脆弱,可以基于抓包工具和彩虹表爆破工具进行破解。
9.9.1.3. Net-NTLMv2
自Windows Vista起,微软默认使用Net-NTLMv2协议,其基本流程如下:
- 客户端向服务器发送一个请求
- 服务器接收到请求后,生成一个16位的Challenge,发送回客户端
- 客户端接收到Challenge后,使用登录用户的密码hash对Challenge加密,作为response发送给服务器
- 服务器校验response
9.9.2. Hash
9.9.2.1. LM Hash
LM Hash(LAN Manager Hash) 是windows最早用的加密算法,由IBM设计。LM Hash 使用硬编码秘钥的DES,且存在缺陷。早期的Windows系统如XP、Server 2003等使用LM Hash,而后的系统默认禁用了LM Hash并使用NTLM Hash。
LM Hash的计算方式为:
- 转换用户的密码为大写,14字节截断
- 不足14字节则需要在其后添加0×00补足
- 将14字节分为两段7字节的密码
- 以
KGS!@#$%
作为秘钥对这两组数据进行DES加密,得到16字节的哈希 - 拼接后得到最后的LM Hash。
作为早期的算法,LM Hash存在着诸多问题:
- 密码长度不会超过14字符,且不区分大小写
- 如果密码长度小于7位,后一组哈希的值确定,可以通过结尾为
aad3b435b51404ee
来判断密码长度不超过7位 - 分组加密极大程度降低了密码的复杂度
- DES算法强度低
9.9.2.2. NTLM Hash
为了解决LM Hash的安全问题,微软于1993年在Windows NT 3.1中引入了NTLM协议。
Windows 2000 / XP / 2003 在密码超过14位前使用LM Hash,在密码超过14位后使用NTLM Hash。而之后从Vista开始的版本都使用NTLM Hash。
NTLM Hash的计算方法为:
- 将密码转换为16进制,进行Unicode编码
- 基于MD4计算哈希值
9.9.3. 攻击
9.9.3.1. Pass The Hash
Pass The Hash (PtH) 是攻击者捕获帐号登录凭证后,复用凭证Hash进行攻击的方式。
微软在2012年12月发布了针对Pass The Hash攻击的防御指导,文章中提到了一些防御方法,并说明了为什么不针对Pass The Hash提供更新补丁。
9.9.3.2. Pass The Key
在禁用NTLM的环境下,可以用mimikatz等工具直接获取密码。
9.9.3.3. NTLM Relay
攻击者可以一定程度控制客户端网络的时候,可以使用中间人攻击的方式来获取权限。对客户端伪装为身份验证服务器,对服务端伪装为需要认证的客户端。
9.9.4. 参考链接
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论