Parmi les incidents de cybersécurité provoqués par des logiciels malveillants les plus importants de ces dernières années, on peut citer les attaques contre le réseau électrique ukrainien - qui ont entraîné des pannes de courant sans précédent deux années de suite - et l'épidémie dévastatrice de rançon de NotPetya. Voyons les liens qui unissent ces incidents majeurs.

La première panne d'électricité malveillante de l'histoire, qui s'est produite en décembre 2015, a été rendue possible par la boîte à outils de logiciels malveillants BlackEnergy. Les chercheurs d'ESET ont suivi l'activité du groupe d’APT utilisant BlackEnergy avant et après cet événement marquant. Après la panne de courant de 2015, le groupe a semblé avoir cessé d'utiliser activement BlackEnergy et a évolué vers ce que nous appelons TeleBots.

Il est important de noter que lorsque nous décrivons les groupes APT, nous dessinons des connexions basées sur des indicateurs techniques tels que les similarités de code, l'infrastructure C&C partagée, les chaînes d'exécution de malware, etc. Nous ne participons généralement pas directement à l'enquête et à l'identification des personnes qui ont écrit le logiciel malveillant ou l'ont déployé, ni aux relations interpersonnelles entre elles. De plus, le terme groupe APT est défini de façon très vague et souvent utilisé simplement pour regrouper les indicateurs de logiciels malveillants mentionnés ci-dessus. C'est également l'une des raisons pour lesquelles nous nous abstenons de spéculer sur l'attribution d'attaques aux États-nations et autres.

Cela dit, nous avons observé et documenté les liens entre les attaques de BlackEnergy - non seulement contre le réseau électrique ukrainien, mais aussi contre divers secteurs et cibles de grande valeur - et une série de campagnes (principalement) contre le secteur financier ukrainien par le groupe TeleBots. En juin 2017, lorsque de nombreuses grandes entreprises du monde entier ont été touchées par le logiciel de rançon Diskcoder.C (alias Petya et NotPetya) - très probablement en tant que dommages collatéraux involontaires - nous avons découvert que l'épidémie a commencé à se propager depuis des entreprises touchées par une porte dérobée (ou backdoor) TeleBots, suite à la compromission du logiciel financier populaire M.E.Doc.

Alors, comment Industroyer, le cadre sophistiqué de logiciels malveillants utilisé pour provoquer la panne de décembre 2016, s'intègre-t-il dans tout cela? Immédiatement après que nous avons annoncé publiquement notre découverte, certaines sociétés de sécurité et certains médias ont commencé à spéculer qu'Industroyer était également architecturé par le groupe BlackEnergy/Telebots (aussi connu sous le nom de Sandworm). Pourtant, aucune preuve concrète n'a été rendue publique jusqu'à présent.

En avril 2018, nous avons découvert une nouvelle activité du groupe TeleBots : une tentative de déploiement d'une nouvelle porte dérobée, que ESET détecte comme Win32/Exaramel. Notre analyse suggère que cette backdoor de TeleBots est une version améliorée de la porte dérobée principale d'Industroyer - la première preuve qui manquait.

Analyse de la porte dérobée Win32/Exaramel

La backdoor Win32/Exaramel est initialement déployée par un dropper. Les métadonnées de ce dropper suggèrent que la backdoor est compilée à l'aide de Microsoft Visual Studio juste avant son déploiement sur un ordinateur victime visé.

Figure 1 - Horodatage PE dans le dropper de la backdoor Win32/Exaramel

Une fois exécuté, le dropper déploie le binaire de la porte dérobée Win32/Exaramel dans le répertoire système Windows et crée et démarre un service Windows nommé wsmproav avec la description « Windows Check AV ». Le nom du fichier et la description du service Windows sont codés en dur dans le dropper.

Figure 2 - Paramètres de registre du service Windows créé par le dropper Win32/Exaramel

De plus, le dropper écrit la configuration de la backdoor dans le registre Windows, au format XML.

Figure 3. Win32/Exaramel backdoor XML configuration.

La configuration comprend plusieurs blocs :

  • Intervalle - temps en millisecondes utilisé pour la fonction Sleep
  • Serveurs - liste des serveurs de commande et de contrôle (C&C)
  • Vérifier - site Web utilisé pour déterminer si l'hôte dispose d'une connexion Internet
  • Proxy - serveur proxy sur le réseau hôte
  • Stockage - chemin utilisé pour stocker les fichiers programmés pour l'exfiltration

Comme on peut le voir sur la première ligne de la configuration, les attaquants regroupent leurs cibles en fonction des solutions de sécurité utilisées. Un comportement similaire peut être trouvé dans l'ensemble d'outils Industroyer - en particulier certaines des portes dérobées Industroyer ont également été déguisées en service antivirus (déployé sous le nom avtask.exe) et ont utilisé le même regroupement.

