Retour aux mises à jour
UpdatedJul 24, 2026

Persistnux — Mis à jour !

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.

Partager

Persistnux

Un outil complet de détection de persistance Linux pour les enquêtes de criminalistique numérique et réponse aux incidents (DFIR).

Aperçu

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.

Fonctionnalités

  • Détection exhaustive : Couvre tous les principaux mécanismes de persistance Linux
  • Analyse en direct : S'exécute directement sur des systèmes en production avec un minimum de dépendances
  • Rapports détaillés : Génère des rapports CSV et JSONL avec les hachages de fichiers, les métadonnées et les scores de confiance
  • Root et non-root : Fonctionne avec ou sans privilèges root (portée limitée pour non-root)
  • Prêt pour le DFIR : Formats de sortie compatibles avec les outils et workflows DFIR courants
  • Score de suspicion : Score de confiance automatique (FAIBLE, MOYEN, ÉLEVÉ, CRITIQUE) basé sur les indicateurs
  • Réduction des faux positifs : Intégration du gestionnaire de paquets et liste blanche des services connus légitimes
  • Analyse temporelle : Les fichiers récemment modifiés reçoivent des scores de confiance plus élevés
  • Correspondance de motifs : Détecte les reverse shells, les motifs de téléchargement-exécution, les techniques d'obscurcissement

Mécanismes de persistance détectés

1. Services Systemd

  • Fichiers de service (.service) dans /etc/systemd/system, /lib/systemd/system, /usr/lib/systemd/system
  • Services systemd au niveau utilisateur
  • Filtrage des services désactivés et des services sans ExecStart
  • Détection de commandes ExecStart suspectes
  • Vérification de l'intégrité des paquets des binaires/scripts exécutés

2. Tâches cron et planifiées

  • Crontabs système (/etc/crontab, /etc/cron.d/*)
  • Répertoires d'exécution périodique (/etc/cron.{daily,hourly,weekly,monthly})
  • Crontabs utilisateur pour tous les utilisateurs (mode root)
  • Tâches At
  • Motifs de commandes suspectes dans les tâches planifiées
  • Fichiers ACL /etc/cron.allow et /etc/cron.denv — les entrées référençant des utilisateurs inexistants sont signalées

3. Profils shell et fichiers RC

  • Profils système (/etc/profile, /etc/bash.bashrc, /etc/zshrc)
  • Scripts Profile.d (/etc/profile.d/*)
  • Profils utilisateur (.bashrc, .bash_profile, .zshrc, .profile, etc.)
  • Configurations Fish shell
  • Détection de commandes malveillantes dans les fichiers de profil

4. Scripts d'init et RC.local

  • /etc/rc.local et variantes
  • Scripts d'init SysV (/etc/init.d)
  • Scripts de niveau d'exécution (/etc/rc*.d)
  • Détection de commandes suspectes de téléchargement/exécution

5. Modules du noyau et préchargement de bibliothèques

  • Configurations LD_PRELOAD (/etc/ld.so.preload) — chaque bibliothèque listée est vérifiée via le gestionnaire de paquets
  • Configurations du linker dynamique (/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)
  • Paramètres des modules du noyau (/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É
  • Configurations de chargement automatique des modules (/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és
  • Modules du noyau chargés (lsmod) — énumération et vérification d'intégrité

6. Mécanismes supplémentaires

  • Entrées de démarrage automatique XDG (.config/autostart, /etc/xdg/autostart) — tous les répertoires personnels sont scannés en mode root
  • Fichiers d'environnement système (/etc/environment) — chemins de bibliothèques LD_PRELOAD/LD_LIBRARY_PATH vérifiés
  • Configurations sudoers et fichiers drop-in (/etc/sudoers, /etc/sudoers.d/) — motifs NOPASSWD/ALL → ÉLEVÉ
  • PAM (Modules d'authentification enfichables) :
    • Tous les modules .so vérifiés via le gestionnaire de paquets ; les directives @include sont suivies ; /etc/pam.conf inclus
    • Analyse des scripts pam_exec.so — scripts manquants/suspects → CRITIQUE
    • Détection de relais pam_python.so / pam_perl.so — script extrait et analysé
    • Détection de fichiers d'accroche pam_script.so dans /etc/security/
    • Intégrité des fichiers de configuration — configurations PAM modifiées appartenant à un paquet → CRITIQUE
    • Vérification des bibliothèques LD_PRELOAD dans pam_env.conf et ~/.pam_environment
    • Scan général de /etc/security/
  • Scripts MOTD (/etc/update-motd.d/) — vérification de paquet ; modifié → CRITIQUE
  • Aides de crédentiel Git et paramètres core.pager — analyse de contenu pour tous les utilisateurs
  • Webshells dans les répertoires web courants

8. Persistance SSH

  • ~/.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É/CRITIQUE

9. Détournement de binaires

  • Vérifie les binaires système installés par rapport à la base de données des paquets (dpkg -V sur Debian/Ubuntu, rpm -Va sur RHEL/CentOS)
  • Fichiers modifiés dans /usr/bin, /usr/sbin, /bin, /sbin → résultat CRITIQUE
  • Modules PAM modifiés dans /lib/security → résultat CRITIQUE
  • Les fichiers de configuration (conffiles dpkg) sont exclus pour éviter les faux positifs

10. Chargeur d'amorçage et initramfs

  • Injection du paramètre noyau init= dans GRUB (/etc/default/grub, /etc/default/grub.d/*.cfg)
  • Scripts d'init déposés à la racine /
  • Modules initramfs Dracut avec accroches pre-pivot écrivant dans /sysroot/etc/shadow
  • Scripts d'accroche initramfs-tools Ubuntu dans /etc/initramfs-tools/scripts/ et /hooks/
  • Images /boot/initrd.img-* récemment modifiées (basé sur mtime)

11. Manipulation de Polkit (PolicyKit)

  • Fichiers .pkla avec ResultAny/ResultInactive/ResultActive=yes inconditionnels
  • Octrois d'identité générique (unix-user:*)
  • Fichiers .rules avec polkit.Result.YES inconditionnel (Polkit basé sur JavaScript >= 0.106)

12. D-Bus et NetworkManager

  • Enregistrement de service système D-Bus malveillant Exec= (/usr/share/dbus-1/system-services/)
  • Directives de politique D-Bus joker allow own="*" ou send_destination="*"
  • Scripts de répartiteur NetworkManager (/etc/NetworkManager/dispatcher.d/)

13. Règles Udev

  • Directives Udev RUN+= exécutant des commandes ou scripts arbitraires (/etc/udev/rules.d/, /lib/udev/rules.d/)
  • Règles injectées en runtime dans /run/udev/rules.d/
  • Motifs de délégation at/cron dans RUN+= (contournement courant de la restriction de premier plan)

14. Évasion de conteneur

  • Conteneurs Docker privilégiés (--privileged, --pid=host)
  • Montages bind 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
  • Dockerfiles dans des répertoires inscriptibles par l'utilisateur contenant des techniques d'évasion

Catégories