Des chercheurs ont découvert un rootkit UEFI furtif utilisé dans des campagnes très ciblées par le célèbre groupe de cyberespions APT41 soupçonné d'avoir des liens avec le gouvernement chinois. Le groupe s’est déjà fait remarquer dans le passé en menant des attaques supply chain. Baptisé MoonBounce par les chercheurs de Kaspersky Lab, l'objectif de l'implant est d'injecter un pilote malveillant dans le noyau Windows pendant les phases de démarrage, offrant ainsi aux attaquants un haut niveau de persistance et de discrétion. Même si MoonBounce n’est pas le premier rootkit UEFI découvert dans la nature – c’est le cas de LoJax et de MosaicRegressor, par exemple - ces types d'implants ne sont pas courants, car ils nécessitent des connaissances en programmation de bas niveau des firmwares. On les trouve généralement dans l'arsenal de groupes d'attaquants sophistiqués et disposant de ressources importantes.

Qu'est-ce qu'un rootkit UEFI ?

L’Unified Extensible Firmware Interface ou UEFI, c’est-à-dire est l’équivalent moderne du BIOS. En fait, les deux termes sont encore utilisés de manière interchangeable dans de nombreux cas, car la plupart des BIOS modernes suivent la norme et la spécification UEFI. Le firmware est stocké sur une puce mémoire appelée flash SPI, soudée sur la carte mère, et il contient le code nécessaire pour initialiser tous les autres composants matériels et les configurer avant que l'exécution ne soit transmise au code du bootloader, lequel démarre le système d'exploitation principal et son noyau.

L'UEFI contient divers pilotes pour communiquer avec les autres puces de la carte mère, ainsi qu'avec l'unité centrale et les autres périphériques. L'exécution d'un code malveillant dans une phase aussi précoce d'initialisation d'un dispositif est extrêmement puissante, car il n'existe aucune solution antivirus ou de détection d'intrusion fonctionnant à ce niveau. De plus, les fonctions de sécurité du système d'exploitation, comme la vérification de la signature numérique des pilotes, n'ont pas encore été initialisées et peuvent être désactivées ou contournées. Les rootkits UEFI bénéficient d'une longueur d'avance et d'une position privilégiée par rapport à la plupart des autres défenses présentes sur un ordinateur classique. Ils peuvent être difficiles à détecter et même empêcher les mises à jour UEFI normales. Les chercheurs ont récemment découvert un implant de bas niveau similaire qui infecte le firmware du contrôleur BMC (Baseboard Management Controler) des serveurs HPE et fonctionne selon les mêmes principes.

C’est pour se protéger des rootkits au niveau de l'amorçage que l'industrie du PC a ajouté des fonctions de sécurité au firmware au cours des dix dernières années. Par exemple, l'UEFI dispose de SecureBoot, qui s'appuie sur la cryptographie à clé publique pour vérifier que tout le code chargé pendant le processus de démarrage - des pilotes et applications UEFI au bootloader du système d'exploitation et au noyau du système d'exploitation - a été signé numériquement par un composant de confiance. Diverses régions de la mémoire UEFI sont figées en lecture seule ou non exécutables. Cependant, même si l'UEFI est une norme, les fabricants de PC maintiennent leurs propres implémentations personnalisées pour leurs appareils. Cela signifie que l’UEFI d'un ordinateur d'un fournisseur sera légèrement différent de celui de l’ordinateur d'un autre fabricant. Au fil des ans, des vulnérabilités ont été découvertes dans les implémentations de l’UEFI de divers fournisseurs, lesquels pourraient permettre aux attaquants de contourner les fonctions de sécurité. D’où l’importance de pouvoir déployer facilement des mises à jour de cet élément à partir du système d'exploitation et de maintenir le firmware à jour.

Fonctionnement de MoonBounce

