Lors de la prochaine Defcon 16, qui aura lieu du 8 au 10 août prochains à Las Vegas, se déroulera un concours d'un genre un peu particulier dont le but est tout simplement de contourner les logiciels antivirus.

Nommé Race-to-Zero - Threat Obfuscation Contest, il consistera pour ses participants à mettre en oeuvre les techniques de leur choix afin d'évader la détection par différents moteurs antiviraux de plusieurs exemplaires de logiciels malveillants donnés. La première équipe ou personne qui réussit à évader tous les antivirus tout en gardant des codes d'exploitation et des charges utiles fonctionnels gagne !

Dans les règles du concours, les deux éléments suivants peuvent être mis en avant :

  • "Modified samples will not be submitted to antivirus vendors unless authorised by contest participants"
  • "Techniques used to perform mutations will not be submitted to antivirus vendors without contestants approval"

Cela ne va évidemment pas sans troubler les éditeurs concernés qui réagissent plutôt sèchement à cette annonce. L'un des premiers à réagir a été Kaspersky qui, par la voix de son fondateur, parle de concours "anti éthique" ("it is 100% NOT ethical! Writing malware is a crime") et évoque un possible problème de législation américaine ("Is this 'contest' even legal in the US?"). Eugene Kaspersky indique que sa société reçoit déjà suffisamment de malware chaque jour ; un tel concours n'aura selon lui que l'effet d'inciter les cyberciminels à obscurcir encore un peu plus leur virus ("This will send a clear message to thousands of e-criminals: do more obfuscation").

Une autre réaction est celle de McAfee qui n'est pas plus enthousiasmé par la nouvelle. Après avoir rappelé que les antivirus actuels n'ont jamais été conçus pour une détection absolument parfaite ("intended to detect and clean known threats" pour la détection à base de signature, et "basing detection on known bad techniques" pour la détection heuristique), McAfee botte en touche en indiquant que les tests ne semblent de toute façon pas être fiables puisqu'ils n'intègreront qu'une détection statique, qui n'est qu'une partie du processus antiviral ("The results they get will not be what an average user will get"). De plus, un antivirus n'est lui-même qu'un des éléments de la sécurité d'un système d'information ("AV is intended to be one tool in a complete security arsenal").

Prenons un peu de recul. La détection virale est un problème mathématiquement indécidable ; cela a été démontré par F. Cohen dans un ouvrage paru en 1987. Pour ainsi dire, il n'existe pas d'algorithme qui prenne en entrée un algorithme et qui retourne "vrai" si et seulement s'il s'agit d'un virus (la définition d'un virus étant donnée). La partie est donc plutôt mal engagée pour les éditeurs d'antivirus et un tel logiciel ne saurait être parfait. Certains outils tentent de s'en rapprocher, comme par exemple Red Curtain de Mandiant qui est capable de fournir un "indice de suspicion" sur tout binaire, à partir de règles prédéfinies.

Dans le cadre d'un antivirus classique, une détection des menaces connues et d'une parties des menaces inconnues reste possible en se basant principalement sur :

  • un ensemble de signatures statiques, ce qui revient grossièrement à rechercher des octets dans un binaire
  • un ensemble de règles heuristiques ou comportementales dynamiques, permettant de repérer des "mauvais" comportement (par exemple des techniques d'injection de code inter-processus comme le classique mais toujours utilisé OpenProcess/VirtualAllocEx/WriteProcessMemory/CreateRemoteThread ou la modification du fichier C:\WINDOWS\system32\driver\etc\hosts lors de la mise en Å“uvre d'une protection de type HIPS). Problème : ces comportements doivent aussi être connus à l'avance, ce qui revient plus ou moins à faire des signatures de comportement...

Cela nous ramène comme toujours au fameux jeu du chat et de la souris entre les éditeurs de solutions antivirales et les créateurs de virus. Ces derniers utilisent des techniques de plus en plus sophistiquées, par exemple en allant directement modifier certaines structures bien choisies du noyau comme le ferait (ironiquement) un logiciel de sécurité de type anti-virus ou pare-feu, ce qui rend ces malware de type II (au sens de la classification de J. Rutkowska) de plus en plus furtifs.

Au final, c'est l'utilisateur qui reste la clé de voûte du système et qui décidera ou non de mettre à jour son système, de chiffrer ses données ou de cliquer sur le lien "ta tof fais koi sur ce site" qu'il vient de recevoir d'un de ses contacts MSN...