L'équipe d'analyse d'Elastic Security Intelligence & étudie les innovations des adversaires de toutes sortes, et s'est récemment concentrée sur un groupe d'activité qui utilisait des modèles à distance, l'évasion de code VBA et des techniques de chargement latéral de DLL. Sur la base de codes similaires et de tactiques, techniques et procédures (TTP) communes, l'équipe a estimé que cette activité pouvait être liée à un groupe basé en Chine connu sous le nom d'APT40, ou Leviathan. La campagne du groupe semble cibler les fonctionnaires du gouvernement malaisien en les attirant vers la crise politique malaisienne ( 2020 ).
Anatomie de l'attaque
Pour lancer sa campagne de menaces persistantes avancées (APT), le groupe a probablement fourni un document Microsoft Word en tant que pièce jointe d'un leurre d'hameçonnage. L'image utilisée dans le leurre (figure 2) semble avoir été créée à partir d'une annonce diffusée par un blogueur malaisien (figure 1). L'image du leurre comprend la même heure de diffusion, mais la date et le sujet du discours sont supprimés. Une fois cette pièce jointe ouverte, un document leurre est présenté et, en coulisses, il effectue les actions suivantes :
- Le document de référence télécharge le modèle distant RemoteLoad.dotm
- Le modèle distant exécute un code macro VBA
- Le code macro VBA décompresse et exécute deux DLL intégrées codées en base64 (sl1.tmp et sl2.tmp) dans c:\users\public\
Cette technique est connue sous le nom d'injection de modèle, dont vous vous souvenez peut-être en lisant notre article de blog intitulé Playing defense against Gamaredon Group. Il s'agit d'une approche efficace utilisée par les adversaires pour contourner les contrôles de périmètre tels que les passerelles de messagerie.
Les deux DLL intégrées (sl1.tmp et sl2.tmp) sont similaires et exportent les mêmes noms de fonctions : RCT et RCP. La première DLL (sl1.tmp) est utilisée pour télécharger un exécutable bénin appelé LogiMailApp.exe et une bibliothèque associée LogiMail.dll, et la seconde DLL (sl2.tmp) est utilisée pour exécuter LogiMailApp.exe, qui tente automatiquement d'exécuter LogiMail.dll en raison d'une vulnérabilité inhérente à l'ordre de recherche des DLL que nous aborderons prochainement.
Nom du fichier | Type de fichier | Taille (octets) | MD5 | Temps de compilation |
LogiMailApp.exe | Win32 EXE | 311656 | 850a163ce1f9cff0367854038d8cfa7e | 2012-09-26 22:13:13+00:00 |
LogiMail.dll | DLL Win32 | 105984 | b5a5dc78fb392fae927e9461888f354d | 2020-06-03 04:08:29+00:00 |
sl1.tmp | DLL Win32 | 3072 | ccbdda7217ba439dfb6bbc6c3bd594f8 | 2019-11-29 17:15:29+00:00 |
sl2.tmp | DLL Win32 | 3072 | dbfa006d64f39cde78b0efda1373309c | 2019-11-29 21:23:44+00:00 |
Tableau 1 : Métadonnées des fichiers abandonnés
Cette mise en œuvre a été remarquée par nos chercheurs en raison d'une particularité comportementale :
- L'application Microsoft Office winword.exe charge les DLL sl1.tmp et sl2.tmp à l'aide de la méthode LoadLibraryA, ce qui est modérément rare.
- Ces DLL exécutent des commandes explicites ou installent une charge utile à partir d'une URL à l'aide de la méthode CallWindowProcA, ce qui semble être exceptionnellement rare.
- Les deux DLL sont supprimées après l'exécution
DLL intégrées
Les DLL intégrées, sl1.tmp et sl2.tmp, ont une fonctionnalité très limitée : elles exportent les fonctions RCP et RCT. La fonction RCP met en œuvre la méthode WinExec pour exécuter des commandes, tandis que la fonction RCT utilise la méthode URLDownloadToFileA pour télécharger un fichier à partir d'une URL spécifiée.
Chargement latéral d'une DLL pour créer une porte dérobée
LogiMailApp.exe, qui est téléchargé par sl1.tmp et exécuté par sl2.tmp, est vulnérable à une forme de détournement de l'ordre de recherche des DLL appelée side-loading, qui recherche et exécute automatiquement LogiMail.dll s'il se trouve dans le même répertoire. Des formes de détournement de l'ordre de recherche des DLL peuvent être utilisées avec de nombreuses applications logicielles tierces. Dans ce cas, le détournement de l'ordre de recherche a été utilisé pour charger une porte dérobée qui exporte les fonctions notables suivantes :
Le binaire LogiMail.dll créé par l'adversaire exporte la fonction DllGetClassObject qui contient une logique critique pour le flux d'exécution de cet échantillon :
- Téléchargez un objet de deuxième étape crypté AES dans %TEMP%~liseces1.pcs
- Obtenez une clé AES de 128 bits et un vecteur d'initialisation à partir de SHA256 d'une chaîne codée en dur.
- Lire et décrypter %TEMP%~liseces1.pcs en mémoire à l'aide des fonctions ReadFile et CryptDecrypt.
- Supprimer %TEMP%~liseces1.pcs du disque
Porte arrière du deuxième étage
La porte dérobée de deuxième étape décryptée est mappée dans la mémoire, puis son point d'entrée original (OEP) est appelé, ce qui permet de contourner les détections réussies basées sur l'analyse du système de fichiers.
Le serveur de transit de la charge utile et l'infrastructure de la deuxième étape utilisent tous deux des DNS dynamiques :
Cette charge utile prend en charge les capacités suivantes :
- Contrôles anti-débogage de base
- Découverte du système et de l'utilisateur
- Exécution via la ligne de commande
- Recherche, chargement et téléchargement de fichiers
- Persistance via le registre d'exécution
- Cryptage du trafic C2 à l'aide de la même clé AES
Connexion possible entre l'APT40 et le Léviathan
Au début de l'année, l'équipe malaisienne d'intervention en cas d'urgence informatique (MyCERT) a publié un avis relatif à des activités d'espionnage visant le pays. Le rapport énumère différentes TTP et inclut de nombreux échantillons et autres indicateurs techniques qui correspondent à un groupe de menace connu sous le nom d'APT40/Leviathan.
À un niveau élevé, cet échantillon suit la tendance continue à cibler des victimes malaisiennes en utilisant des TTP spécifiques telles que des modèles à distance, en employant des macros, en utilisant des techniques de chargement latéral de DLL, et en exploitant un implant en mémoire avec un DNS dynamique pour la commande et le contrôle. Plus précisément, l'implant de deuxième phase de ce leurre partage des chaînes de caractères et des références URL uniques et contient des fonctionnalités similaires qui correspondent aux rapports précédents concernant APT40/Leviathan. Compte tenu de ces similitudes, notre équipe Intelligence & Analytics estime, avec un degré de confiance modéré, que cette activité est liée à APT40/Leviathan.
Similitudes entre les chaînes d'implants et l'échantillon MyCERT :
- /list_direction
- /post_document
- /post_login
- L'ouverture du fichier distant %s a échoué pour : %s
- Échec de l'ouverture du tuyau %s
- Download Read Path Failed %s (Échec de la lecture du chemin d'accès)
- %02X-%02X-%02X-%02X-%02X-%02X
- Software\Microsoft\Windows\CurrentVersion\Run
- ntkd
Conclusion
Dans ce billet, nous avons mis en évidence un échantillon récent qui représente très probablement le travail d'un adversaire très organisé. Les groupes d'activité de ce type sont importants pour tout le monde, ne serait-ce que parce qu'ils représentent un niveau de maturité plus élevé de l'innovation post-exploit. Leurs TTP d'avant-garde d'aujourd'hui finissent par être celles de tout le monde demain ; il est important de tirer des leçons de ces événements.
Nous espérons qu'en partageant certaines de ces idées, nous pourrons contribuer à la sensibilisation et continuer à nous concentrer sur la protection des données mondiales contre les attaques. Pour aider davantage les organisations, nous avons ajouté ci-dessous toutes les techniques et tous les indicateurs de compromission (IoC) observés par MITRE ATT&CK®.
MITRE ATT&CK® techniques
- T1193 - Pièce jointe de spearphishing
- T1221 - Injection de modèle
- T1060 - Clés d'exécution du registre / dossier de démarrage
- T1073 - Chargement latéral de DLL
- T1129 - Exécution par chargement de module
- T1055 - Injection de procédé
- T1107 - Suppression de fichiers
- T1140 - Désobfusquer/décoder des fichiers ou des informations
- T1059 - Interface de ligne de commande
Indicateurs de compromis (IOC)
Noms de fichiers et chemins d'accès
Bubar Parlimen.zip
Bubar Parlimen.docx
RemoteLoad.dotm
C:\Users\Public\sl1.tmp
C:\Users\Public\sl2.tmp
C:\Users\*\AppData\Local\Temp\~liseces1.pcs
C:\Users\*\AppData\Local\Microsoft\Office\LogiMailApp.exe
C:\Users\*\AppData\Local\Microsoft\Office\LogiMail.dll
Clés de registre
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\ntkd
URL
hxxps[:]//armybar[.]hopto[.]org/LogiMail.dll
hxxps[:]//armybar[.]hopto[.]org/LogiMailApp[.]exe
hxxps[:]//armybar[.]hopto[.]org/Encrypted
hxxp[:]//tomema.myddns[.]me/postlogin
hxxp[:]//tomema[.]myddns[.]me/list_direction
hxxp[:]//tomema[.]myddns[.]me/post_document
IPs
104[.]248[.]148[.]156
139[.]59[.]31[.]188
Certificat HTTPS
74b5e317527c93539dbaaf84d6a61da92a56012a
Hachures
523cbdaf31ddc920e5b6c873f3ab42fb791fb4c9d1f4d9e6a7f174105d4f72a1
ab541df861c6045a17006969dac074a7d300c0a8edd0a5815c8b871b62ecdda7
145daf50aefb7beec32556fd011e10c9eaa71e356649edfce4404409c1e8fa30
93810c5fd9a287d85c182d2ad13e7d30f99df76e55bb40e5bc7a486d259810c8
925f404b0207055f2a524d9825c48aa511199da95120ed7aafa52d3f7594b0c9
feca9ad5058bc8571d89c9d5a1eebce09e709cc82954f8dce1564e8cc6750a77
06a4246be400ad0347e71b3c4ecd607edda59fbf873791d3772ce001f580c1d3
77ef350639b767ce0a748f94f723a6a88609c67be485b9d8ff8401729b8003d2
YARA
rule APT_APT40_Implant_June2020 {
meta:
version = "1.0"
author = "Elastic Security"
date_added = "2020-06-19"
description = "APT40 second stage implant"
strings:
$a = "/list_direction" fullword wide
$b = "/post_document" fullword wide
$c = "/postlogin" fullword wide
$d = "Download Read Path Failed %s" fullword ascii
$e = "Open Pipe Failed %s" fullword ascii
$f = "Open Remote File %s Failed For: %s" fullword ascii
$g = "Download Read Path Failed %s" fullword ascii
$h = "\\cmd.exe" fullword wide
condition:
all of them
}