直接用ausearch -p PID可查该进程全部系统调用事件,但需提前启用对应规则,如sudo auditctl -a always,exit -F arch=b64 -S execve,openat,capset,setuid,并确认enabled=2。

直接用 ausearch -p PID 就能查到该进程触发的全部系统调用事件,但要注意它只覆盖进程生命周期内的审计记录,且需确保对应规则已提前启用。
确认审计规则已捕获目标系统调用
auditd 不会自动记录所有 syscall,必须手动加载规则。例如,要看到 execve、openat、capset 等调用,得先运行:
sudo auditctl -a always,exit -F arch=b64 -S execve,openat,capset,setuid- 如需兼容 32 位程序,补上:
sudo auditctl -a always,exit -F arch=b32 -S execve,openat - 检查是否生效:
sudo auditctl -s | grep enabled应显示enabled=2(锁定模式)
用 -p 参数精准提取该 PID 的完整 syscall 链
-p 是 ausearch 最直接的过滤方式,它会匹配该 PID 发起的所有审计事件(包括 SYSCALL、EXECVE、PROCTITLE 等类型):
- 查 PID 12345 的全部调用:
sudo ausearch -p 12345 -i - 限定时间范围避免干扰:
sudo ausearch -p 12345 -ts recent -te $(date -d '2 minutes ago' +%H:%M:%S) -i - 只看系统调用类事件:
sudo ausearch -p 12345 -m SYSCALL -i
关联父进程与子进程行为(必要时)
单个 PID 的日志可能不完整——比如子进程执行了关键操作但 PID 不同。这时可结合父进程线索追溯:
- 先查目标进程的父 PID:
ps -o ppid= -p 12345 - 再查父进程及其所有子进程的 execve 行为:
sudo ausearch -p $(ps -o ppid= -p 12345 | xargs) -m execve -i - 或一次性查整个进程树涉及的系统调用:
sudo ausearch -p 12345 --input-logs | aureport -f -i
快速识别异常调用的关键字段
输出中重点关注以下字段,它们能揭示权限变化或绕过痕迹:
- success=no:失败的系统调用,常指向权限不足(如 openat 失败 + capability 字段缺失)
- euid != uid 或 auid != uid:实际执行者与登录用户不一致,提示提权或 su/sudo 行为
-
key=xxx:若规则带 key,可快速定位某类策略触发点(如
-k bpf_usage) - comm= 和 exe=:判断是哪个程序发起调用,排除白名单(如 /usr/bin/python3 vs /tmp/malware)

















