Et bien à vrai dire, il n'a pas grand chose de particulier ce Conficker. Il n'utilise pas de 0day de derrière les fagots, tous les antivirus[1] le détectent à peu près correctement, il ne fait pas preuve de techniques d'infection ou de dissimulation hautement sophistiquées ou jamais vues, etc. On serait joueur qu'on pourrait se prendre à dire que c'est un ver relativement conforme à l'état de l'art. En fait, c'est peut-être ça qui le rend spécial. Qu'il fasse correctement ce pour quoi il est conçu... Que ses concepteurs ne se soient pas pris les pieds dans le tapis comme cela nous a tant de fois sauvé la mise par le passé...


Prenons par exemple le vecteur d'infection principal. Il s'agit d'une vulnérabilité dans SVCHOST.EXE publiée en urgence le 23 octobre 2008 sous le désormais célèbre sobriquet MS08-067. Bien l'exploitation de cette faille dans la nature date d'avant cette annonce, la première version de Conficker en tant que tel a été détectée fin novembre, suivie de quatre variantes dont la dernière date de la semaine dernière. Ce qui veut dire qu'il est sorti un mois après la sortie en urgence du patch. Pratiquement jour pour jour... Là où Blaster devenait opérationnel en à peine plus d'une semaine...

Nous étions nombreux à penser que Blaster et Slammer avaient quelque peu vacciné la planète contre l'absence de mises à jour ou leur application tardive. Conficker nous montre qu'il n'en est rien. Ou presque avanceront les mauvaises langues. Il y a certes les impératifs opérationnels, mais bon, un mois, ça laisse du temps. Mais il y a des excuses plus surprenantes. Vous en trouverez par exemple qui vous diront que si le patch n'a pas été appliqué, c'est justement parce qu'il a été mis à disposition... en urgence... En dehors des cycles de publication bien établis, et qu'à ce titre, il sortait des procédures de mises à jour bien calées sur le second mardi du mois. Et comme l'update de novembre ne le reprenait pas, il est parfois passé à travers la raquette. Patch Tuesday fail... Ça vous fait marrer ? Ça pourrait effectivement être drôle et figurer au panthéon des perles de la maintenance si ça n'était pas aussi navrant. J'ai même rencontré des gens dont le sous-traitant s'est justifié de son manque de diligence en leur explicant de but en blanc que l'application des patches urgents de Microsoft ne figurait tout simplement pas au contrat... Sigh..

Et puis Conficker.B est arrivé. Avec un très joli score lui aussi : F-Secure estimait début janvier qu'il avait infecté jusqu'à un million de machines en 24 heures... C'est que cette nouvelle variante nous apportait deux nouveaux vecteurs d'infection. Terribles ?

Le premier consiste à se répliquer sur les lecteurs montés, avec en particulier l'utilisation du système d'AutoRun/AutoPlay sur les périphériques de stockage amovibles. Ce n'est pas comme si ça faisait une éternité que les mises en garde fusent contre ces fonctionnalités... Au point qu'il n'y a pas grand à en dire de plus, sinon saisir l'occasion pour signaler la sortie d'un nouvelle version de l'excellent outil Autoruns qui vous permettra de vérifier et contrôler ce genre de joyeusetés, même s'il vaudrait bien mieux les désactiver tout simplement, ce que ne fait pas complètement le patch sorti en février.

Le second vecteur, c'est l'exécution via les partages administratifs accessibles, qu'ils soient ouverts aux quatre vents ou protégées par un mot de passe, puisqu'il arrive avec un petit dictionnaire. Hé oui, encore une histoire de mots de passe faibles, exploitation qui a jadis été qualifié de "pont-aux-ânes de la sécurité informatique". Pour autant que je sache, il s'agit bel et bien d'un simple dictionnaire, et non d'un brute-forcer... Encore moins du pass-the-hash... Et ben oui, ça marche, et pas trop mal d'ailleurs considérant la faible taille de la liste utilisée. Le truc intéressant, c'est que Conficker s'est traduit par un magnifique DoS des familles sur pas mal de réseaux sur lesquels ça n'a pas marché, entraînant le verrouillage d'un grand nombre de comptes utilisateurs dans l'heure qui suivait l'introduction du ver sur le réseau. Excellent moyen de détection au demeurant...


