问题是什么
暴力破解在日志上留下可量化的模式:单位时间内出现大量登录失败。Windows 侧看安全日志 4625,按来源 IP 与目标账号两个维度聚合即可判断性质——同源集中、账号分散是撞库,账号集中则是定向爆破。Kerberos 场景还要看 4771,被锁定账户对应 4740。
基本信息
| 适用平台 | Windows Server 2016 及以后;需开启登录审核(失败审核默认开启) |
|---|---|
| 核心事件 | 4625 登录失败、4771 Kerberos 预认证失败、4740 账户锁定 |
| 分析口径 | 按来源 IP 与账号分别聚合,统计单位时间失败次数 |
| 取证前提 | 安全日志容量要足够,重要系统建议转发到中心日志平台 |
典型使用场景
- 出现大量登录失败告警时,快速判定是爆破还是正常输错
- 对暴露在公网的 RDP / VPN 主机做暴露面评估
- 账户锁定投诉增多时,定位源头 IP 与被打的目标账号
- 事件响应初期确认攻击是否得手:看失败之后是否出现 4624 成功登录
- 建立基线,用正常时段的失败量作为告警阈值依据
常用示例
常用示例
# 近 1 小时按来源 IP 聚合失败次数
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625; StartTime=(Get-Date).AddHours(-1)} | Group-Object { $_.Properties[19].Value } | Sort-Object Count -Descending | Select-Object Count, Name -First 10
# 按目标账号聚合
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625; StartTime=(Get-Date).AddHours(-1)} | Group-Object { $_.Properties[5].Value } | Sort-Object Count -Descending | Select-Object Count, Name -First 10
# 账户被锁定
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4740} -MaxEvents 20 | Select-Object TimeCreated, Message事件读法
| 事件 | 含义 | 分析要点 |
|---|---|---|
| 4625 | 登录失败 | 按来源 IP 与账号聚合,注意失败原因码 |
| 4771 | Kerberos 预认证失败 | 域环境中爆破的主要痕迹 |
| 4740 | 账户被锁定 | 锁定阈值被触发的直接结果 |
| 4624 | 登录成功 | 与 4625 时间线叠加,判断是否已被突破 |
| 4634 | 注销 | 结合成功登录评估会话持续时长 |
确认爆破后先评估暴露面:RDP、VPN 或 Web 后台是否公网可达,再决定封禁、收敛端口或上多因素认证。只封 IP 不动暴露面,攻击者换源即恢复。
锁定阈值设得低时,用户记错密码也会产生零星 4625,判定前先看基线;封 IP 前确认它是不是 NAT 出口,避免封掉整个办公网。