
La protection en place était solide. Mais l’explorateur savait où trouver la faille dans la défense. Il avait été préparé à cela : pénétrer discrètement par la faille et s’introduire dans le système. L’explorateur remplit sa mission et introduit un espion, un voleur ou un agent secret qui va obliger le système à travailler pour son maître. Pourvu que la faille reste ouverte…
Il ne s’agit pas d’un épisode d’un jeu informatique, mais bien du scénario d’action des codes d’exploitation, ces programmes qui exploitent les vulnérabilités d’une application pour s’introduire discrètement dans l’ordinateur de la victime.
Vulnérabilités et codes d’exploitation
Une vulnérabilité est un défaut dans le code d’une application qui, dans certaines conditions, peut être exploité par un individu malintentionné pour atteindre son but. Le code d’exploitation est le programme qui exploite la vulnérabilité de l’application sur un ordinateur distant ou local pour réaliser la tâche malveillante.
La tâche principale du code d’exploitation reside dans l’infection de l’ordinateur à l’aide d’un programme malveillant déterminé. Étant donné que le code d’exploitation est rarement un fichier de grande taille, il contient dans la majorité des cas une fonctionnalité de téléchargement. En règle générale, toutes les actions malveillantes se déroulent à l’insu de l’utilisateur. Il peut arriver toutefois que le navigateur gèle, mais l’utilisateur inexpérimenté n’y verra rien d’alarmant.
Presque toutes les applications contiennent des vulnérabilités et les applications les plus répandues ne font pas exception à la règle. Quelle que soit l’attention que le développeur dévoue à son programme, il est pratiquement impossible d’éviter des erreurs dans le code. La vulnérabilité peut figurer dans l’application qui traite le format du fichier, ou dans la machine virtuelle qui exécute le travail du script. C’est pour cela que les individus malintentionnés intègrent les codes d’exploitation dans divers formats de fichier ou divers formats de protocole : JPEG, TIFF, BMP, GIF, ANI, LNK, etc. Il se peut que le fichier dans son ensemble soit un code d’exploitation, par exemple un script en JavaScript qui exploite une vulnérabilité dans Internet Explorer.
Dans l’écrasante majorité des cas, le code d’exploitation contient le code shell. Il s’agit d’une séquence d’octets qui forme un ensemble d’instructions machine et qui peut être exécutée par le processeur. En général, le code télécharge et exécute un programme malveillant complet sur l’ordinateur de la victime. Toutefois, il existe des vulnérabilités qui, au moment d’être exploitées, n’entraînent pas l’exécution du code shell. Ainsi, le code d’exploitation de la vulnérabilité CVE-2010-1885 dans le Centre d’aide et d’assistance de Microsoft exécute un code HTML qui contient normalement une balise <script> qui renferme le script malveillant chargé de réaliser l’une ou l’autre action. L’’exploitation de la vulnérabilité CVE-2010-2568 dans les fichiers LNK dont il est question ci-dessous entraîne le chargement d’une bibliothèque dynamique dans la mémoire.
Certains codes d’exploitation sont également dangereux parce qu’ils sont exécutés directement par une application de confiance. Prenons le cas par exemple d’une vulnérabilité dans un navigateur Internet qui lance le téléchargement d’un programme malveillant. Ici, le pare-feu ne bloque pas le téléchargement car il est exécuté par une application pour laquelle ce genre d’action est autorisé.
Votre ordinateur est menacé
Il existe plusieurs méthodes pour introduire le code d’exploitation dans l’ordinateur de la victime. La méthode la plus répandue consiste à infecter des sites légitimes. Les téléchargeurs de script Gumblar et Pegel sont le plus souvent utilisés à cette fin. Un script malveillant contenant une multitude de codes d’exploitation est téléchargé sur l’ordinateur des personnes qui visitent les sites compromis et infectés par ces programmes malveillants.
Dans ce genre d’attaque, les individus malintentionnés utilisent ce qu’on appelle un pack de codes d’exploitation, soit un ensemble de codes d’exploitation de vulnérabilités dans divers navigateurs et applications. La logique des individus malintentionnés est simple : Les applications installées varient d’un ordinateur à l’autre et par conséquent, l’utilisation de divers codes d’exploitation augmente la probabilité de pouvoir utiliser au moins l’un d’entre eux. Si Chrome et Adobe Reader sont installés sur l’ordinateur de la victime, deux applications dont les vulnérabilités ont été corrigées, mais que le moteur Java de Sun est vulnérable, un des codes d’exploitation, via la faille de Java, s’active et télécharge un programme malveillant sur l’ordinateur.
C’est ce qu’on appelle une attaque par téléchargement à la dérobée. Ces attaques sont particulièrement dangereuses car l’utilisateur ne se doute même pas qu’elle a lieu. Ce n’est pas un hasard si de nombreux programmes malveillants aussi dangereux et complexes que Zbot/ZeuS, TDSS, Sinowal ou Virut.ce sont diffusés à l’aide d’attaque par téléchargement à la dérobée.
Voici le schéma général d’infection d’un ordinateur par le bot Zbot/ZeuS.
Les explorateurs du cybercriminel