JournalDétection
/etc/ld.so.preload : le fichier à vérifier en premier
Une seule ligne dans ce fichier suffit à injecter du code dans chaque programme du serveur. Voici comment le contrôler, garder la preuve et le nettoyer.
À retenir+
- Sur un serveur sain, le fichier n'existe pas ou il est vide.
- S'il contient une ligne, on garde la preuve avant de toucher à quoi que ce soit.
- On le vide après avoir isolé la machine, puis on prévoit une réinstallation.
Ce que fait ce fichier
Avant de lancer un programme, le chargeur de Linux lit /etc/ld.so.preload. Chaque bibliothèque qui y figure est chargée dans le programme, avant toutes les autres. La fonction existe pour le débogage. Un attaquant s'en sert pour entrer dans ls, ps, sshd ou cron sans modifier leurs binaires, et leur faire cacher ses fichiers et ses processus.
La vérification
ls -la /etc/ld.so.preload
cat /etc/ld.so.preload
Si la commande répond que le fichier n'existe pas, ou si le fichier est vide, tout va bien. Une ligne, en revanche, demande une enquête.
Les rares usages légitimes
Sur Raspberry Pi OS, on peut y trouver libarmmem. L'outil de journalisation Snoopy s'y inscrit aussi. Dans les deux cas, la bibliothèque appartient à un paquet installé :
dpkg -S libarmmem
Une bibliothèque qu'aucun paquet ne possède, placée dans /lib sous un nom anodin, est un signal fort de compromission.
Garder la preuve
Copiez le fichier et chaque bibliothèque listée sur une clé USB ou un disque externe, jamais sur le disque suspect :
cp -a /etc/ld.so.preload /mnt/ir/
for l in $(cat /etc/ld.so.preload); do
cp -a "$l" /mnt/ir/; sha256sum "$l"; dpkg -S "$l" || echo "aucun paquet : $l"
done
Nettoyer
Une fois la machine isolée du réseau et les preuves sorties, videz le fichier sans le supprimer :
truncate -s 0 /etc/ld.so.preload
Les processus déjà lancés gardent la bibliothèque en mémoire. Il faut au minimum les relancer. Sur une machine compromise à ce niveau, la seule remise en état fiable est une réinstallation.
Ce qu'on a vu sur le terrain
Sur un serveur infecté par le malware perfctl, le fichier contenait /lib/libgcwrap.so. Cette bibliothèque cachait le mineur aux outils de la machine, et se chargeait jusque dans le démon Hermian. On a corrigé ce dernier point le 18 octobre (#92). Hermian a signalé la ligne en critique.
Ces commandes viennent de notre guide de réponse à incident Linux.