系统用户检查结果与异常账户及影子账户检测分析
系统用户检查结果与异常账户及影子账户检测分析
0x02电子取证/系统用户审查 给出了 Windows 下 net user、wmic useraccount、注册表 SAM 和 Linux 下 /etc/passwd、/etc/shadow、who、w 的基础取证入口。已有文章 凭据抓取与认证材料取证分析 聚焦认证材料如何被窃取和复用。本文换一个角度:不讨论凭据如何被拿走,而是讨论用户账户本身是否被篡改、是否存在隐藏账户、权限是否被非法提升。
用户账户是攻击者建立持久化控制的核心手段之一。当你在 net user 输出中看到一个陌生账户时,这可能是攻击者创建的后门账户。但更多时候,攻击者的操控更加隐蔽:创建影子账户(隐藏账户)、复制管理员权限、修改现有账户属性、甚至利用系统内置账户的漏洞。
0x01 Windows 侧的异常账户检测
1. 影子账户(Hidden User)检测
影子账户是 Windows 环境下最常见的隐藏账户技术。攻击者通过修改注册表使账户在登录界面和管理工具中不可见,但账户本身仍然存在且可以登录。
影子账户的创建方法
攻击者通常通过以下步骤创建影子账户:
- 创建新账户(如
Administrat0r$) - 修改注册表隐藏账户:
- 在该键下创建 DWORD 值,名称为账户名,值为
0(隐藏) - 复制管理员账户的 SID 和权限到新建账户
检测方法
常规工具无法检测:
net user不会显示影子账户- “计算机管理” -> “本地用户和组” 不会显示
- “设置” -> “账户” 不会显示
可检测的方法:
WMIC 查询:
WMIC 直接查询 WMI,可以绕过注册表隐藏设置。
注册表 SAM 直接查询:
需要 SYSTEM 权限才能访问 SAM 键。可以使用 PsExec 以 SYSTEM 权限运行 regedit:
NetUserEnum API: 通过调用 Windows API
NetUserEnum可以枚举所有用户账户,包括隐藏账户。PowerShell 查询:
Sigma 规则检测: SigmaHQ 提供了检测影子账户创建的规则:
2. 账户属性异常检测
除了影子账户,攻击者还可能修改现有账户的属性:
检测点
账户被启用但不应启用:
- Guest 账户被启用
- DefaultAccount 被启用
- 未知账户被启用
账户被加入管理员组:
检查是否有未知账户被加入 Administrators 组。
账户密码被修改:
查看"密码上次设置"时间,判断是否被恶意修改。
账户登录时间被修改: 检查账户的登录时间限制是否被修改为"全部允许"。
3. 内置账户异常检测
Windows 内置账户可能被攻击者利用:
- Administrator(RID 500):可能被重命名或禁用后重新启用
- Guest(RID 501):可能被启用并加入管理员组
- DefaultAccount(RID 503):系统管理账户,通常不应被使用
- WDAGUtilityAccount:Windows Defender 应用程序防护账户,可能被滥用
检测方法:
0x02 Linux 侧的异常账户检测
1. UID 0 账户检测
Linux 下 UID 为 0 的账户拥有 root 权限。攻击者可能创建新的 UID 0 账户或修改现有账户的 UID。
检测方法
正常情况下,只有 root 账户的 UID 为 0。如果发现其他账户 UID 为 0,说明存在异常。
2. 可登录账户检测
检查哪些账户可以远程登录:
这会列出所有设置了密码的账户(密码字段以 $1$ 或 $6$ 开头)。
3. sudo 权限检测
检查哪些账户拥有 sudo 权限:
如果发现未知账户拥有 sudo 权限,说明存在异常。
4. 空密码账户检测
检查是否存在空密码账户:
空密码账户可以被任何人无需密码登录,属于高危异常。
5. 账户 Shell 异常检测
检查账户的登录 Shell 是否被修改:
如果发现未知账户的 Shell 为 /bin/bash 或 /bin/sh,说明该账户可以登录系统。
0x03 用户检查结果与登录日志交叉验证
1. Windows 侧交叉验证
登录日志分析
通过事件日志可以获取登录记录:
- 事件 ID 4624:成功登录
- 事件 ID 4625:失败登录
- 事件 ID 4634:注销
- 事件 ID 4648:显式凭据登录
交叉验证要点
- 用户账户列表中存在但从未登录的账户:可能是后门账户
- 用户账户列表中不存在但有登录记录的账户:可能是已删除账户或影子账户
- 登录来源 IP 异常:可能是攻击者远程登录
- 登录时间异常:可能是非工作时间入侵
2. Linux 侧交叉验证
登录日志分析
通过以下命令获取登录记录:
交叉验证要点
/etc/passwd中存在但lastlog显示从未登录的账户:可能是后门账户/etc/passwd中不存在但last显示有登录记录的账户:可能是已删除账户- 登录来源 IP 异常:可能是攻击者远程登录
- 登录时间异常:可能是非工作时间入侵
0x04 三个最容易误判的边界
1. 账户存在不等于被攻击者创建
系统可能存在合法的备用账户、服务账户、测试账户。必须结合账户创建时间、登录记录、权限配置综合判断。
2. UID 0 不等于恶意账户
某些系统管理任务可能需要 UID 0 账户。但除了 root 之外的 UID 0 账户必须严格审查。
3. 影子账户检测需要 SYSTEM 权限
普通管理员权限无法访问 SAM 注册表键。必须使用 PsExec 或其他工具以 SYSTEM 权限运行检测命令。
0x05 公开资料与分析借鉴
1. SigmaHQ: Creation of a Local Hidden User Account by Registry
SigmaHQ 提供了检测影子账户创建的 Sigma 规则:
- 监控注册表键
\SAM\SAM\Domains\Account\Users\Names\的修改 - 检测以
$结尾的账户名(常见的影子账户命名方式) - 检测
lsass.exe修改 SAM 注册表的行为
最值得借鉴的一点是:影子账户创建时会修改特定的注册表键,通过监控这些键可以检测影子账户的创建。
公开来源:
2. Forensafe: Investigating User Accounts
Forensafe 的取证文章详细说明了 Windows 用户账户的取证价值:
- SAM 注册表键的结构和内容
- 用户账户 Artifact 包含的信息(用户名、全名、权限级别、最后登录时间等)
- 如何通过 ArtiFast Windows 提取和分析用户账户
最值得借鉴的一点是:SAM 注册表键包含了用户账户的完整信息,即使事件日志被清理,SAM 仍然可以提取账户信息。
公开来源:
- Forensafe: Investigating User Accounts
3. CheckSomeBytes: Making Windows Users ‘Invisible’
CheckSomeBytes 的文章详细说明了 Windows 隐藏账户的实现方法和取证痕迹:
- 通过
SpecialAccounts\UserList注册表键隐藏账户 - 隐藏账户在登录界面、设置菜单、共享菜单中不可见
- 但用户目录、SAM 注册表、用户图片目录中仍然保留痕迹
最值得借鉴的一点是:隐藏账户只是从 UI 层面隐藏,文件系统层面和注册表层面仍然保留大量痕迹。
公开来源:
- CheckSomeBytes: Making Windows Users ‘Invisible’
4. NothingCyber: Blue Team-System Live Analysis Part 7
NothingCyber 的蓝队分析文章说明了 Windows 用户账户取证的实战方法:
- 使用 NirSoft RegScanner 扫描注册表
- SAM 注册表键需要 SYSTEM 权限才能访问
- 使用 PsExec 以 SYSTEM 权限运行 regedit
最值得借鉴的一点是:不要将取证工具复制到目标系统,应使用写保护的外部存储连接取证工具。
公开来源:
- NothingCyber: Blue Team-System Live Analysis Part 7
0x06 建议的交付结构
用户账户检查结果建议整理为如下表格:
| 检查项 | 检查结果 | 异常判断 | 结论强度 | 建议 |
|---|---|---|---|---|
net user 输出 | 发现未知账户 test$ | 可疑账户 | 中 | 进一步检查 |
wmic useraccount 输出 | 发现影子账户 Administrat0r$ | 隐藏账户存在 | 强 | 立即禁用并调查 |
| SAM 注册表 | 发现未知 SID 对应账户 | 隐藏账户存在 | 强 | 提取账户详细信息 |
net localgroup administrators | 发现未知账户在管理员组 | 权限提升 | 强 | 立即移除并调查 |
/etc/passwd UID 0 | 发现 backup 账户 UID 为 0 | 特权账户 | 强 | 审查账户用途 |
/etc/shadow 空密码 | 发现 test 账户无密码 | 空密码账户 | 强 | 立即设置密码或禁用 |
lastlog 交叉验证 | test$ 账户从未登录 | 可能是后门账户 | 中 | 检查创建时间 |
| 登录日志交叉验证 | Administrat0r$ 有登录记录 | 隐藏账户被使用 | 强 | 提取登录来源 IP |
0x07 和其他分析篇怎样联动
本文最适合和以下专题联动:
凭据抓取与认证材料取证分析:提供凭据窃取分析,本文补充账户篡改检测自启动项计划任务与服务持久化分析:提供持久化检测,账户后门是另一种持久化方式系统日志检查结果证据强度分层与事件链构建分析:提供日志层面的登录事件分析
本文的定位是聚焦 0x02 系统用户审查中"异常账户检测"这一维度,而不是覆盖整个身份管理领域。
0x08 总结
用户账户分析的关键,不是"列出所有账户",而是:
- 检测影子账户和隐藏账户的存在
- 识别 UID 0 和空密码等高危异常
- 通过交叉验证判断账户是否被攻击者使用
- 从注册表和文件系统层面提取被 UI 隐藏的账户信息
当你能从 net user、wmic useraccount、SAM 注册表、/etc/passwd、/etc/shadow 的输出中读出账户篡改信号时,0x02 里的"系统用户审查"才真正升级为 0x03 的"系统用户检查结果与异常账户及影子账户检测分析"。