Add files via upload

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