操作系统安全¶
6.1 Windows 系统安全要点¶
账户安全检查清单
| 检查项 | 命令/方法 | 风险 |
|---|---|---|
| 空口令账户 | net user 查看各账户状态 |
任何人可直接登录 |
| 弱口令 | hydra、medusa 爆破 |
暴力破解成功即获得权限 |
| 隐藏账户 | 账户名以 $ 结尾,控制面板不显示 |
攻击者维持权限的后门 |
| UID 为 0 的非 root | 注册表 SAM 中检查 |
后门账户拥有最高权限 |
| 远程登录审计 | 事件 ID 4624/4625 | 发现异常登录时间和来源 |
隐藏账户的发现方法:
Windows 控制面板和 net user 命令不会显示以 $ 结尾的账户。需要在注册表 HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users 中查看,或使用 wmic useraccount get name。
NTFS 权限配置原则
| 目录/文件 | 推荐权限 |
|---|---|
| Web 根目录 | IIS 用户:读取和执行 |
| 上传目录 | IIS 用户:读取(禁止执行) |
| 日志目录 | 管理员:完全控制;其他用户:拒绝访问 |
| 配置文件 | 管理员:完全控制;IIS 用户:读取 |
Windows 日志审计重点
安全日志中的关键事件 ID:
| 事件 ID | 含义 | 审计价值 |
|---|---|---|
4624 |
登录成功 | 检查异常时间、异常来源 IP 的登录 |
4625 |
登录失败 | 大量 4625 可能表示暴力破解 |
4672 |
特殊权限登录 | 检查哪些账户获得了管理员权限 |
4720 |
创建用户 | 发现攻击者创建的后门账户 |
4726 |
删除用户 | 攻击者清理痕迹 |
7045 |
创建服务 | 攻击者通过服务方式安装后门 |
登录类型对照:
| 类型 | 含义 | 关注场景 |
|---|---|---|
| 2 | 交互式(本地登录) | 物理接触服务器 |
| 3 | 网络(SMB、共享) | 内网横向移动 |
| 10 | 远程交互(RDP) | 外部远程登录 |
实际案例:
审计安全日志发现凌晨 3 点有大量事件 ID 4625(登录失败),登录类型 10(RDP),来源 IP 为外网地址。随后在 4624 中发现一次成功登录,同一 IP。接着出现事件 ID 4720(创建用户 hack$)。这是一条清晰的入侵证据链:暴力破解 → 成功登录 → 创建后门账户。
6.2 Linux 系统安全要点¶
账户安全检查命令
# 查看所有用户,关注 UID 为 0 的非 root 账户
cat /etc/passwd | awk -F: '{print $1, $3}'
# 检查空口令(shadow 第二列为空)
awk -F: '$2=="" {print "空口令用户: " $1}' /etc/shadow
# 检查是否有多个 UID 为 0 的账户(后门)
awk -F: '$3==0 {print $1}' /etc/passwd
# 检查 sudo 权限过大的用户
cat /etc/sudoers | grep -v "^#" | grep -v "^$"
文件系统安全
SUID 和 SGID 文件是 Linux 提权的重要切入点。SUID 文件在执行时临时获得文件所有者的权限(通常是 root)。
# 查找所有 SUID 文件(权限位 4000)
find / -perm -4000 -type f 2>/dev/null
# 查找所有 SGID 文件(权限位 2000)
find / -perm -2000 -type f 2>/dev/null
# 查找全局可写目录
find / -type d -perm -002 2>/dev/null
# 查找全局可写文件
find / -type f -perm -002 2>/dev/null
SUID 提权案例:
某系统上 /usr/local/bin/backup 是 SUID 且所有者为 root,功能是备份指定目录。但该程序未对用户输入的路径做校验,存在缓冲区溢出。攻击者利用缓冲区溢出覆盖返回地址,跳转到 exec("/bin/sh") 的 gadget,获得 root shell。
Linux 日志审计
| 日志文件 | 路径 | 审计重点 |
|---|---|---|
| 认证日志 | /var/log/auth.log(Debian)/var/log/secure(RHEL/CentOS) |
SSH 登录成功/失败、sudo 使用 |
| 系统日志 | /var/log/syslog / /var/log/messages |
系统级事件、服务异常 |
| Web 访问日志 | /var/log/nginx/access.log |
异常请求、攻击痕迹 |
| Web 错误日志 | /var/log/nginx/error.log |
500 错误、文件包含尝试 |
| Cron 日志 | /var/log/cron |
异常定时任务 |
| 最后登录 | /var/log/lastlog |
所有用户的最后登录时间 |
| 登录历史 | /var/log/wtmp |
last 命令查看 |
# 统计 SSH 登录失败最多的 IP
grep "Failed password" /var/log/auth.log | \
awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -20
# 查找异常的命令执行(wget、curl、nc 等)
grep -E "wget|curl|python|nc -e|bash -i" /var/log/auth.log
总结¶
- 6.1 Windows 系统安全要点
- 6.2 Linux 系统安全要点