域用户密码爆破研究
字数 2788 2025-08-15 21:33:37

域用户密码爆破技术研究与实践指南

1. Kerberos协议爆破技术

1.1 Kerberos协议概述

Kerberos是由MIT大学提出的网络身份验证协议,基于对称加密体制(Needham-Schroeder认证协议)的第三方认证机制。

核心组件

  • KDC (密钥分发中心)
  • AS (认证服务器)
  • TGS (票据授权服务器)

1.2 Kerberos认证流程

  1. KRB_AS_REQ: 用户→AS发送Authenticator1(用户密码加密的TimeStamp)
  2. KRB_AS_REP: AS→用户返回用户密码加密的sessionkey-as和TGT
  3. KRB_TGS_REQ: 用户→TGS发送Authenticator2和TGT
  4. KRB_TGS_REP: TGS→用户返回sessionkey-as加密的sessionkey-tgs和ST
  5. KRB_AP_REQ: 用户→服务器发送Authenticator3和ST
  6. KRB_AP_REP: 服务器→用户返回验证结果

1.3 Kerberos爆破技术

  • 仅需利用AS认证过程
  • Kerberos 5强制要求预认证
  • 爆破时会先发送空密码请求,然后发送加密hash请求

错误代码

  • 认证失败: error-code: eRR-PREAUTH-FAILED (24)
  • 认证成功: 直接响应AS-REP并返回TGT

工具推荐

  • kerbrute
  • pyKerbrute

日志检测

  • 成功事件ID: 4768
  • 失败事件ID: 4771

日志开启方法

  1. 运行gpedit.msc
  2. 进入"本地策略"→"审核策略"
  3. 开启"审核登录事件"和"审核账户登录事件"

2. LDAP协议爆破技术

2.1 LDAP协议概述

轻量目录访问协议,用于访问Active Directory数据库。

认证方式

  • LDAP v2: 匿名认证、简单身份认证(明文密码)、Kerberos v4
  • LDAP v3: 使用SASL框架,支持多种验证机制

2.2 LDAP认证流程

  1. Client发送bindRequest请求
  2. Server响应bind,包含Challenge
  3. Client发送NTLMSSP_AUTH认证
  4. Server返回认证结果:
    • 成功: success
    • 失败: invalidCredentials

工具推荐

  • DomainPasswordSpray (PowerShell工具,需在域环境中使用)

使用示例

Invoke-DomainPasswordSpray -UserList user.txt -Password admin111 -domain cool.com

日志检测

  • 成功事件ID: 4624
  • 失败事件ID: 4625
  • 日志包含登陆账号名、登陆IP等信息

3. DCE/RPC协议爆破技术

3.1 DCE/RPC协议概述

分布式计算环境/远程过程调用协议,有v4和v5两个版本。

协议序列

  • SMB: ncacn_np (固定139、445/TCP)
  • TCP: ncacn_ip_tcp (动态TCP端口)
  • UDP: ncadg_ip_udp (动态UDP端口)
  • HTTP: ncacn_http

3.2 DCE/RPC认证流程

  1. 客户端发起Bind请求
    • Bind成功: Ack result = 0 Acceptance
    • Bind失败: Ack result = 2 Provider rejection
  2. 客户端调用EPM接口发起Request请求
  3. 服务端响应随机端口
  4. 客户端使用协商端口发送AUTH3认证请求(NTLM)
  5. 认证结果判断:
    • 成功: Connect response响应
    • 失败: Packet type: Fault且Status为nca_s_fault_access_denied

工具开发
可利用impacket编写自定义爆破工具(支持非域环境)

日志检测

  • 成功事件ID: 4624
  • 失败事件ID: 4625

4. SMB协议爆破技术

4.1 SMB协议概述

服务器消息块协议,支持NTLM和LAN Manager(LM)加密。

4.2 SMB认证流程

  1. 协商阶段:
    • 客户端发送Negotiate Request
    • 服务端响应认证方式及版本号
  2. NTLM challenge/response:
    • 客户端发送NTLMSSP_NEGOTIATE请求
    • 服务端响应Challenge
  3. 身份认证:
    • 客户端发送登录认证请求(含用户名和加密hash)
    • 服务端响应:
      • 成功: NT Status: STATUS_SUCCESS
      • 失败: NT Status:STATUS_LOGON_FAILURE

工具推荐

  • acccheck (Kali自带工具)
  • Metasploit: auxiliary/scanner/smb/smb_login

日志检测

  • 成功事件ID: 4624
  • 失败事件ID: 4625

5. 检测与防御方法

5.1 检测方法

日志分析

  • 短时间内大量审核失败的登陆日志
  • 关注事件ID: 4625(失败)、4624(成功)、4768(Kerberos成功)、4771(Kerberos失败)

流量特征

  • 统计相同源IP、目的IP的失败次数
  • 设置合理阈值进行告警

5.2 防御措施

账户锁定策略配置

  1. 打开"组策略管理"
  2. 选择"Default Domain Policy"→"编辑"
  3. 导航至"计算机配置"→"策略"→"Windows设置"→"安全设置"→"账户策略"→"账户锁定策略"
  4. 配置适当的锁定阈值

6. 协议对比与选择建议

协议 非域环境支持 检测难度 日志事件ID 工具可用性
Kerberos 中等 4768/4771
LDAP 中等 4624/4625
DCE/RPC 低(动态端口) 4624/4625 需自定义
SMB 4624/4625

攻击建议

  • 非域环境优先考虑DCE/RPC和SMB
  • 隐蔽性要求高时选择DCE/RPC(动态端口)
  • 域环境可考虑Kerberos和LDAP

7. 参考资源

  1. http://woshub.com/hot-to-convert-sid-to-username-and-vice-versa/
  2. https://www.attackdebris.com/?p=311
  3. https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-smb/495dd941-0776-48aa-aa8a-f1aa5eeadcea
域用户密码爆破技术研究与实践指南 1. Kerberos协议爆破技术 1.1 Kerberos协议概述 Kerberos是由MIT大学提出的网络身份验证协议,基于对称加密体制(Needham-Schroeder认证协议)的第三方认证机制。 核心组件 : KDC (密钥分发中心) AS (认证服务器) TGS (票据授权服务器) 1.2 Kerberos认证流程 KRB_ AS_ REQ: 用户→AS发送Authenticator1(用户密码加密的TimeStamp) KRB_ AS_ REP: AS→用户返回用户密码加密的sessionkey-as和TGT KRB_ TGS_ REQ: 用户→TGS发送Authenticator2和TGT KRB_ TGS_ REP: TGS→用户返回sessionkey-as加密的sessionkey-tgs和ST KRB_ AP_ REQ: 用户→服务器发送Authenticator3和ST KRB_ AP_ REP: 服务器→用户返回验证结果 1.3 Kerberos爆破技术 仅需利用AS认证过程 Kerberos 5强制要求预认证 爆破时会先发送空密码请求,然后发送加密hash请求 错误代码 : 认证失败: error-code: eRR-PREAUTH-FAILED (24) 认证成功: 直接响应AS-REP并返回TGT 工具推荐 : kerbrute pyKerbrute 日志检测 : 成功事件ID: 4768 失败事件ID: 4771 日志开启方法 : 运行gpedit.msc 进入"本地策略"→"审核策略" 开启"审核登录事件"和"审核账户登录事件" 2. LDAP协议爆破技术 2.1 LDAP协议概述 轻量目录访问协议,用于访问Active Directory数据库。 认证方式 : LDAP v2: 匿名认证、简单身份认证(明文密码)、Kerberos v4 LDAP v3: 使用SASL框架,支持多种验证机制 2.2 LDAP认证流程 Client发送bindRequest请求 Server响应bind,包含Challenge Client发送NTLMSSP_ AUTH认证 Server返回认证结果: 成功: success 失败: invalidCredentials 工具推荐 : DomainPasswordSpray (PowerShell工具,需在域环境中使用) 使用示例 : 日志检测 : 成功事件ID: 4624 失败事件ID: 4625 日志包含登陆账号名、登陆IP等信息 3. DCE/RPC协议爆破技术 3.1 DCE/RPC协议概述 分布式计算环境/远程过程调用协议,有v4和v5两个版本。 协议序列 : SMB: ncacn_ np (固定139、445/TCP) TCP: ncacn_ ip_ tcp (动态TCP端口) UDP: ncadg_ ip_ udp (动态UDP端口) HTTP: ncacn_ http 3.2 DCE/RPC认证流程 客户端发起Bind请求 Bind成功: Ack result = 0 Acceptance Bind失败: Ack result = 2 Provider rejection 客户端调用EPM接口发起Request请求 服务端响应随机端口 客户端使用协商端口发送AUTH3认证请求(NTLM) 认证结果判断: 成功: Connect response响应 失败: Packet type: Fault且Status为nca_ s_ fault_ access_ denied 工具开发 : 可利用impacket编写自定义爆破工具(支持非域环境) 日志检测 : 成功事件ID: 4624 失败事件ID: 4625 4. SMB协议爆破技术 4.1 SMB协议概述 服务器消息块协议,支持NTLM和LAN Manager(LM)加密。 4.2 SMB认证流程 协商阶段: 客户端发送Negotiate Request 服务端响应认证方式及版本号 NTLM challenge/response: 客户端发送NTLMSSP_ NEGOTIATE请求 服务端响应Challenge 身份认证: 客户端发送登录认证请求(含用户名和加密hash) 服务端响应: 成功: NT Status: STATUS_ SUCCESS 失败: NT Status:STATUS_ LOGON_ FAILURE 工具推荐 : acccheck (Kali自带工具) Metasploit: auxiliary/scanner/smb/smb_ login 日志检测 : 成功事件ID: 4624 失败事件ID: 4625 5. 检测与防御方法 5.1 检测方法 日志分析 : 短时间内大量审核失败的登陆日志 关注事件ID: 4625(失败)、4624(成功)、4768(Kerberos成功)、4771(Kerberos失败) 流量特征 : 统计相同源IP、目的IP的失败次数 设置合理阈值进行告警 5.2 防御措施 账户锁定策略配置 : 打开"组策略管理" 选择"Default Domain Policy"→"编辑" 导航至"计算机配置"→"策略"→"Windows设置"→"安全设置"→"账户策略"→"账户锁定策略" 配置适当的锁定阈值 6. 协议对比与选择建议 | 协议 | 非域环境支持 | 检测难度 | 日志事件ID | 工具可用性 | |------|------------|----------|------------|------------| | Kerberos | 否 | 中等 | 4768/4771 | 高 | | LDAP | 否 | 中等 | 4624/4625 | 中 | | DCE/RPC | 是 | 低(动态端口) | 4624/4625 | 需自定义 | | SMB | 是 | 高 | 4624/4625 | 高 | 攻击建议 : 非域环境优先考虑DCE/RPC和SMB 隐蔽性要求高时选择DCE/RPC(动态端口) 域环境可考虑Kerberos和LDAP 7. 参考资源 http://woshub.com/hot-to-convert-sid-to-username-and-vice-versa/ https://www.attackdebris.com/?p=311 https://docs.microsoft.com/en-us/openspecs/windows_ protocols/ms-smb/495dd941-0776-48aa-aa8a-f1aa5eeadcea