ESET: nuevos esquemas de entrega del backdoor del cibergrupo OceanLotus

En esta publicación, explicaremos cómo el grupo cibercriminal OceanLotus (APT32 y APT-C-00) utilizó recientemente una de las explotaciones públicas de CVE-2017-11882, una vulnerabilidad de corrupción de memoria en Microsoft Office, y cómo el malware del grupo asegura persistencia en los sistemas comprometidos sin dejar rastro. A continuación, describiremos cómo desde principios de 2019 el grupo ha utilizado archivos autorreplicantes para ejecutar código.

OceanLotus se especializa en el ciberespionaje, con un enfoque en países del Sudeste Asiático. Los atacantes falsifican documentos que llaman la atención de posibles víctimas para convencerlas de ejecutar un backdoor, y también trabajan en el desarrollo de herramientas. Los métodos utilizados para crear cebos varían en diferentes ataques, desde archivos de 'doble extensión', archivos autorreplicantes, documentos con macros hasta exploits conocidos.

ESET: nuevos esquemas de entrega del backdoor del cibergrupo OceanLotus

Uso de la explotación en Microsoft Equation Editor

A mediados de 2018, OceanLotus llevó a cabo una campaña utilizando la vulnerabilidad CVE-2017-11882. Uno de los documentos maliciosos del grupo cibernético fue analizado por especialistas del 360 Threat Intelligence Center (estudio en chino), que incluyó una descripción detallada de la explotación. En la publicación a continuación, se revisa un documento malicioso similar.

Primera etapa

Documento Informe FW sobre la demostración de la antigua CNRP en la República de Corea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) es similar al mencionado en el estudio anterior. Es interesante porque está dirigido a usuarios interesados en la política camboyana (CNRP – Partido de Rescate Nacional de Camboya, disuelto a finales de 2017). A pesar de la extensión .doc, el documento tiene formato RTF (ver figura a continuación), contiene código basura y está distorsionado.

ESET: nuevos esquemas de entrega del backdoor del cibergrupo OceanLotus
Figura 1. 'Basura' en RTF

A pesar de los elementos distorsionados, Word abre exitosamente este archivo RTF. Como se muestra en la figura 2, aquí está la estructura EQNOLEFILEHDR con un desplazamiento de 0xC00, seguida por el encabezado MTEF, y luego la entrada MTEF (figura 3) para la fuente.

ESET: nuevos esquemas de entrega del backdoor del cibergrupo OceanLotus
Figura 2. Valores de la entrada FONT

ESET: nuevos esquemas de entrega del backdoor del cibergrupo OceanLotus
Figura 3. Formato de entrada FONT

Puede haber un desbordamiento en el campo name, ya que su tamaño no se verifica antes de la copia. Un nombre demasiado largo activa la vulnerabilidad. Como se muestra en el contenido del archivo RTF (desplazamiento 0xC26 en la figura 2), el búfer se llena con código shell, seguido por un comando ficticio (0x90) y una dirección de retorno 0x402114. La dirección es un elemento de diálogo en EQNEDT32.exe, que indica la instrucción RET. Esto hace que el EIP apunte al inicio del campo name, que contiene el shellcode.

ESET: nuevos esquemas de entrega del backdoor del cibergrupo OceanLotus
Figura 4. Inicio del shellcode del exploit

Dirección 0x45BD3C almacena la variable que se desreferencia, hasta que alcanza el puntero a la estructura cargada actualmente MTEFData. Aquí se encuentra el resto del shellcode.

El propósito del shellcode es ejecutar un segundo fragmento de shellcode incorporado en el documento abierto. Primero, el shellcode original intenta encontrar el descriptor de archivo del documento abierto, revisando todos los descriptores del sistema (NtQuerySystemInformation con el argumento SystemExtendedHandleInformation) y verifica si coincide con el PID del descriptor y PID del proceso WinWord y si el documento fue abierto con la máscara de acceso – 0x12019F.

Para confirmar la detección del descriptor correcto (y no del descriptor de otro documento abierto), el contenido del archivo se mapea usando la función CreateFileMapping, y el shellcode verifica si los últimos cuatro bytes del documento son «yyyy» (método Egg Hunting). Una vez que se detecta una coincidencia, el documento se copia en la carpeta temporal (GetTempPath) como ole.dll. Luego se leen los últimos 12 bytes del documento.

ESET: nuevos esquemas de entrega del backdoor del cibergrupo OceanLotus
Figura 5. Marcadores de fin de documento

