Sednit : Quelles sont les dernières informations sur Zebrocy?

Sednit : Quoi de neuf avec Zebrocy?

En août 2018, les opérateurs de Sednit ont déployé deux nouvelles composantes de Zebrocy. Depuis, on observe une augmentation des déploiements de Zebrocy, avec des cibles en Asie centrale et dans les pays d'Europe centrale et orientale, dont des ambassades, des ministères des Affaires étrangères et des diplomates.

En août 2018, les opérateurs de Sednit ont déployé deux nouvelles composantes de Zebrocy. Depuis, on observe une augmentation des déploiements de Zebrocy, avec des cibles en Asie centrale et dans les pays d’Europe centrale et orientale, dont des ambassades, des ministères des Affaires étrangères et des diplomates.

Le groupe Sednit opère depuis au moins 2004 et a souvent fait la une des journaux ces dernières années : on pense qu’il est à l’origine d’attaques majeures et très médiatisées. Par exemple, le ministère américain de la Justice a désigné ce groupe comme étant responsable du piratage du Comité national démocratique (DNC) juste avant les élections américaines de 2016. Le groupe est également soupçonné d’être à l’origine du piratage du réseau mondial de télévision TV5 Monde, de la fuite de courriels de l’Agence mondiale antidopage (AMA) et de bien d’autres. Ce groupe dispose d’un ensemble diversifié d’outils malveillants dans son arsenal, dont plusieurs exemples ont déjà été documentés dans notre white paper Sednit, paru en 2016.

Depuis, les chercheurs d’ESET ont publié un white paper sur LoJax, un rootkit UEFI que nous attribuons à Sednit, utilisé contre des organisations dans les Balkans et en Europe centrale et orientale.

En août 2018, les opérateurs de Sednit ont déployé deux nouveaux composants Zebrocy, et depuis lors, nous avons constaté une augmentation des déploiements de Zebrocy. Zebrocy est un ensemble de téléchargeurs, de droppeurs et de backdoors (ou portes dérobées). Pendant que les téléchargeurs et les droppeurs assurent la reconnaissance, les backdoors mettent en œuvre des activités de persistance et d’espionnage contre la cible. Ces nouveaux composants utilisent un moyen inhabituel d’exfiltrer l’information recueillie en utilisant des protocoles liés aux services de messagerie tels que SMTP et POP3.

Les victimes ciblées par ces nouvelles composantes sont semblables aux victimes mentionnées dans notre précédent post Zebrocy et par Kaspersky. Les cibles de ces attaques se trouvent en Asie centrale, ainsi que dans des pays d’Europe centrale et oriental, et incluent notamment des ambassades, des ministères des affaires étrangères et des diplomates.

Vue d’ensemble

Depuis deux ans, le groupe Sednit utilise principalement des messages d’hameçonnage comme vecteur d’infection pour les campagnes Zebrocy (Cas 1 et Cas 2). Une fois les cibles compromises, ils utilisent différents téléchargeurs de première étape pour recueillir des informations sur les victimes et, si les victimes sont suffisamment intéressantes, ils déploient une de leurs portes dérobées de deuxième niveau après un délai de plusieurs heures, voire quelques jours.

Le modus operandi classique d’une campagne Zebrocy est le suivant : la victime reçoit une archive jointe à un email. Cette archive contient deux fichiers, un document bénin et un exécutable. L’opérateur tente de tromper la victime en nommant l’exécutable avec un nom de document ou de fichier image apparent en incorporant le truc de la « double extension ».

Cette nouvelle campagne, décrite comme le cas 3 de la Figure 1, utilise une procédure plus complexe.  Nous disséquons ce processus ci-dessous.

Droppeur Delphi

Le premier binaire est un droppeur Delphi, ce qui est assez inhabituel pour une campagne Zebrocy. La plupart du temps, c’est un téléchargeur plutôt qu’un droppeur qui est installé sur le système de la victime comme première étape.

