SmartScreen : le bouclier de Microsoft Edge détourné pour du malvertising

Poste de travailSécurité

Un chercheur est parvenu à détourner le système de blocage d’URL malveillantes intégré dans le navigateur Microsoft Edge pour diffuser des scams.

Destinée notamment à avertir les internautes lorsqu’ils visitent des sites potentiellement malveillants, la fonction SmartScreen du navigateur Microsoft Edge peut être détournée pour diffuser des scams.

C’est, en substance, le constat qu’établit Manuel Caballero.

Ce chercheur indépendant en sécurité informatique s’est intéressé aux travaux menés par un confrère de Malwarebytes à propos du malvertising, qu’on définit communément comme l’utilisation de la publicité en ligne pour diffuser des logiciels malveillants.

Les travaux en question se concentrent sur l’évolution des pratiques au-delà du JavaScript typiquement utilisé pour envoyer des pop-up en boucle. L’accent est mis sur la puissance de certaines fonctions HTML5, à l’image de history.pushState(), qui consiste à insérer des données dans l’historique… et qui a la particularité, lorsqu’elle est utilisée de manière répétitive, de ne pas planter le butineur, mais de le bloquer, en sollicitant la machine au maximum de ses capacités.

En conséquence, l’utilisateur a le temps de lire le message qui s’affiche. Typiquement, une alerte « contextuelle » de type « Votre ordinateur est peut-être infecté », avec un numéro de téléphone d’apparence légitime, mais qui cache une arnaque.

Messages trompeurs

Sur cette base, Manuel Caballero a étudié SmartScreen et son système de blocage des URL malveillantes.

Il a déterminé que les alertes affichées dans le navigateur provenaient d’une ressource interne. En l’occurrence, une page HTM dénommée « PhishSiteEdge » et appelée via le protocole ms-appx-web.

Pour autant, ce n’est pas cette URL qui s’affiche dans la barre d’adresse : il s’agit de celle associée à la fonction hash.

smartscreen-demo

Une recherche dans l’explorateur confirme que PhishSiteEdge.htm se trouve bien en local, dans le sous-dossier \Assets\ErrorPages du répertoire d’installation du navigateur.

Il s’y trouve d’autres ressources HTM qui ne peuvent pas toutes être chargées dans Edge, que ce soit directement, par l’intermédiaire d’une page Web ou encore d’un script.

En jouant avec la fonction window.open, qui retourne un message d’erreur lorsqu’un élément ne peut pas se charger, Manuel Caballero a déterminé qu’il suffisait de changer un caractère dans une URL bloquée pour qu’elle ne le soit plus.

Quel intérêt ? Celui de pouvoir remplacer un élément d’une URL par son code ASCII (par exemple, « 2E » pour le point) et ainsi de conserver une URL valide.

blocksite2e

Reste alors à modifier le hash avec l’adresse qu’on souhaite afficher à l’utilisateur.

blocksite2e-hash

Non sans oublier de régler quelques paramètres que la page d’alerte (ici « BlockSite.htm ») importe via la fonction location.search : « BlockedDomain » pour afficher une URL en dessous du message d’alerte et « Host » pour insérer entre autres un numéro de téléphone… qui hérite automatiquement d’un lien cliquable.

Lire aussi :

Lire la biographie de l´auteur  Masquer la biographie de l´auteur