Ne vous méprenez pas sur l'objet de ce billet qui ne s'appelle pas "Tout ce que vous rêvez de savoir sur Conficker". Je n'essaye pas de vous livrer une énième description du ver, puisque vous pouvez en trouver à la pelle sur la toile, mais plutôt de vous montrer combien ce ver ne présente pas d'innovation fulgurante. Il s'appuie juste sur des mécanismes connus et, si on peut dire, rodés : faille critique dans Windows, stockage amovible, partages administratifs. Mais il le fait bien. Trois vecteurs, donc, qui exploitent trois grands classiques : les systèmes pas à jour, les mots de passe faibles ou inexistants et les médiums amovibles. Pour sa protection et ses mises à jour, c'est pareil, c'est du classique là encore, mais bien utilisé. Ce qui ne minimise en rien le travail de reverse engineering qui a été fourni pour l'analyser, ni les techniques de détection qui en ont découlé.

Avec les nouvelles versions, Conficker se fait de plus en plus difficile à détecter et nettoyer. Il utilise du packing quand il se copie. Il réinitialise la base de restauration. Il empêche les mises à jour en bloquant pas mal de sites en rapport avec la sécurité, dont en particulier Windows Update et les éditeurs d'antivirus. Du coup, difficile par exemple d'appliquer le fameux "Malicious Software Removal Tool" de Microsoft dont une nouvelle mouture est poussée chaque mois dans des mises à jour automatiques qui ne se font plus. Il se débarasse également des fonctionnalités et services de sécurité quand il le peut, et s'attaque aux anti-malwares à partir de la version D. Rien de bien classieux, mais ça marche.

Pour les updates, alors que les versions A et B s'appuyaient soit sur le classique téléchargement en HTTP à partir de domaines générés pour l'occasion, ou la réinfection via SMB, la version C va introduire la fameuse distribution de mises à jour basée sur un réseau Peer-to-Peer. Fonctionnalité qui a généré un vaste émoi dans la communauté. Comme si personne n'avait évoqué ce genre de possibilité avant, et surtout comme si personne ne l'avait jamais fait. Alors que quand on y réfléchit un peu, le P2P apparaît comme une évidence pour la constitution de botnets et assimilés. C'est simple, résilient, rapide et ça a le bon goût d'anonymiser la source. Que du bon.

Et puis parlons-en de ces mises à jour. Pour éviter que le réseau global soit infiltré comme ce fut fait pour Storm, en plus d'être chiffrées à la va-vite, elles sont surtout signées. Correctement en plus. SHA-1 et RSA 1024 bits pour la version A, le tout récent MD6[2] et RSA 4096 à partir de la version B. Bref, du state of the art de la signature, sans horrible bévue d'implémentation. Ni plus, ni moins.


Si le niveau d'infection est consternant, le fond du problème est véritablement ailleurs. Car au-delà de la psychose que génère ce ver[3], c'est surtout notre incapacité à le contenir qui devrait nous alarmer plus que le nombre d'infections ou la fameuse mise à jour du 1er avril. Dans un autre registre de réaction, j'ai parfois entendu çà et là que Conficker n'était pas une grosse menace parce qu'il "ne faisait rien". Certes, jusqu'à la version D, le ver se contente de se mettre à jour. La version E quant à elle essaye de vous installer le spambot Waledac[4] et le scareware Spy-Protect 2009 avant de s'effacer. Pas de quoi affoler dans les chaumières somme toute. Ce qui n'a pas manqué de générer son lot de "tout ça pour ça"... Certes, mais c'est oublier un peu vite que Conficker, grâce à son mécanisme d'update, tient plus du bot que du simple ver, et comme le faisait remarquer très justement Richard Bejtlich, on devrait probablement plus parler de compromission que d'infection. Et si on le prend sous cet angle, c'est déjà un peu plus inquiétant...

Mais il y a déjà des leçons à retenir de tout ça. Car ce que nous apprend Conficker, c'est qu'en 2009, on en est encore à travailler sur des problèmes de base qui nous occupent depuis des lustres : application des patches de sécurité, durcissement des mot de passe, gestion des supports amovibles, clés USB en tête. Qu'en 2009, ces mesures de sécurité dont on nous rabat les oreilles depuis une dizaine d'années[5] ne sont toujours pas suffisamment appliquées pour éviter qu'un ver tel que Conficker ne donne lieu à une infection de grande ampleur comme celle-ci. Et ça, c'est beaucoup plus qu'inquiétant.

Parce que sans aller jusqu'à affirmer que la sécurité informatique soit un échec, il est clair que dire qu'elle peine parfois à donner des résultats est un doux euphémisme. Et Conficker en est une preuve... De plus...

Notes

[1] Ou presque...

[2] Il serait d'ailleurs intéressant de regarder si l'implémentation utilisée est vulnérable aux failles découvertes par Fortify dans la première implémentation de référence...

[3] Il paraît que des réseaux entiers ont été coupés du Net le 1er avril... Comme si le ver ne pouvait pas se mettre à jour le 2...

[4] Également poussé par Storm.

[5] Même bien plus...