Windows 本地账号排查
Windows 上的后门账号与 Linux 上新增 UID 0 账号的作用一致:给攻击者一个随时可用的登录入口。排查重点是三类:新出现的陌生账号、被启用的内置账号(尤其是 Guest)、以及名字以美元结尾的隐藏账号——这类账号在常规列表中不显示,需要专门按名字模式查询。除了账号本身,还要看它属于哪些组,因为加入管理员组才算真正拿到控制权。
基本信息
| 枚举命令 | net user 列出账号;Get-LocalUser 输出结构化字段 |
|---|---|
| 账号详情 | net user 账号名 查看上次登录、改密时间、组成员与登录时段 |
| 隐藏账号 | 名字以 $ 结尾的账号不会出现在部分列表输出中 |
| 组关系 | net localgroup Administrators 或 Get-LocalGroupMember Administrators |
| 关注字段 | Enabled、LastLogon、PasswordLastSet、PasswordRequired |
| 日志配合 | 创建账号会在 Security 日志产生 4720,加组产生 4732 |
典型使用场景
- 怀疑主机被留后门时确认是否存在陌生本地账号
- 排查异常登录审计中出现的未知账号
- 检查内置 Guest 或 Administrator 是否被启用并配置了口令
- 核对哪些账号属于管理员组,确认权限范围
- 清理前记录账号的创建与最后登录时间,作为溯源线索
列出与核查账号
列出与核查账号
net user # 常规列表
Get-LocalUser | Format-Table Name,Enabled,LastLogon,PasswordLastSet -AutoSize
net user Administrator # 单个账号详情
Get-LocalUser | Where-Object Name -like '*$*' # 隐藏账号(名字以美元结尾)
Get-LocalGroupMember -Group Administrators # 管理员组成员
net localgroup administrators # 命令行的等价写法
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4720} -MaxEvents 10 -ErrorAction SilentlyContinue | Select-Object TimeCreated,Message字段读法
| 字段 | 含义 | 异常信号 |
|---|---|---|
| Name | 账号名 | 仿冒系统服务的命名,或结尾带美元符号 |
| Enabled | 是否启用 | 陌生账号处于启用状态;Guest 被启用尤其可疑 |
| LastLogon | 上次登录时间 | 与告警时间吻合,说明已被实际使用 |
| PasswordLastSet | 上次改密时间 | 与账号创建时间接近,说明是新建而非历史账号 |
| PasswordRequired | 是否需要口令 | 设为否意味着空口令即可登录 |
| 组关系 | 所属本地组 | 出现在 Administrators 组是提权的直接证据 |
隐藏账号不会出现在常规列表里:名字以美元结尾的账号需要专门按名字模式查询,命令行与图形界面都可能看不到它,这是排查时最容易漏的一类。
清理账号前先把它的家目录、以及该账号创建的文件与计划任务一并查清:只删账号而留下持久化机制与凭据,攻击者仍能以其他方式回来。