事件 ID 是 Windows 取证的索引
Windows 安全日志用事件 ID 区分行为类型,记住一批常用编号就等于掌握了一张证据索引:登录成功与失败、显式凭据使用、特权分配、账号与组的创建变更、计划任务与服务安装、日志被清空。排查时先按 ID 过滤出候选集,再用账号、登录类型、来源地址等字段收敛。需要强调的是:事件只有审计策略开启后才会产生,看到「没有记录」时要先确认策略,而不是直接认为行为没有发生。
基本信息
| 日志位置 | 安全日志(Security)、系统日志(System)、PowerShell 操作日志 |
|---|---|
| 查看权限 | 安全日志需要管理员权限 |
| 过滤方式 | 事件查看器筛选、PowerShell 的 FilterHashtable、离线解析 evtx |
| 关键前提 | 审计策略决定事件是否产生;4688 的命令行还需单独开启包含策略 |
| 字段维度 | EventID + 账号 + 登录类型 + 来源地址 + 时间窗 |
| 日志容量 | 默认容量有限,事件滚动覆盖快,发现后应尽早导出 |
典型使用场景
- 按 ID 快速定位登录、账号变更、服务与任务安装等关键动作
- 把 4625 与 4624 配对,判断爆破是否最终得手
- 用 4672 特权分配找出提权使用记录
- 用 4698/4702 与 7045 排查计划任务与服务形式的持久化
- 用 1102 判断日志是否被清空(反取证信号)
- 用 4688 还原进程创建及其命令行(需审计策略支持)
按 ID 检索(PowerShell)
按 ID 检索(PowerShell)
# 一次拉取多个关键 ID,按时间倒序
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624,4625,4672,4720,4698} -MaxEvents 200 |
Sort-Object TimeCreated -Descending |
Select-Object TimeCreated, Id, @{n='Msg';e={$_.Message.Substring(0,[Math]::Min(90,$_.Message.Length))}}
# 只看日志被清空的记录
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=1102} -MaxEvents 5
# 服务安装记录在系统日志里(7045)
Get-WinEvent -FilterHashtable @{LogName='System'; Id=7045} -MaxEvents 10
# 导出原始日志供离线分析
wevtutil epl Security C:\evidence\Security.evtx常用事件 ID
| ID | 含义 | 取证价值 |
|---|---|---|
| 4624 | 登录成功 | 来源地址与登录类型,判断访问渠道 |
| 4625 | 登录失败 | 爆破过程与来源,需与成功记录配对 |
| 4648 | 使用显式凭据登录 | 凭据被用于跨主机操作的重要信号 |
| 4672 | 分配特殊特权 | 提权使用记录,常伴随管理操作 |
| 4688 | 进程创建 | 需审计策略支持,命令行是关键线索 |
| 4698/4702 | 计划任务创建/更新 | 持久化落点,含任务内容与创建者 |
| 4720/4726 | 创建/删除账号 | 后门账号与清理动作 |
| 4732/4756 | 加入本地/通用组 | 权限提升与持久化路径 |
| 1102 | 安全日志被清空 | 反取证动作,出现即需换证据来源 |
| 7045 | 服务安装(系统日志) | 服务形式的持久化与驱动加载 |
开启审计策略决定事件是否产生。解读「没有记录」之前,先确认对应类别的审计是否开启、命令行包含策略是否启用,否则会把「没开审计」误判为「没发生」。
1102 出现即表示安全日志被清空,此时必须转向其他来源补证据:系统日志、PowerShell 操作日志、终端检测记录、文件系统元数据与备份。