
Strumento di rilevamento della persistenza su Linux basato su Bash per indagini DFIR. Scansiona più di 15 meccanismi di persistenza (systemd, cron, moduli del kernel, SSH, container) con punteggio di confidenza e genera report CSV/JSONL per analisi forensi.
Uno strumento completo per la rilevazione di persistenza su Linux per indagini di Digital Forensics e Incident Response (DFIR).
Persistnux è uno strumento basato su bash progettato per identificare i meccanismi di persistenza Linux noti utilizzati dagli aggressori per mantenere l'accesso a sistemi compromessi. Esegue controlli completi su tutto il sistema e genera report dettagliati in formato CSV e JSONL per analisi successive.
.service) in /etc/systemd/system, /lib/systemd/system, /usr/lib/systemd/system/etc/crontab, /etc/cron.d/*)/etc/cron.{daily,hourly,weekly,monthly})/etc/cron.allow e /etc/cron.deny — voci che riferiscono utenti inesistenti segnalate/etc/profile, /etc/bash.bashrc, /etc/zshrc)/etc/profile.d/*).bashrc, .bash_profile, .zshrc, .profile, ecc.)/etc/rc.local e varianti/etc/init.d)/etc/rc*.d)/etc/ld.so.preload) — ogni libreria elencata verificata tramite il gestore pacchetti/etc/ld.so.conf, /etc/ld.so.conf.d/) — integrità del file di configurazione + file .so in percorsi non standard scansionati e verificati/etc/environment LD_PRELOAD/LD_LIBRARY_PATH — file env segnalato come ALTO; percorsi di librerie referenziate verificati (non gestiti/modificati → CRITICO)/etc/modprobe.d/, /etc/modprobe.conf) — integrità dei file; direttive install analizzate per bersagli di comandi sospetti; blacklist di moduli di sicurezza (apparmor, selinux, seccomp) segnalati come ALTI/etc/modules, /etc/modules-load.d/) — integrità della configurazione; nomi dei moduli referenziati risolti in file .ko tramite modinfo e verificatilsmod) — enumerazione e verifica dell'integrità.config/autostart, /etc/xdg/autostart) — tutte le home utente scansionate quando root/etc/environment) — percorsi di librerie LD_PRELOAD/LD_LIBRARY_PATH verificati/etc/sudoers, /etc/sudoers.d/) — pattern NOPASSWD/ALL → ALTO.so verificati tramite il gestore pacchetti; direttive @include seguite; /etc/pam.conf inclusopam_exec.so — script mancanti/sospetti → CRITICOpam_python.so / pam_perl.so — script estratto e analizzatopam_script.so in /etc/security/pam_env.conf e ~/.pam_environment/etc/security//etc/update-motd.d/) — verifica pacchetto; modificato → CRITICO~/.ssh/authorized_keys — chiavi modificate di recente segnalate; contenuto dell'opzione command= analizzato per pattern sospetti~/.ssh/rc — presenza segnalata MEDIO; contenuto sospetto/reverse shell → ALTO/CRITICOdpkg -V su Debian/Ubuntu, rpm -Va su RHEL/CentOS)/usr/bin, /usr/sbin, /bin, /sbin → risultato CRITICO/lib/security → risultato CRITICOinit= di GRUB (/etc/default/grub, /etc/default/grub.d/*.cfg)/pre-pivot che scrivono in /sysroot/etc/shadow/etc/initramfs-tools/scripts/ e /hooks//boot/initrd.img-* modificate di recente (basate su mtime).pkla con ResultAny/ResultInactive/ResultActive=yes incondizionatiunix-user:*).rules con polkit.Result.YES incondizionato (Polkit basato su JavaScript >= 0.106)Exec= (/usr/share/dbus-1/system-services/)allow own="*" o send_destination="*"/etc/NetworkManager/dispatcher.d/)RUN+= che eseguono comandi o script arbitrari (/etc/udev/rules.d/, /lib/udev/rules.d/)/run/udev/rules.d/at/cron in RUN+= (comune bypass delle restrizioni di primo piano)--privileged, --pid=host)docker.sock nei contenitori (controllo completo dell'host tramite API Docker)nsenter -t 1 negli entrypoint dei contenitori o nei Dockerfilegetcap — cap_setuid+ep su GTFOBins → CRITICO.original, .old, .bak, .real) con script wrapper/etc/passwd/etc/passwdauthorized_keys# Clona il repository
git clone https://github.com/yourusername/persistnux.git
cd persistnux
# Rendi eseguibile lo script
chmod +x persistnux.sh
# Esecuzione con impostazioni predefinite (mostra solo risultati sospetti)
sudo ./persistnux.sh