关于NTLM 降级攻击的点点研究
字数 1958 2025-08-11 22:57:23

NTLM 降级攻击深度研究

1. NTLM协议版本协商机制

NTLM身份验证协议不支持版本协商:

  • 版本必须在客户端和服务器上预先配置
  • 规范明确指出"NTLM身份验证版本不是由协议协商的"

但存在一个例外:

  • NTLMv1 w/ESS(扩展会话安全)是可以在客户端和服务器之间协商的
  • 通过设置NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY标志实现

2. NTLM版本配置选项

通过LmCompatibilityLevel设置配置NTLM版本:

描述
0 仅发送LM响应和NTLM响应
1 使用NTLMv2会话安全(如果协商)
2 仅发送NTLMv2响应
3 仅发送NTLMv2响应(LM拒绝)
4 仅发送NTLMv2响应(LM和NTLM拒绝)
5 仅发送NTLMv2响应(LM和NTLMv1拒绝)

3. NTLMv1与NTLMv2的识别机制

Responder等工具通过以下方式区分版本:

NTLMv1识别

  • NtChallengeResponse字段长度为24字节
  • 结构包含单一24字节固定长度字段

NTLMv2识别

  • NtChallengeResponse字段长度大于24字节
  • 包含16字节固定长度字段和可变长度NTLMv2_CLIENT_CHALLENGE结构
  • NTLMv2_CLIENT_CHALLENGE结构至少有28字节(不包括AvPair)

4. NTLMv1哈希格式与加密机制

哈希格式

  • 用户名
  • 计算机名
  • LmChallengeResponse
  • NtChallengeResponse
  • Challenge

加密机制

  • 使用DESL函数加密服务器请求
  • 将用户NTLM hash分解为三个7字节的DES密钥
  • 第三个密钥用零填充
  • 三个独立DES密钥加密并连接服务器Challenge(或服务器+客户端Challenge的MD5 hash)

弱点:

  • 由于使用56位密钥,可分别破解每个DES密钥
  • 可通过服务如crack.sh恢复原始NTLM hash

5. NTLMv2 Challenge Response机制

与NTLMv1的主要区别:

  1. 使用HMAC MD5算法而非DES
  2. Challenge数据包含额外信息(如NTLMv2_CLIENT_CHALLENGE结构中的AV_PAIR值)

哈希格式:

  • 用户名
  • 服务器请求
  • 计算机响应(NTProofStr)
  • NTLMv2_CLIENT_CHALLENGE结构(包含时间戳、客户端请求和AV_PAIR字节)

6. NTLMv1攻击利用技术

6.1 SMB到LDAP中继攻击

  • NTLMv1不支持消息完整性代码(MIC)
  • 使用-remove-mic标志可绕过LDAP签名要求
  • 可修改NTLM_AUTHENTICATE消息属性

6.2 绕过SMB签名

  • NTLMv1不包含客户端验证目标的信息
  • 攻击者可自行向域控制器提交NTLM_AUTHENTICATE消息
  • 可获取SMB签名会话密钥

6.3 中继到ADFS

  • NTLMv1不支持通道绑定令牌
  • 在默认EPA设置下可将NTLMv1中继到ADFS服务

7. NTLMv2中继攻击尝试

针对TargetInfo字段的研究:

  • 规范指出若存在MsvAvTimestamp字段,客户端应包含MIC
  • 尝试删除服务器NTLM_CHALLENGE消息中的MsvAvTimestamp字段
  • 但Windows实现会忽略客户端提供的时间戳,使用服务器生成的时间戳

Samba实现特点:

  • 服务器不使用AUTHENTICATE_MESSAGE.NtChallengeResponse.TimeStamp值
  • 比较客户端和服务器提供的MsvAvTimestamp值,不匹配则返回错误

8. 防御建议

  1. 禁用NTLMv1

    • 设置LmCompatibilityLevel为5或更高
    • 完全禁用NTLMv1协议
  2. 启用SMB签名

    • 对所有域控制器和关键服务器启用
    • 防止中继攻击
  3. 实施EPA(扩展保护认证)

    • 防止凭据中继攻击
    • 特别对ADFS等重要服务
  4. 监控NTLM使用

    • 检测异常的NTLMv1使用
    • 设置警报机制
  5. 考虑禁用NTLM

    • 尽可能使用Kerberos
    • 逐步淘汰NTLM协议

9. 总结

NTLM协议特别是v1版本存在严重安全缺陷:

  1. 不支持真正的版本协商
  2. 加密机制(DES)强度不足
  3. 缺乏消息完整性保护
  4. 容易受到中继攻击

