Un virus polymorphe est un virus informatique qui, lors de sa réplication, modifie sa représentation, ce qui empêche un logiciel antivirus de l'identifier par sa signature. Bien qu'en apparence le virus change (du point de vue d'un programme antivirus qui lit le programme infecté), le fonctionnement du virus (sa méthode d'infection et sa charge utile) reste le même : les algorithmes ne sont pas modifiés, mais leur traduction en code-machine l'est.
Fonctionnement
La plupart des logiciels antivirus tentent d'identifier les virus en recherchant une séquence binaire spécifique au virus, sa signature. Le polymorphisme de certains virus empêche la définition de telles signatures, car il n'existe plus de séquence invariable suffisamment longue pour être spécifique au virus, c'est-à-dire pour ne pas risquer de se retrouver dans d'autres programmes non malveillants et de causer de fausses alertes. En règle générale, le code viral dispose d'un moteur de codage et de décodage en fonction de la technique employée afin de varier son code. Cependant, ce moteur constitue en lui-même une invariance généralement utilisée par les éditeurs d'antivirus afin de donner une signature sur les codes viraux, ce problème est alors traité par une catégorie spécifique appelée virus métamorphes.
Il existe différents moyens de modifier le code d'un virus sans modifier son fonctionnement.
Chiffrement
Le code est tout simplement traité comme une donnée et chiffré différemment à chaque génération du virus ; encore faut-il, pour que le virus soit fonctionnel, qu'un code de démarrage soit présent en clair dans un programme infecté par le virus pour exécuter la fonction de déchiffrement, rendre exécutable le code déchiffré (invalider le cache d'instructions, régler les droits d'exécution de la zone mémoire), et enfin appeler du code déchiffré.
Bien évidemment, le code de déchiffrement, qui ne peut pas lui-même être chiffré, peut servir à établir une signature, de même que le code de lancement de la partie déchiffrée, ce d'autant plus que l'ensemble constitue un programme auto-modifiant, ce qui est particulièrement rare de nos jours sur les ordinateurs personnels (les seuls qui soient concernés par les virus)[réf. nécessaire] , et donc a peu de risques d'être présent dans un logiciel normal (non-malveillant).
Métamorphisme
Pour pallier le problème de la fonction de décodage et de démarrage constante, les virus métamorphes utilisent une autre technique pour cacher leur code de chargement : ils réécrivent leur code-machine différemment à chaque génération soit en insérant des instructions inutiles (rembourrage), soit en utilisant différentes instructions ayant le même effet, soit en modifiant plus ou moins profondément leur structure interne par une séquence décompilation/re-compilation.
Historique
Le premier virus polymorphe connu, appelé 1260 (en), a été écrit en 1990 par Mark Washburn.
Articles connexes