J'ai été appelé plusieurs fois ces trois dernières semaines, pour venir désinfecter des ordinateurs manifestement mal en point.

Le vecteur d'infection semblait être régulièrement Live Messenger (ex MSN-Messenger) : une fenêtre de discussion provenant d'un correspondant connu propose de télécharger un fichier de photographies. Malheureusement, le message ne provient pas vraiment du correspondant en question, mais du virus installé sur son ordinateur, qui utilise le carnet de contacts de Live Messenger pour se propager.

En cliquant sur le lien, on installe le virus. Le virus est zippé, de façon à compliquer son analyse (Avast, par exemple, n'est pas configuré par défaut pour analyser les fichiers compressés).

Bien que rapide à se propager, le virus ne semblait pas très difficile à éradiquer : on retrouve dans les clés de démarrage d'évidents appels à d'improbables fichiers (par ex. rrxzzpqj.exe) non documentés : pas de nom d'éditeur, pas de numéro de version... La solution est facile : on note tous les appels à ces fichiers illégitimes, on démarre sur un live CD, on supprime ou renomme les fichiers concernés et on redémarre. En général, les virus n'y résistent pas.

Sauf que.

Au redémarrage, certains des fichiers supprimés étaient de retour, accompagnés de certains signes qui ne trompent pas : longueur inhabituelle à l'ouverture de session, ralentissement à l'ouverture du navigateur internet, occupation mémoire très supérieure à la somme des processus actifs, suroccupation processeur...

Je me suis dis que j'avais dû oublier une clé de démarrage ou mal renommer un fichier. J'ai donc réitéré l'opération.

Rebelote...

Allons plus en profondeur, me suis-je dis. J'ai désativé la restauration du système, afin de prévenir toute restauration des fichiers vérolés situés dans les répertoires système de Windows, vérifié ma liste de fichiers, rebooté sur mon livecd, j'ai supprimé au passage tous les temporaires de toutes les sessions (y compris LocalNetwork, All Users et autres sessions systèmes), contrôlé tous les fichiers à supprimer...

... et dix de der.

J'ai commencé à soupçonner un rootkit - supposition que j'avais écartée de prime abord car les rootkits ne sont normalement pas détectables aussi facilement : on ne peut pas voir les fichiers qui les composent. Or je pouvais clairement voir des fichiers infectés. Malgré tout, ceux-ci réapparaissant mystérieusement à chaque reboot, j'étais obligé de supposer un service caché.

J'utilise donc conjointement Rootkit Revealer et BlackLight (dont les éditeurs sont respectivement Sysinternals/Microsoft et F-Secure) et bingo : je tombe sur des fichiers cachés. Beaucoup même, et beaucoup trop : pour ajouter à la confusion et me compliquer la vie, le rootkit cache des répertoires entiers au lieu de seulement quelques-uns, et c'est plusieurs dizaines de lignes qui apparaissent, pointant du doigt des fichiers pour la plupart légitimes !

Je finis par repérer dans cette liste une clé de registre indiquant un service inconnu, interdite à la lecture et par conséquent inscrutable qui me semble correspondre au point d'appel du rootkit lui-même.

Muni de ces nouvelles références, je suis retourné sur mon liveCD pour aller supprimer le rootkit. De retour dans le système, je constate avec plaisir que les ralentissements au démarrage ne se font plus sentir : ils étaient causés par l'ouverture puis la dissimulation du service caché.

Tout semble rentré dans l'ordre...

... et je vois soudain réapparaitre un certain fichier dans %userprofile%...

Je repasse mes deux antirootkits qui ne détectent plus rien. Je retourne vérifier les clés de démarrage, je trouve bien le fichier que j'ai vu réapparaitre mais aucun autre. J'avoue en avoir perdu mon latin : comment ce fichier a-t-il fait pour se reconstituer ? Il faut bien qu'il soit appelé de quelque part et tous les autres appels au démarrage semblent légitimes. Je supprime à nouveau le fichier et redémarre. Bien sûr, à l'ouverture, il est déjà là et me nargue. Il est lié à l'ouverture de svchost, ce qui le rend virtuellement impossible à supprimer (voir à ce sujet le court billet de Marc Blanchard sur les mutex).

Le virus doit être une backdoor ou un downloader, car en quelques minutes, il télécharge sur internet de nouvelles versions des virus que j'avais supprimé. Cent fois sur le métier, tu remettras ton ouvrage, me dis-je, et je recommence la désinfection.

En désespoir de cause, et après avoir tenté d'autres approches plus longues, j'ai finalement tenté une astuce toute simple et qui s'est révelée efficace. Un fichier dans un répertoire donné est unique. Or ce virus reproduisait avec constance un fichier toujours identique au même endroit du système de fichier. Je me suis donc demandé : que fera le virus s'il trouve la place occupée ? J'ai pensé que le programmeur du virus n'aurait pas paré à cette éventualité et que son code terminerait alors sur une exception.

J'ai donc redémarré mon liveCD, supprimé pour la énième fois le virus, mais j'ai aussitôt crée un fichier du même nom, vide, auquel j'ai placé des attributs de lecture seule et de fichier système - pour que le virus ne puisse pas le supprimer trop facilement, au cas où. Puis j'ai redémarré l'ordinateur.

L'astuce avait marché. Mon fichier était resté en place, et le système avait perdu sa lenteur et ses ralentissements sur Internet. Le processus Svchost était libre de tout mutex bizarre. Allant visiter l'observateur d'évènements, j'ai trouvé un assez grand nombre d'informations de File Protection System, qui avait semblé remettre de l'ordre dans les fichiers système de windows, dans lesquels le virus semblait s'être logé.

La désinfection avait fonctionné, mais je n'étais pas tout à fait satisfait, car je n'avais pas trouvé le mécanisme exact par lequel le virus se protégeait aussi efficacement.

J'eu l'occasion quelques jours plus tard de le découvrir enfin. Sur une autre machine, je remarquais les même symptômes : un grand nombre de souches de virus différents (une dizaine), la plupart supprimés sans effort, et dont le dernier semblait s'accrocher et revenir malgré tous mes efforts. Je pris le temps cette fois (ce qui me mis fort en retard, au passage) de passer les répertoires systèmes essentiels (/windows/, /system32/, /drivers/ et /dllcache/ pour être précis) et de rechercher les modifications par date. Je suis arrivé petit à petit à retracer la chronologie des infections, pour essayer de retrouver la souche la plus ancienne - probablement un downloader ou trojan, qui télécharge ensuite petit à petit d'autre virus, jusqu'à corrompre totalement le système.

Je vous passe les détails, mais je suis arrivé à - tout simplement - explorer.exe - le fichier qui régit le bureau, l'ouverture des fenêtre, de la session, bref, un des fichiers essentiels de Windows. Le virus s'appelle Patched. En effet, il patche explorer.exe, ce qui le rend indétectable, bien à l'abri d'un fichier système véritable, et hors de portée d'une analyse virale rapide (et la rapidité, dans mon métier, est essentielle).

Bien entendu ce n'est pas une technique nouvelle : c'est même une technique virale de base. Mais je ne l'avais pas vu en oeuvre depuis longtemps, la plupart des virus utilisant leur propre code et essayant de le dissimuler, plutôt que de s'insérer dans des fichiers Windows (dont explorer.exe qui est en théorie protégé, et qui, pour être infecté, doit à mon avis faire planter la machine).

J'ai parlé au début de cet billet du virus se propageant par MSN : ce n'est pas là à mon avis le seul vecteur d'infection. Ce que j'ai constaté de cette nouvelle génération de virus est plutôt inquiétant : un virus peut se propager par mail, par chat instantané, par faille sur un site web, par social engineering (c'est à dire exploitant des faiblesse humaines et non informatiques !), par téléchargement... Les virus, une fois installé, tendent à se faire discrets, voire dormants, de façon à ne pas provoquer de recherche de virus de la part de l'utilisateur. Les technologies de dissimulation se multiplient : arrêt discret de l'antivirus, inclusion dans un fichier windows légitime, "encapuchonnage" par rootkit, nommage parasitaire des fichiers (svchosts au lieu de svchost par exemple)... Il va devenir de plus en plus difficile et délicat de détecter et d'éradiquer avec une très grande certitude les virus les plus robustes et les mieux écrits.

En outre, les contre-mesures habituelles, dont la plus évidente est l'antivirus, ne sont pas toujours à la hauteur. J'ai passé le fichier explorer.exe à VirusTotal afin de voir combien d'antivirus réagissent à cette souche précise. La réponse est édifiante : 11 sur 32 - 34% seulement des antivirus que VirusTotal utilise ont détecté la menace. Notamment, Avast, Kasperky et Norton n'ont pas réagi au fichier, ce qui est inquiétant dans la mesure où ils sont très répandus. Je joins au billet trois analyses sur trois différents fichiers pour que vous puissiez constater et apprécier la qualité de détection des antivirus.

Pour terminer sur le sujet et sur les antivirus : j'ai beaucoup installé de copies d'Avast ces dernières années. Il est gratuit pour les particuliers, en français et relativement efficace. Tout est dans le relativement : ces derniers temps, je le trouve bien fragile face au rootkits et à certains spywares. Professionnellement, je ne peux plus le recommander comme fiable.

Il existe un autre antivirus, gratuit pour les particuliers, très peu cher dans sa version complète (19.95€ TTC), que je trouve très léger et très efficace (vous remarquerez dans les fichiers joints qu'il a detecté toutes les souches), régulièrement bien noté dans les comparateurs d'antivirus, qui s'appelle Antivir de la société Avira. Version gratuite ou payante, cet antivirus me semble un bon choix.

Pour la petite histoire, il y a 14 mois, j'avais mis la main sur une version de virus inconnue de Avast et de Antivir - j'avais donc envoyé un exemplaire du fichier à ces deux éditeurs. Seul Avira avait accusé réception du fichier, et avait rapidement ajouté la définition du virus sous le nom TR/Agent.256512. Avast ne m'a jamais répondu, et a mis plus de six mois à ajouter le virus sous le nom de Rootkit/Navipromo.

Pour  avoir une alternative, F-Secure (qui est sous marque blanche l'antivirus-firewall d'Orange), bien que plus cher, lourd et gourmand en ressources, est très régulier dans ses bons résultats.

Enfin , n'oubliez jamais que l'antivirus n'est qu'un maillon de la chaine de sécurité, dont le premier est l'utilisateur lui-même. Aucun antivirus n'est fiable à 100% - loin de là. La première des protections c'est la prudence dans l'ouverture de fichiers, de liens et de programmes - et la visite de sites !