如何使用auditd记录进程及其所有后代发出的所有系统调用

如何使用auditd记录进程及其所有后代发出的所有系统调用

我可以

auditctl -a always,exit -S all -F pid=1234

记录 pid 1234 完成的所有系统调用:

auditctl -a always,exit -S all -F ppid=1234

对于它的孩子,但我如何覆盖孙子和他们的孩子(当前和未来)?

我不能依赖 (e)uid/(e)gid 的改变。

(请注意,使用strace也不是一个选项)

答案1

只是提出一些建议,但现在没有任何方法可以尝试......但只是从帖子本身猜测

这是一个解决方案的建议:

假设最上面的进程ID在$pid中,并且在Linux上也ps -T给出了进程树(我现在无法访问Linux)

for eachpid in $(ps -T "$pid" | awk '{print $1}' | grep -v 'PID')
do
   auditctl -a always,exit -S all -F pid=$eachpid  >somelog_${eachpid}.log 2>&1
done

当然,ps -T "$pid"如果那个在 Linux 上不起作用,请替换为 linux 的等效项(或者通过 awk-ing“pstree -p”输出找到它,pid 将位于括号之间)

相关内容