Wie finde ich mithilfe der Ergebnisse von ausesearch ein verantwortliches Skript?

Wie finde ich mithilfe der Ergebnisse von ausesearch ein verantwortliches Skript?

Ich wollte also wissen, welcher Prozess ein Verzeichnis ']' in meinem Stammverzeichnis erstellt. Ich nahm an, dass es sich um einen Tippfehler in einem Skript handelte. Also richtete ich ein Audit für dieses Verzeichnis ein, ganz ähnlich wie aufDiese Frage.

Am nächsten Tag habe ich meine Protokolle überprüft und festgestellt, dass das Verzeichnis erneut erstellt wurde und es von Audit protokolliert wurde. Aber alles, was ich aus dieser Ausgabe erkennen kann, ist, dassWurzelhat es erstellt.

Ausgabe:

type=SYSCALL msg=audit(26.04.2013 06:25:20.275:85) : arch=i386 syscall=mkdir success=yes exit=0 a0=bfd02ea5 a1=1ed a2=bfd02ea5 a3=bfd025b8 items=2 ppid=24114 pid=24115 auid=unset uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=(none) ses=4294967295 comm=mkdir exe=/bin/mkdir key=weird 

In Zeilen unterteilt:

type=SYSCALL 
msg=audit(26.04.2013 06:25:20.275:85) : 
arch=i386 
syscall=mkdir 
success=yes 
exit=0 a0=bfd02ea5 
a1=1ed a2=bfd02ea5 a3=bfd025b8 
items=2 ppid=24114 pid=24115 
auid=unset 
uid=root 
gid=root 
euid=root 
suid=root 
fsuid=root 
egid=root 
sgid=root 
fsgid=root 
tty=(none) 
ses=4294967295 
comm=mkdir 
exe=/bin/mkdir 
key=weird 

Ich möchte wissen, welches Skript diesen Befehl als Root ausgibt. Ist das möglich? Der Prozess, der diese PPID verwendet, läuft nicht mehr.

Antwort1

Angenommen, dies wird durch ein von cron gestartetes Skript verursacht, können Sie alle Crond-Kinder verfolgen:

strace -p $CRONPID -f -o /path/to/cron-strace.log -e trace=mkdir

Dies sollte zu einer Ausgabe wie dieser führen:

Process 3584 attached
Process 18227 attached
[pid 18227] execve("./testscript", ["./testscript"], [/* 100 vars */]) = 0
Process 18228 attached
[pid 18228] execve("/usr/bin/mkdir", ["mkdir", "/home/hl/tmp/strace-testdir"], ...) = 0
[pid 18228] mkdir("/home/hl/tmp/strace-testdir", 0777) = 0

Natürlich verlangsamt strace die Skriptausführung, aber das sollte normalerweise kein Problem sein.

Antwort2

Anhand dieser Ausgabe allein lässt sich nicht ermitteln, welches Programm den mkdirBefehl aufgerufen hat.

Wenn Sie habenBSD-Prozessabrechnungzeigt der folgende Befehl, welches Programm PID 24114 hatte:

dump-acct /var/log/account/pacct | awk -F '|' '$10 ~ / 24114 / {print}'

Dies ist wahrscheinlich sh. Spalte 10 (mit |als Trennzeichen) enthält die PID des aufgezeichneten Prozesses, gefolgt von seiner PPID. Wiederholen Sie also die Suche mit der PPID, um zu sehen, welches Programm aufgerufen wurde shusw. Sie erfahren auch, wann der Prozess gestartet wurde, was dabei helfen kann, herauszufinden, welcher Cron-Job dies war.

Mit auditd allein müssen Sie nicht nur den mkdirAufruf, sondern alle Zugriffe auf dieses Verzeichnis aufzeichnen, um die Befehle aufzuzeichnen, die in das Verzeichnis wechseln oder auf Dateien darin zugreifen. Wenn das Verzeichnis erstellt wird, aber nichts anderes darauf zugreift, reicht auditd allein meiner Meinung nach nicht aus, um dies herauszufinden.

verwandte Informationen