Ce droppeur contient quelques astuces pour rendre la rétro-ingénierie plus difficile. Il utilise un mot-clé – liver dans les échantillons que nous avons décrits ici – pour marquer le début et la fin des éléments clés comme indiqué ci-dessous.

La règle de l’YARA ci-dessus cherche la chaîne liver. Le premier liver est celui utilisé dans le code et il ne sépare rien de rien, tandis que les autres séparent le descripteur de clé, l’image (ci-dessous en hexadécimal) et la charge utile chiffrée dans le droppeur.

À partir de l’image, celle-ci est déposée comme C:\Users\public\Pictures\scanPassport.jpg si un fichier de ce nom n’existe pas déjà. Fait intéressant, le nom de fichier du droppeur, SCANPASS_QXWEGRFGCVT_323803488900X_jpeg.exe, fait également allusion à un stratagème d’hameçonnage qui tourne autour de l’information de voyage ou de passeport. Cela pourrait indiquer que l’opérateur connaissait la cible du message d’hameçonnage. Le droppeur ouvre l’image : si le fichier existe, il arrête de s’exécuter; sinon, il laisse tomber l’image, l’ouvre et récupère le descripteur de clé OpenAir39045_Bayren_Munchen. L’image ne semble rien afficher tant que le format de fichier est valide, comme on le voit à la Figure 2.

La chaîne de caractères du descripteur clé contient Bayren_Munchen, qui semble probablement être une référence à l’équipe allemande de football FC Bayern Munich. Quoi qu’il en soit, ce n’est pas le contenu du descripteur de clé qui compte, mais sa longueur, la longueur utilisée pour récupérer la clé XOR utilisée pour chiffrer la charge utile.

Pour obtenir la clé XOR, le droppeur recherche le dernier mot-clé liver et ajoute le décalage du descripteur de la clé. La longueur de la clé XOR – 27 octets (0x1b) – est la même que celle du descripteur de clé.

En utilisant la clé XOR et une simple boucle XOR, le droppeur déchiffre la dernière partie – qui est la charge utile chiffrée – juste après la dernière étiquette jusqu’à la fin du fichier. Notez que l’en-tête MZ de la charge utile exécutable commence juste après le mot-clé liver et la clé XOR extraite d’une partie de l’en-tête PE qui est normalement une séquence de 0x00 octets, qui sont restaurés une fois la charge utile déchiffrée, comme le montre la Figure 3.

Il dépose la charge utile comme C:\Users\Public\Documents\AcrobatReader.txt et déplace le fichier vers C:\Users\Public\Documents\AcrobatReader.exe.

Il s’agit peut-être d’une tentative pour éviter que les systèmes de protection des points d’extrémité ne déclenchent une alerte basée sur l’abandon par un binaire d’un fichier avec une extension.exe.

L’opérateur tente encore une fois de tromper les victimes, au cas où elles jetteraient un coup d’œil au répertoire. Dans ce cas, elles verraient le fichier affiché tel que le montre la Figure 4 :

Par défaut, Windows cache l’extension, ce qui est utilisé par l’opérateur pour déposer un exécutable dans un répertoire Documents et le fait ressembler à un fichier PDF.

Enfin, le droppeur exécute sa charge utile fraîchement déposée et sort.

Téléchargeur de courrier MSIL

La charge utile du droppeur précédent est un téléchargeur MSIL chargé UPX. Pour faciliter la compréhension du processus, la logique principale est décrite ci-dessous, suivie du code source, puis d’un aperçu du flux de contrôle disséqué.

La méthode principale appelle Run pour lancer l’application, qui crée ensuite le formulaire Form1.

Le formulaire Form1 initie un grand nombre de variables, y compris un nouveau Timer pour sept d’entre elles.

Un objet Timer comporte trois zones importantes :

  • Enabled : indique si la minuterie est active;
  • Interval : le temps, en millisecondes, entre les événements écoulés;
  • Tick : le rappel exécuté lorsque l’intervalle de temps de la minuterie est écoulé et que la minuterie est activée.

