域用户密码爆破研究
字数 2788 2025-08-15 21:33:37
域用户密码爆破技术研究与实践指南
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工具,需在域环境中使用)
使用示例:
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认证流程
- 客户端发起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