Sécurité et contrôle dans un monde Web 2.0 – Le web, premier vecteur d’infection (3)
5 min read
Sites légitimes, des menaces invisibles
Mais le meilleur véhicule pour distribuer le malware est sans contexte l’utilisation des sites légitimes. A la différence de sites malveillants, qui sont créés spécifiquement pour distribuer du malware, les sites légitimes bénéficient d’une bonne réputation, et les utilisateurs ont toute confiance dans leur contenu. De plus, dans la plupart des cas, l’accès à ces sites est autorisé par la politique d’usage acceptable des ressources internet de l’entreprise (via le filtrage d’url). La combinaison de la confiance des utilisateurs, de l’accessibilité et du volume de trafic que reçoivent ces sites en fait des cibles clés pour distribuer du malware.
Les équipes d’audit sécurité de White Hat Security estiment que désormais, plus de 79% des sites web qui distribuent des codes malicieux sont des sites légitimes, qui ont été piratés à cette fin. Mais pire encore, White Hat affirme que neuf sites sur dix pourraient être vulnérables à une attaque, avec sept sur dix qui sont vulnérables aux attaques de type cross-site Scripting (XSS, voir plus loin), et un sur cinq vulnérable à des attaques basées sur la technique d’injection SQL. Ce qui signifie que la plupart des logiciels malveillants ne sont pas téléchargés depuis des sites à problèmes potentiels (musique, pornographie, etc.) mais distribués à la base par des sites légitimes, utilisés comme véritables plateformes de distribution du malware. Le problème est donc réel et massif !
Mais comment des sites légitimes peuvent-ils distribuer du malware ? Tout d’abord, le hacker va pirater le site web en utilisant une technique d’attaque telle que :
• Cross-site Scripting (XSS)
Ce type d’attaque exploite une vulnérabilité régulièrement présente dans les applications web permettant à des utilisateurs malicieux d’injecter du code via aux utilisateurs qui se connectent au site. Ce code est alors exécuté par le navigateur de la victime. Ces attaques sont fréquemment conduites en utilisant des éléments html tels que les frame (cadres) et images, ou du JavaScript.
• SQL injections
Cette technique d’attaque tire partie d’une faille de sécurité d’une application interagissant avec une base de données, en injectant une requête SQL non prévue par le système et pouvant compromettre sa sécurité. Les hackers reposent sur le fait que les administrateurs des sites web ne valident pas les données rentrées par les utilisateurs dans des formulaires web (fenêtre de login, formulaires d’inscription), leur permettant ainsi d’injecter les commandes désirées afin de prendre le contrôle du site web.
• Buffer overflows
Le principe de cette vulnérabilité classique, mais toujours efficace, consiste à envoyer trop de données à une application par rapport à ce qui est prévu en stockage mémoire. Cela permet de créer un incident dans le programme d’exécution et au pirate de faire exécuter les commandes qu’il souhaite sur le serveur.
Eu égard au nombre de sites web légitimes qui délivrent du malware, il est clair que ce ne sont pas ces sites qui créent ou délivrent directement le code malicieux. En fait, le site est piraté en utilisant une des techniques évoquées ci-dessus, puis modifié pour rediriger automatiquement de façon transparente l’utilisateur vers une adresse IP ou un lien contenant le malware. C’est ce qui est arrivé à Business Week, Wired, CNET, Bank of India, et bien d’autres. La méthode la plus courante, utilisée pour manipuler le navigateur et lui faire télécharger le malware, est d’utiliser les iFrame.
Les attaques iFrame
En quoi consiste cette technique ? Une fois cette exploitation de vulnérabilité dans le site web utilisée, le pirate a la possibilité de modifier les pages du site pour que le malware soit distribué aux visiteurs lorsqu’ils viendront naviguer sur le site. Et bien souvent, ceci est réalisé grâce à la balise HTML iFrame (on parle donc souvent d’attaques iFrame). En effet, le langage HTML est basé sur l’utilisation de balises permettant de présenter et de formater les informations, textes, images, sons, vidéos, etc. que l’on souhaite afficher sur une page Web. La balise iFrame est l’une des composantes du langage HTML utilisée pour créer des pages Web sur Internet.
Quelques-unes des balises les plus connues sont <b> pour la mise sous caractères gras, <font> pour définir les règles de présentation des caractères (taille, couleur, etc.), <script> permettant d’inclure du code script tel que JavaScript, par exemple, pour dynamiser ou ajouter des fonctionnalités aux pages, <frame> pour inclure un cadre dans la page, etc. La balise iFrame signifie inline frame et s’écrit en HTML <iFrame>. Elle est utilisée pour inclure à l’intérieur d’une page HTML un autre document HTML, et particulièrement des informations stockées sur différents sites Internet. Les concepteurs de sites ont le plus souvent recours à la balise <iFrame> pour permettre l’affichage de publicités, ces dernières étant hébergées sur des serveurs leur étant dédiés.
Figure – Un site français légitime distribuant du malware
Figure – Le code HTML et la redirection iFrame
Le « drive by download »
Il suffit donc désormais qu’un utilisateur navigue sur le site web pour que le malware soit téléchargé sur son poste sans que l’utilisateur ne voie quoi que ce soit, et sans même qu’il ne clique sur une quelconque fenêtre. Le logiciel malveillant va tout simplement exploiter une vulnérabilité du navigateur Web pour s’installer tout seul sur le poste de l’utilisateur. Cette forme de téléchargement automatique du logiciel malveillant sans aucune action de l’utilisateur et sans que celui-ci ne s’en rende compte représente désormais la majorité des infections Web. C’est ce que l’on appelle le “drive-by download”, qui, combiné aux attaques iFrame, permet d’infecter de nombreux postes sans aucune interaction de l’utilisateur, l’attaque étant rendue totalement transparente, et ayant lieu sur un site que l’utilisateur visite sans doute régulièrement et dans lequel il place une confiance totale.
Schéma de l’attaque
En résumé, le schéma classique d’une attaque via un site légitime respecte les étapes suivantes :
Un pirate, grâce à une vulnérabilité du serveur Web ou à des failles dans le code des pages, parvient à corrompre une des pages d’un site web (disons par exemple une page d’un site de diffusion d’informations en ligne, donc considéré habituellement comme un site de confiance, www.newsenligne.com). Cette corruption se fait de plus en plus souvent par une technique dite d’injection SQL, consistant à injecter des instructions (par exemple la création de la balise iFrame) en langage SQL dans des – formulaires sur le site concerné. Le pirate ajoute sur une page du site une balise iFrame qui redirige les utilisateurs à leur insu vers un site contenant des contenus malveillants, géré par le pirate, disons par exemple le site www.yourspyware.com . De plus, il rend cette balise invisible à l’affichage grâce à une instruction HTML.
se connectant sur ce site très fréquenté, l’utilisateur télécharge le contenu du site et l’affiche dans son navigateur Web. Si l’utilisateur consulte la page infectée par le pirate, la page envoyée au poste de l’utilisateur contient désormais la balise iFrame invisible.
Tandis que l’utilisateur lit la page du site newsenligne, des connexions se lancent à son insu vers le site www.yourspyware.com. Son poste télécharge alors automatiquement des logiciels malveillants, par exemple un cheval de Troie, grâce à l’exploitation de vulnérabilités dans le navigateur web.
Le pirate a désormais accès au poste de l’utilisateur grâce à la porte dérobée ouverte par le Cheval de Troie. Le poste peut alors par exemple faire partie d’un réseau de zombies. Ou alors le pirate peut envoyer un keylogger sur le poste qui volera des informations personnelles sur celui-ci.
Les attaquants utilisent des techniques de plus en plus complexes pour échapper aux outils de détection, par exemple en multipliant les redirections entre le site légitime de base corrompu, et le site final distribuant le malware.