Ici, ces champs sont initialisés comme étant :

Pour chaque objet, il définit un Intervalle (Interval) qui va de 8 secondes à 2 minutes. Un rappel est ajouté au gestionnaire d’événements. Notez que seul start définit Enabled comme vrai, ce qui signifie qu’après 2 minutes (soit 12 000 millisecondes = 120 secondes) start_Tick sera appelé par le gestionnaire d’événements.

Par la suite, chaque méthode a le même comportement. Elle définit effectivement met la variable Enabled comme false (fausse) au début de la méthode. La méthode se produit, et ensuite définit la variable Enabled de l’objet suivant à true (vrai), ce qui activera la minuterie suivante. La variable Activé est utilisée par l’opérateur pour mettre en place une sorte de machine d’état : si les fonctions échouent, il s’agit d’un mécanisme permettant de répéter les fonctions échouées jusqu’à leur succès. Le temps entre l’exécution de deux fonctions peut être une tentative de contourner les systèmes de protection des points d’extrémité en ajoutant un délai.

La structure de chaque méthode est maintenant définie ; la partie suivante se concentrera sur le flux de contrôle du logiciel malveillant.

Voici un aperçu des différentes étapes suivant les échanges entre les différentes boîtes aux lettres électroniques.

L’un des premiers contrôles effectués par le logiciel malveillant est l’existence d’un chemin d’accès spécifique utilisé pour déposer chaque fichier utilisé lors de son exécution. Si possible, il utilise C:\Users\Public\Videos\. Dans le cas contraire, il utilisera C:\Documents and Settings\All Users\Documents\ comme répertoire par défaut. Notez que ce dernier chemin est spécifique à Windows XP alors que le premier est spécifique à Vista et aux versions supérieures.

Un identifiant id de 16 octets est généré en concaténant le numéro de série du volume C: et le nom d’utilisateur. Il est stocké dans le fichier audev.txt.

Le téléchargeur recueille les informations suivantes :

  • Chemin actuel de l’application,
  • Version du système d’exploitation,
  • Répertoire du système,
  • Domaine de l’utilisateur,
  • Nom de la machine,
  • Nom de l’utilisateur,
  • Fuseau horaire actuel,
  • Date actuelle,
  • Liste des disques logiques et informations sur chacun d’eux (modèle, numéro de série, etc.),
  • Liste des répertoires de C:\Program Files\ et C:\Program Files (x86)\,
  • Liste des processus.

Toutes ces informations sont stockées dans le fichier C:\Users\Public\Videos\si.ini et envoyées dans un message électronique, en pièce jointe, via SMTPS, en utilisant le port par défaut 465. Le corps de l’email contient la chaîne SI (qui signifie probablement System Information) et le destinataire est sym777.g@post.cz. Pour tout échange de courriels, l’objet du message est le suivant : set to the id.

L’opérateur choisit d’avoir plusieurs adresses de repli et envoie le même courriel à deux autres destinataires différents, probablement au cas où l’adresse principale ne fonctionnerait pas. Une fois le message envoyé, le téléchargeur supprime le fichier si.ini.

À la première exécution du logiciel malveillant, il crée le fichier set.txt comprenant {System_Parametrs = 10} à l’intérieur et crée l’entrée de registre Windows :

Une capture d’écran de l’ordinateur de la victime est prise et sous le nom scx.bin et envoyée en pièce jointe à SC (qui signifie probablement Screenshot) dans le corps de l’email.

Après envoi, ce logiciel malveillant se connecte à la boîte aux lettres kae.mezhnosh@post.cz via POP3 via SSL (port 995) et recherche les messages avec un objet qui correspond à son propre id. S’il y a un tel message et que le corps n’est pas vide, le logiciel malveillant hex le décode et envoie ensuite un message avec okey dans le corps à sym777.g@post.cz. Le contenu du courriel précédemment récupéré est nettoyé et analysé comme suit :

