账号生命周期事件查询
Windows 安全日志把账号相关动作拆成了不同事件号:创建、启用、改密、加组、删除各有一条记录,配合登录事件就能把「后门账号被建立、提权、实际使用」的完整链条串起来。排查的起点通常是几件小事之一:管理员发现日志里有陌生账号、终端出现异常登录,或者某项审计问卷要求说明账号变更情况。此时按时间顺序列出这些事件,比逐个账号翻看效率高得多。
基本信息
| 账号创建 | 4720 创建用户账户,含创建者与目标账号 |
|---|---|
| 启用与改密 | 4722 启用账户、4723 用户改密、4724 管理员重置口令 |
| 加组 | 4732 加入启用安全的本地组、4756 加入全局组、4728 加入全局安全组 |
| 删除 | 4726 删除用户账户 |
| 特权登录 | 4672 分配特殊权限,注意该事件会在每次特权会话时大量产生 |
| 日志位置 | Security 日志;需提前开启相应审计策略,否则没有记录 |
典型使用场景
- 确认后门账号是谁在什么时间创建的
- 把创建事件与登录事件串起来,证明账号已被实际使用
- 判断账号是否被加入管理员组,评估权限提升程度
- 事件复盘时列出完整性链条,支撑报告结论
- 清理后核对 4726 删除事件,确认处置动作已记录
串查账号相关事件
串查账号相关事件
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4720,4722,4726,4732,4756} -MaxEvents 200 -ErrorAction SilentlyContinue | Select-Object TimeCreated, Id, @{n='Msg';e={$_.Message.Split([char]10)[0]}} | Sort-Object TimeCreated | Format-Table -AutoSize
wevtutil qe Security /q:"*[System[(EventID=4720)]]" /c:20 /f:text /rd:true | Select-String -Pattern 'TargetUserName|SubjectUserName|Account Name' | Select-Object -First 40
Get-LocalGroupMember -Group Administrators | Format-Table Name,PrincipalSource事件读法
| 事件号 | 含义 | 重点关注字段 |
|---|---|---|
| 4720 | 创建用户账户 | SubjectUserName 创建者、TargetUserName 新账号 |
| 4722 | 启用账户 | 被启用的账号与操作者 |
| 4723 与 4724 | 用户改密与管理员重置口令 | 谁改了密码,是否属于计划外操作 |
| 4732 | 加入本地安全组 | 目标组是否为 Administrators |
| 4756 | 加入全局组 | 域环境中的权限扩张 |
| 4726 | 删除用户 | 确认清理动作是否已执行并被记录 |
| 4672 | 分配特殊权限(特权登录) | 量大,按账号与时间窗过滤后再看 |
判断链条完整性用 4720 加 4722 加 4732 加 4624:创建、启用、加组、实际登录四步齐全,就能说明这个账号确实被投入使用,而不是建完就废弃的干扰项。
审计策略未开启时这些事件根本不会记录:排查前先确认 Security 日志中是否存在账号类事件。如果一片空白,不能直接得出「没有后门账号」的结论,应改用账号清单与文件时间做间接判断。