MoonBounce a été découvert dans un composant UEFI appelé CORE_DXE, DXE signifiant Core Execution Environment. Cet élément initialise des structures de données et des interfaces de fonctions qui sont ensuite appelées par d'autres pilotes DXE. Les attaquants ont ajouté un shellcode malveillant à l'image CORE_DXE, puis ils ont apporté des modifications au code afin d'accrocher certains appels de fonctions légitimes et de détourner leur exécution vers leur shellcode. « Á l’heure où nous rédigeons ce rapport, nous ne disposons pas de suffisamment de preuves pour expliquer comment le firmware UEFI a été infecté en premier lieu », ont précisé les chercheurs de Kaspersky. « Cependant, nous supposons que l'infection elle-même a eu lieu à distance. Contrairement aux autres compromissions de firmware UEFI (LoJax et MosaicRegressor) réalisées par l'ajout de pilotes DXE à l'image globale du micrologiciel sur la flash SPI, la technique utilisée cette fois est beaucoup plus subtile et furtive, car elle implique la modification d’un élément existant du firmware pour altérer son comportement ». Ce type de modification suppose que les attaquants ont eu accès à l'image originale du firmware. C’est possible, si les attaquants ont un accès distant à la machine et des privilèges d’administration pour extraire et flasher le firmware.

Fonctionnement de Moonbounce. (Crédit Photo : Kaspersky)

Une fois exécuté, le shellcode UEFI malveillant injecte un pilote malveillant dans les premières étapes d'exécution du noyau Windows et ce pilote pousse ensuite un malware en mode utilisateur dans le processus svchost.exe une fois le système d'exploitation opérationnel. Le programme malveillant en mode utilisateur est un chargeur qui se connecte à un serveur de commande et de contrôle codé en dur pour télécharger et exécuter des charges utiles supplémentaires, que les chercheurs n'ont pas encore pu récupérer. Jusqu’à présent, les chercheurs de Kaspersky ont déclaré avoir identifié MoonBounce sur une seule machine victime, il est donc difficile de dire si l’implant est plus largement utilisé. Cependant, il est probable qu'il fasse partie d'une campagne de cyberespionnage très ciblée. Les chercheurs ont trouvé d'autres logiciels malveillants sur d'autres machines situées sur le même réseau, dont l’un appelé ScrambleCross ou SideWalk, déjà documenté par le passé, et attribué à un groupe de cyberespions chinois connu sous différents noms, notamment APT41, Barium ou Winnti.

Le groupe APT41 à la manoeuvre

Le groupe de cyber-espions APT41 est connu pour ses liens avec le gouvernement chinois. Il opère depuis au moins 2012 et a ciblé des entreprises de nombreux secteurs afin de collecter des renseignements. Cependant, le groupe a également été identifié dans des attaques à motivation financière contre l'industrie du jeu en ligne sans liens avérés avec un État, ce qui fait dire aux chercheurs qu’il pourrait agir en tant qu'entrepreneur plutôt qu'en tant qu'équipe au sein d'une agence de renseignement. En septembre 2020, le ministère américain de la Justice a rendu public des actes d'accusation contre trois ressortissants chinois et deux Malaisiens en rapport avec les attaques d'APT41. Trois d'entre eux étaient impliqués dans la gestion d'une société appelée Chengdu 404 Network Technology qui aurait servi de société écran pour les activités du groupe.

APT41 utilise un arsenal de plus de 46 familles de malwares et d'outils différents, ainsi que des techniques sophistiquées comme des attaques supply chain. C’est le cas notamment d’une attaque menée en 2017 contre CCleaner, et de la distribution de copies malveillantes de l’utilitaire à 2,2 millions d'utilisateurs. Le groupe serait également responsable de ShadowPad, une attaque qui a entraîné la distribution de versions malveillantes d'un outil commercial de gestion de serveurs d'entreprise appelé Xmanager. « Par mesure de sécurité contre cette attaque et d'autres similaires, il est recommandé de mettre à jour régulièrement le firmware UEFI et de vérifier, le cas échéant, que BootGuard est activé », ont déclaré les chercheurs de Kaspersky. « De même, l'activation des Trust Platform Modules, dans le cas où un matériel correspondant est pris en charge sur la machine, est également conseillée. En plus de cela, le recours à un produit de sécurité offrant une visibilité sur les images du firmware pourrait ajouter une couche supplémentaire de sécurité, et alerter l'utilisateur en cas de compromis potentiel ».