组成员变更事件是什么
权限提升类攻击几乎都绕不开“把人加进高权限组”这一步,因此组成员变更事件值得单独记牢:本地组加入与移除是 4732 与 4733,域全局组加入与移除是 4728 与 4729。每组事件都包含被操作的对象、执行者与时间。把管理员组级别的变更做成日常告警,能在异常提权发生的当天就被发现,而不是等到季度审计。
基本信息
| 适用平台 | Windows 安全日志,需启用账户管理类审核 |
|---|---|
| 事件编号 | 4732/4733 本地组加入与移除;4728/4729 全局组加入与移除 |
| 关键字段 | 成员、组名、操作者(Subject) |
| 日志位置 | 本机变更在本地安全日志;域组变更在 PDC 模拟角色的安全日志 |
| 前置条件 | “审核账户管理”子类别已启用 |
| 配套事件 | 4756 通用组加入、4757 移除 |
典型使用场景
- 确认“谁在什么时候把账号加进了管理员组”
- 离职处置后核对是否已从全部高权限组移除
- 安全事件复盘:追溯提权路径的起点
- 把管理员组变更做成每日巡检项
- 审计改组成员是否为本人或授权人员操作
常用示例
常用示例
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4728,4729,4732,4733} -MaxEvents 30 | Select-Object TimeCreated, Id, @{n='组';e={$_.Properties[2].Value}}, @{n='成员';e={$_.Properties[0].Value}}, @{n='操作者';e={$_.Properties[4].Value}} | Format-Table -AutoSize
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4728,4732; StartTime=(Get-Date).AddDays(-30)} | Where-Object { $_.Message -match 'Administrators|Domain Admins' } | Select-Object TimeCreated, Id # 只盯高权限组
wevtutil gl Security # 确认日志容量能覆盖回溯窗口
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4728,4729,4732,4733} | Select-Object -First 1 | Format-List Message # 看完整消息,含主体信息事件编号速查
| 编号 | 含义 | 审计价值 |
|---|---|---|
| 4732 | 本地组加入成员 | 本机提权常见路径 |
| 4733 | 本地组移除成员 | 回收是否彻底 |
| 4728 | 全局组加入成员 | 域级权限扩大 |
| 4729 | 全局组移除成员 | 域级权限回收 |
| 4756/4757 | 通用组加入与移除 | 跨域场景补充 |
事件消息体里成员与组的显示名比 Properties 索引更直观,复杂场景直接读 Message 更省事;组名在不同语言环境中会本地化,做脚本判断时用 SID 比对更可靠。
这类事件没有启用审核就不会产生:接手环境排查前先确认审计策略,否则你会得到“从未有人加过组”的错误结论。