Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

LD_PRELOAD hijacking forensics

forensics

Définition

LD_PRELOAD est une variable d'environnement Linux permettant de charger une bibliothèque partagée avant toutes les autres lors du démarrage d'un processus. Bien que conçue pour des usages légitimes (remplacement de fonctions de bibliothèque pour les tests, débogage), LD_PRELOAD est massivement exploitée par les rootkits Linux pour intercepter les appels système et masquer leurs activités. Un rootkit utilisant LD_PRELOAD fonctionne ainsi : il crée une bibliothèque partagée (.so) qui redéfinit des fonctions libc courantes comme readdir (utilisée par ls), open, read, connect, ou getdents64. En se chargeant avant la libc via LD_PRELOAD, cette bibliothèque malveillante intercepte les appels de ces fonctions et filtre les résultats — par exemple, en excluant ses propres fichiers de la liste retournée par readdir, rendant le rootkit invisible à la commande ls. Pour la persistance via LD_PRELOAD, les attaquants configurent la variable dans plusieurs endroits : /etc/ld.so.preload (fichier système lu par le dynamic linker pour tous les processus, nécessite un accès root pour modification), les fichiers de configuration shell (/etc/profile, /etc/environment, ~/.bashrc, ~/.profile), ou les fichiers de configuration de services spécifiques. La détection forensique de LD_PRELOAD malveillant passe par plusieurs méthodes. Vérifier /etc/ld.so.preload — sa présence est déjà suspecte sur la plupart des systèmes de production, et son contenu doit pointer vers des bibliothèques légitimes connues. Vérifier les variables d'environnement LD_PRELOAD dans /proc/[PID]/environ pour chaque processus actif. Comparer les sorties de commandes natives (ls, netstat) avec les appels système équivalents (strace ls) — si ls n'affiche pas ce que strace montre, un hook LD_PRELOAD est probablement actif. L'outil 'unhide' est spécifiquement conçu pour détecter les processus et fichiers cachés par des rootkits (y compris LD_PRELOAD), en comparant les informations obtenues via différentes interfaces du système.

Fonctionnement

Le linker dynamique ld-linux.so lit LD_PRELOAD (env var) et /etc/ld.so.preload avant de charger les autres bibliothèques. Les symboles définis dans la bibliothèque preloaded shadowing les symboles identiques dans les autres bibliothèques chargées après. Le résultat est que l'appel à 'readdir()' depuis ls appelle la version malveillante dans le rootkit plutôt que celle de la libc.

Application DFIR

Détection LD_PRELOAD rootkit : 1) cat /etc/ld.so.preload → fichiers listés = suspects, 2) find /proc/*/environ -readable | xargs grep -la LD_PRELOAD → processus avec LD_PRELOAD défini, 3) strace ls /tmp 2>&1 | grep open → comparer avec ls /tmp (divergence = hook actif), 4) ldd /sbin/ls → bibliothèques chargées par ls (vérifier les inconnues), 5) Comparer 'ls -la /lib' avec 'find /lib -maxdepth 1 -name *.so*' via strace → discordance = fichiers cachés.

Outils

Détection : unhide (processes, ports, filesytem scans), rkhunter --check (LD_PRELOAD spécifique : /etc/ld.so.preload), chkrootkit. Analyse : strace, ltrace (library call tracing), objdump -T fichier.so (symboles exportés par la bibliothèque suspecte), strings fichier.so. Live forensics : AVML (dump mémoire Linux), Volatility Linux (analyse du dump). /proc/*/maps → bibliothèques chargées par chaque processus.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis