Wenn kprobes im Kernel aktiviert sind, können Sie execsnoop
verwenden von perf-tools:
Im ersten Terminal:
% while true; do uptime; sleep 1; done
In einem anderen Terminal:
% git clone https://github.com/brendangregg/perf-tools.git
% cd perf-tools
% sudo ./execsnoop
Tracing exec()s. Ctrl-C to end.
Instrumenting sys_execve
PID PPID ARGS
83939 83937 cat -v trace_pipe
83938 83934 gawk -v o=1 -v opt_name=0 -v name= -v opt_duration=0 [...]
83940 76640 uptime
83941 76640 sleep 1
83942 76640 uptime
83943 76640 sleep 1
83944 76640 uptime
83945 76640 sleep 1
^C
Ending tracing...
Am einfachsten ist es, die Überwachung von Systemaufrufen zu aktivieren
Weitere Informationen finden Sie unter folgendem Link,
Kennt jemand eine einfache Möglichkeit, den Root-Prozess spawn | Serverfehler
Wenn Sie alle Prozesse überwachen, entfernen Sie einfach die -F uid=0
Teil
Protokolle werden in /var/log/audit/audit.log
geschrieben
Einige Beispiele für bpftrace
Verwendung, um das Ziel zu erreichen.
-
Am einfachsten ist es, alle
exec
zu verfolgen Anrufe im System:sudo bpftrace -e 'tracepoint:syscalls:sys_enter_exec*{ printf("pid: %d, comm: %s, args: ", pid, comm); join(args->argv); }'
Es gibt mindestens zwei Ablaufverfolgungspunkte, die Sie überwachen müssen
sys_enter_execve
undenter_execveat
. Im Beispiel verwende ich den*
Symbol für beide Systemaufrufe (diese Syntax funktioniert seit 2019) . -
Man kann auch alle Threads überwachen, die im System erstellt werden, als:
sudo bpftrace -e 'kprobe:_do_fork{ printf("pid = %d, comm = %s\n", pid, comm); }'
Keine Prozessargumente für Sie in diesem Fall, dennoch kann es nützlich sein.
Um die Liste aller verfügbaren Ereignisse anzuzeigen, führen Sie bpftrace -l
aus .