
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.
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.allowet/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.localet 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.sodans des chemins non standards scannés et vérifiés /etc/environmentLD_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 directivesinstallsont analysées pour des cibles de commandes suspectes ; lesblacklistde 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.koviamodinfoet 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
.sovérifiés via le gestionnaire de paquets ; les directives@includesont suivies ;/etc/pam.confinclus - 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.sodans/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.confet~/.pam_environment - Scan général de
/etc/security/
- Tous les modules
- 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_keyspar utilisateur — clés récemment modifiées signalées ; optioncommand=analysée pour des motifs suspects~/.ssh/rcpar 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 -Vsur Debian/Ubuntu,rpm -Vasur 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
.pklaavecResultAny/ResultInactive/ResultActive=yesinconditionnels - Octrois d'identité générique (
unix-user:*) - Fichiers
.rulesavecpolkit.Result.YESinconditionnel (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="*"ousend_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/crondansRUN+=(contournement courant de la restriction de premier plan)
14. Évasion de conteneur
- Conteneurs Docker privilégiés (
--privileged,--pid=host) - Montages bind
docker.sockdans les conteneurs (contrôle total de l'hôte via l'API Docker) nsenter -t 1dans les points d'entrée de conteneurs ou Dockerfiles- Dockerfiles dans des répertoires inscriptibles par l'utilisateur contenant des techniques d'évasion