Faux ou faux : Analyse des leurres OceanLotus | WeLiveSecurity

Faux ou faux : Analyse des leurres OceanLotus

Les chercheurs d'ESET détaillent les dernières astuces et techniques qu'OceanLotus utilise pour déployer sa porte dérobée tout en restant sous le radar.

Les chercheurs d’ESET détaillent les dernières astuces et techniques qu’OceanLotus utilise pour déployer sa porte dérobée tout en restant sous le radar.

Cet article décrit d’abord comment le groupe OceanLotus (également connu sous les noms APT32 et APT-C-00) a récemment utilisé l’un des exploits accessibles au public pour CVE-2017-11882, une vulnérabilité de corruption de mémoire présente dans les logiciels Microsoft Office, et comment les logiciels malveillants OceanLotus parviennent à persister sans laisser aucune trace sur les systèmes compromis. Cet article décrira par la suite comment, depuis le début de 2019, le groupe utilise des archives auto-extractibles pour exécuter du code.

Contexte

Suite aux activités d’OceanLotus, nous partons en tournée dans le monde de la tromperie. Ce groupe est connu pour attirer les victimes en falsifiant des documents d’appel afin d’inciter les victimes potentielles à exécuter la porte dérobée du groupe, et il continue de proposer de nouvelles idées pour diversifier son arsenal. Les techniques utilisées pour les leurres vont des fichiers à double extension, des archives auto-extractibles et des documents aux macros activées à la réutilisation des exploits connus. De plus, ils sont très actifs et continuent sans relâche à attaquer leurs victimes préférées, les pays d’Asie du Sud-Est.

Résumé de l’exploit Equation Editor

A la mi-2018, OceanLotus a mené une campagne en utilisant des documents abusant de la faiblesse mise en évidence par la vulnérabilité CVE-2017-11882. En effet, plusieurs preuves de concept ont été mises à disposition. La vulnérabilité réside dans le composant responsable du rendu et de l’édition des équations mathématiques. L’un des documents malveillants utilisés par OceanLotus a été analysé par 360 Threat Intelligence Center (en chinois) et contient des détails sur cet exploit. Jetons un coup d’oeil à un document similaire.

Premier niveau

Ce document, FW Report on demonstration of former CNRP in Republic of Korea.doc, (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) est similaire à celui mentionné dans l’article ci-dessus, et également intéressant car il cible réellement les personnes intéressées par la politique cambodgienne (le CNRP – Cambodia National Rescue Party – parti politique qui a été dissous fin 2017). Malgré son extension .doc, le document est en fait au format RTF (voir Figure 1), contient de nombreux groupes de données inutiles et est également mal formé.

Figure 1 – Champs de données RTF inutiles

Malgré la présence d’éléments malformés, Word ouvre ce fichier RTF avec succès. Comme on peut le voir (Figure 2), au décalage 0xC00, il y a une structure EQNOLEFILEHDR, suivie de l’en-tête du CDMT, puis d’un enregistrement CDMT (Figure 3) pour une police.

Figure 2 – Valeurs d’enregistrement FONT

 

Un débordement dans le champ name est possible, car sa taille n’est pas vérifiée avant d’être copiée. Un nom trop long déclenche la vulnérabilité. Comme on peut le voir dans le contenu du fichier RTF (décalage 0xC26 dans la Figure 2), le tampon est rempli de shellcode suivi d’un sled NOP (0x90) et de l’adresse de retour 0x402114. Cette adresse est un gadget dans EQNEDT32.exe, pointant vers une instruction RET. Il en résulte un pointage EIP au début du champ name, contenant le shellcode.

Figure 4 – Début du shellcode exploit

L’adresse 0x45BD3C stocke une variable qui est déréférencée jusqu’à ce qu’elle atteigne un pointeur vers la structure MTEFData, actuellement chargée. C’est là que se trouve le reste du shellcode.

