特权登录事件(4672)说明
4672 在登录时会话被分配特权时记录,事件正文列出该会话获得的所有特权项,例如调试程序、备份文件、模拟客户端等。它与 4624 成对出现,通过同一登录标识(LogonId)关联,用来回答“这个会话是否拥有高权限、具体拿到哪些特权”。判断高权限登录与排查凭据滥用时,4672 是比 4624 更直接的指标:它把“登录成功”推进到“以什么权限登录”。
基本信息
| 适用平台 | Windows 7/10/11 与 Windows Server 2008 R2 及以上 |
|---|---|
| 日志位置 | 安全日志,需启用相应审核策略 |
| 核心字段 | SubjectUserName(获得特权的账号)、SubjectLogonId(与 4624 关联的登录标识)、PrivilegeList |
| 关联方式 | 用 LogonId 与 4624 配对,得到来源地址与登录类型 |
| 注意 | 系统账号与大量服务会话也会产生该事件,需先做基线过滤 |
典型使用场景
- 确认某次远程登录是否拿到了高权限,判断影响等级
- 排查凭据滥用:普通账号突然出现特权分配记录
- 结合登录类型锁定入口:类型 10 为远程桌面、类型 3 为网络登录
- 为处置提供依据:确认高权限会话数量与分布,安排改密与断开顺序
- 识别异常特权分配组合,例如服务账号拿到交互式登录才需要的特权
配对查看
配对查看
# 拉出特权分配事件,关注账号与特权列表
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4672} -MaxEvents 40 |
Select-Object TimeCreated, Message | Format-List
# 与登录事件配对:找出同一次登录的来源与类型
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4672,4624} -MaxEvents 200 |
Select-Object TimeCreated, Id, @{n='LogonId';e={ if($_.Message -match 'Logon ID:\s+(0x[0-9a-f]+)'){$Matches[1]} }},
@{n='User';e={ if($_.Message -match 'Account Name:\s+(\S+)'){$Matches[1]} }} |
Sort-Object TimeCreated -Descending | Select-Object -First 30
# 统计出现特权分配的账号分布(先建基线,再看离群账号)
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4672} -MaxEvents 500 |
ForEach-Object { if($_.Message -match 'Account Name:\s+(\S+)'){$Matches[1]} } | Group-Object | Sort-Object Count -Descending常见特权项读法
| 特权项 | 含义 | 关注点 |
|---|---|---|
| SeDebugPrivilege | 调试其他进程 | 可用于读取进程内存与注入,权限极高 |
| SeBackupPrivilege | 绕过权限读取文件 | 可读取本无权限访问的数据文件 |
| SeTcbPrivilege | 作为操作系统一部分运行 | 通常仅系统组件使用,出现需核查 |
| SeImpersonatePrivilege | 模拟其他用户令牌 | 常用于权限提升,服务账号常见但需核实 |
| SeLoadDriverPrivilege | 加载驱动程序 | 可加载内核模块,风险高 |
系统账号(SYSTEM)与众多服务账号同样会产生 4672,先按用户名与时间窗聚合建立基线,再筛出离群项,能显著降低噪声。
4672 只说明会话被分配了特权,不代表这些特权被使用过;要确认实际动作仍需结合进程创建、文件访问与网络记录。