Zyklon : anatomie d’un malware qui a récemment exploité des vulnérabilités présentes dans Microsoft Office

Introduction

D'après une découverte récente de l'équipe de chercheurs FireEye, des cyberattaquants ont exploité des failles de Microsoft Office pour propager le malware HTTP Zyklon. Observé pour la première fois début 2016, Zyklon est un backdoor que l'on peut se procurer facilement sur le darknet.

Au menu de ses nombreuses fonctionnalités : enregistrement de frappe, récupération de mots de passe, téléchargement et exécution de plug-ins additionnels, déni de service distribué (DDoS), auto-actualisation et auto-désinstallation. Le malware peut être configuré pour communiquer avec ses serveurs de commande et de contrôle (C2) sur le réseau The Onion Router (Tor). Il peut en outre télécharger plusieurs plug-ins, dont certains permettent l’extorsion de crypto-monnaie et la récupération de mots de passe depuis les navigateurs web et les clients de messagerie. Enfin, Zyklon est équipé d'un mécanisme très efficace de suivi de la diffusion et de l'impact.

Vecteur d'infection

Selon nos observations, cette nouvelle vague de malware Zyklon se répand essentiellement par des emails de spam. L'e-mail type envoie un fichier ZIP contenant un fichier DOC infecté (la figure 1 montre un exemple de leurre).

Les secteurs les plus touchés :

  • Télécommunications
  • Assurances
  • Services financiers


Figure 1 : Exemples de leurres

Flux d'attaque

  1. Le spam arrive dans la boîte mail de la victime sous forme de pièce-jointe ZIP contenant un fichier DOC infecté.
  2. Ce fichier exploite au moins trois vulnérabilités connues de Microsoft Office, sur lesquelles nous reviendrons dans la section « Techniques d'infection ». Dès lors qu’un fichier est ouvert dans un environnement vulnérable, son payload s'appuie sur PowerShell pour prendre le relai.
  3. Un script PowerShell lance ainsi le téléchargement du payload depuis un serveur C2, puis l'exécute.

La figure 2 illustre le flux de l'attaque et sa chaîne d'exécution.


Figure 2 : Flux d'attaque Zyklon

Techniques d'infection

CVE-2017-8759

Cette vulnérabilité a été découverte par FireEye en septembre 2017 et nous avons déjà pu constater son exploitation.

Le fichier DOC comprend un objet OLE intégré qui, s'il est exécuté, lance le téléchargement d'un autre fichier DOC depuis l'URL enregistrée (voir figure 3).


Figure 3 : Adresse URL intégrée à un objet OLE

CVE-2017-11882

De même, nous avons également observé l’exploitation active d’une autre vulnérabilité de Microsoft Office (CVE-2017-11882)  découverte récemment. À l'ouverture de la pièce-jointe DOC infectée, un autre téléchargement est lancé depuis une URL dans un objet OLE incorporé (voir figure 4).


Figure 4 : Adresse URL intégrée à un objet OLE


Figure 5 : Requête HTTP GET pour télécharger un nouveau payload

Le fichier téléchargé, doc.doc, est un XML contenant une commande PowerShell (voir figure 6) qui déclenche le téléchargement du fichier binaire Pause.ps1.


Figure 6 : Commande PowerShell pour télécharger le payload Pause.ps1

Échange dynamique de données (DDE)

L'échange dynamique de données (DDE) est le mécanisme de communication interprocessus utilisé pour exécuter le code à distance. Ensuite, un script PowerShell (voir figure 7) déclenche le téléchargement du prochain payload de la chaîne (Pause.ps1).


Figure 7 : Technique DDE utilisée pour télécharger le code Pause.ps1

