Wikileaks a publié une nouvelle série de documents Vault 7 sur les techniques employées par la CIA pour l’espionnage. Cette fois, place à Grasshopper, une trousse à outils pour créer de fausses versions (vérolées) d’applications Windows.
La diffusion de Vault 7 continue sur un rythme pratiquement hebdomadaire. Wikileaks semble avoir choisi le vendredi soir comme rendez-vous pour publier ses documents internes à la CIA, montrant comment l’agence procède pour infecter différents types d’appareils.
Les premières publications ont provoqué de très nombreuses réactions. On se souvient notamment que des dizaines de failles étaient révélées, provoquant un agacement visible chez certaines entreprises, dont Apple... Même si ces vulnérabilités étaient en bonne partie déjà corrigées. Plus récemment, Wikileaks s’est penché sur Marble, un ensemble d’outils conçus pour masquer la vraie provenance d’une attaque, voire la réorienter vers un autre pays.
Une sauterelle bien malveillante
Dans la publication des tout premiers documents, Wikileaks avait notamment abordé la modification d’applications Windows en vue d’infecter des ordinateurs, si tant est que l’agent responsable de la mission ait un accès physique à la machine. Des éditeurs comme VideoLAN ou Notepad++ avaient réagi et modifié leurs logiciels pour s’adapter à cette menace, qui ne reposait toutefois pas sur des failles de sécurité.
À l’époque, Wikileaks n’en disait finalement que peu sur cette activité. L’organisation revient à la charge, cette fois de manière détaillée et avec un nom : Grasshopper (« sauterelle » en anglais). Ils s‘agit d’un framework, c’est-à-dire une structure complète, dédié à la fabrication de logiciels comportant une ou plusieurs fonctions malveillantes.
Grasshopper est, comme Marble, une collection d’outils. Il intègre en plus toute une bibliothèque de conseils et de guides d’utilisation. Dans les documents fournis par Wikileaks, on trouve notamment de vrais tutoriels pour prendre le technicien par la main et le guider étape par étape vers ce qui pourrait l’intéresser. S’y trouvent également des conseils généraux sur les installeurs, sur l’évasion face aux antivirus…
Enrichie par des versions successives
Grasshopper est clairement un projet au long cours pour la CIA puisqu’une série de mises à jour a renforcé ses capacités. La dernière mouture évoquée par Wikileaks est la 2.0.2, mais on trouve la mention d’un guide d’administration de la version 1.1, datant du 1er décembre 2013. Il faut donc supposer que le développement continue et que le framework est constamment mis à jour, pour s'adapter aux évolutions de Windows ou aux techniques de développement et de détection.
Dans le guide d’utilisation de Grasshopper 2.0.2, le ton est rapidement donné : « L’opérateur configure un exécutable pour installer une ou plusieurs charges en utilisant une kyrielle de techniques. Chaque installeur de charge est bâti depuis des composants individuellement configurés, chargés chacun d’une partie de la procédure d’installation ». Chacun de ces modules peut d’ailleurs générer un journal d’évènements qui peut être exfiltré par la suite.
Une « kyrielle » d’aspects à prendre en compte pour le développeur
La principale force de Grasshopper c’est son aspect tout-en-un. Toutes les facettes d’une attaque sont prises en compte, de l’installation à la récupération des données. Si la documentation de la CIA insiste tant sur l’installation, c’est qu’il s’agit d'une étape critique exigeant de berner différentes défenses. L'enjeu ? Que le logiciel apparaisse comme légitime. Dans le cas de VideoLan, ce point névralgique résidait par exemple au niveau du certificat de sécurité.
Cette documentation mentionne par ailleurs d’autres composants, qui sont soit des points particuliers nécessitant des explications complémentaires, soit des outils. On va par exemple trouver des informations précises sur la gestion des DLL (Dynamic Link Library) – les bibliothèques de fonctions sous Windows – la planification des tâches ou encore l’utilisation d’un serveur proxy.
La CIA a puisé directement le code source de malwares existants
L’Agence n’a pas forcément cherché à redévelopper la roue. Lorsqu’elle cible par exemple les MacBook et l’iPhone, la CIA n’hésite pas à reprendre du code déjà disponible quand elle peut en tirer avantage.
Sur la même veine, on découvre que Stolen Goods 2 est « un module de persistance pour Grasshopper, basé sur un malware tiers ». Ses composants s’inspirent de Carberp « un rootkit suspecté de provenir du crime organisé russe », en particulier sa « méthode de persistance, ainsi que des morceaux de l’installeur »
Dans le détail, Stolen Goods « maintient la persistance en installant un code IPL (Initial Program Loader) personnalisé trouvé dans le VBR (Volume Boot Record) ». Une telle incrustation permet de charger un pilote (module Wheat) dans Windows visant à maintenir en place l’exécution de code. Inspiré là encore de Carberp, ce bout de code a été modifié par les ingénieurs de la CIA. La persistance est assurée au final par la combinaison avec une DLL. Détail croustillant : ce pilote n’a même pas besoin d’être signé, même sur un Windows 64 bits qui contient pourtant davantage de défenses.
Persistance dans la mémoire
Grasshopper ne se limite pas à une seule technique pour s’assurer que le logiciel contaminé restera sur la machine. Le développeur de la CIA a pour lui différentes méthodes, qu'il peut combiner selon les scénarios.
Si Wheat installe par exemple un pilote à charger durant la chaine de démarrage, il peut être ainsi accompagné de :
- Crab : peut prendre un exécutable ou une DLL pour en faire un service actif sous Windows
- WUPS : capable d’utiliser le service Windows Update pour s’en servir de vecteur d’infection
- Bermuda : plus simple, utilise une tâche planifiée de Windows pour assurer la persistance
- Netman : comme son nom l’indique, se sert du Network Connections Manager Service pour ses opérations
Grasshopper, la grande évasion
L’une des caractéristiques de la sauterelle de la CIA est qu’elle est visiblement douée pour s’évader des mécanismes de défense et de détection.
Wikileaks résume au sein d’une page ses capacités, classées par système d’exploitation et par solution antivirale. Ces résultats datent de décembre 2014 et ne sont donc pas à jour, mais on y voir les tests réalisés sur Windows, de XP à 8.1 x64, réussissant la plupart des opérations sur un système protégé par Security Essentials de Microsoft, Symantec Endpoint ou encore Kaspersky Antivirus.
Ce que Grasshopper sait faire aujourd’hui est difficile à savoir. Il faut supposer que le travail a continué et que les techniques ont été affinées pour prendre en charge Windows 10, que ce soit sur des machines 32 ou 64 bits. Le fait que l’installeur puisse se faufiler même à travers plusieurs antivirus en dit long sur les ressources investies par la CIA dans son framework.
Que retenir de Grasshopper ?
Pour l’instant, la fuite la plus dangereuse pour la CIA à ce jour reste Marble. Exposer les méthodes d’obscurcissement de l’agence et sa capacité à se faire passer pour d’autres représente un risque bien plus important que les techniques utilisées pour créer de faux logiciels Windows.
Cependant, même si on tient compte du caractère particulier de ces travaux, utilisés dans le cadre d’attaques ciblées, ces informations restent importantes. Comme à chaque fois, les éditeurs concernés vont se pencher sur ces révélations, tous comme les pirates. Le fait d’aborder le fonctionnement de Grasshopper et de ses modules de persistance pourrait également mener vers un renforcement global de la sécurité et une invalidation partielle des techniques employées.
Il faut cependant garder en mémoire que, puisque l’on parle ici d’attaques avec accès physique à la machine, il est délicat d’envisager une fermeture complète d’un système. Dans le cas de Windows, on parle de PC aux configurations matérielles et logicielles se déclinant presque à l’infini et laissant donc accès à une surface d’attaque variable. Pour peu que la victime n’ait pas de grandes connaissances techniques, le malware peut assurer très simplement sa discrétion, et agir en toute impunité.