查看服务器是否存在隐藏账号、克隆账号
Windows 服务器排查
攻击者在 Windows 上克隆或隐藏账户通常利用注册表和用户 SID(安全标识符)的特性。
1. 排查克隆账户
克隆账户是指攻击者创建一个新的用户,然后修改注册表,使其拥有与某个高权限账户(如管理员)完全相同的 SID 和权限,但名字可能正常或看似无害
使用
wmic
命令检查 使用wmic useraccount
命令可以列出所有用户及其 SID。你需要重点检查以下情况:- SID 异常:正常用户的 SID 最后一位通常是 1000 以上的递增数字
- 用户与 SID 不匹配:特别是那些用户名看起来正常,但 SID 和其他用户(如管理员)完全相同的账户
wmic useraccount get name,sid
正常情况下,一个用户对应一个唯一的 SID。如果发现两个用户拥有相同的 SID,则很可能存在克隆账户
检查本地用户和组 虽然在
lusrmgr.msc
中通常能看到克隆账户,但有时候攻击者会用一些技巧隐藏,所以结合wmic
检查更保险。
2. 排查隐藏账户
攻击者会通过修改注册表来隐藏账户,使其在 net user
或 lusrmgr.msc
中不显示
检查注册表
打开注册表编辑器:
regedit
导航到:
HKEY_LOCAL_MACHINE\SAM\SAM
你需要 SYSTEM 权限才能访问这个路径。可以通过
psexec
获取一个 SYSTEM 权限的cmd
来进行查看:psexec -s -i cmd
在 SYSTEM 权限的
cmd
中再次打开regedit
,导航到该路径你会在
SAM\Domains\Account\Users\Names
下看到所有账户名在
SAM\Domains\Account\Users
下,每个子项代表一个账户,其名称是十六进制的 RVA(相对虚拟地址)对比
Users\Names
和Users
下的键值。 如果Users
下存在某个键值(账户)但在Users\Names
下没有对应的名称,那么这个账户就是隐藏账户
日志审计 结合 安全日志(事件 ID 4720)进行排查,即使账户被隐藏,其创建记录也可能被保留
Linux 服务器排查
在 Linux 上,隐藏账户通常是利用系统文件的特性,而克隆账户则相对少见,但可以通过其他方式实现权限提升
1. 排查隐藏账户
攻击者通常通过修改 /etc/passwd
和 /etc/shadow
文件,删除用户名,但保留账户的其他信息,或者创建没有名称的账户
检查
/etc/passwd
文件查找没有用户名的账户:
grep -v '^[a-zA-Z]' /etc/passwd
这个命令会过滤掉所有以字母开头的行,如果输出结果有非空的行,可能存在隐藏账户
查找空用户名账户:
cat /etc/passwd | awk -F: '($1 == "") { print }'
这种方法可以查找用户名为空的账户
检查 UID 为 0 的账户:
awk -F: '($3 == 0) { print }' /etc/passwd
UID 为 0 的账户拥有 root 权限。理论上只有一个 root 账户的 UID 为 0,如果出现多个,则很可能是克隆账户
2. 检查克隆账户
Linux 上的克隆账户通常是指多个账户拥有相同的 UID,从而共享相同的权限
检查相同 UID 的账户 使用
awk
命令查找 UID 重复的账户,这通常是克隆 root 权限账户的迹象awk -F: '{print $3}' /etc/passwd | sort | uniq -d
这个命令会找出
/etc/passwd
文件中所有重复的 UID。如果输出结果有 0,说明存在多个 UID 为 0 的账户。然后,你可以用grep
查找这些 UID 对应的用户名grep ":0:" /etc/passwd
3. 检查 SSH 授权文件
攻击者也可能通过在 .ssh/authorized_keys
中添加公钥来持久化,从而无需密码即可登录
检查所有用户的
.ssh
目录find /home -name "authorized_keys"
找到文件后,检查其内容,看是否有不认识的公钥