排查未经授权提权行为需捕获execve、cap_setpcap、setresuid等事件组成的提权链,而非孤立看sudo/bash;必须手动启用auditd对cap_*等系统调用的监控,并用ausearch组合多事件类型及时间窗口关联分析。

排查未经授权的提权行为,不能只看 sudo 或 bash 进程日志——现代攻击(如 Dirty Pipe、PwnKit)往往绕过这些入口,直接触发内核能力变更或 setuid 系统调用。关键在于捕获并关联 execve、cap_setpcap、setresuid、setgid 等事件组成的“提权链”,而非孤立事件。
确认 auditd 规则已覆盖关键系统调用
默认 auditd 不记录 cap_* 类调用,必须手动启用。否则日志里根本看不到能力劫持痕迹。
- 检查是否启用:运行
auditctl -s | grep enabled,输出中enabled=1才有效 - 验证规则加载:执行
auditctl -l,确认含以下规则(缺一不可):-a always,exit -F arch=b64 -S execve -k execve-a always,exit -F arch=b64 -S cap_setpcap,setuid,setgid,setresuid,setresgid -k priv_esc - 若缺失,用
auditctl -a always,exit -F arch=b64 -S cap_setpcap等逐条添加,或写入/etc/audit/rules.d/priv.rules后重启auditd
用 ausearch 组合时间窗口与多事件类型
单查 EXECVE 只能看到起点,必须叠加权限变更事件才能还原完整动作。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 查某用户(如 uid 1001)近 10 分钟内所有可疑调用:
ausearch -ui 1001 -m EXECVE,SETUID,SETGID,CAPSET -ts recent -te $(date -d '10 minutes ago' +%H:%M:%S) | aureport -i -f - 重点过滤“登录 UID ≠ 执行 UID”的 execve(即 auid != uid),排除 /usr/bin/sudo 等白名单路径:
ausearch -m EXECVE -F auid!=uid -F path!=/usr/bin/sudo -F path!=/bin/bash - 快速定位能力劫持尝试:
ausearch -m CAPSET -sv no(失败但尝试过的 cap_setpcap 几乎都指向恶意行为)
识别典型提权上下文模式
真实攻击会在极短时间内形成可识别的调用序列,需人工或脚本关联时间戳。
- pkexec 提权:execve 调用时 euid 仍是普通值(如 1001),紧接着 出现 cap_setpcap + setresuid(0,0,0)
-
Dirty Pipe 利用:execve 正常,但后续 openat + write 对
/proc/self/exe的操作会伴随 cap_dac_override 生效记录 -
CVE-2021-4034(PwnKit):看似普通的
execve("/usr/bin/pkexec", ...),但无对应 setuid 调用——此时需查其子进程是否继承了异常 capabilities
结合系统状态交叉验证
日志只是线索,需配合运行时状态确认是否真被提权。
- 查当前所有带 capabilities 的进程:
find /proc/[0-9]*/status -exec grep -l "CapEff.*[0-9a-f]\{14\}" {} \; 2>/dev/null | cut -d/ -f3 | xargs -I{} ps -p {} -o pid,comm,euid,cmd - 比对可疑进程的 auid(登录者)和 euid(实际有效 UID):
若 euid=0 但 auid≠0,且该进程未出现在sudo -l白名单中,高度可疑 - 检查 /etc/passwd 是否被篡改(如新增 root 用户或空密码字段),对应时间点应有 execve + write 日志

















