
Outil de détection de persistance Linux basé sur Bash pour les enquêtes DFIR. Analyse 15+ mécanismes de persistance (systemd, cron, modules noyau, SSH, conteneurs) avec un score de confiance et génère des rapports CSV/JSONL pour l'analyse forensique.
Un outil complet de détection de persistance Linux pour les enquêtes de criminalistique numérique et réponse aux incidents (DFIR).
Persistnux est un outil en Bash conçu pour identifier les mécanismes de persistance Linux connus utilisés par les attaquants pour maintenir l'accès à des systèmes compromis. Il effectue des vérifications complètes sur le système et génère des rapports détaillés aux formats CSV et JSONL pour une analyse approfondie.
.service) dans /etc/systemd/system, /lib/systemd/system, /usr/lib/systemd/system/etc/crontab, /etc/cron.d/*)/etc/cron.{daily,hourly,weekly,monthly})/etc/cron.allow et /etc/cron.denv — les entrées référençant des utilisateurs inexistants sont signalées/etc/profile, /etc/bash.bashrc, /etc/zshrc)/etc/profile.d/*).bashrc, .bash_profile, .zshrc, .profile, etc.)/etc/rc.local et variantes/etc/init.d)/etc/rc*.d)/etc/ld.so.preload) — chaque bibliothèque listée est vérifiée via le gestionnaire de paquets/etc/ld.so.conf, /etc/ld.so.conf.d/) — intégrité des fichiers de conf + fichiers .so dans des chemins non standards scannés et vérifiés/etc/environment LD_PRELOAD/LD_LIBRARY_PATH — le fichier d'environnement est signalé ÉLEVÉ ; les chemins de bibliothèques référencés sont vérifiés (non gérés/modifiés → CRITIQUE)/etc/modprobe.d/, /etc/modprobe.conf) — intégrité des fichiers ; les directives install sont analysées pour des cibles de commandes suspectes ; les blacklist de modules de sécurité (apparmor, selinux, seccomp) sont signalées ÉLEVÉ/etc/modules, /etc/modules-load.d/) — intégrité des configs ; les noms de modules référencés sont résolus en fichiers .ko via modinfo et vérifiéslsmod) — énumération et vérification d'intégrité.config/autostart, /etc/xdg/autostart) — tous les répertoires personnels sont scannés en mode root/etc/environment) — chemins de bibliothèques LD_PRELOAD/LD_LIBRARY_PATH vérifiés/etc/sudoers, /etc/sudoers.d/) — motifs NOPASSWD/ALL → ÉLEVÉ.so vérifiés via le gestionnaire de paquets ; les directives @include sont suivies ; /etc/pam.conf incluspam_exec.so — scripts manquants/suspects → CRITIQUEpam_python.so / pam_perl.so — script extrait et analysépam_script.so dans /etc/security/pam_env.conf et ~/.pam_environment/etc/security//etc/update-motd.d/) — vérification de paquet ; modifié → CRITIQUE~/.ssh/authorized_keys par utilisateur — clés récemment modifiées signalées ; option command= analysée pour des motifs suspects~/.ssh/rc par utilisateur — présence signalée MOYEN ; contenu suspect/reverse shell → ÉLEVÉ/CRITIQUEdpkg -V sur Debian/Ubuntu, rpm -Va sur RHEL/CentOS)/usr/bin, /usr/sbin, /bin, /sbin → résultat CRITIQUE/lib/security → résultat CRITIQUEinit= dans GRUB (/etc/default/grub, /etc/default/grub.d/*.cfg)/pre-pivot écrivant dans /sysroot/etc/shadow/etc/initramfs-tools/scripts/ et /hooks//boot/initrd.img-* récemment modifiées (basé sur mtime).pkla avec ResultAny/ResultInactive/ResultActive=yes inconditionnelsunix-user:*).rules avec polkit.Result.YES inconditionnel (Polkit basé sur JavaScript >= 0.106)Exec= (/usr/share/dbus-1/system-services/)allow own="*" ou send_destination="*"/etc/NetworkManager/dispatcher.d/)RUN+= exécutant des commandes ou scripts arbitraires (/etc/udev/rules.d/, /lib/udev/rules.d/)/run/udev/rules.d/at/cron dans RUN+= (contournement courant de la restriction de premier plan)--privileged, --pid=host)docker.sock dans les conteneurs (contrôle total de l'hôte via l'API Docker)nsenter -t 1 dans les points d'entrée de conteneurs ou Dockerfiles