我想知道是否可以停用旧服务器。我需要有关在那里运行的自动化流程的信息。到目前为止,我尝试了以下方法:
auditctl -a exit,always -F arch=b64 -S execve -k any-commands
在日志分析阶段,我发现缺少两条上下文:
- 这些程序是如何执行的?它们的父进程是什么?它的 argv 是什么?
- stdin/stdout 去哪了?理想情况下,我希望看到 shell 命令被重建,但我知道我可能要求太多了,所以至少有管道描述符 ID 就可以了(这样我就可以尝试用我自己的脚本重建它)。
我该如何解决这个问题?
答案1
系统execve
调用替换当前进程。如果某个程序想在启动另一个程序后保留控制权,则需要先创建一个新进程(使用fork
或vfork
),然后调用execve
。
打开的文件描述符和权限在 中替换程序映像时被接管execve
(标有 标志的除外CLOEXEC
),因此打开的文件在 期间从父进程继承fork
,然后在fork
和之间进行修改execve
(例如使用dup2
),然后最后在调用期间进行过滤execve
。
因此,从审计数据中获取完整的情况将会很困难。