战术在 Linux 环境下的检测策略)
权限提升Privilege Escalation战术在 Linux 环境下的检测策略在 Linux 服务器攻防对抗中攻击者在通过 Web 应用漏洞或弱口令获取到低权限 WebShell如www-data、nobody或低权限业务账号后下一步的核心目标必然是获取系统的最高控制权——root权限。提权技术五花八门涵盖了内核漏洞利用、Sudo 配置疏漏、SUID 高危二进制文件滥用、环境变量劫持以及定时任务Cron Job不当权限配置等。蓝队防御人员不能等到主机被彻底控制才去排查必须建立起常态化、多维度的本地权限提升威胁感知与检测机制。Linux 提权的主要路径与威胁模型根据 ATTCK 框架中的TA0004 (Privilege Escalation)战术Linux 环境下的提权手法通常分为以下四大流派graph TD A[低权限获取: www-data / 业务账号] -- B{提权路径决策} B --|路径 1| C[SUID / SGID 危险二进制滥用] B --|路径 2| D[Sudoers 权限过度赋予与免密配置] B --|路径 3| E[可写 Cron 脚本与环境变量劫持] B --|路径 4| F[未修复 Linux 内核溢出漏洞] C -- G[获取 root Shell] D -- G E -- G F -- GSUID / SGID 危险二进制文件GTFOBins 滥用管理员或安装包错误地为具备文件读写或命令执行能力的程序赋予了 SUID 权限如chmod us /usr/bin/find或vim、cp、nmap普通用户执行时将继承root权限。Sudoers 配置失误NOPASSWD 过度开放在/etc/sudoers中配置了deploy ALL(ALL) NOPASSWD: /usr/bin/python等免密执行规则攻击者可直接通过 Python 启动交互式 root 终端。敏感文件与定时任务可写权限Insecure File Permissions由 root 周期性执行的脚本如/etc/crontab或/etc/cron.d/*其文件属主或所在目录对普通用户开放了写权限777攻击者只需向脚本末尾追加反弹指令即可。内核漏洞提权Kernel Exploits利用老旧未修补的 Linux 内核漏洞如 Dirty COW、Dirty Pipe、io_uring 漏洞直接覆写进程凭据结构体cred。编写自动化提权风险基线巡检脚本以下展示了一个用于在企业 Linux 主机中定期执行的提权风险自动化扫描与审计脚本import os import stat import subprocess import glob from typing import List, Dict # GTFOBins 常见的高危 SUID 目标清单 HIGH_RISK_SUID_BINARIES { find, vim, vi, bash, sh, cp, mv, nano, less, more, awk, gawk, python, python3, perl, ruby, lua, env, tar, zip, docker, pkexec, systemctl, curl, wget } def scan_suid_binaries() - List[Dict[str, str]]: 扫描系统中所有配置了 SUID 权限的文件并标记高危项 findings [] # 查找全局 SUID 文件 try: cmd [find, /, -perm, -4000, -type, f, -xdev] output subprocess.check_output(cmd, stderrsubprocess.DEVNULL, textTrue) for filepath in output.strip().splitlines(): filename os.path.basename(filepath) is_high_risk filename in HIGH_RISK_SUID_BINARIES findings.append({ path: filepath, binary: filename, is_dangerous: CRITICAL if is_high_risk else NORMAL }) except Exception as e: pass return findings def scan_writable_cron_jobs() - List[str]: 检查以 root 身份运行的定时任务是否存在非 root 可写漏洞 vulnerabilities [] cron_paths [/etc/crontab, /etc/cron.daily/*, /etc/cron.hourly/*, /etc/cron.d/*] for pattern in cron_paths: for file in glob.glob(pattern): try: st os.stat(file) # 检查是否对 Group 或 Others 开放了写权限 (0022 掩码之外的 0002 / 0020) if bool(st.st_mode stat.S_IWOTH) or bool(st.st_mode stat.S_IWGRP): vulnerabilities.append(f危险Cron 配置文件对普通用户可写: {file}) except Exception: continue return vulnerabilities基于 Auditd 与 eBPF 的实时提权行为检测除了静态巡检基于内核事件的实时阻断是防御高级提权的核心Auditd 规则配置监控setuid、setgid与execve系统调用对非常规提权行为进行告警# 监控 setuid 系统调用 auditctl -a always,exit -F archb64 -S setuid -F auid1000 -F auid!4294967295 -k priv_escalation # 监控 /etc/sudoers 文件的写操作 auditctl -w /etc/sudoers -p wa -k sudoers_modification开启内核安全加固参数在/etc/sysctl.conf中配置# 禁止未授权用户查看 dmesg 内核日志防止内核地址泄露 kernel.dmesg_restrict 1 # 限制 ptrace 调试范围仅允许父进程调试子进程 kernel.yama.ptrace_scope 2 # 禁用非特权用户的 eBPF 加载 kernel.unprivileged_bpf_disabled 1收紧每一次配置细节剥离非必要的 SUID 权限开启内核级审计规则才能在攻击者企图跨越权限边界的瞬间实现精确捕获与阻断。