El equipo de Elastic Security Intelligence & Analytics investiga innovaciones de adversarios de muchos tipos, y recientemente se centró en un grupo de actividad que aprovechó las plantillas remotas, la evasión de código VBA y las técnicas de carga lateral de DLL. Sobre la base de la similitud del código y las tácticas, técnicas y procedimientos compartidos (TTP), el equipo evaluó que esta actividad podría estar vinculada a un grupo con sede en China conocido como APT40 o Leviatán. La campaña del grupo parece dirigir a los funcionarios del gobierno malasio con un señuelo relacionado con la crisis política 2020 malasio.
Anatomía del ataque
Para iniciar su campaña de amenazas persistentes avanzadas (APT), es probable que el grupo entregara un documento de Microsoft Word como archivo adjunto de señuelo de phishing. La imagen empleada en el señuelo (Figura 2) parece estar elaborada a partir de un anuncio de transmisión compartido por un bloguero malasio (Figura 1). La imagen del señuelo incluye la misma hora de transmisión, pero se eliminan la fecha y el tema del discurso. Una vez que se abre este archivo adjunto, se presenta un documento señuelo mientras se está detrás de escena, realizando las siguientes acciones:
- El documento de señuelo descarga la plantilla remota RemoteLoad.dotm
- La plantilla remota ejecuta el código de macro de VBA
- El código de macro de VBA desempaqueta y ejecuta dos archivos DLL incrustados codificados en base64 (sl1.tmp y sl2.tmp) en c:\users\public\
Esta técnica se conoce como inyección de plantillas, que puede que recuerdes de nuestra entrada del blog Jugando a la defensa contra Gamaredon Group. Este es un enfoque efectivo empleado por los adversarios para eludir los controles perimetrales, como las pasarelas de email.
Los dos archivos DLL incrustados (sl1.tmp y sl2.tmp) son similares y exportan los mismos nombres de función: RCT y RCP. El primer archivo DLL (sl1.tmp) se usa para descargar un ejecutable benigno llamado LogiMailApp.exe y una biblioteca asociada LogiMail.dll, y la segunda DLL (sl2.tmp) se emplea para ejecutar LogiMailApp.exe, que intenta ejecutar automáticamente LogiMail.dll debido a una vulnerabilidad inherente del orden de búsqueda de DLL que cubriremos en breve.
Nombre de archivo | Tipo de archivo | Tamaño (bytes) | MD5 | Tiempo de compilación |
LogiMailApp.exe | Win32 EXE | 311656 | 850a163ce1f9cff0367854038d8cfa7e | 2012-09-26 22:13:13+00:00 |
LogiMail.dll | Win32 DLL | 105984 | b5a5dc78fb392fae927e9461888f354d | 2020-06-03 04:08:29+00:00 |
sl1.tmp | Win32 DLL | 3072 | ccbdda7217ba439dfb6bbc6c3bd594f8 | 2019-11-29 17:15:29+00:00 |
sl2.tmp | Win32 DLL | 3072 | dbfa006d64f39cde78b0efda1373309c | 2019-11-29 21:23:44+00:00 |
Tabla 1: Metadatos de archivos eliminados
Esta implementación llamó la atención de nuestros investigadores debido a una idiosincrasia conductual:
- La aplicación de Microsoft Office winword.exe carga sl1.tmp y sl2.tmp DLL usa el método LoadLibraryA, que es moderadamente raro
- Estos archivos DLL ejecutan comandos explícitos o instalan una carga desde una dirección URL mediante el método CallWindowProcA, lo que parece ser excepcionalmente raro
- Ambos archivos DLL se eliminan luego de la ejecución
DLL incrustadas
Los archivos DLL incrustados, sl1.tmp y sl2.tmp, tienen una funcionalidad muy limitada: exportar las funciones RCP y RCT. La función RCP implementa el método WinExec para ejecutar comandos en los que la función RCT emplea el método URLDownloadToFileA para descargar un archivo de una dirección URL especificada.
Instalación de prueba de DLL en una puerta trasera
LogiMailApp.exe, que es descargada por sl1.tmp y ejecutada por sl2.tmp, es vulnerable a una forma de secuestro de orden de búsqueda de DLL llamado carga lateral, que busca y ejecuta automáticamente LogiMail.dll si se encuentra en el mismo directorio. Las formas de secuestro de orden de búsqueda de DLL se pueden usar con muchas aplicaciones de software de terceros. En este caso, el secuestro de órdenes de búsqueda se empleó para cargar una puerta trasera que exporta las siguientes funciones notables:
El LogiMail.dll binario creado por el adversario exporta la función DllGetClassObject que contiene lógica crítica para el flujo de ejecución de este ejemplo:
- Descargue un objeto de segunda etapa cifrado con AES en%TEMP%~liseces1.pcs
- Derivar una clave AES de 128 bits y un vector de inicialización de SHA256 de una cadena codificada de forma rígida
- Lea y descifre%TEMP%~liseces1.pcs en memoria empleando las funciones ReadFile y CryptDecrypt
- Eliminar%TEMP%~liseces1.pcs del disco
Puerta trasera de la segunda etapa
La puerta trasera de la segunda etapa descifrada se asigna a la memoria y, a continuación, se llama a su punto de entrada original (OEP), evitando así las detecciones exitosas basadas en el análisis del sistema de archivos.
Tanto el servidor de ensayo de carga útil como la infraestructura de la segunda etapa emplean DNS dinámico:
Esta carga útil admite las siguientes capacidades:
- Comprobaciones básicas contra la depuración
- Detección de sistemas y usuarios
- Ejecución a través de la línea de comandos
- Detección, carga y descarga de archivos
- Persistencia a través del registro de ejecución
- Cifre el tráfico C2 con la misma clave AES
Posible conexión APT40/Leviatán
A principios de año, el Equipo de Respuesta a Emergencias Informáticas de Malasia (MyCERT) emitió un aviso relacionado con la actividad de espionaje dirigida a su país. El reporte enumeró diferentes TTP e incluyó múltiples muestras y otros indicadores técnicos que se alinean con un grupo de amenazas conocido como APT40/Leviathan.
A grandes rasgos, esta muestra sigue la tendencia continua de dirigir a las víctimas malasias mediante TTP específicos, como plantillas remotas, el empleo de macros, el uso de técnicas de carga lateral de DLL y el aprovechamiento de un implante en memoria con DNS dinámico para el comando y el control. Más específicamente, el implante de la segunda etapa de este señuelo comparte cadenas únicas y referencias URL y contiene una funcionalidad similar que se correlaciona con los reportes anteriores para APT40 / Leviathan. Con estas similitudes, nuestro equipo de Inteligencia y Análisis evalúa con un nivel de confianza moderado que esta actividad está vinculada a APT40/Leviathan.
Similitudes de la cadena de implantes con la muestra MyCERT:
- /list_direction
- /post_document
- /post_login
- Abrir archivo remoto%s Failed para:%s
- Error de canalización abierta%s
- Descargar Ruta de lectura fallida%s
- %02X-%02X-%02X-%02X-%02X-%02X
- Software\Microsoft\Windows\CurrentVersion\Run
- ntkd
Conclusión
En esta publicación, destacamos una muestra reciente que muy probablemente representa el trabajo de un adversario altamente organizado. Los grupos de actividad como este son importantes para que todos tomen nota, aunque solo sea porque representan un nivel de madurez más alto de la innovación posterior a la explotación. Sus TTP de última generación hoy terminan siendo el común y corriente de todos mañana; Es importante aprender de estos eventos.
Esperamos que, al compartir algunas de estas ideas, podamos ayudar a crear conciencia y seguir centrándonos en proteger los datos del mundo de los ataques. Para capacitar aún más a las organizaciones, agregamos todas las técnicas de MITRE ATT&CK® e indicadores de compromiso (IoC) observados a continuación.
Técnicas MITRE ATT&CK®
- T1193 - Adjunto de spearphishing
- T1221 - Inyección de plantilla
- T1060 - Claves de ejecución del Registro / Carpeta de inicio
- T1073 - Carga lateral DLL
- T1129 - Ejecución a través de la carga del módulo
- T1055 - Inyección de proceso
- T1107 - Eliminación de archivos
- T1140 - Desofuscar/Decodificar archivos o información
- T1059 - Interfaz de línea de comandos
Indicadores de compromiso (IOC)
Nombres de archivo y rutas de acceso
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
Claves del Registro
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\ntkd
Direcciones 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
Certificado HTTPS
74b5e317527c93539dbaaf84d6a61da92a56012a
Hashes
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
}