核心是精准捕获“写入+赋权+执行”攻击链,利用auditd锁定auid、时间戳与系统调用上下文,通过监控目标进程执行、/tmp读写与执行行为三类规则实现跨事件关联分析。

要审计特定应用进程意外向 /tmp 目录写入可执行文件,核心不是“监控所有写操作”,而是精准捕获“写入 + 赋权 + 执行”这一攻击链中的关键环节,并关联到具体进程。auditd 的优势在于能锁定真实调用者(AUID)、精确时间戳和完整系统调用上下文,避免被 sudo 切换或脚本封装绕过。
锁定目标进程的执行行为
先确认该应用的主二进制路径(如 /opt/myapp/bin/launcher),然后监控其执行动作本身。这样后续在 /tmp 中出现的任何文件,只要时间接近、AUID 匹配,就高度可疑:
sudo auditctl -w /opt/myapp/bin/launcher -p x -k myapp_exec- 搭配 execve 系统调用过滤,可进一步限定仅记录该进程启动时的参数:
sudo auditctl -a always,exit -F arch=b64 -S execve -F path=/opt/myapp/bin/launcher -k myapp_spawn
监控/tmp中可执行文件的创建与权限变更
攻击者常先写入普通文件再 chmod +x。因此需同时捕获写入(w)和属性修改(a)两类事件,并打上统一标签便于关联:
sudo auditctl -w /tmp/ -p wa -k tmp_exec_creation- 这条规则会记录:谁(AUID)、何时、用什么进程(comm)、往
/tmp写了哪个文件、是否随后改了权限 - 注意:-w /tmp/ 只监控目录自身,但内核会自动将子项操作(如
/tmp/malware.bin)归入该规则,无需递归配置
捕获在/tmp中直接执行新文件的行为
很多后门是“写完立刻执行”,比如通过 sh /tmp/stage.sh 或 ./payload。这类行为必须用 execve 系统调用级规则捕获:
sudo auditctl -a always,exit -F arch=b64 -S execve -F dir=/tmp/ -F perm=x -k tmp_direct_exec- -F dir=/tmp/ 表示路径前缀匹配,覆盖
/tmp/xxx、/tmp/subdir/yyy - 结合 ausearch -k tmp_direct_exec --start recent --input-logs,可快速看到最近所有在
/tmp下触发执行的完整命令行
日志关联与快速定位
单条规则只能看片段,真正发现“意外行为”靠的是跨规则时间+用户+进程三重对齐:
- 查某次可疑执行的完整链条:
ausearch -m execve -f /tmp/malware.bin --start 10m ago | aureport -f -i - 查同一 AUID 在
/tmp的全部活动:ausearch -ui 1001 -k tmp_exec_creation -k tmp_direct_exec --start today - 导出为可读报告:
aureport -k myapp_exec -k tmp_exec_creation --summary,观察是否出现非预期的组合频次











