Le 27 août 2018, une vulnérabilité dite jour zéro affectant Microsoft Windows a été publiée sur GitHub et rendue publique via un tweet plutôt caustique.

Source : Twitter

Il parait clair que ce message ne faisait pas partie d'une divulgation coordonnée des vulnérabilités et qu'il n'y avait pas de correctif disponible permettant de corriger cette vulnérabilité au moment où ce tweet (depuis supprimé) a été publié.

Elle affecte les systèmes d'exploitation Microsoft Windows de Windows 7 à Windows 10, et en particulier la fonction Advanced Local Procedure Call (ALPC), en plus de permettre une escalade des privilèges locaux (ou LPE, pour Local Privilege Escalation). LPE permet à un exécutable ou à un processus d'escalader les privilèges. Dans ce cas spécifique, il permet à un exécutable lancé par un utilisateur restreint d'obtenir des droits administratifs.

Le tweet comprend un lien vers un dépôt GitHub qui contient le code de preuve de concept pour l'exploit. Non seulement une version compilée a été publiée, mais le code source l'a également été. Par conséquent, n'importe qui peut modifier et recompiler l'exploit, afin de « l'améliorer », d’empêcher la détection, voir même de l'intégrer dans son code.

Comme pouvait s'y attendre, il ne nous a fallu que deux jours pour identifier une première utilisation de cet exploit dans une campagne malveillante d'un groupe que nous avons surnommé PowerPool. Ce groupe compte un petit nombre de victimes. Selon notre télémétrie et nos téléchargements vers VirusTotal (nous n'avons considéré que les téléchargements manuels à partir de l'interface Web), les pays ciblés comprennent le Chili, l'Allemagne, l'Inde, les Philippines, la Pologne, la Russie, le Royaume-Uni, les États-Unis et l'Ukraine.

L'arsenal de PowerPool

Ce groupe nouvellement isolé dispose déjà d'un large éventail d'outils. Nous présentons ici une brève analyse de certains d'entre eux.

L’exploit ALPC Local Privilege Escalation

The PowerPool developers did not reuse the binary that was provided by the vulnerability’s discloser. They modified the source code slightly and recompiled it.

L'exploit a été documenté par son auteur original et a été couvert par des chercheurs en sécurité ainsi que des CERT.

Figure 1 - Description de l'exploit faite par son auteur

La faille se trouve dans la fonction API SchRpcSetSecurity, qui ne vérifie pas correctement les permissions de l'utilisateur. Ainsi, un utilisateur peut avoir des permissions d'écriture sur n'importe quel fichier dans C:\Windows\Task indépendamment de ses permissions réelles. Cela permet à un utilisateur qui n'a que des droits de lecture de remplacer le contenu d'un fichier protégé en écriture.

Puisque n'importe quel utilisateur peut écrire dans C:\Windows\Task, il est possible de créer un fichier dans ce dossier qui est un lien dur vers n'importe quel fichier cible. Ensuite, en appelant la fonction brisée SchRpcSetSecurity, il est possible d'accéder en écriture à ce fichier cible. Pour créer une escalade des privilèges locaux, l'attaquant doit choisir le fichier cible qui sera écrasé. Ce choix doit être fait minutieusement : il doit s'agir d'un fichier qui est exécuté automatiquement avec des droits d'administration. Par exemple, il peut s'agir d'un fichier système ou de la mise à jour d'un logiciel précédemment installé qui est régulièrement exécuté par une tâche. L'étape finale consiste à remplacer le contenu de ce fichier cible protégé par un code malveillant. Ainsi, lors de la prochaine exécution automatique, le logiciel malveillant disposera de droits d'administration indépendamment de ses droits d'origine.

Les développeurs de PowerPool ont choisi de modifier le contenu du fichier C:\Program Files (x86)\Google\Update\GoogleUpdate.exe. Il s'agit d’une mise à jour légitime pour les applications Google qui est régulièrement exécuté sous les privilèges administratifs par une tâche de Microsoft Windows.

Figure 2 - Création d'un lien matériel vers Google Updater

Figure 3 - Utilisation abusive de SchRpcCreateFolder pour modifier les permissions de l'exécutable Google Updater

La séquence d'opérations montrée dans la figure ci-dessus permet aux opérateurs de PowerPool d’obtenir un accès écriture à l'exécutable GoogleUpdate.exe. Ensuite, ils écrasent ce dernier avec une copie de leur logiciel malveillant de deuxième niveau, décrit ci-dessous, afin d'obtenir les privilèges SYSTEM la prochaine fois que le programme de mise à jour est appelé.

Compromission initiale

Le groupe PowerPool utilise différentes approches pour compromettre initialement une victime. L'une d’elles consiste à envoyer des courriers électroniques comprenant leur logiciel malveillant de premier niveau en pièce jointe. Il est peut-être trop tôt pour affirmer ceci catégoriquement, mais jusqu'à présent nous avons vu très peu d'occurrences dans notre télémétrie, ce qui nous laisse à croire que les destinataires sont soigneusement choisis, plutôt que touchés par une campagne de courriers indésirables massive de la part de PowerPool.

D'autre part, nous savons que leurs spams ont été repérés dans le passé. Selon un article de blog de SANS publié en mai 2018, ils ont utilisé un truc avec les fichiers Symbolic Link (.slk) pour distribuer leurs logiciels malveillants. Microsoft Excel peut charger ces fichiers qui mettent à jour une cellule et forcent Excel à exécuter du code PowerShell. Ces fichiers .slk semblent distribués aussi par du courrier indésirable. A partir du premier fichier mentionné dans l’article de blogue SANS (SHA-1: b2dc703d3af1d015f4d53b6dbbeb624f5ade5553) sur VirusTotal, il est possible de trouver l'échantillon de courrier indésirable correspondant (SHA-1: e0882e234cba94b5cf3df2c05949e2e228bedd2b).