Un autre fait intéressant est que la porte dérobée utilise des serveurs C&C avec des noms de domaine qui imitent des domaines appartenant à ESET. En plus de esetsmart[.]org de la configuration mentionnée ci-dessus, nous avons trouvé un autre domaine similaire : um10eset[.]net, qui a été utilisé par la version Linux récemment découverte de logiciels malveillants Telebots. Il est important de noter que ces serveurs contrôlés par l'attaquant ne sont en aucun cas liés à l'infrastructure serveur légitime d'ESET. Actuellement, nous n'avons pas vu Exaramel utiliser des domaines qui imitent d'autres sociétés de sécurité.

Une fois la backdoor lancée, elle se connecte à un serveur C&C et reçoit les commandes à exécuter. Voici une liste de toutes les commandes disponibles :

  • Lancer le processus
  • Lancer le processus sous l'utilisateur Windows spécifié
  • Écrire des données dans un fichier dans un chemin spécifié
  • Copier le fichier dans le sous-répertoire de stockage (Upload file)
  • Exécuter la commande shell
  • Exécutez la commande shell comme spécifié par l'utilisateur Windows
  • Exécutez le code VBS en utilisant MSScriptControl.ScriptControl.1

Le code de la commande loop et les implémentations des six premières commandes sont très similaires à ceux d'une backdoor utilisée dans la boîte à outils Industroyer.

Figure 4 - Comparaison entre le code décompilé de la backdoor Win32/Exaramel (à gauche) et la porte dérobée Win32/Industroyer (à droite)

Les deux familles de logiciels malveillants utilisent un fichier de rapport pour stocker les résultats des commandes shell exécutées et des processus lancés. Dans le cas de la porte dérobée Win32/Industroyer, le fichier de rapport est stocké dans un dossier temporaire sous un nom de fichier aléatoire; dans le cas de la backdoor Win32/Exaramel, le fichier de rapport est nommé report.txt et son chemin de stockage est défini dans le fichier de configuration de la porte dérobée.

Afin de rediriger la sortie standard (stdout) et l'erreur standard (stderr) vers le fichier de rapport, les deux portes dérobées définissent les paramètres hStdOutput  et hStdError dans une poignée du fichier de rapport. Il s'agit d'une autre similitude de conception entre ces familles de logiciels malveillants.

Figure 5 - Comparaison entre le code décompilé de la porte dérobée Win32/Exaramel (en haut) et la porte dérobée Win32/Industroyer (en bas)

Si les opérateurs de logiciels malveillants veulent exfiltrer des fichiers de l'ordinateur de la victime, ils n'ont qu'à copier ces fichiers dans le sous-répertoire de données du chemin de stockage défini dans la configuration. Une fois que la backdoor est sur le point d'établir une nouvelle connexion au serveur C&C, elle compresse et chiffre automatiquement tous ces fichiers avant de les envoyer.

La principale différence entre la backdoor de la boîte à outils Industroyer et cette nouvelle porte dérobée TeleBots est que cette dernière utilise le format XML pour la communication et la configuration plutôt qu'un format binaire personnalisé.

Outils malveillants de vol de mots de passe

En plus de la porte dérobée Exaramel, le groupe Telebots utilise certains de ses anciens outils, y compris un voleur de mots de passe (appelé CredRaptor ou PAI par les attaquants) et une version légèrement modifiée Mimikatz.

L'outil de vol de mot de passe personnalisé CredRaptor, utilisé exclusivement par ce groupe depuis 2016, a été légèrement amélioré. Contrairement aux versions précédentes, il collecte les mots de passe enregistrés non seulement à partir des navigateurs, mais aussi à partir d'Outlook et de nombreux clients FTP. Voici une liste des applications supportées :

  • BitKinex FTP
  • BulletProof FTP Client
  • Classic FTP
  • CoffeeCup
  • Core FTP
  • Cryer WebSitePublisher
  • CuteFTP
  • FAR Manager
  • FileZilla
  • FlashFXP
  • Frigate3
  • FTP Commander
  • FTP Explorer
  • FTP Navigator
  • Google Chrome
  • Internet Explorer 7 – 11
  • Mozilla Firefox
  • Opera
  • Outlook 2010, 2013, 2016
  • SmartFTP
  • SoftX FTP Client
  • Total Commander
  • TurboFTP
  • Windows Vault
  • WinSCP
  • WS_FTP Client

Cette amélioration permet aux attaquants de collecter les informations d'identification du webmaster pour les sites Web et les informations d'identification des serveurs dans l'infrastructure interne. Une fois l'accès à ces serveurs obtenus, les attaquants pourraient y installer des portes dérobées supplémentaires. Très souvent, ces serveurs sont exploités par des systèmes d'exploitation différents de Windows, ce qui oblige les attaquants à adapter leurs backdoors.

Dans les faits, lors de notre intervention en cas d'incident, nous avons découvert une porte dérobée Linux utilisée par TeleBots. Nous avons nommé celle-ci Linux/Exaramel.

Analyse de la porte dérobée Linux/Exaramel