et le second est un nom d’utilisateur pour une adresse e-mail.

Ces nouvelles informations d’identification sont utilisées pour se connecter à la boîte de réception spécifiée fraîchement collectée et pour y rechercher également un message dont le sujet correspond à l’ id du logiciel malveillant, ainsi qu’une pièce jointe avec la chaîne audev dans son nom de fichier. Si les deux conditions sont remplies, le logiciel malveillant enregistre la pièce jointe et supprime le message du serveur.

Tous les messages de connexion sont envoyés à sym777.g@post.cz tandis que les messages récupérés via POP3 proviennent de données d’accès récemment obtenues.

Ces décisions des opérateurs rendent la cyberenquête plus difficile. Tout d’abord, si vous avez le téléchargeur avec les emails, vous ne pouvez pas vous connecter à la boîte aux lettres qui contient l’étape suivante.

Deuxièmement, si vous récupérez les informations d’identification de l’e-mail, vous ne pouvez toujours pas obtenir la prochaine charge utile, puisque celle-ci est supprimée après récupération.

Une fois que le téléchargeur a réussi à écrire la pièce jointe sur le disque, il envoie un e-mail comprenant okey2 dans le corps et une pièce jointe, nommée l.txt, contenant 090. Le même fichier est écrasé par 000 et le logiciel malveillant tente de récupérer un autre message. Encore une fois – si cela fonctionne – le fichier l.txt est envoyé avec le corps du texte de okey3. Le contenu de la pièce jointe est un répertoire et un nom de fichier. Le logiciel malveillant déplace le fichier audev vers ce chemin d’accès. Enfin, le logiciel malveillant envoie un courriel avec un corps de message okey4 et l.txt en pièce jointe. Il lance l’exécutable audev.exe et vérifie dans la liste des processus si l’un d’eux contient la chaîne audev.

Si un processus avec ce nom est trouvé, il envoie un dernier courriel comprenant okey5 dans le corps du message et ayant pour pièce jointe l.txt. Finalement, il supprime l.txt and set.txt, ainsi que la clé de registre Windows qu’il a créé, et se ferme.

Téléchargeur de mail Delphi

Le rôle principal de ce téléchargeur est d’évaluer l’importance du système compromis et, si ce dernier est jugé suffisamment important, de télécharger et d’exécuter le dernier téléchargeur de Zebrocy.

Ce binaire est écrit en Delphi et livré avec UPX. La définition complète de l’objet TForm1 se trouve dans la section ressource et comprend certains des paramètres d’utilisation du logiciel malveillant. La section suivante se concentre sur l’initialisation, les capacités et le protocole réseau du téléchargeur.

Initialisation

Au depart, il déchiffre une série de chaîne qui constituent des adresses de courrier électronique et des mots de passe. L’opérateur utilise l’algorithme de chiffrement AES ECB. Chaque chaine est codée en hexadécimal, les quatre premiers octets correspondants à la taille finale de la chaîne déchiffrée (la fin des chaînes déchiffrées pouvant comprendre du rembourrage). Il y a deux clés AES dans l’objet TForm1. La première est utilisée pour chiffrer les données, alors que la deuxième sert au déchiffrement.

Les emails et mots de passe sont utilisés par l’opérateur pour envoyer des commandes au logiciel malveillant, ainsi que pour retracer des informations récupérées sur l’ordinateur de la victime. Les protocoles de communication sont SMTP et POP3 – tous les deux sur SSL. Pour utiliser OpenSSL, le logiciel malveillant dépose et utilise deux bibliothèques de liaison dynamiques (DLL) OpenSSL : libeay32.dll (98c348cab0f835d6cf17c3a31cd5811f86c0388b) et ssleay32.dll (6d981d71895581dfb103170486b8614f7f203bdc).

Remarquez que tous les fichiers sont déposés dans le répertoire de travail du logiciel malveillant, C:\Users\Public\

