两个事件号看登录
4624 表示登录成功,4625 表示登录失败,这两个事件号构成 Windows 登录分析的基础。单看数量没有意义:关键是按来源地址与账号分组——同一个来源短时间产生大量 4625 就是爆破,而陌生的来源出现 4624 则说明对方已经成功。查询时还要看登录类型字段,它会告诉你这次登录是本地交互、网络访问还是服务账号使用。
基本信息
| 加固项 | 登录事件分析能力 |
|---|---|
| 适用平台 | Windows 10/11 与 Windows Server 2016+ |
| 风险等级 | 高 |
| 前置条件 | 登录审核已开启,否则事件不会记录 |
| 主要事件号 | 4624 成功、4625 失败,配合 4672 特权登录使用 |
典型使用场景
- 爆破识别:按来源地址统计失败次数,找出集中尝试的来源
- 异常登录定位:从成功事件里筛出非办公网段或非工作时间的登录
- 账号排查:确认某账号近期是否被使用过,与授权名单比对
- 事件取证:还原攻击者的登录时间线与使用的登录类型
- 整改复核:确认阻断来源后不再出现新的失败尝试
查询与归并
查询与归并
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624,4625; StartTime=(Get-Date).AddHours(-24)} -MaxEvents 50
$failed = Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625; StartTime=(Get-Date).AddHours(-24)} -MaxEvents 200
$failed | Group-Object { $_.Properties[19].Value } | Sort-Object Count -Descending | Select-Object -First 10 Count, Name
$failed | Select-Object TimeCreated, @{n='User';e={$_.Properties[5].Value}}, @{n='SrcIP';e={$_.Properties[19].Value}}, @{n='LogonType';e={$_.Properties[10].Value}}登录类型读法
| 类型 | 含义 | 关注点 |
|---|---|---|
| 2 | 本地交互登录 | 出现在远程服务器上要确认是否有控制台操作 |
| 3 | 网络登录 | 共享与远程管理的常见类型,需结合来源地址 |
| 4 | 批处理登录 | 计划任务使用,异常来源多为持久化痕迹 |
| 5 | 服务登录 | 服务账号启动时产生,通常量大属正常 |
| 7 | 工作站解锁 | 关注非工作时间与异常主机名 |
| 10 | 远程交互登录 | 远程桌面登录,是重点分析对象 |
| 11 | 缓存凭据登录 | 离线登录,需确认设备丢失风险 |
配套事件号
| 事件号 | 含义 | 用途 |
|---|---|---|
| 4672 | 授予特殊权限 | 与 4624 配对,判断登录是否获得管理员权限 |
| 4634 与 4647 | 注销与会话结束 | 计算会话时长 |
| 4776 | 凭据验证 | 域环境中的认证记录,辅助定位来源 |
属性下标在不同版本间可能偏移:先完整导出一条事件确认字段位置,再写统计脚本,否则容易把用户名当成来源地址。按来源地址分组看失败次数是最快发现爆破的方法,比逐条翻看高效得多。
分析前先识别噪声:以美元符号结尾的机器账号在域环境中会产生大量成功登录,服务账号与定时任务也会持续产生事件。不先过滤这些正常记录,异常事件会被淹没在噪声里,很难得出有效结论。
形成固定的查询口径
把常用的查询脚本固化成文件,明确时间范围、事件号与分组维度,每次排查都执行同一套口径。这样既节省时间,也能让不同人得出的结论可比对。建议至少准备三份:近 24 小时失败来源排行、近 7 天成功登录中的异常来源、指定账号的完整登录历史。