Les chercheurs d'ESET ont découvert une porte dérobée Lazarus jusqu'alors non documentée, utilisée pour attaquer une entreprise de logistique de fret en Afrique du Sud, qu'ils ont baptisée Vyveva. La porte dérobée est constituée de plusieurs composants et communique avec son serveur C&C via le réseau Tor. Jusqu'à présent, nous avons pu trouver son installateur, son chargeur et sa principale charge utile - une porte dérobée avec une DLL TorSocket. Cette attaque jusqu'alors inconnue a été découverte en juin 2020.
Bien que Vyveva ait été utilisé depuis au moins décembre 2018, son vecteur de compromission initial est encore inconnu. Nos données de télémétrie suggèrent un déploiement ciblé, car nous n'avons trouvé que deux machines victimes, qui sont toutes deux des serveurs appartenant à une entreprise de logistique de fret située en Afrique du Sud. La porte dérobée présente des capacités d'exfiltration de fichiers, de timestomping, de collecte d'informations sur l'ordinateur victime et ses lecteurs, ainsi que d'autres fonctionnalités courantes de porte dérobée telles que l'exécution de code arbitraire spécifié par les opérateurs du logiciel malveillant. Cela indique que l'intention de l'opération est très probablement l'espionnage.
Cet article fournit la première analyse technique publique des composants de Vyveva.
Attribution à Lazarus
Vyveva partage de nombreuses similitudes de code avec des échantillons plus anciens de Lazarus qui sont détectés par les produits ESET comme la famille de logiciels malveillants NukeSped. Cependant, les similitudes ne s'arrêtent pas là : l'utilisation de faux TLS dans la communication réseau, les chaînes d'exécution en ligne de commande et la manière d'utiliser le chiffrement et les services Tor sont autant d'éléments qui pointent vers Lazarus. Nous pouvons donc attribuer Vyveva à ce groupe APT avec une grande confiance.
Un exemple des nombreuses similitudes de code peut être vu dans la figure 1 - résolution des exportations de la bibliothèque Tor portant un nom unique.
- 92F5469DBEFDCEE1343934BE149AFC1241CC8497 msobjs.drx Vyveva backdoor
- BF98EA1326E5F8C351E68C79B5D1E0164C7BE728 taskhosts.exe Win32/NukeSped.HV trojan
Analyse technique
Jusqu'à présent, nous avons réussi à trouver trois des multiples composants de Vyveva - son installateur, son chargeur et sa porte dérobée. L'installateur est l'étape chronologique la plus ancienne trouvée et, comme il s'attend à ce que d'autres composants soient déjà présents sur la machine, il suggère l'existence d'une étape antérieure inconnue - un dropper. Le chargeur sert à déchiffrer la porte dérobée à l'aide d'un simple algorithme de déchiffrement XOR.
La figure 2 permet d'examiner de plus près les fonctionnalités de l'installateur, de la porte dérobée et de la bibliothèque Tor.
Programme d'installation
L'installateur a deux objectifs principaux : il crée un service qui assure la persistance du chargeur de porte dérobée et il stocke la configuration par défaut de la porte dérobée dans le registre.
Pour créer un service d'apparence légitime, ses attributs, tels que le nom du service et le nom d'affichage, sont formés à l'aide d'une combinaison de mots provenant des attributs de services existants, qui sont sélectionnés au hasard. Il est également possible de spécifier ces attributs au programme d'installation via les paramètres de ligne de commande -dll, -svc, -disp, -desc, et -group. Nous avons observé ce qui suit dans la nature, avec ces paramètres :
<SYSDIR>\powerctl.exe -svc powerctl -dll powerctl.dll
En ce qui concerne cette dernière tâche, le programme d'installation définit d'abord l'ID de configuration de l'infection, qui identifie de manière unique chaque victime, par une valeur générée de manière aléatoire, puis la stocke dans le registre, comme le montre la figure 3.
[HKLM\SOFTWARE\Microsoft\DirectX]
UsageMask = <CONFIG_DATA>
Figure 3. Valeur de registre de la configuration
L'une des entrées de la configuration est une liste de serveurs C&C chiffrés. Par exemple, l'échantillon de programme d'installation que nous avons analysé est configuré avec les C&C suivants :
- 4bjt2rceijktwedi[.]onion:80
- cwwpxpxuswo7b6tr[.]onion:80
Fonctionnalités de la porte dérobée
Le backdoor, principale composante de Vyveva, se connecte aux serveurs C&C et exécute les commandes émises par les acteurs de la menace. Il comporte 23 commandes, dont certaines sont asynchrones et exécutées dans leurs propres threads. La plupart d'entre elles sont des commandes ordinaires permettant d'effectuer des opérations sur des fichiers et des processus ou de collecter des informations, mais il existe également une commande moins courante pour le timestomping de fichiers. Elle peut copier les métadonnées d'heure de création/écriture/accès d'un fichier « donneur » vers un fichier de destination ou utiliser une date aléatoire dans les années 2000-2004.
Les autres commandes dignes d'intérêt sont la commande de téléchargement de fichiers de Vyveva et la commande 0x26. La commande de téléchargement de fichiers est capable d'exfiltrer des répertoires de manière récursive et prend en charge le filtrage des extensions de fichiers - par exemple, uniquement les documents Office. Quant à la commande 0x26, elle indique l'existence d'un autre composant inconnu que nous n'avons pas encore observé au moment de la rédaction de cet article.
Le Tableau 1 présente la liste complète des commandes.
Tableau 1. Commandes de la porte dérobée Vyveva
ID | Description |
---|---|
0x03 | Reply to “ping” from server |
0x10 | Get information about computer – username, computer name, IP, code page, OS version, OS architecture, tick count, time zone, current directory |
0x11 | Get information about drives – type, size, name, serial number, filesystem type |
0x12 | Write data to specified file, optionally timestomp. |
0x13 |
- For each entry – name, attributes Options
|
0x14 |
|
0x15 | Set current directory to specified directory |
0x16 | Create specified process |
0x17 | Get information about running processes – PID, PPID, executable file path |
0x18 | Terminate process(es) by PID or executable file path |
0x19 |
The command uses a format string which hints at execution through cmd.exe If the output is empty, unique string "<NO RESULT!>\r\n" is uploaded instead |
0x1A |
|
0x1B | Copy creation/write/access time metadata from source file or directory to destination file or directory. If the source doesn’t exist, random time in year 2000-2004 is used for creation & last write time, access time is unchanged. |
0x1C |
|
0x1D | Set current configuration blob, save to registry |
0x1E | Get current configuration blob |
0x1F | Enable/disable drive watchdog (configuration field enable_drive_watchdog) |
0x20 | Enable/disable session watchdog (configuration field enable_session_watchdog) |
0x21 | Set configuration value related to delay of backdoor execution (configuration field delay_until_time) |
0x23 | Store data used by asynchronous command (related to commands 0x12, 0x13) |
0x24 | Stop executing asynchronous command (related to commands 0x12, 0x13) |
0x25 | Set configuration value related to delay between failed C&C connection attempts (configuration field wait_minutes) |
0x26 |
|
Les gardiens de la porte dérobée, qui peuvent être activés ou désactivés de manière facultative, sont particulièrement intéressants. Il existe un chien de garde du lecteur utilisé pour surveiller les lecteurs nouvellement connectés et déconnectés, et un chien de garde de la session qui surveille le nombre de sessions actives (c'est-à-dire les utilisateurs connectés). Ces composants peuvent déclencher une connexion au serveur C&C en dehors de l'intervalle régulier et préconfiguré de trois minutes, ainsi que lors de nouveaux événements liés aux lecteurs et aux sessions.
Configuration
La configuration de la porte dérobée, qui est initialement définie par le programme d'installation, est lue à partir de la valeur de registre (illustrée à la Figure 3). Lorsque la configuration est modifiée par une commande C&C, la valeur stockée dans le registre est mise à jour. Un exemple de configuration et sa structure sont illustrés à la Figure 4.
Le champ wait_minutes indique le temps d'attente avant la prochaine connexion au C&C après l'échec d'une tentative de connexion. Si l'exécution de la porte dérobée doit être retardée jusqu'à une date et une heure particulières, elle peut être spécifiée dans le champ delay_until_time. Le champ encrypted_cncs est une chaîne chiffrée, qui contient des C&C séparés par des points-virgules.
Librairie Tor
Vyveva utilise la librairie Tor, qui est basée sur le code source officiel de Tor, pour communiquer avec un serveur C&C choisi au hasard dans la configuration. Il contacte le C&C à intervalles de trois minutes, envoyant des informations sur l'ordinateur victime et ses lecteurs avant de recevoir des commandes. Le répertoire d'exportation de la backdoor contient le fichier TorSocket.dll avec des exportations auto-explicatives close_ch, connect_ch, open_ch, read_ch, write_ch.
Conclusion
Vyveva constitue une nouvelle addition à l'arsenal étendu de logiciels malveillants de Lazarus. L'attaque d'une entreprise en Afrique du Sud illustre également le vaste ciblage géographique de ce groupe APT.
Pour toute demande de renseignements ou d'échantillons liés à ce sujet, contactez-nous à l'adresse threatintel@eset.com.
Indicateurs de compromission (IoCs)
Échantillons
SHA-1 | Filename | ESET detection name | Description |
---|---|---|---|
DAD50AD3682A3F20B2F35BE2A94B89E2B1A73067 | powerctl.exe | Win32/NukeSped.HX | Installer |
69529EED679B0C7F1ACC1FD782A4B443CEC0CF83 | powerctl.dll | Win32/NukeSped.HX | Loader (x86) |
043ADDFB93A10D187DDE4999D78096077F26E9FD | wwanauth.dll | Win64/NukeSped.EQ | Loader (x64) |
1E3785FC4FE5AB8DAB31DDDD68257F9A7FC5BF59 | wwansec.dll | Win32/NukeSped.HX | Loader (x86) |
4D7ADD8145CB096359EBC3E4D44E19C2735E0377 | msobjs.drx | - | Backdoor (encrypted) |
92F5469DBEFDCEE1343934BE149AFC1241CC8497 | msobjs.drx | Win32/NukeSped.HX | Backdoor (decrypted with fixed MZ header) |
A5CE1DF767C89BF29D40DC4FA6EAECC9C8979552 | JET76C5.tmp | - | Backdoor Tor library (encrypted) |
66D17344A7CE55D05A324E1C6BE2ECD817E72680 | JET76C5.tmp | Win32/NukeSped.HY | Backdoor Tor library (decrypted with fixed MZ header) |
Noms de fichier
%WINDIR%\System32\powerctl.exe
%WINDIR%\SysWOW64\powerctl.exe
%WINDIR%\System32\power.dat
%WINDIR%\SysWOW64\power.dat
%WINDIR%\System32\wwanauth.dll
%WINDIR%\SysWOW64\wwanauth.dll
%WINDIR%\System32\wwansec.dll
%WINDIR%\SysWOW64\wwansec.dll
%WINDIR%\System32\powerctl.dll
%WINDIR%\SysWOW64\powerctl.dll
%WINDIR%\System32\JET76C5.tmp
%WINDIR%\SysWOW64\JET76C5.tmp
%WINDIR%\System32\msobjs.drx
%WINDIR%\SysWOW64\msobjs.drx
Techniques MITRE ATT&CK
Ce tableau a été conçu en utilisant la version 8 de MITRE ATT&CK.
Tactic | ID | Name | Description |
---|---|---|---|
Execution | T1569.002 | System Services: Service Execution | Vyveva loader executes via a service. |
T1106 | Native API | Vyveva backdoor uses the CreateProcessA API to execute files. | |
Persistence | T1543.003 | Create or Modify System Process: Windows Service | Vyveva installer creates a new service to establish persistence for its loader. |
Defense Evasion | T1140 | Deobfuscate/Decode Files or Information | Vyveva decrypts strings and components (backdoor, Tor library). |
T1070.006 | Indicator Removal on Host: Timestomp | Vyveva backdoor can timestomp files. | |
T1036.004 | Masquerading: Masquerade Task or Service | Vyveva installer can create a service with attributes mimicking existing services. | |
T1112 | Modify Registry | Vyveva stores its configuration in the registry. | |
T1027 | Obfuscated Files or Information | Vyveva has encrypted strings and components. | |
Discovery | T1083 | File and Directory Discovery | Vyveva backdoor can obtain file and directory listings. |
T1057 | Process Discovery | Vyveva backdoor can list running processes. | |
T1082 | System Information Discovery | Vyveva backdoor can obtain system information, including computer name, ANSI code page, OS version and architecture. | |
T1016 | System Network Configuration Discovery | Vyveva backdoor can obtain the local IP address of the victim computer. | |
T1033 | System Owner/User Discovery | Vyveva backdoor can obtain victim's username. | |
T1124 | System Time Discovery | Vyveva backdoor can obtain system time and time zone. | |
Collection | T1560.002 | Archive Collected Data: Archive via Library | Vyveva backdoor can compress files with zlib before sending to C&C. |
T1005 | Data from Local System | Vyveva backdoor can collect files from computer. | |
T1025 | Data from Removable Media | Vyveva backdoor can notify C&C about newly inserted removable media and collect files from them. | |
Command and Control | T1573.001 | Encrypted Channel: Symmetric Cryptography | Vyveva backdoor encrypts C&C traffic using XOR. |
T1573.002 | Encrypted Channel: Asymmetric Cryptography | Vyveva backdoor communicates with C&C via Tor. | |
Exfiltration | T1041 | Exfiltration Over C2 Channel | Vyveva exfiltrates data to C&C server. |