La persistance est générée lors de la première exécution du logiciel malveillant par l’utilisation d’une technique bien connue : « Logon scripts ». Cette dernière crée un fichier script registration.bat et écrit plusieurs chaînes de l’objet TForm1. Le script final est :

Finalement, le logiciel malveillant crée un id, tout comme nous avons pu le voir dans les binaires Zebrocy précédents. Celui-ci retrouve le UserName en utilisant l’API Windows GetUserNameW et ajoute (prepends) le numéro de série du volume du lecteur C:\.

Capacités

Bien qu’il existe certaines conditions et un ordre dans le flux d’exécution pour collecter des informations sur la victime, la section suivante décrit différentes fonctionnalités de collecte. La configuration de l’analyse est stockée dans l’objet TForm1, regroupé selon sept possibilités différentes pour extraire des informations de l’ordinateur de la victime.

En commençant par une analyse simple, les premières informations que le logiciel malveillant peut collecter sont liées aux fichiers avec les extensions suivantes : .docx, .xlsx, .pdf, .pptx, .rar, .zip, .jpg, .bmp, .tiff. Pour chaque fichier présent sur le disque, il récupère le chemin complet et la date de dernière modification du fichier. Ces informations sont cryptées à l’aide de la clé AES mentionnée précédemment et stockées dans le fichier 0.txt. Une autre analyse cible les extensions dat, .json, .db et, comme l’analyse précédente, récupère le chemin d’accès complet et la date de dernière modification du fichier. Ensuite, il les chiffre et les stocke sous le fichier 57.txt.

La liste des processus en cours d’exécution est également l’une des fonctionnalités de ce logiciel malveillant. Il stocke ces informations dans le fichier 08.txt, et ressemble à la liste ci-dessous:

Le logiciel malveillant récolte des informations générales concernant l’ordinateur de la victime, ainsi que quelques-unes à propos du logiciel malveillant (par exemple, le numéro de version et le chemin où il s’exécute) dans le fichier i.txt, comme on peut le voir ici :

Le logiciel malveillant peut prendre des captures d’écran, qui sont stockées sous 2\[YYYY-mm-dd HH-MM-SS]-Image_001.jpg. Il génère aussi un autre fichier 2\sa.bin, alimenté par l’ensemble des captures d’écran qu’il a effectué. Sa dernière habileté est finalement l’énumération de réseau, dont le résultat peut être observé dans 4.txt.

Protocole de réseau

Le Delphi Mail Downloader constitue une nouveauté dans le coffre à outil de Zebrocy, qui représente une nouvelle façon d’exfiltrer les données et de récupérer les commandes de l’opérateur. L’exfiltration est plutôt simple, mais très bruyante sur le réseau, puisque tous les fichiers préalablement recueillis sont envoyées par SMTPS et chaque version du fichier est envoyé à trois reprises.

SenderRecipient
kevin30@ambcomission.comrishit333@ambcomission.com
salah444@ambcomission.comrishit333@ambcomission.com
karakos3232@seznam.czantony.miloshevich128@seznam.cz

L’objet du message est l’id de la victime et le fichier est envoyé en tant que pièce jointe avec le mot clé correspondant au contenu du fichier. Notez que, pour chaque fichier, on trouve une version chiffrée du fichier envoyé.

filesfiles encryptedkeywords
-0.txtSCAN
57.txt58.txtACC
08.txt082.txtPrL
i.txti2.txtSYS_INFO
4.txt42.txtGET_NETWORK

Les captures d’écran prises et les fichiers correspondants à chaque balayage de l’ordinateur sont aussi envoyées, mais en utilisant d’autres mots de passe.

ContentKeywords
screenshotsSC
.docx, .xlsx, .pdf, .pptx, .rar, .zip, .jpg, .bmp, .tiffFILEs
.dat, .json, .dbD_ACC

