ESET: Nuevos esquemas de entrega para OceanLotus Cybergroup Backdoor

En la publicación, le diremos cómo el grupo cibernético OceanLotus (APT32 y APT-C-00) utilizó recientemente uno de los exploits disponibles públicamente para CVE-2017-11882, vulnerabilidades de corrupción de memoria en Microsoft Office y cómo el malware del grupo asegura la persistencia en los sistemas comprometidos sin dejar rastros. A continuación, describimos cómo, desde principios de 2019, el grupo ha estado utilizando archivos autoextraíbles para ejecutar código.

OceanLotus se especializa en ciberespionaje, los objetivos prioritarios son los países del sudeste asiático. Los atacantes falsifican documentos que atraen la atención de las posibles víctimas para convencerlas de realizar un backdoor, y también trabajan en el desarrollo de herramientas. Los métodos utilizados para crear honeypots varían según los diferentes ataques, desde archivos de "extensión doble", archivos autoextraíbles, documentos de macros, hasta exploits conocidos.

ESET: Nuevos esquemas de entrega para OceanLotus Cybergroup Backdoor

Usando el exploit en Microsoft Equation Editor

A mediados de 2018, OceanLotus realizó una campaña que explotaba la vulnerabilidad CVE-2017-11882. Uno de los documentos maliciosos del cibergrupo fue analizado por especialistas de 360 ​​Threat Intelligence Center (estudiar en chino), incluida una descripción detallada del exploit. La publicación a continuación es una descripción general de un documento tan malicioso.

La etapa primera

documento FW Report on demonstration of former CNRP in Republic of Korea.doc (sha-1: D1357B284C951470066AAA7A8228190B88A5C7C3) es similar a la mencionada en el estudio anterior. Es interesante porque está dirigido a usuarios interesados ​​en la política camboyana (CNRP - Partido de Salvación Nacional de Camboya, disuelto a fines de 2017). A pesar de la extensión .doc, el documento está en formato RTF (ver la figura a continuación), contiene código no deseado y también está distorsionado.

ESET: Nuevos esquemas de entrega para OceanLotus Cybergroup Backdoor
Figura 1. Basura en RTF

A pesar de la presencia de elementos con formato incorrecto, Word abre con éxito este archivo RTF. Como puede ver en la Figura 2, aquí hay una estructura EQNOLEFILEHDR en el desplazamiento 0xC00 seguida de un encabezado MTEF y luego una entrada MTEF (Figura 3) para la fuente.

ESET: Nuevos esquemas de entrega para OceanLotus Cybergroup Backdoor
Figura 2. Valores de registro de FONT

ESET: Nuevos esquemas de entrega para OceanLotus Cybergroup Backdoor
Figura 3. formato de grabación FONT

Posible desbordamiento de campo nombre , porque su tamaño no se comprueba antes de copiar. Un nombre demasiado largo desencadena la vulnerabilidad. Como puede ver en el contenido del archivo RTF (compensación 0xC26 en la Figura 2), el búfer se llena con código de shell seguido de un comando ficticio (0x90) y dirección de remitente 0x402114. La dirección es un elemento de diálogo en EQNEDT32.exeseñalando instrucciones RET. Esto hace que EIP apunte al inicio del campo. nombre que contiene el código shell.

ESET: Nuevos esquemas de entrega para OceanLotus Cybergroup Backdoor
Figura 4. Comienzo del shellcode del exploit

dirección 0x45BD3C almacena una variable que se desreferencia hasta que alcanza un puntero a la estructura cargada actualmente MTEFData. Aquí está el resto de la shellcode.

El propósito del código de shell es ejecutar la segunda pieza de código de shell incrustada en el documento abierto. Primero, el shellcode original intenta encontrar el descriptor de archivo del documento abierto iterando sobre todos los descriptores del sistema (NtQuerySystemInformation con un argumento SystemExtendedHandleInformation) y comprobando si coinciden PID descriptor y PID proceso WinWord y si el documento se abrió con una máscara de acceso - 0x12019F.

Para confirmar que se encontró el identificador correcto (y no el identificador de otro documento abierto), el contenido del archivo se muestra mediante la función CreateFileMapping, y el shellcode comprueba si los últimos cuatro bytes del documento coinciden con "yyyy» (método Egg Hunting). Una vez que se encuentra una coincidencia, el documento se copia en una carpeta temporal (GetTempPath) cómo ole.dll. Luego se leen los últimos 12 bytes del documento.

ESET: Nuevos esquemas de entrega para OceanLotus Cybergroup Backdoor
Figura 5. Marcadores de fin de documento

valor de 32 bits entre marcadores AABBCCDD и yyyy es el desplazamiento del siguiente shellcode. se llama con una función CreateThread. Extraído el mismo shellcode utilizado por el grupo OceanLotus anteriormente. Script de emulación de Python, que lanzamos en marzo de 2018, todavía se está ejecutando para el volcado de la segunda etapa.

La segunda etapa

Extracción de componentes

Los nombres de archivos y directorios se eligen dinámicamente. El código elige aleatoriamente el nombre de un archivo ejecutable o DLL en C:Windowssystem32. Luego hace una solicitud a sus recursos y recupera el campo. FileDescription para usar como el nombre de la carpeta. Si eso 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 los 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 agrega "NLS_{6 caracteres}" al nombre.

recurso 0x102 analizados y archivos volcados en %ProgramFiles% o %AppData%, a una carpeta seleccionada al azar. El tiempo de creación cambió para tener los mismos valores que kernel32.dll.

Por ejemplo, aquí está la carpeta y la lista de archivos creados al seleccionar el ejecutable C:Windowssystem32TCPSVCS.exe como fuente de datos.

ESET: Nuevos esquemas de entrega para OceanLotus Cybergroup Backdoor
Figura 6. Extracción de varios componentes

Estructura de recursos 0x102 en un cuentagotas es bastante complicado. En pocas palabras, contiene:
- nombres de archivo
— Tamaño y contenido del archivo
— Formato de compresión (COMPRESSION_FORMAT_LZNT1utilizado por la función RtlDecompressBuffer)

El primer archivo se vuelca como TCPSVCS.exe, que es legítimo AcroTranscoder.exe (de acuerdo a FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

Es posible que haya notado que algunos archivos DLL tienen más de 11 MB. Esto se debe a que se coloca un gran búfer contiguo de datos aleatorios dentro del ejecutable. Es posible que esta sea una forma de evitar la detección por parte de algunos productos de seguridad.

Garantizar la persistencia

recurso 0x101 en el cuentagotas contiene dos enteros de 32 bits que especifican cómo se debe aplicar la persistencia. El valor del primero especifica cómo persistirá el malware sin derechos de administrador.

ESET: Nuevos esquemas de entrega para OceanLotus Cybergroup Backdoor
Tabla 1. Mecanismo de persistencia de no administrador

El valor del segundo entero especifica cómo el malware debe garantizar la persistencia ejecutándose con privilegios administrativos.

ESET: Nuevos esquemas de entrega para OceanLotus Cybergroup Backdoor
Tabla 2. Mecanismo de persistencia del 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, la cadena "Revision 1” (el número aumenta hasta que se encuentra un nombre no utilizado). Los operadores se han ocupado de que la persistencia a través del servicio sea resistente: en caso de falla, el servicio debe reiniciarse después de 1 segundo. Entonces el valor WOW64 La nueva clave de registro para el servicio se establece en 4, lo que indica que se trata de un servicio de 32 bits.

Una tarea programada se crea a través de varias interfaces COM: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskScheduler. Esencialmente, el malware crea una tarea oculta, establece la información de la cuenta junto con la información actual del usuario o del administrador y luego establece el disparador.

Esta es una tarea diaria con una duración de 24 horas e intervalos entre dos ejecuciones de 10 minutos, lo que significa que se ejecutará constantemente.

Bit malicioso

En nuestro ejemplo, el ejecutable TCPSVCS.exe (AcroTranscoder.exe) es un software legítimo que carga las DLL que se descargan con él. En este caso, es de interés Flash Video Extension.dll.

Su función DLLMain simplemente llama a otra función. Hay algunos predicados borrosos:

ESET: Nuevos esquemas de entrega para OceanLotus Cybergroup Backdoor
Figura 7. Predicados borrosos

Después de estas comprobaciones engañosas, el código recibe una sección .text expediente TCPSVCS.exe, cambia su protección a PAGE_EXECUTE_READWRITE y lo sobrescribe con instrucciones ficticias:

ESET: Nuevos esquemas de entrega para OceanLotus Cybergroup Backdoor
Figura 8. Secuencia de instrucciones

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

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

El contenido del archivo *.db3 es el código shell que suele utilizar el equipo de OceanLotus. Nuevamente descomprimimos con éxito su carga usando el script del emulador que publicamos. en GitHub.

El guión recupera la etapa final. Este componente es un backdoor que ya hemos analizado en estudio anterior de OceanLotus. Esto puede ser determinado por el GUID {A96B020F-0000-466F-A96D-A91BBF8EAC96} archivo binario. La configuración del malware todavía está cifrada en el recurso PE. Tiene aproximadamente la misma configuración, pero los servidores C&C son diferentes a los anteriores:

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

El grupo OceanLotus vuelve a demostrar una combinación de diferentes técnicas para evitar la detección. Regresaron con un esquema "terminado" del proceso de infección. Al elegir nombres aleatorios y llenar ejecutables con datos aleatorios, reducen la cantidad de IoC confiables (basados ​​en hash y nombres de archivo). Además, al usar la carga de DLL de terceros, los atacantes solo necesitan eliminar el archivo binario legítimo. AcroTranscoder.

Archivos autoextraíbles

Después de los archivos RTF, el grupo cambió a archivos autoextraíbles (SFX) con íconos de documentos comunes para confundir aún más al usuario. Threatbook escribió al respecto (enlace en chino). Al iniciarse, los archivos RAR autoextraíbles se vuelcan y se ejecutan las DLL con la extensión .ocx, cuya carga útil final se documentó previamente {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Desde mediados de enero de 2019, OceanLotus ha estado reutilizando esta técnica, pero cambiando algunas configuraciones con el tiempo. En esta sección, hablaremos sobre la técnica y los cambios.

Creando un señuelo

documento THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (sha-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) se encontró por primera vez en 2018. Este archivo SFX fue creado con la mente - en la descripción (Información de la versión) dice que es una imagen JPEG. El guión SFX se ve así:

ESET: Nuevos esquemas de entrega para OceanLotus Cybergroup Backdoor
Figura 9. Comandos SFX

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

La imagen del señuelo se ve así:

ESET: Nuevos esquemas de entrega para OceanLotus Cybergroup Backdoor
Figura 10. Imagen de señuelo

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

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

El flujo de control del archivo OCX es muy similar a otros componentes de OceanLotus: muchas secuencias de comandos JZ/JNZ и PUSH/RETintercalado con código basura.

ESET: Nuevos esquemas de entrega para OceanLotus Cybergroup Backdoor
Figura 11. Código ofuscado

Después de filtrar el código basura, la exportación DllRegisterServer, llamado regsvr32.exe, se ve así:

ESET: Nuevos esquemas de entrega para OceanLotus Cybergroup Backdoor
Figura 12. Código del instalador principal

Básicamente, la primera vez que llamas DllRegisterServer valor de registro de conjuntos de exportación HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model para desplazamiento cifrado en DLL (0x10001DE0).

Cuando se llama a la función por segunda vez, lee el mismo valor y se ejecuta en esa dirección. Desde aquí, el recurso se lee y ejecuta, y muchas acciones se realizan en la RAM.

El shellcode es el mismo cargador de PE que se usó en campañas anteriores de OceanLotus. Se puede emular con nuestro guion. Al final, se cae db293b825dcc419ba7dc2c49fa2757ee.dll, lo carga en memoria y ejecuta DllEntry.

La 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 para OceanLotus Cybergroup Backdoor
Figura 13. Estructura de configuración del instalador (KaitaiStruct Visualizer)

La configuración se establece explícitamente: según el nivel de privilegio, los datos binarios se escribirán en %appdata%IntellogsBackgroundUploadTask.cpl o %windir%System32BackgroundUploadTask.cpl (o SysWOW64 para sistemas de 64 bits).

Se garantiza una mayor persistencia mediante la creación de una tarea denominada BackgroundUploadTask[junk].jobDonde [junk] es un conjunto de bytes 0x9D и 0xA0.

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

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

Archivo de configuración de puerta trasera

La configuración de la puerta trasera está encriptada e integrada en sus recursos. La estructura del archivo de configuración es muy similar al anterior.

ESET: Nuevos esquemas de entrega para OceanLotus Cybergroup Backdoor
Figura 14. Estructura de configuración de puerta trasera (KaitaiStruct Visualizer)

A pesar de la estructura similar, los valores de muchos campos se han actualizado en comparación con los datos que se muestran en nuestro viejo informe.

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

Investigación adicional

Recolectando muestras, prestamos atención a algunas características. La muestra que acabamos de describir apareció alrededor de julio de 2018, y otras similares aparecieron más recientemente, a mediados de enero o principios de febrero de 2019. Se utilizó un archivo SFX como vector de infección, dejando caer un documento señuelo legítimo y un archivo OCX malicioso.

Aunque OceanLotus usa marcas de tiempo falsas, notamos que las marcas de tiempo de los archivos SFX y OCX son siempre las mismas (0x57B0C36A (08/14/2016 a las 7:15 UTC) y 0x498BE80F (02/06/2009 a las 7:34 a. m. UTC) respectivamente). Esto probablemente indica que los autores tienen algún tipo de "constructor" que usa las mismas plantillas y solo cambia algunas características.

Entre los documentos que hemos estudiado desde principios de 2018, hay varios nombres que indican los países atacantes de interés:

- La nueva información de contacto de Camboya Media (Nuevo).xls.exe
- 李建香 (个人简历).exe (documento pdf falso de un CV)
— comentarios, Rally en EE. UU. del 28 al 29 de julio de 2018.exe

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

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

En segundo lugar, se han cambiado muchos campos de configuración de puertas traseras, probablemente para evitar la detección, ya que muchos IoC están disponibles. Entre los campos importantes modificados por los autores se encuentran los siguientes:

  • clave de registro modificada AppX (ver IoC)
  • cadena de codificación mutex ("def", "abc", "ghi")
  • número de puerto

Finalmente, todas las nuevas versiones analizadas tienen nuevos C&C enumerados en la sección IoC.

Hallazgos

OceanLotus sigue evolucionando. El grupo cibernético se enfoca en refinar y expandir las herramientas y señuelos. Los autores enmascaran las cargas útiles maliciosas con documentos llamativos que son relevantes para las víctimas previstas. Desarrollan nuevos circuitos y también utilizan herramientas disponibles públicamente, como el exploit Equation Editor. Además, están mejorando las herramientas para reducir la cantidad de artefactos que quedan en las máquinas de las víctimas, lo que reduce la posibilidad de que el software antivirus los detecte.

Indicadores de compromiso

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

Fuente: habr.com

Añadir un comentario