记录 execve 以及父进程 argv?

记录 execve 以及父进程 argv?

我想知道是否可以停用旧服务器。我需要有关在那里运行的自动化流程的信息。到目前为止,我尝试了以下方法:

auditctl -a exit,always -F arch=b64  -S execve -k any-commands

在日志分析阶段,我发现缺少两条上下文:

  1. 这些程序是如何执行的?它们的父进程是什么?它的 argv 是什么?
  2. stdin/stdout 去哪了?理想情况下,我希望看到 shell 命令被重建,但我知道我可能要求太多了,所以至少有管道描述符 ID 就可以了(这样我就可以尝试用我自己的脚本重建它)。

我该如何解决这个问题?

答案1

系统execve调用替换当前进程。如果某个程序想在启动另一个程序后保留控制权,则需要先创建一个新进程(使用forkvfork),然后调用execve

打开的文件描述符和权限在 中替换程序映像时被接管execve(标有 标志的除外CLOEXEC),因此打开的文件在 期间从父进程继承fork,然后在fork和之间进行修改execve(例如使用dup2),然后最后在调用期间进行过滤execve

因此,从审计数据中获取完整的情况将会很困难。

相关内容