JournalTerrain

perfctl sur un serveur Ubuntu : ce qu'on a vu, et comment le repérer chez vous

Un mineur et un rootkit installés depuis au moins une semaine sur un serveur exposé à internet. On y a installé Hermian pour observer une vraie infection. Voici les traces qu'elle laisse et les commandes pour les chercher.

À retenir+

  • Le malware se cache via /etc/ld.so.preload et se réinstalle par crontab et .profile.
  • En une heure : 127 alertes, dont 4 critiques.
  • Une machine infectée à ce point se réinstalle, elle ne se nettoie pas.

Le contexte

Ubuntu 24.04, noyau 6.8, exposé à internet. Le malware perfctl y tournait depuis au moins une semaine : un mineur de cryptomonnaie et un rootkit chargé par /etc/ld.so.preload. On n'a lancé aucun test, le but était d'observer.

Ce qu'Hermian a remonté

En une heure environ : 127 alertes (4 critiques, 75 hautes, 37 basses, 11 informatives) sur 30 255 événements, pour 1,7 % de CPU et 17 Mo de mémoire. La plupart venaient des connexions sortantes du mineur, chaque nouvelle destination déclenchant sa propre alerte.

  • un faux serveur web qui lance un shell, et une exécution depuis un dossier caché dans /tmp ;
  • la réécriture de la crontab de root et de .profile, à chaque réinstallation du malware ;
  • la ligne dans ld.so.preload, en critique ;
  • LD_PRELOAD dans des processus sans session, et une clé SSH cachée.

Les mêmes traces, à chercher chez vous

cat /etc/ld.so.preload
crontab -l -u root
ls -la /tmp /dev/shm /var/tmp
grep -l LD_PRELOAD /proc/*/environ 2>/dev/null
ss -tunap

Attention : si le rootkit est actif, ls et ps peuvent mentir. Comparez avec un busybox statique apporté sur une clé USB.

Ce qu'Hermian n'a pas vu

Des programmes déguisés en fichiers .so dans /usr/lib, des attributs immuables, des binaires antidatés, un binaire SUID déjà présent, des processus cachés, et le trafic Tor. Chacun est une piste de règle pour les prochaines versions.

Ce qu'on a corrigé

Le rootkit se chargeait aussi dans le démon Hermian : corrigé le 18 octobre (#92). À la désinstallation, dpkg gardait le paquet listé : corrigé aussi (#90). La machine, elle, sera réinstallée depuis une image propre.