Le but du shellcode est d’exécuter un deuxième shellcode, intégré dans le document ouvert. Tout d’abord, le shellcode initial essaie de trouver l’handle du fichier ouvert en itérant à travers toutes les handles du système (NtQuerySystemInformation avec l’argument SystemExtendedHandleInformation) et en vérifiant si le PID de la handle correspond au PID d’un processus WinWord et si le document a été ouvert avec la fenêtre suivante : 0x12019F. Pour confirmer qu’il a trouvé la bonne handle et non celle d’un autre document ouvert, le contenu du fichier est mappé avec la fonction CreateFileMapping et le shellcode vérifie si les quatre derniers octets du document sont « yyyy ». Cette technique est appelée Egg Hunting, c’est-à-dire chasse aux œufs. Une fois qu’il trouve une correspondance, le document est copié dans un dossier temporaire (GetTempPath) comme ole.dll. Ensuite, les 12 derniers octets du document sont lus.

Figure 5 – Marqueurs à la fin du document

Les 32 bits entre les marqueurs AABBCCDD et yyyy forment le lien vers le shellcode suivant. Il est appelé à l’aide de la fonction CreateThread. Le shellcode extrait est le même que celui que le groupe OceanLotus utilise depuis un certain temps déjà. Le script d’émulateur Python que nous avons sorti en mars 2018 fonctionne toujours pour passer à l’étape suivante.

Deuxième niveau

Extraction des composants

Les noms de fichiers et répertoires sont choisis dynamiquement. Le code sélectionne aléatoirement le nom de fichier d’un fichier exécutable ou DLL situé dans C:\Windows\system32. Il va alors interroger ses ressources et extraire le champ FileDescription pour l’utiliser comme nom de dossier.  Si cela ne fonctionne pas, le code choisit aléatoirement un nom de dossier dans les répertoires %ProgramFiles% ou C:\Windows (dans GetWindowsDirectoryW).  Il évite d’utiliser un nom qui pourrait entrer en conflit avec des fichiers existants en s’assurant qu’il ne contient pas : windows, Microsoft, desktop, system, system32 ou syswow64.  Si le répertoire existe déjà, le nom du répertoire est ajouté de « NLS_{6 caractères}. »

La ressource 0x102 de ce niveau est analysée et les fichiers sont déposés dans %ProgramFiles% ou %AppData% dans le dossier choisi aléatoirement.  Les temps de création sont modifiés pour avoir les mêmes valeurs que kernel32.dll.

Par exemple, voici un dossier et une liste de fichiers créés avec CC:\Windows\system32\TCPSVCS.exe comme source de données.

Figure 6 – Extraction des différents composants

La structure de la ressource 0x102 dans le dropper est assez complexe.  En bref, il comprend les informations suivantes :

  • Noms de fichiers;
  • Taille et contenu des fichiers compression format (COMPRESSION_FORMAT_LZNT1 utilisé par la fonction RtlDecompressBuffer);
  • Format de compression (COMPRESSION_FORMAT_LZNT1 utilisé par la fonction RtlDecompressBuffer).