Alors que l’exfiltration utilise SMTP, le binaire se connecte à l’adresse tomasso25@ambcomission.com via POP3 et analyse les courriels. Le corps du message comprend différents mots clés, qui sont interprétés comme des commandes par le logiciel malveillant.

KeywordsPurposeLog
scanscan
ldfilescan
edit34execute and delete
pKL90registerisreg
prlistprocess listing
Start23executeisr
net40enumerating network resources
dele5delete fileisd
dele6delete directoryisd
cd25create directoryisc
autodeldelete itself
Co55copy fileis_cp
Mo00move fileis_m

Une fois exécute, un journal de débogage et le résultat de la commande, s’il y a lieu, sont renvoyés à l’opérateur. Par exemple, pour une commande de scan, l’opérateur reçoit un fichier comprenant la liste des fichier correspondant à l’extension du scan avec chaque fichier correspondant.

Bien que ce téléchargeur dispose de certaines des fonctionnalités d’une backdoor, il dépose un téléchargeur Delphi déjà associé et groupe, qui a été précédemment décrit dans notre article sur Zebrocy.

Sommaire

Nous avons précédemment observé des chevauchements entre Zebrocy et des logiciels malveillants traditionnels de Sednit. Nous avons vu Zebrocy déposer XAgent, la backdoor phare de Sednit. C’est donc avec une grande confiance que nous attribuons Zebrocy au groupe Sednit.

Cependant, l’analyse de ces binaires présente quelques erreurs au niveau du langage, ainsi que des décisions de développement qui illustre une différence dans la maturité de développement des outils. Les deux téléchargeurs utilisent des protocoles de courrier pour exfiltrer l’information et partagent des mécanismes communs pour rassembler les mêmes informations. Les deux sont également très bruyants sur le réseau et sur le système, car ils créent beaucoup de fichiers et en envoient beaucoup sur le réseau. Lors de l’analyse du Delphi Mail Downloader, quelques fonctionnalités semblaient avoir disparues, mais quelques chaînes figuraient toujours dans le binaire. Ainsi, alors que cet ensemble d’outils est exploité par le groupe Sednit, nous sommes très confiants qu’il soit développé par une équipe différente et moins expérimentée, par rapport à ceux qui développent les composants traditionnels de Sednit.

Les composants de Zebrocy sont de nouveaux compléments aux outils de Sednit et les récents événements peuvent expliquer l’utilisation croissante du binaire Zebrocy, par rapport au logiciel malveillant principal de Sednit.

Indicateurs de compromission (IoCs)

FilenameSHA-1 ESET detection
SCANPASS_QXWEGRFGCVT_323803488900X_jpeg.exe7768fd2812ceff05db8f969a7bed1de5615bfc5aWin32/Sednit.ORQ
C:\Users\public\Pictures\scanPassport.jpgda70c54a8b9fd236793bb2ab3f8a50e6cd37e2df-
C:\Users\Public\Documents\AcrobatReader.{exe,txt}a225d457c3396e647ffc710cd1edd4c74dc57152MSIL/Sednit.D
C:\Users\Public\Videos\audev.txta659a765536d2099ecbde988d6763028ff92752eWin32/Sednit.CH
%TMP%\Indy0037C632.tmp20954fe36388ae8b1174424c8e4996ea2689f747Win32/TrojanDownloader.Sednit.CMR
%TMP%\Indy01863A21.tmpe0d8829d2e76e9bb02e3b375981181ae02462c43Win32/TrojanDownloader.Sednit.CMQ

Liste d’adresses de courrier électronique

Emails
carl.dolzhek17@post.cz
shinina.lezh@post.cz
P0tr4h4s7a@post.cz
carl.dolzhek17@post.cz
sym777.g@post.cz
kae.mezhnosh@post.cz
tomasso25@ambcomission.com
kevin30@ambcomission.com
salah444@ambcomission.com
karakos3232@seznam.cz
rishit333@ambcomission.com
antony.miloshevich128@seznam.cz

Discussion