El valor de 32 bits entre los marcadores AABBCCDD y yyyy – es el desplazamiento del siguiente shellcode. Se llama usando la función CreateThread. Se extrae el mismo shellcode que usó el grupo OceanLotus anteriormente. El script de emulación de Python, que lanzamos en marzo de 2018, aún funciona para el volcado de la segunda etapa.

Segunda etapa

Extracción de componentes

Los nombres de archivos y carpetas se eligen dinámicamente. El código selecciona aleatoriamente un nombre de archivo ejecutable o DLL en C:Windowssystem32. Luego hace una solicitud a sus recursos y extrae el campo FileDescription para usarlo como nombre de carpeta. Si esto no funciona, el código selecciona aleatoriamente un nombre de carpeta de los directorios %ProgramFiles% o C:Windows (de GetWindowsDirectoryW). Evita usar un nombre que pueda entrar en conflicto con archivos existentes y se asegura de que no contenga las siguientes palabras: windows, Microsoft, desktop, system, system32 o syswow64. Si el directorio ya existe, se le añade «NLS_{6 caracteres}».

El recurso 0x102 es analizado y los archivos se descargan en %ProgramFiles% o %AppData%, en la carpeta seleccionada aleatoriamente. La fecha de creación se modifica para tener los mismos valores que kernel32.dll.

Por ejemplo, aquí está la carpeta y la lista de archivos creados a partir de la selección del archivo ejecutable C:Windowssystem32TCPSVCS.exe como fuente de datos.

ESET: nuevos esquemas de entrega del backdoor del cibergrupo OceanLotus
Figura 6. Extracción de varios componentes

Estructura del recurso 0x102 en el drooper es bastante compleja. En pocas palabras, contiene:
— Nombres de archivos
— Tamaño y contenido de los archivos
— Formato de compresión (COMPRESSION_FORMAT_LZNT1, utilizado por la función RtlDecompressBuffer)