Le premier fichier est déposé sous TCPSVCS.exe qui est en fait le fichier AcroTranscoder.exe légitime d’Adobe (selon sa FileDescription, SHA-1 : 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

Vous aurez peut-être remarqué que la taille de fichier de certaines DLL dépasse 11MB.  C’est parce qu’un grand tampon contigu de données aléatoires est placé à l’intérieur de l’exécutable.  C’est peut-être un moyen d’échapper à la détection par certains produits de sécurité.

Atteindre la persévérance

La ressource 0x101 du dropper contient deux entiers 32 bits qui dictent comment la persistance doit être implémentée.  La valeur de la première spécifie comment le logiciel malveillant parviendra à la persistance sans les privilèges d’administrateur.

First integer valuePersistence mechanism
0Do not achieve persistence
1Scheduled task as current user
2(HKLM|HKCU)\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
3Creation of a shortcut file (with a .lnk extension) in the subdirectory Microsoft\Windows\Start Menu\Programs\Startup under one of the environment variables: %ALLUSERSPROFILE%, %APPDATA% or %USERPROFILE%

La valeur du deuxième intégreur indique comment le logiciel malveillant doit essayer d’atteindre la persistance s’il fonctionne avec des privilèges élevés.

Second integer valuePersistence mechanism
1Scheduled task as administrator
2Creation of a service

Le nom de service est formé du nom de fichier sans extension; le nom d’affichage est le nom du dossier mais s’il existe déjà, la chaîne « Revision 1 » est ajoutée (le numéro est incrémenté jusqu’à ce qu’il trouve un nom non utilisé). Les opérateurs se sont assurés que la persistance à travers le service serait résiliente : en cas de panne de service, le service devrait redémarrer après 1 seconde. Ensuite, la valeur de registre WOW64 de la nouvelle clé de service est fixée à 4, ce qui indique qu’il s’agit d’un service 32 bits.

La tâche planifiée est créée via plusieurs interfaces COM : ITaskScheduler, ITask, ITaskTrigger, IPersistFile et ITaskScheduler.. Essentiellement, le logiciel malveillant crée une tâche cachée, définit les informations de compte avec l’utilisateur actuel ou les informations de l’administrateur et définit le déclencheur.

Il s’agit d’une tâche quotidienne d’une durée de 24 heures et l’intervalle entre deux exécutions est fixé à 10 minutes. En d’autres mots. elle sera exécutée en tout temps.

La part malveillante

Dans notre exemple, l’exécutable TCPSVCS.exe (AcroTranscoder.exe) est un logiciel légitime qui charge les DLL qui ont été déposées avec lui. Dans le cas présent, la Flash Video Extension.dll est la plus intéressante.

Sa fonction DLLMain n’appelle qu’une seule fonction. Quelques prédicats opaques sont présents :

Figure 7 – Prédictions opaques

Après ces vérifications trompeuses, le code reçoit la section .text de TCPSVCS.exe, change sa protection pour PAGE_EXECUTE_READWRITE et l’écrase avec des instructions qui n’ont aucun effet secondaire :

Figure 8 – Séquence des instructions sans effets secondaires

A la fin, une instruction CALL à l’adresse de la fonction FLVCore::Uninitialize(void) exportée par Flash Video Extension.dll est ajoutée. Cela signifie qu’après le chargement de la DLL malveillante, lorsque le runtime appelle WinMain dans TCPSVCS.exe, le pointeur d’instruction pointe vers le sled « NOP » qui appellera éventuellement FLVCore::Uninitialize(void), l’étape suivante.

Cette fonction crée simplement un mutex commençant par {181C8480-A975-411C-AB0A-630DB8B0A221} et suivi du nom d’utilisateur courant. Ensuite, il lit le fichier déposé avec l’extension .db3, qui contient du code indépendant de la position, et utilise CreateThread pour exécuter son contenu.

Le contenu du fichier.db3 est un shellcode couramment utilisé par OceanLotus. Encore une fois, nous avons réussi à décompresser sa charge utile en utilisant le script d’émulation que nous avons publié sur GitHub.

Le script extrait le dernier niveau. Cette composante est la porte dérobée que nous avons déjà analysée dans ce white paper : OceanLotus: Old techniques, new backdoor. Il est reconnaissable comme tel dans le GUID {A96B020F-0000-466F-A96D-A91BBF8EAC96} qui est présent dans le binaire. La configuration du logiciel malveillant est toujours chiffrée dans une ressource PE. Il contient presque la même configuration mais les serveurs C&C sont différents de ceux qui ont déjà été publiés :

  • andreagahuvrauvin[.]com
  • byronorenstein[.]com
  • stienollmache[.]xyz

Une fois de plus, OceanLotus présente une large combinaison de techniques pour rester sous le radar. Le groupe est de retour avec une version « améliorée » de son processus d’infection. En choisissant des noms aléatoires et en remplissant des exécutables avec des données aléatoires, ils réduisent le nombre d’IoCs fiables (basées sur le hachage et les noms de fichiers). De plus, puisqu’ils utilisent le chargement latéral des DLL, les attaquants n’ont qu’à laisser tomber le binaire légitime d’AcroTranscoder tel quel.

Archives auto-extractables

Après avoir utilisé les fichiers RTF, le groupe a commencé à utiliser des archives auto-extractibles (SFX) qui utilisent des icônes de document communes pour tenter d’induire leurs victimes en erreur. Il a été brièvement documenté par Threatbook (en chinois). Lorsqu’ils sont exécutés, ces fichiers RAR auto-extractibles déposent et exécutent des fichiers DLL (avec une extension.ocx) dont la charge utile finale est celle précédemment documentée {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Depuis la mi-janvier 2019, OceanLotus a commencé à réutiliser la technique mais a changé de configuration avec le temps. Cette section décrit la technique et ce qu’ils ont modifié pour atteindre leur but.

Tomber dans le piège

Le document THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE  (signifiant « RELATION FAVORISÉE DE LA PERFORMANCE DU VIET-NAM » selon Google Translate, SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) a été vu pour la première fois en 2018. Ce fichier SFX est astucieusement conçu, comme l’indique la description (Version Info), il s’agit d’une « image JPEG ». Le script du SFX est le suivant :

Figure 9 – Commandes SFX

Le logiciel malveillant dépose {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC) ainsi que l’image de 2018 thich thong lac.jpg.

L’image du leurre est la suivante :

Figure 10 – Image du leurre

Vous avez peut-être remarqué que les deux premières lignes du script SFX invoquent deux fois le fichier OCX, mais ce n’est pas une erreur…

{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)

Le flux de contrôle du fichier OCX est très similaire aux autres composants OceanLotus : il y a beaucoup de séquences d’instructions JZ/JNZ et PUSH/RET entrelacées de code inutile.

Figure 11 – Code obscurci

Après avoir filtré le code indésirable, le DllRegisterServer d’exportation appelé par regsvr32.exe ressemble à ceci :

Figure 12 – Code principal de l’installateur

Fondamentalement, la première fois que le DllRegisterServer est appelé, il définit la valeur de registre HKCU\SOFTWARE\Classes\CLSID\{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}\Model selon un décalage codé dans la DLL (0x10001DE0).

La deuxième fois que la fonction est appelée, elle lit cette même valeur et exécute la fonction à cette adresse. De là, la ressource est lue et exécutée et de nombreuses opérations en mémoire sont exécutées.

Le shellcode est le même chargeur PE utilisé dans les campagnes OceanLotus précédentes. Il peut être imité avec notre script d’émulation de miasme. Finalement, il laisse tomber db293b825dcc419ba7dc2c49fa2757ee.dll, le charge dans la mémoire et exécute DllEntry.

La DLL récupère le contenu de sa ressource, déchiffre (AES-256-CBC) et le décompresse (LZMA). La ressource a un format spécifique qui rend la rétro-ingénierie facile.

Figure 13 – Structure de la configuration de l’installateur (KaitaiStruct Visualizer)

La configuration est explicite : selon le niveau de privilège, les données binaires seront écrites soit dans %appdata%\Intel\logs\BackgroundUploadTask.cpl ou %windir%\System32\BackgroundUploadTask.cpl (ou SysWOW64 pour systèmes 64-bit).
Ensuite, la persistance est obtenue en créant une tâche nommée named BackgroundUploadTask[junk].job où un [junk] est une collection de 0x9D et 0xA0 bytes.
Le nom de l’application de la tâche est %windir%\System32\control.exe et la valeur du paramètre est le chemin du binaire vidé. La tâche cachée est définie pour être exécutée tous les jours.

Structurellement, le fichier CPL est une DLL dont le nom interne est ac8e06de0a6c4483af9837d96504127e.dll, qui exporte une fonction CPlApplet. Ce fichier déchiffre sa seule ressource {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, puis charge cette DLL et appelle sa seule exportation, DllEntry.

Fichier de configuration de la porte dérobée

La porte dérobée a une configuration chiffrée intégrée à ses ressources. La structure du fichier de configuration est assez similaire à la précédente.

Figure 14 – Structure de la configuration de la porte dérobée (KaitaiStruct Visualizer)

Malgré la similitude structurelle, les valeurs dans beaucoup de ces domaines ont été mises à jour en les comparant à celles de notre white paper, publié en mars 2018.
Le premier élément du tableau binaire contient une DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759) identifiée par Tencent, mais puisque le nom d’exportation a été supprimé du binaire, les hashes ne correspondent pas.

Allons plus en profondeur

Lors de la chasse aux échantillons, quelques caractéristiques sont ressorties. L’échantillon analysé vient d’apparaître vers juillet 2018 et d’autres similaires ont été trouvés très récemment de la mi-janvier à début février 2019. Le vecteur d’infection utilisé était une archive SFX déversant un document légitime, leurre et un fichier OCX malveillant.

Même si OceanLotus utilise de faux horodatages, il a été observé que les horodatages des fichiers SFX et OCX sont toujours les mêmes (0x57B0C36A (08/14/2016 @ 19:15 UTC) et 0x498BE80F (02/06/2009 @ 19:34 UTC) respectivement). Cela signifie probablement qu’ils ont une sorte de « constructeur » qui réutilise les mêmes modèles et ne fait que modifier certaines de leurs caractéristiques.

Parmi les documents que nous avons analysés depuis le début de l’année 2018, nous avons observé différents noms de documents suggérant un ciblage par pays :

  • The New Contact Information Of Cambodia Media(New).xls.exe
  • 李建香 (个人简历).exe (fake pdf document of a CV)
  • feedback, Rally in USA from July 28-29, 2018.exe

Depuis la découverte de la backdoor {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll  et son analyse publique par plusieurs chercheurs, nous avons observé certains changements dans les données de configuration du logiciel malveillant.
Tout d’abord, les auteurs ont commencé à supprimer les noms des DLL d’aide (DNSprov.dll et les deux versions de HttpProv.dll).
Puis les opérateurs ont cessé d’empaqueter la troisième DLL (deuxième version de HttpProv.dll), choisissant d’en intégrer une seule.

Deuxièmement, beaucoup de champs de configuration de la porte dérobée ont été modifiés, peut-être pour éviter la détection, depuis que de nombreux IoC sont devenus disponibles.
Les champs importants qui ont été modifiés sont les suivants :

  • La clé de registre « AppX » a changé (voir IoC);
  • La chaîne de codage mutex (« def », « abc », et « ghi »);
  • Le numéro de port.

Enfin, toutes les nouvelles variantes analysées ont de nouveaux serveurs C&C, qui sont énumérés dans la sectionn IoCs.

Conclusion

OceanLotus est très actif et continue d’évoluer. Le groupe se concentre vraiment sur la variation de leurs outils et leurres. Ils enveloppent intelligemment leurs charges utiles de documents attrayants basés sur des événements d’actualité susceptibles d’intéresser les victimes auxquelles ils sont destinés. Ils n’arrêtent pas d’inventer des techniques différentes et même de réutiliser et de réadapter le code d’exploitation accessible au public, par exemple pour l’exploitation de l’éditeur d’équations. De plus, ils continuent d’améliorer leurs techniques pour réduire le nombre d’artefacts laissés sur les machines de leurs victimes, réduisant ainsi les chances de détection par les produits de sécurité. Comme nous l’avons montré, beaucoup d’opérations en mémoire sont impliquées, les noms de fichiers sont générés de manière aléatoire et les opérateurs OceanLotus ont modifié leurs binaires pour éviter d’être détectés. Un autre point très intéressant est que certains noms de domaine semblent provenir d’un dictionnaire. OceanLotus fait l’effort supplémentaire de continuer à mener ses campagnes, mais ne retenez pas votre souffle…

Indicateurs de compromission (IoC)

Les IoCs de ce blog, ainsi que les attributs MITRE ATT&CK, sont également disponibles dans notre répertoire GitHub.

Répertoire des clés/valeurs :

  • HKCU\SOFTWARE\Classes\CLSID\{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}\Model
  • [HKCU|HKLM]\SOFTWARE\App\
    • AppXbf13d4ea2945444d8b13e2121cb6b663\
      • Application
      • DefaultIcon
    • AppX70162486c7554f7f80f481985d67586d\
      • Application
      • DefaultIcon
    • AppX37cc7fdccd644b4f85f4b22d5a3f105a\
      • Application
      • DefaultIcon

Mutexes:

  • {181C8480-A975-411C-AB0A-630DB8B0A221}_ (+ username)
Domain names
aliexpresscn[.]net
andreagahuvrauvin[.]com
andreagbridge[.]com
aol.straliaenollma[.]xyz
beaudrysang[.]xyz
becreybour[.]com
byronorenstein[.]com
chinaport[.]org
christienoll[.]xyz
christienollmache[.]xyz
cloud.360cn[.]info
dieordaunt[.]com
dns.chinanews[.]network
illagedrivestralia[.]xyz
karelbecker[.]com
karolinblair[.]com
lauradesnoyers[.]com
ntop.dieordaunt[.]com
office.ourkekwiciver[.]com
ourkekwiciver[.]com
sophiahoule[.]com
stienollmache[.]xyz
straliaenollma[.]xyz
ursulapapst[.]xyz

Fichiers :

Documents exploiting CVE-2017-11882:
SHA-1 hashes
D1357B284C951470066AAA7A8228190B88A5C7C3
49DFF13500116B6C085C5CE3DE3C233C28669678
9DF3F0D8525EDF2B88C4A150134C7699A85A1508
50A755B30E8F3646F9476080F2C3AE1347F8F556
BB060E5E7F7E946613A3497D58FBF026AE7C369A
E2D949CF06842B5F7AE6B2DFFAA49771A93A00D9
ESET detection names
Win32/Exploit.CVE-2017-11882.BU
Win32/Exploit.CVE-2017-11882.A
Win32/Exploit.Agent.KT
Win32/Exploit.Agent.LT
Win32/Exploit.CVE-2017-11882.EI
SFX archives and OCX droppers:
SHA-1 hashes
AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB
7642F2181CB189965C596964D2EDF8FE50DA742B
CD13210A142DA4BC02DA47455EB2CFE13F35804A
377FDC842D4A721A103C32CE8CB4DAF50B49F303
B4E6DDCD78884F64825FDF4710B35CDBEAABE8E2
BD39591A02B4E403A25AAE502648264308085DED
B998F1B92ED6246DED13B79D069AA91C35637DEC
CC918F0DA51794F0174437D336E6F3EDFDD3CBE4
83D520E8C3FDAEFB5C8B180187B45C65590DB21A
EFAC23B0E6395B1178BCF7086F72344B24C04DCC
8B991D4F2C108FD572C9C2059685FC574591E0BE
B744878E150A2C254C867BAD610778852C66D50A
3DFC3D81572E16CEAAE3D07922255EB88068B91D
77C42F66DADF5B579F6BCD0771030ADC7AEFA97C
ESET detection names
Win32/Agent.ZUR

Techniques MITRE ATT&CK

TacticIDNameDescription
Initial AccessT1193Spearphishing AttachmentDeceitful RTF documents and self-extracting archives are sent to potential victims.
ExecutionT1204User ExecutionThe user needs to execute the self-extracting archive or open the RTF document.
T1117Regsvr32The self-extracting archives execute regsvr32 to run the OceanLotus' backdoor.
T1035Service ExecutionThe second stage of the exploit tries to run OceanLotus' backdoor as a service.
PersistenceT1050New ServiceThe second stage of the exploit tries to achieve persistence by creating a service.
T1060Registry Run Keys / Start FolderThe second stage of the exploit tries to achieve persistence by adding a value in the Run registry key.
T1053Scheduled TaskThe second stage of the exploit tries to achieve persistence by creating a schedule task.
Defense EvasionT1009Binary PaddingThe second stage of the exploit fills dropped executables with random data.
T1073DLL Side-LoadingOceanLotus' backdoor is side-loaded by dropping a library and a legitimate, signed executable (AcroTranscoder).
T1112Modify RegistryOceanLotus' backdoor stores its configuration in a registry key.
T1027Obfuscated Files or InformationThe second stage of the exploit drops an encrypted shellcode.
T1099TimestompThe creation time of the files dropped by the second stage of the exploit is set to match the creation time of kernel32.dll.
DiscoveryT1083File and Directory DiscoveryOceanLotus' backdoor can list files and directories.
T1012Query RegistryOceanLotus' backdoor can query the Windows Registry to gather system information.
T1082System Information DiscoveryOceanLotus' backdoor captures system information and sends it to its C&C server.
ExfiltrationT1002Data CompressedOceanLotus' backdoor uses LZMA compression before exfiltration.
T1022Data EncryptedOceanLotus' backdoor uses RC4 encryption before exfiltration.
T1041Exfiltration Over Command and Control ChannelData exfiltration is done using the already opened channel with the C&C server
T1203Exploitation for Client ExecutionThe RTF document includes an exploit to execute malicious code. (CVE‑2017‑11882)
Command And ControlT1094Custom Command and Control ProtocolOceanLotus' backdoor can exfiltrate data by encoding it in the subdomain field of DNS packets.
T1065Uncommonly Used PortOceanLotus' backdoor use HTTP over an uncommon TCP port (14146). Port is specified in the backdoor configuration.

Discussion