防御关键在于:

  • 禁用或限制NTLMv1使用
  • 实施强加密和完整性保护
  • 监控异常认证行为
  • 向更安全的Kerberos协议迁移
NTLM 降级攻击深度研究 1. NTLM协议版本协商机制 NTLM身份验证协议 不支持 版本协商: 版本必须在客户端和服务器上预先配置 规范明确指出"NTLM身份验证版本不是由协议协商的" 但存在一个例外: NTLMv1 w/ESS(扩展会话安全)是可以在客户端和服务器之间协商的 通过设置NTLMSSP_ NEGOTIATE_ EXTENDED_ SESSIONSECURITY标志实现 2. NTLM版本配置选项 通过LmCompatibilityLevel设置配置NTLM版本: | 值 | 描述 | |----|------| | 0 | 仅发送LM响应和NTLM响应 | | 1 | 使用NTLMv2会话安全(如果协商) | | 2 | 仅发送NTLMv2响应 | | 3 | 仅发送NTLMv2响应(LM拒绝) | | 4 | 仅发送NTLMv2响应(LM和NTLM拒绝) | | 5 | 仅发送NTLMv2响应(LM和NTLMv1拒绝) | 3. NTLMv1与NTLMv2的识别机制 Responder等工具通过以下方式区分版本: NTLMv1识别 : NtChallengeResponse字段长度为24字节 结构包含单一24字节固定长度字段 NTLMv2识别 : NtChallengeResponse字段长度大于24字节 包含16字节固定长度字段和可变长度NTLMv2_ CLIENT_ CHALLENGE结构 NTLMv2_ CLIENT_ CHALLENGE结构至少有28字节(不包括AvPair) 4. NTLMv1哈希格式与加密机制 哈希格式 : 用户名 计算机名 LmChallengeResponse NtChallengeResponse Challenge 加密机制 : 使用DESL函数加密服务器请求 将用户NTLM hash分解为三个7字节的DES密钥 第三个密钥用零填充 三个独立DES密钥加密并连接服务器Challenge(或服务器+客户端Challenge的MD5 hash) 弱点: 由于使用56位密钥,可分别破解每个DES密钥 可通过服务如crack.sh恢复原始NTLM hash 5. NTLMv2 Challenge Response机制 与NTLMv1的主要区别: 使用HMAC MD5算法而非DES Challenge数据包含额外信息(如NTLMv2_ CLIENT_ CHALLENGE结构中的AV_ PAIR值) 哈希格式: 用户名 域 服务器请求 计算机响应(NTProofStr) NTLMv2_ CLIENT_ CHALLENGE结构(包含时间戳、客户端请求和AV_ PAIR字节) 6. NTLMv1攻击利用技术 6.1 SMB到LDAP中继攻击 NTLMv1不支持消息完整性代码(MIC) 使用-remove-mic标志可绕过LDAP签名要求 可修改NTLM_ AUTHENTICATE消息属性 6.2 绕过SMB签名 NTLMv1不包含客户端验证目标的信息 攻击者可自行向域控制器提交NTLM_ AUTHENTICATE消息 可获取SMB签名会话密钥 6.3 中继到ADFS NTLMv1不支持通道绑定令牌 在默认EPA设置下可将NTLMv1中继到ADFS服务 7. NTLMv2中继攻击尝试 针对TargetInfo字段的研究: 规范指出若存在MsvAvTimestamp字段,客户端应包含MIC 尝试删除服务器NTLM_ CHALLENGE消息中的MsvAvTimestamp字段 但Windows实现会忽略客户端提供的时间戳,使用服务器生成的时间戳 Samba实现特点: 服务器不使用AUTHENTICATE_ MESSAGE.NtChallengeResponse.TimeStamp值 比较客户端和服务器提供的MsvAvTimestamp值,不匹配则返回错误 8. 防御建议 禁用NTLMv1 : 设置LmCompatibilityLevel为5或更高 完全禁用NTLMv1协议 启用SMB签名 : 对所有域控制器和关键服务器启用 防止中继攻击 实施EPA(扩展保护认证) : 防止凭据中继攻击 特别对ADFS等重要服务 监控NTLM使用 : 检测异常的NTLMv1使用 设置警报机制 考虑禁用NTLM : 尽可能使用Kerberos 逐步淘汰NTLM协议 9. 总结 NTLM协议特别是v1版本存在严重安全缺陷: 不支持真正的版本协商 加密机制(DES)强度不足 缺乏消息完整性保护 容易受到中继攻击 防御关键在于: 禁用或限制NTLMv1使用 实施强加密和完整性保护 监控异常认证行为 向更安全的Kerberos协议迁移