Figure 4 - Message de spam provenant de PowerPool

Backdoors Windows

Le groupe PowerPool utilise principalement deux portes dérobées (ou backdoors) différentes : une porte dérobée de premier niveau utilisée juste après le premier compromis, puis une de second niveau, probablement installée sur les machines les plus intéressantes.

Backdoor de premier niveau

Celle-ci est constituée d’un logiciel malveillant de base utilisé pour la reconnaissance sur la machine et est composée de deux exécutables Windows.

La première d'entre elles est la porte dérobée principale. Il établit la persistance par le biais d'un service. Il crée également un mutex nommé MyDemonMutex%d, où la valeur %d varie de 0 à 10. Il est capable de collecter des informations de proxy et l'adresse du serveur C&C est codée en dur dans ce binaire. Il peut exécuter des commandes et effectuer une reconnaissance de base de la machine, qui est ensuite exfiltrée vers le serveur C&C.

Figure 5 - Collecte d'informations par procuration

Le deuxième de ces exécutables n’a qu’un seul but. Il prend une capture d'écran de l'écran de la victime et l'écrit dans MyScreen.jpg. Ce fichier peut ensuite être exfiltré par la backdooor principale.

Backdoor de second niveau

Ce logiciel malveillant est téléchargé via la première étape, probablement lorsque les opérateurs jugent que la machine est suffisamment intéressante pour qu'ils décident d’y rester plus longtemps. Cependant, il ne s'agit clairement pas d'une porte dérobée APT à la fine pointe de la technologie.

Encore une fois, l'adresse du serveur C&C est codée en dur dans le binaire et ne dispose d'aucun mécanisme pour mettre à jour cet élément de configuration crucial. Cette porte dérobée cherche des commandes depuis http://[C&C domain]/cmdpool et télécharge des fichiers supplémentaires depuis http://[C&C domain]/upload. Ces fichiers supplémentaires sont principalement constitués des outils de mouvement latéral mentionnés ci-dessous.

Les commandes supportées sont :

  • Exécuter une commande
  • Tuer un processus
  • Téléverser un fichier
  • Télécharger un fichier
  • Lister un dossier

Ils sont envoyés au format JSON. Les exemples ci-dessous représentent des instructions pour exécuter une commande et lister un dossier :

Figure 6 - Exemples de commandes de la porte dérobée

Outils de déplacement latéral

Une fois que les opérateurs PowerPool disposent d’un accès permanent à une machine avec la porte dérobée de deuxième niveau, ils utilisent plusieurs outils open source, la plupart écrits en PowerShell, pour se déplacer latéralement sur le réseau :

  • PowerDump : Il s'agit d'un module Metasploit qui peut récupérer les noms d'utilisateurs et les hachages du gestionnaire de compte de sécurité (SAM);
  • PowerSploit : C'est un framework post-exploitation dans PowerShell, à la Metasploit;
  • SMBExec : Un outil PowerShell pour réaliser des connexions SMB à haut débit;
  • Quarks PwDump : Un exécutable Windows qui peut récupérer les identifiants Windows;
  • FireMaster : Un exécutable Windows qui peut récupérer les mots de passe stockés dans Outlook, les navigateurs Web, etc.

Conclusion

La divulgation de vulnérabilités en dehors d'un processus de divulgation coordonné peut souvent mettre un grand nombre d’utilisateurs à risque. Dans ce cas, même la version la plus récente de Windows pourrait être compromise, car aucun correctif n'a été publié lorsque la vulnérabilité et l'exploitation ont été publiées. Le CERT-CC propose certaines mesures d'atténuation, mais Microsoft ne les a pas officiellement approuvées.

Cette campagne spécifique cible un nombre limité d'utilisateurs, mais ne vous y trompez pas : elle montre que les cybercriminels suivent également l'actualité et travaillent sur l'utilisation d’exploits dès que ceux-ci sont publiquement disponibles.

Les chercheurs ESET continueront à surveiller toute utilisation malveillante de cette nouvelle vulnérabilité. Des indicateurs de compromis peuvent également être trouvés sur GitHub. Pour toute demande de renseignements ou pour soumettre des exemples d'observations sur le sujet, communiquez avec nous à l'adresse threatintel@eset.com.

Indicateurs de compromission

Hashes

SHA-1 Type Detection name
038f75dcf1e5277565c68d57fa1f4f7b3005f3f3 First stage backdoor Win32/Agent.SZS
247b542af23ad9c63697428c7b77348681aadc9a First stage backdoor Win32/Agent.TCH
0423672fe9201c325e33f296595fb70dcd81bcd9 Second stage backdoor Win32/Agent.TIA
b4ec4837d07ff64e34947296e73732171d1c1586 Second stage backdoor Win32/Agent.TIA
9dc173d4d4f74765b5fc1e1c9a2d188d5387beea ALPC LPE exploit Win64/Exploit.Agent.H

Detection names
Win32/Agent.SZS
Win32/Agent.TCH
Win32/Agent.TEL
Win32/Agent.THT
Win32/Agent.TDK
Win32/Agent.TIA
Win32/Agent.TID

C&C servers
newsrental[.]net
rosbusiness[.]eu
afishaonline[.]eu
sports-collectors[.]com
27.102.106[.]149