La porte dérobée est écrite dans le langage de programmation Go et compilée en binaire 64-bits ELF. Les attaquants peuvent déployer la backdoor dans un répertoire choisi sous n'importe quel nom.

Si la porte dérobée est exécutée par des attaquants avec la chaîne « none », comme argument de ligne de commande, alors elle tente d'utiliser des mécanismes de persistance afin d'être lancée automatiquement après le redémarrage. Si la porte dérobée n'est pas exécutée sous le compte root, alors elle utilise le fichier crontab. Cependant, si elle fonctionne en tant que root, elle prend en charge différents systèmes « Init Linux ». Il détermine quel système d'initialisation est actuellement utilisé en exécutant la commande :

strings /sbin/init |  awk 'match($0, /(upstart|systemd|sysvinit)/){ print substr($0, RSTART, RLENGTH);exit; }'

Basé sur le résultat de cette commande, il utilise les emplacements codés en dur suivants pour sa persistance :

Init system Location
sysvinit /etc/init.d/syslogd
upstart /etc/init/syslogd.conf
systemd /etc/systemd/system/syslogd.service

Au démarrage, la porte dérobée tente d'ouvrir un fichier de configuration, qui est stocké dans le même répertoire que la porte dérobée sous le nom config.json. Si ce fichier de configuration n'existe pas, un nouveau fichier est créé. La configuration est chiffrée à l'aide de la clé s0m3t3rr0r, via l'algorithme RC4.

Figure 6. Decrypted JSON configuration of the Linux/Exaramel backdoor

La backdoor se connecte au serveur C&C codé en dur (par défaut 176.31.225[.]204 dans l'exemple que nous avons vu jusqu'à présent) ou au serveur C&C listé dans les fichiers de configuration de valeur Hosts. La communication est envoyée par HTTPS. La porte dérobée prend en charge les commandes suivantes :

Command Purpose
App.Update Updates itself to a newer version
App.Delete Deletes itself from the system
App.SetProxy Sets proxy in configuration
App.SetServer Updates C&C server in configuration
App.SetTimeout Sets timeout value (time between connections to C&C server)
IO.WriteFile Downloads a file from a remote server
IO.ReadFile Uploads a file from local disk to C&C server
OS.ShellExecute Executes a shell command

Conclusion

La découverte d'Exaramel montre que le groupe TeleBots est toujours actif en 2018 et que les attaquants continuent d’améliorer leurs outils et tactiques.

La forte similitude de code entre la porte dérobée Win32/Exaramel et la porte dérobée principale Industroyer est la première preuve présentée publiquement reliant Industroyer à TeleBots, et donc à NotPetya et BlackEnergy. Bien qu'il faille toujours garder à l'esprit la possibilité de fausses alertes - ou d'un partage de code fortuit par un autre acteur de la menace - lors de la tentative d'attribution, dans ce cas, nous considérons que cela est peu probable.

Il est intéressant de noter que les attaquants ont commencé à utiliser des noms de domaine basés sur le thème d’ESET dans leurs opérations. Notons de plus que ces domaines ont été utilisés par des cybercriminels pour dissimuler aux défenseurs leurs activités malveillantes sur le réseau et ne sont en aucun cas liés à l'infrastructure serveur d'ESET. La liste des domaines légitimes utilisés par les produits ESET se trouve ici.

Les backdoor Win32 et Linux Exaramel ont été détectées dans une organisation qui n'est pas une installation industrielle. ESET a fait part de ses conclusions aux autorités d'enquête ukrainiennes à l'avance et, grâce à cette coopération, l'attaque a été localisée et évitée avec succès.

Les chercheurs d'ESET continueront de surveiller l'activité de ce groupe.

Indicateurs de compromission (IoC)

ESET detection names
Win32/Exaramel trojan
Win32/Agent.TCD trojan
Linux/Agent.EJ trojan
Linux/Exaramel.A trojan
Win32/PSW.Agent.OEP trojan
Win32/RiskWare.Mimikatz.Z application
Win64/Riskware.Mimikatz.AI application

SHA-1 HASHES
TeleBots Win32/Exaramel backdoor
65BC0FF4D4F2E20507874F59127A899C26294BC7
3120C94285D3F86A953685C189BADE7CB575091D
Password Stealer
F4C4123849FDA08D1268D45974C42DEB2AAE3377
970E8ACC97CE5A8140EE5F6304A1E7CB56FA3FB8
DDDF96F25B12143C7292899F9D5F42BB1D27CB20
64319D93B69145398F9866DA6DF55C00ED2F593E
1CF8277EE8BF255BB097D53B338FC18EF0CD0B42
488111E3EB62AF237C68479730B62DD3F52F8614
Mimikatz
458A6917300526CC73E510389770CFF6F51D53FC
CB8912227505EF8B8ECCF870656ED7B8CA1EB475
Linux/Exaramel
F74EA45AD360C8EF8DB13F8E975A5E0D42E58732

C&C servers
um10eset[.]net (IP: 176.31.225.204)
esetsmart[.]org (IP: 5.133.8.46)