首页/安全/取证与溯源速查/ausearch 还原进程执行
Linux 取证135 条

ausearch 还原进程执行

ausearch -m EXECVE 检出命令执行记录,-i 会把十六进制参数转换成文本,配合 SYSCALL 记录可确定执行者与退出状态。

取证与溯源速查安全更新于 2026-10-13

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/ 下的归档文件,确认可检索的时间范围后再下结论。

易错点

  • 未加 -i 直接阅读输出:含空格或特殊字符的参数以十六进制存储,肉眼几乎无法判读,容易漏掉关键命令
  • 把 EXECVE 记录当成完整命令行:同一命令由多条记录组成,拆开查看会丢失参数,必须按 audit ID 合并
  • 忽略父进程字段:只有 pid 而无 ppid 时无法判断是人工操作还是服务派生,定位落脚点会偏
  • 默认认为审计记录了全部执行:规则未覆盖的进程不会留下记录,结论必须标注“在现有审计范围内”
  • 清理审计日志或修改规则后继续分析:日志丢失无法恢复,响应早期应先备份 audit.log 与规则文件再做后续操作

数据来源与参考

  • auditd 官方手册(ausearch(8))
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