Une faille fait basculer les antivirus du côté obscur
Publié par Clément Bohic le | Mis à jour le
La Black Hat Europe a donné lieu à la présentation d'une vulnérabilité permettant de détourner plusieurs antivirus pour en faire des wipers.
Et si les meilleurs malwares étaient... les antivirus ? Il y avait, au programme de la Black Hat Europe 2022, une session touchant à ce sujet. Plus précisément, au détournement de ces logiciels - EDR inclus - pour en faire des wipers.
Ces souches malveillantes - qui émaillent notamment le conflit russo-ukrainien - n'exploitent pas toutes la même méthode de destruction. Les plus « basiques » suppriment des éléments. Dans le contexte de Windows, ça ne signifie pas « effacer », mais simplement invoquer la fonction DeleteFile(). Laquelle libère, dans la table d'allocation (MFT), l'entrée correspondante.
Les wipers majeurs, de DoubleZero à Shamoon en passant par CaddyWiper, vont plus loin. Après l'opération de suppression, ils écrivent un nouveau fichier à la même entrée MFT, ce qui efface l'ancien. D'autres écrivent directement sur le disque comme s'il s'agissait d'un périphérique.
Double problème. D'une part, l'une et l'autre technique exigent des privilèges. De l'autre, reposant sur un processus (le wiper) qui utilise les API Windows, elles laissent des traces.
Un fichier pour un autre : le potentiel destructeur des jonctions
Les antivirus/EDR ont de commun qu'ils peuvent automatiquement supprimer (ou mettre en quarantaine) des fichiers identifiés comme malveillants. C'est sur cette fonctionnalité que repose le détournement. Le principe : faire en sorte que cette opération s'applique à un autre fichier que celui qu'elle est censée toucher.
Les liens symboliques semblent tout indiqués pour mettre en place le stratagème. Seulement, vu les failles qui l'exploitent, Microsoft a défini une permission spécifique pour créer ces liens ; et l'a réservée, par défaut, aux admins.
Le système de fichiers NTFS embarque toutefois un mécanisme alternatif qui ne nécessite pas de privilèges : les jonctions. On peut le mettre à profit pour effectuer des attaques de type TOCTOU (time-of-check to time-of-use). L'idée est de s'intercaler, dans le flux de l'AV/EDR, entre les étapes de détection et de suppression.
Un exemple :
- On souhaite supprimer un pilote, situé dans le dossier \Windows\System32\Drivers
- On recrée ce dossier, mais dans \temp (manipulable sans privilèges)
- Dans ce dossier, on crée un fichier malveillant du même nom que le pilote
- Après sa détection, mais avant sa suppression, on enlève le contenu de \temp et on établit une jonction vers le dossier d'origine
- Le pilote est alors supprimé
Ça, c'est la théorie. Dans la pratique, il arrive que des AV/EDR empêchent, immédiatement après la création du fichier malveillant, de le supprimer, ainsi que le dossier qui le contient. Certains, en outre, estiment qu'une fois le fichier malveillant éliminé, la menace n'existe plus, et qu'il n'y a donc pas lieu de traiter la jonction. Bilan : il faut trouver une fenêtre de tir plus précise.
L'EDR SentinelOne toujours vulnérable ?
La solution a consisté à conditionner l'opération de suppression à un redémarrage. Elle a impliqué de capturer le handle (identifiant) du fichier malveillant et de le laisser ouvert.
Certains antivirus conservent une liste des éléments à supprimer après reboot. D'autres utilisent l'API Windows pour reporter la suppression, via un drapeau appliqué à la fonction MoveFileEx.
Ce drapeau manipule le registre Windows, en déclenchant l'ajout, dans la valeur PendingFileRenameOperations, d'entrées correspondant aux chemins à supprimer. Aussi, il requiert des privilèges admin... dont l'antivirus bénéficie. Le redémarrage effectué, Windows procède effectivement aux suppressions. Mais surtout, il traite les jonctions. La boucle est ainsi bouclée.
Sur onze produits testés, six se sont révélés vulnérables. Nommément, Defender, Defender pour points de terminaison, SentinelOne EDR, Trend Micro Apex One, Avast Antivirus et AVG Antivirus.
Signalées en juin-juillet, les failles sont aujourd'hui colmatées. Chez Microsoft, le correctif est intégré dans la version 1.1.19700.2 du moteur antivirus. Trend Micro l'a inclus dans son hotfix 23573 & patch_b11136 ; Avast et AVG, dans leur version 22.10. Pas de communication officielle chez SentinelOne.
Photo d'illustration © lolloj - Shutterstock