Nous avons notamment observé l'utilisation d'adresses IP sans point de séparation (par exemple : hxxp://258476380).

La figure 8 montre la communication réseau du téléchargement de Pause.ps1.


Figure 8 : Communication réseau pour le téléchargement du payload Pause.ps1

Diffusion de Zyklon

Quelle que soit la technique employée, le même domaine est utilisé pour télécharger le prochain payload du prochain palier (Pause.ps1), qui n’est autre qu’un nouveau script PowerShell encodé en Base64 (comme indiqué dans la figure 8).

Le script Pause.ps1 est responsable de la résolution des API nécessaires à l'injection du code. Il contient aussi le shellcode injectable. Les API contiennent les fonctions VirtualAlloc(), memset() et CreateThread(). La figure 9 montre le code Base64 déchiffré.


Figure 9 : Pause.ps1 décodé en Base64

Le code injecté lance le téléchargement du payload final depuis le serveur (voir figure 10) : un fichier portable exécutable (PE), compilé avec .Net framework.


Figure 10 : Trafic réseau pour le téléchargement du payload final (words.exe)

Une fois exécuté, le fichier...

  1. Place une copie de lui-même dans %AppData%\svchost.exe\svchost.exe et dépose un fichier XML contenant des informations de configuration pour le Planificateur de tâches (voir figure 11).
  2. Décompresse le code en mémoire, puis recourt au Process Hollowing pour remplacer un processus légitime par du code malveillant. Le fichier MSIL contient le payload principal compressé dans sa section ressources .Net.
  3. La décompression de ce code libère Zyklon.


Figure 11 : Fichier de configuration XML pour planifier la tâche

Le malware Zyklon détecte l'adresse IP de l’équipement infecté au moyen de ces sites :

  • api.ipify[.]org
  • ip.anysrc[.]net
  • myexternalip[.]com
  • whatsmyip[.]com

Le fichier exécutable Zyklon contient un fichier chiffré baptisé tor dans sa section ressources .Net. Le fichier est décrypté et injecté dans une instance InstallUtiil.exe. Il joue alors le rôle d’anonymiseur pour Tor.

Communication par le serveur de commande& et de contrôle (C2)

La communication C2 de Zyklon passe par le réseau Tor. Le malware envoie une requête POST au serveur C2. Le serveur C2 est ajouté par le gate.php, qui est stocké dans la mémoire fichier. Le paramètre transféré à cette requête est getkey=y. En réponse à cette requête, le serveur C2 répond avec une clé RSA publique encodée en Base64 (voir figure 12).


Figure 12 : Clé RSA publique de Zyklon

Une fois la connexion établie avec le serveur C2, le malware peut communiquer avec lui grâce aux commandes listées dans le tableau 1.

Commande

Action

sign

Demande les informations système

settings

Demande les paramètres au serveur C2

logs

Charge les mots de passe récupérés

wallet

Charge les portefeuilles de cryptomonnaie récupérés

proxy

Indique l'ouverture d'un port proxy SOCKS

miner

Commandes de vol de cryptomonnaie

error

Signale les erreurs au serveur C2

ddos

Commandes d'attaque DDoS

Tableau 1 : Commandes acceptées par Zyklon

Les figures suivantes montrent la requête initiale et la réponse du serveur aux commandes « settings » (figure 13), « sign » (figure 14), et « ddos » (figure 15).


Figure 13 : Commande « settings » de Zyklon et réponse du serveur


Figure 14 : Commande « sign » de Zyklon et réponse du serveur


Figure 15 : Commande « ddos » de Zyklon et réponse du serveur

Gestionnaire des plug-ins

Zyklon télécharge de nombreux plug-ins depuis son serveur C2. L'URL du plug-in est stockée dans le fichier au format suivant :

  • /plugin/index.php?plugin=<Nom_du_plug-in>

Les plug-ins suivants peuvent être trouvés dans la mémoire du malware Zyklon :

  • /plugin/index.php?plugin=cuda
  • /plugin/index.php?plugin=minerd
  • /plugin/index.php?plugin=sgminer
  • /plugin/index.php?plugin=socks
  • /plugin/index.php?plugin=tor
  • /plugin/index.php?plugin=games
  • /plugin/index.php?plugin=software
  • /plugin/index.php?plugin=ftp
  • /plugin/index.php?plugin=email
  • /plugin/index.php?plugin=browser

Les plug-ins téléchargés sont injectés dans le fichier : Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe.

Fonctionnalités supplémentaires

Le malware Zyklon offre les fonctionnalités supplémentaires suivantes (via l'installation de plug-ins) :

Récupération de mots de passe dans les navigateurs

Zyklon HTTP peut récupérer des mots de passe depuis les navigateurs web suivants :

  • Google Chrome
  • Mozilla Firefox
  • Internet Explorer
  • Opera
  • Chrome Canary/SXS
  • CoolNovo
  • Apple Safari
  • Flock
  • SeaMonkey
  • SRWare Iron
  • Comodo Dragon
Récupération de mot de passe FTP

Zyklon est actuellement capable de récupérer les mots de passe depuis les applications FTP suivantes :

  • FileZilla
  • SmartFTP
  • FlashFXP
  • FTPCommander
  • Dreamweaver
  • WS_FTP
Récupération des clés d'installation de jeux vidéos

Zyklon est capable de récupérer les clés d'installation des jeux vidéo suivants sur PC :

  • Battlefield
  • Call of Duty
  • FIFA
  • NFS
  • Age of Empires
  • Quake
  • The Sims
  • Half-Life
  • IGI
  • Star Wars
Récupération de mots de passe d'e-mail

Zyklon peut aussi récupérer les mots de passe d’accès aux e-mails depuis les applications suivantes :

  • Microsoft Outlook Express
  • Microsoft Outlook 2002/XP/2003/2007/2010/2013
  • Mozilla Thunderbird
  • Windows Live Mail 2012
  • IncrediMail, Foxmail v6.x - v7.x
  • Windows Live Messenger
  • MSN Messenger
  • Google Talk
  • GMail Notifier
  • PaltalkScene IM
  • Pidgin (anciennement Gaim) Messenger
  • Miranda Messenger
  • Windows Credential Manager
Récupération de clé de licence

Le malware détecte et décrypte automatiquement les clés de licence ou de série de plus de 200 logiciels très répandus, dont Office, SQL Server, Adobe et Nero.

Proxy Socks5

Zyklon peut établir un serveur proxy Socks5 inversé sur les machines hôtes infectées.

Détournement d’adresses Bitcoin dans le presse-papiers

Zyklon est capable d'infiltrer le presse-papiers et de remplacer l'adresse Bitcoin copiée par l'utilisateur par une adresse hébergée sur le serveur de contrôle de l'attaquant.

Prix de Zyklon

Nos chercheurs ont identifié plusieurs versions de Zyklon HTTP commercialisées sur un site de vente clandestin aux tarifs suivants :

  • Configuration de base : 75 $ (USD)
  • Configuration pour Tor : 125 $ (USD)
  • Rebuild/mise à jour 15 $ (USD)
  • Méthode de paiement : Bitcoin (BTC)

Conclusion

Lorsque des cyberattaquants parviennent à exploiter des vulnérabilités récemment découvertes dans des logiciels très répandus (en l'occurrence, Microsoft Office), l’omniprésence de ces logiciels augmente d’autant leurs chances de réussite. Ce type de menace démontre une nouvelle fois toute l'importance de mettre régulièrement ses logiciels à jour. Tous les secteurs devront se tenir sur leurs gardes car il est fort probable que les pirates élargissent leur champ d'attaque à plus ou moins long terme.

Au moment où nous rédigeons ce billet, le moteur FireEye  Multi Vector Execution (MVX)  est capable de reconnaître et de bloquer Zyklon. Le tableau 2 énumère les capacités actuelles de détection et de blocage par produit.

Nom de la menace

Produit

Action

TÉLÉCHARGEUR POWERSHELL D (MÉTHODOLOGIE)

HX

Détection

UTILISATION SUSPECTE DE POWERSHELL (MÉTHODOLOGIE)

HX

Détection

TÉLÉCHARGEUR POWERSHELL (MÉTHODOLOGIE)

HX

Détection

UTILISATION SUSPECTE D'EQNEDT (MÉTHODOLOGIE)

HX

Détection

TOR (TUNNELER)

HX

Détection

FICHIER SVCHOST.EXE SUSPECT (MÉTHODOLOGIE)

HX

Détection

Malware.Binary.rtf

EX/ETP/NX

Blocage

Malware.Binary

EX/ETP/NX

Blocage

FE_Exploit_RTF_CVE_2017_8759

EX/ETP/NX

Blocage

FE_Exploit_RTF_CVE201711882_1

EX/ETP/NX

Blocage

Tableau 2 : Capacités de détection actuelles des produits FireEye

Indicateurs de compromission

L'analyse fournie est effectuée sur la base des échantillons représentatifs de leurres présentés dans le tableau 3.

MD5

Nom

76011037410d031aa41e5d381909f9ce

accounts.doc

4bae7fb819761a7ac8326baf8d8eb6ab

Courier.doc

eb5fa454ab42c8aec443ba8b8c97339b

doc.doc

886a4da306e019aa0ad3a03524b02a1c

Pause.ps1

04077ecbdc412d6d87fc21e4b3a4d088

words.exe

Tableau 3 : Exemples de leurres Zyklon

Indicateurs réseau
  • 154.16.93.182
  • 85.214.136.179
  • 178.254.21.218
  • 159.203.42.107
  • 217.12.223.216
  • 138.201.143.186
  • 216.244.85.211
  • 51.15.78.0
  • 213.251.226.175
  • 93.95.100.202
  • warnono.punkdns.top