ausearch 与 EXECVE 记录
Linux 审计框架(auditd)在内核层面记录命令执行、文件访问与权限变更等事件,命令执行对应 EXECVE 记录,里面按参数位置保存可执行文件与参数列表。ausearch 是检索这些记录的官方工具,配合 -i 参数会把十六进制编码的内容转换为可读文本,配合 -ts 限定时间窗可快速收窄范围。同一次执行的 SYSCALL、EXECVE、PATH 等记录共享一个审计 ID,用它可以还原完整的一次调用:谁执行、执行了什么、结果如何。
基本信息
| 适用平台 | RHEL/CentOS、Ubuntu/Debian 等启用 auditd 的 Linux 发行版 |
|---|---|
| 日志位置 | /var/log/audit/audit.log(配合 ausearch/ aureport 检索) |
| 核心命令 | ausearch -m EXECVE、ausearch -k <规则键>、aureport -x 汇总执行情况 |
| 常用参数 | -i 解释编码内容、-ts 起始时间、-te 结束时间、-k 规则键、--input 指定日志文件 |
| 权限要求 | 读取审计日志通常需要 root |
典型使用场景
- 还原攻击者在主机上执行过的命令序列,补齐 shell 历史被清理后的空档
- 定位某条规则键触发的执行行为(例如监控临时目录中的程序运行)
- 确认可疑进程的执行者账号与父进程,定位入侵落脚点
- 在事件窗口内检索敏感命令(下载工具、隧道工具、权限修改)的使用记录
- 为时间线提供秒级精度的执行证据,与网络与文件记录对齐
检索示例
检索示例
# 解释编码内容并按时间窗检索命令执行记录
sudo ausearch -i -m EXECVE -ts yesterday | head -60
# 按规则键检索(前提是配置了对应 audit 规则)
sudo ausearch -k exec -i -ts recent | grep -A2 'a0='
# 汇总近期执行过的程序,快速发现异常路径
sudo aureport -x --summary -ts yesterday
# 只看含可疑关键字的执行记录
sudo ausearch -i -m EXECVE -ts today | grep -Ei 'curl|wget|chmod \+x|base64'记录字段读法
| 字段/记录 | 含义 | 判读要点 |
|---|---|---|
| SYSCALL 记录 | 系统调用层信息(含 uid、gid、pid、ppid) | 给出执行者与父进程,是定位真实发起方的关键 |
| EXECVE 记录 | 可执行文件与参数列表(a0、a1…) | 参数顺序即实际命令行,未加 -i 时特殊字符为十六进制 |
| PROCTITLE | 进程标题 | 部分环境下不可用,不能作为唯一证据 |
| PATH 记录 | 涉及的路径与 inode | 配合文件时间可确认被访问对象 |
| audit ID | 同一次调用的关联标识 | 用它把多条记录拼成一次完整执行 |
审计规则决定了能查到什么:默认策略通常不记录所有命令执行,发现记录稀疏先核对 /etc/audit/rules.d/ 下的规则,再判断是否“确实没有执行过”。
audit 日志有轮转与容量上限,事件窗口较早时先检查 /var/log/audit/ 下的归档文件,确认可检索的时间范围后再下结论。