El primer archivo se restaura como TCPSVCS.exe, que es legítimo AcroTranscoder.exe (según FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

Es posible que haya notado que el tamaño de algunos archivos DLL supera los 11 MB. Esto se debe a que un gran búfer continuo de datos aleatorios se coloca dentro del archivo ejecutable. No es descartable que esta sea una forma de evitar la detección por algunos productos de seguridad.

Asegurando persistencia

El recurso 0x101 en el drooper contiene dos enteros de 32 bits que determinan cómo se debe garantizar la persistencia. El valor del primero indica cómo el malware mantendrá la persistencia sin privilegios de administrador.

ESET: nuevos esquemas de entrega del backdoor del cibergrupo OceanLotus
Tabla 1. Mecanismo de persistencia sin privilegios de administrador

El valor del segundo entero indica cómo el malware debe garantizar la persistencia, operando con derechos de administrador.

ESET: nuevos esquemas de entrega del backdoor del cibergrupo OceanLotus
Tabla 2. Mecanismo de persistencia con derechos de administrador

El nombre del servicio es el nombre del archivo sin la extensión; el nombre para mostrar es el nombre de la carpeta, pero si ya existe, se le añade la cadena “Revisión 1” (el número aumenta hasta que se encuentra un nombre no utilizado). Los operadores se aseguraron de que la persistencia a través del servicio fuera duradera; en caso de fallo, el servicio debe reiniciarse en 1 segundo. Luego, se le asigna al nuevo clave del registro del servicio el valor 4, lo que indica que es un servicio de 32 bits. WOW64 Se crea una tarea programada a través de varias interfaces COM:

ITaskScheduler ITask, ITaskTrigger, IPersistFile, . Esencialmente, el malware crea una tarea oculta, establece la información de la cuenta junto con la información del usuario actual o del administrador y luego configura un desencadenador. y ITaskEsta es una tarea diaria con una duración de 24 horas y con intervalos entre dos ejecuciones de 10 minutos, lo que significa que se ejecutará constantemente.

Esta es una tarea diaria con una duración de 24 horas y un intervalo de 10 minutos entre las dos ejecuciones, lo que significa que se llevará a cabo de forma continua.

Bit malicioso

En nuestro ejemplo, el archivo ejecutable TCPSVCS.exe (AcroTranscoder.exe) es un software legítimo que carga DLL que se restablecen junto con él. En este caso, interesa Flash Video Extension.dll.

Su función DLLMain simplemente llama a otra función. Existen algunos predicados vagos:

ESET: nuevos esquemas de entrega del backdoor del cibergrupo OceanLotus
Figura 7. Predicados vagos

Después de estas comprobaciones engañosas, el código obtiene la sección .text archivos TCPSVCS.exe, cambia su protección a PAGE_EXECUTE_READWRITE y lo reescribe, añadiendo instrucciones ficticias:

ESET: nuevos esquemas de entrega del backdoor del cibergrupo OceanLotus
Figura 8. Secuencia de instrucciones

Al final, se añade una instrucción a la dirección de la función FLVCore::Uninitialize(void), exportada Flash Video Extension.dll, se añade la instrucción CALL. Esto significa que después de cargar la DLL maliciosa, cuando el entorno de ejecución llama a WinMain en TCPSVCS.exe, el puntero de instrucción apuntará a NOP, lo que provoca FLVCore::Uninitialize(void), la siguiente etapa.

La función simplemente crea un mutex que comienza con {181C8480-A975-411C-AB0A-630DB8B0A221}, seguido del nombre de usuario actual. Luego lee el archivo restablecido con la extensión *.db3, que contiene código independiente de la posición, y utiliza CreateThread para ejecutar su contenido.

El contenido del archivo *.db3 es código shell que generalmente utiliza el grupo OceanLotus. Nuevamente hemos descomprimido con éxito su carga útil, utilizando un script emulador que publicamos en GitHub.

El script extrae la fase final. Este componente es una puerta trasera que ya hemos analizado en la investigación anterior de OceanLotus. Esto se puede determinar por el GUID {A96B020F-0000-466F-A96D-A91BBF8EAC96} del archivo binario. La configuración del malware sigue encriptada en el recurso PE. Tiene aproximadamente la misma configuración, pero los servidores C&C difieren de los anteriores:

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

El grupo OceanLotus demuestra nuevamente una combinación de diferentes técnicas para evitar la detección. Han vuelto con un esquema "mejorado" del proceso de infección. Al elegir nombres aleatorios y rellenar archivos ejecutables con datos aleatorios, reducen el número de IoC confiables (basados en hashes y nombres de archivos). Además, gracias al uso de descarga DLL de terceros, los atacantes solo necesitan eliminar el binario legítimo AcroTranscoder.

Archivos autoextraíbles

Después de los archivos RTF, el grupo ha pasado a archivos autoextraíbles (SFX) con íconos de documentos comunes para confundir aún más al usuario. Esto fue reportado por Threatbook (enlace en chino). Al ejecutar, se descomprimen archivos RAR autoextraíbles y se ejecutan DLL con la extensión .ocx, cuya carga final ha sido previamente documentada. {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Desde mediados de enero de 2019, OceanLotus ha estado reutilizando esta técnica, pero con el tiempo han cambiado algunas configuraciones. En esta sección, hablaremos sobre la técnica y sus cambios.

Creación de una trampa

Documento THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) encontrado por primera vez en 2018. Este archivo SFX fue creado inteligentemente: la descripción (Información de la versión) indica que se trata de una imagen JPEG. El script SFX se ve de la siguiente manera:

ESET: nuevos esquemas de entrega del backdoor del cibergrupo OceanLotus
Figura 9. Comandos SFX

El malware descomprime {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), así como la imagen 2018 thich thong lac.jpg.

La imagen trampa se ve de la siguiente manera:

ESET: nuevos esquemas de entrega del backdoor del cibergrupo OceanLotus
Figura 10. Imagen trampa

Es posible que haya notado que las primeras dos líneas en el script SFX invocan el archivo OCX dos veces, pero esto no es un error.

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

El flujo de control del archivo OCX es muy similar al de otros componentes de OceanLotus: muchas secuencias de comandos JZ/JNZ y PUSH/RET, intercaladas con código basura.

ESET: nuevos esquemas de entrega del backdoor del cibergrupo OceanLotus
Figura 11. Código ofuscado

Después de filtrar el código basura, la exportación DllRegisterServer, llamada por regsvr32.exe, se ve de la siguiente manera:

ESET: nuevos esquemas de entrega del backdoor del cibergrupo OceanLotus
Figura 12. Código principal del instalador

Esencialmente, en la primera llamada DllRegisterServer la exportación establece el valor del registro HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model para el desplazamiento cifrado en DLL (0x10001DE0).

Cuando la función se llama por segunda vez, lee el mismo valor y se ejecuta en esa dirección. Desde allí, se lee y ejecuta el recurso, junto con muchas acciones en la memoria.

El shellcode es el mismo cargador PE utilizado en campañas pasadas de OceanLotus. Puede ser emulado con nuestro script. En última instancia, se descomprime db293b825dcc419ba7dc2c49fa2757ee.dll, lo carga en memoria y lo ejecuta DllEntry.

DLL extrae el contenido de su recurso, lo descifra (AES-256-CBC) y lo descomprime (LZMA). El recurso tiene un formato específico que es fácil de descompilar.

ESET: nuevos esquemas de entrega del backdoor del cibergrupo OceanLotus
Figura 13. Estructura de configuración del instalador (KaitaiStruct Visualizer)

La configuración está explícitamente definida: dependiendo del nivel de privilegios, los datos binarios se escribirán en %appdata%IntellogsBackgroundUploadTask.cpl o %windir%System32BackgroundUploadTask.cpl (o SysWOW64 para sistemas de 64 bits).

La persistencia se asegura mediante la creación de una tarea llamada BackgroundUploadTask[junk].job, donde [junk] que representa un conjunto de bytes 0x9D y 0xA0.

Nombre de la tarea de la aplicación %windir%System32control.exe, y el valor del parámetro es la ruta al archivo binario descargado. La tarea oculta se ejecuta todos los días.

Constructivamente, el archivo CPL es un DLL con el nombre interno ac8e06de0a6c4483af9837d96504127e.dll, que exporta la función CPlApplet. Este archivo descifra su único recurso {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, luego carga este DLL y llama su única exportación DllEntry.

Archivo de configuración del backdoor

La configuración del backdoor está cifrada e incrustada en sus recursos. La estructura del archivo de configuración es muy similar a la anterior.

ESET: nuevos esquemas de entrega del backdoor del cibergrupo OceanLotus
Figura 14. Estructura de la configuración del backdoor (KaitaiStruct Visualizer)

A pesar de la estructura similar, los valores de muchos campos han sido actualizados en comparación con los datos presentados en nuestro antiguo informe.

El primer elemento del arreglo binario contiene el DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), identificado por Tencent. Pero dado que el nombre de exportación se eliminó del archivo binario, los hashes no coinciden.

Investigaciones adicionales

Al recolectar muestras, notamos algunas características. La muestra recién descrita apareció alrededor de julio de 2018, y otras similares a ella – muy recientemente, a mediados de enero – principios de febrero de 2019. Se utilizó un archivo SFX como vector de infección, que descargó un documento legítimo como señuelo y un archivo malicioso OCX.

A pesar de que OceanLotus utiliza marcas de tiempo falsas, notamos que las marcas de tiempo de los archivos SFX y OCX son siempre las mismas (0x57B0C36A (08/14/2016 @ 7:15pm UTC) y 0x498BE80F (02/06/2009 @ 7:34am UTC) respectivamente). Probablemente, esto indica que los autores tienen algún tipo de 'constructor' que utiliza las mismas plantillas y simplemente cambia algunas características.

Entre los documentos que hemos revisado desde principios de 2018, encontramos varios nombres que indican a los países de interés para los atacantes:

— La Nueva Información de Contacto de los Medios de Camboya (New).xls.exe
— 李建香 (个人简历).exe (documento PDF falso de un CV)
— feedback, Rally en EE.UU. del 28 al 29 de julio de 2018.exe

Desde el descubrimiento del backdoor {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll y la publicación de su análisis por varios investigadores, hemos observado algunos cambios en los datos de configuración del malware.

En primer lugar, los autores comenzaron a eliminar nombres de los DLL auxiliares (DNSprov.dll y dos versiones HttpProv.dll). Luego los operadores dejaron de empaquetar el tercer DLL (segunda versión HttpProv.dll), eligiendo integrar solo uno.

En segundo lugar, muchos campos de configuración del backdoor fueron modificados, probablemente para evitar la detección, ya que muchos IoCs se volvieron disponibles. Entre los campos importantes que los autores cambiaron se encuentran los siguientes:

  • se cambió la sección del registro de AppX (ver IoCs)
  • cadena de codificación del mutex («def», «abc», «ghi»)
  • número de puerto

Finalmente, en todas las nuevas versiones analizadas aparecieron nuevos C&C, enumerados en la sección de IoCs.

Conclusiones

OceanLotus sigue evolucionando. El grupo cibernético se enfoca en perfeccionar y expandir su kit de herramientas y cebos. Los autores ocultan cargas útiles maliciosas utilizando documentos atractivos, cuyo tema es relevante para las víctimas previstas. Desarrollan nuevos esquemas y también utilizan herramientas de acceso público, como el exploit de Equation Editor. Además, mejoran las herramientas para reducir la cantidad de artefactos que quedan en las máquinas de las víctimas, disminuyendo así la posibilidad de detección por parte del software antivirus.

Indicadores de compromiso

Los indicadores de compromiso, así como los atributos de MITRE ATT&CK, están disponibles en Welivesecurity y en GitHub.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster