Torna agli aggiornamenti
UpdatedJul 28, 2026

persisthunt — Updated!

Script per il rilevamento della persistenza, la caccia e la raccolta di artefatti su Linux

Condividi

Rilevamento Persistenza Linux, Caccia alle Minacce e Raccolta di Artefatti

Sommario

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.

Utilizzo

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

Esempi di Rilevamento

=== [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

Tecniche

ConfidenceTecnicaDescrizione
AltaPersistenza tramite job ATI job 'at' legittimi sono rari; voci inattese in /var/spool/at sono altamente sospette.
AltaVoce cron che fa riferimento a una parola chiave sospettaFile cron che fanno riferimento a curl/wget/nc/ncat/socat o percorsi come /tmp, /var/tmp, /dev/shm, /home, o file nascosti.
AltaBind shell attivaRileva processi interprete (bash/sh/zsh/dash/ksh/python*/perl/nc/ncat/socat) in ascolto su socket di rete (bind shell).
AltaReverse shell attivaRileva processi il cui stdin e stdout sono reindirizzati a socket, indicando reverse shell.
AltaPersistenza tramite socket di rete grezzi eBPFRootkit come BPFdoor usano programmi eBPF con socket di rete grezzi per backdoor persistenti. Leggi di più
AltaServizio/timer systemd che fa riferimento a una parola chiave sospettaCerca file .service e .timer nei percorsi systemd (incluse le unità utente sotto ~/.config/systemd/user/) per parole chiave sospette.
AltaScript init/rc.local/profile che fa riferimento a una parola chiave sospettaScript di init e file rc.local/profile che fanno riferimento a parole chiave sospette o strumenti di rete in percorsi di persistenza.
AltaScript MOTD che fa riferimento a una parola chiave sospettaScript MOTD che fanno riferimento a parole chiave sospette o strumenti di persistenza.
AltaProfilo shell che fa riferimento a una parola chiave sospettaProfili shell (/etc/profile, /etc/profile.d, ~/.bashrc, ~/.profile, ecc.) contenenti comandi o percorsi sospetti.
AltaFile di servizio D-BUS che fanno riferimento a una parola chiave sospettaFile di servizio D-BUS trovati nel percorso */dbus-1/* che fanno riferimento a parole chiave sospette
AltaScript dispatcher NetworkManager che fanno riferimento a una parola chiave sospettaScript dispatcher NetworkManager trovati nel percorso */NetworkManager/dispatcher.d/* che fanno riferimento a parole chiave sospette
AltaFile eseguibili ELF nascosti in directory tmp/home/nascosteDotfile nascosti (nomi che iniziano con un punto) in /tmp, /var/tmp, /home, /dev/shm che sono eseguibili ELF.
AltaProcessi in esecuzioneProcessi in esecuzione che fanno riferimento a una parola chiave sospetta
AltaBinario ELF SUID/SGID/scrivibile da tuttiFile scrivibili da tutti con bit SUID o SGID impostati che sono binari ELF (potenziale escalation di privilegi/backdoor).
AltaProcesso nascosto rilevato in /proc (possibile rootkit)Enumera i PID in /proc e confrontali con l'output di ps per trovare processi nascosti da rootkit (es. Diamorphine); include note su come gli attaccanti compromettono ps per nascondere i PID.
AltaProcesso nascosto con trucco del bind mountRileva mount che sovrappongono /proc/ (es. mount -o bind mydir /proc/1234) che possono nascondere le voci di processo da ps.
AltaLD_PRELOAD configurato a livello di sistemaPresenza o modifica di /etc/ld.so.preload che può essere abusata dai rootkit per la persistenza.
BassaFile con capabilitiesFile sul sistema con capabilities POSIX impostate (da getcap) — indicatore a bassa confidenza ma vale la pena controllare.
BassaRecente binario ELF in directory tmp/home/nascosteBinari ELF eseguibili modificati o creati di recente (entro 7 giorni) in /tmp, /var/tmp, /dev/shm, /home — indicatore a bassa confidenza.
BassaFile di configurazione o hook GitFile di configurazione o hook git non di esempio (es. .git/config o .git/hooks/*) che potrebbero essere abusati per la persistenza.
BassaHook APTGli hook APT potrebbero essere abusati per la persistenza.
BassaPlugin Yum/DNFPlugin Yum/DNF che fanno riferimento a una parola chiave sospetta
BassaFile .pth con contenuto sospetto (persistenza Python)File .pth contenenti import o chiamate eseguite come import, os.system, exec() che vengono eseguiti all'importazione del modulo Python.
BassaRegole udevRegole udev con chiave RUN (possibile persistenza)
BassaModuli PAMModuli PAM che fanno riferimento a pam_exec che potrebbe essere abusato per la persistenza
BassaDirottamento di binari di sistemaFile binari modificati di recente in /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin/
InformativaTutte le voci cron (revisione manuale)Stampa tutti i file relativi a cron e il loro contenuto (non commento) per la revisione manuale.
InformativaTutti i profili shell (revisione manuale)Stampa il contenuto di tutti i file di profilo shell di sistema e utente per l'ispezione manuale.
InformativaTutti gli script init.d e rc.local (revisione manuale)Stampa gli script init.d e rc.local per l'ispezione manuale.
InformativaTutti i file MOTD (revisione manuale)Stampa gli script/file MOTD e update-motd.d per la revisione manuale.
InformativaBinari ELF recenti (7 giorni) (revisione manuale)Elenca i file ELF eseguibili recenti (7 giorni) per la revisione manuale.
InformativaElenca tutti i dotfile nelle directory home (revisione manuale)Enumera i dotfile nelle directory home degli utenti per la revisione manuale.
InformativaChiavi autorizzate SSH nelle directory home (revisione manuale)Stampa i file authorized_keys non vuoti in /root e /home per l'ispezione manuale.
InformativaUtenti e gruppi locali (revisione manuale)Elenca utenti e gruppi locali tramite getent per la revisione manuale.
InformativaMount (revisione manuale)Stampa i mount correnti per l'ispezione manuale.
InformativaConnessioni di rete attive (revisione manuale)Mostra le connessioni di rete attive (ss -tunap) per la revisione manuale.
InformativaServizi systemd (revisione manuale)Elenca i servizi systemd in esecuzione (systemctl list-units --type=service --state=running).
InformativaFile di servizio D-BUS (revisione manuale)Trova i file di servizio D-BUS nelle directory dbus-1 per la revisione.
InformativaScript dispatcher NetworkManagerNetworkManager-dispatcher esegue script al verificarsi di cambi di rete; controlla gli script eseguibili in dispatcher.d sotto NetworkManager per potenziale persistenza.
InformativaImmagini container e container in esecuzioneElenca tutte le immagini container e i container in esecuzione con Docker, Podman e Containerd
InformativaPacchetti installatiElenca tutti i pacchetti installati con dpkg/rpm/dnf
InformativaModuli kernel caricatiElenca tutti i moduli kernel caricati

Categorie