El APT CozyDuke

Kurt Baumgartner
Costin Raiu

CozyDuke (también conocido como CozyBear, CozyCar y “Office Monkeys”) es una amenaza que se intensificó notablemente en el segundo semestre de 2014, cuando atacó a una serie de blancos. Entre las más espectaculares de sus víctimas conocidas se encuentran la casa Blanca y el Departamento de Estado de EE.UU.

La operación presenta varios aspectos interesantes:

  • víctimas y blancos de alto perfil extremadamente importantes;
  • habilidades de cifrado y antidetección;
  • sólidas funciones y similitudes estructurales con programas maliciosos que lo aparejan con los componentes iniciales de la segunda etapa de MiniDuke, así como con los más recientes componentes de CosmicDuke y OnionDuke.

Este ataque suele apuntar a blancos específicos y los ataca mediante mensajes de correo que contienen un enlace a un sitio infectado. A veces se trata de un sitio legítimo de alto perfil, como por ejemplo “diplomacy.pl”, que aloja un archivo comprimido ZIP. El archivo comprimido ZIP contiene un SFX RAR que instala el programa malicioso y muestra un PDF vacío como carnada.

En otras ocasiones, esta amenaza envía directamente videos flash fraudulentos como adjuntos en los mensajes de correo. Un claro ejemplo es el video “Office Monkeys LOL Video.zip”. El ejecutable que viene dentro del archivo no sólo reproduce el video flash, sino que también descarga y ejecuta otro ejemplar de CozyDuke. Estos videos pasan rápidamente de una oficina a otra, divirtiendo a los empleados, mientras que sus sistemas se infectan silenciosamente en segundo plano. Muchos de los componentes de este APT están firmados con certificados digitales fraudulentos Intel y AMD.

La reciente actividad del APT Cozyduke logró llamar la atención en las noticias:

Fuente: El peor ataque informático de todos los tiempos contra el Dpto. de Estado

Hackean la red informática de la Casa Blanca (en inglés)

Tres meses después, el Departamento de Estado no logra deshacerse de los hackers (en inglés)

El Departamento de Estado suspende su sistema de correo electrónico preocupado por una infección (en inglés)

Analicemos una pequeña muestra de los archivos y datos de CozyDuke, cuyas herramientas son muy llamativas.

Análisis del descargador Office Monkeys

Los componentes descargadores y espías suelen compartir características muy comunes, pero las que corresponden a estos archivos están levemente modificadas según las necesidades del equipo. Este rápido desarrollo e instalación es muy llamativo.

68271df868f462c06e24a896a9494225,Office Monkeys LOL Video.zip

Aunque parezca increíble, los destinatarios de los envíos masivos ejecutan el archivo incorporado:

95b3ec0a4e539efaa1faa3d4e25d51de,Office Monkeys (video flash corto).exe

A su vez, este archivo descarga dos ejecutables a %temp%:

  • 2aabd78ef11926d7b562fd0d91e68ad3, Monkeys.exe
  • 3d3363598f87c78826c859077606e514, player.exe

Primero ejecuta Monkeys.exe, reproduciendo un video incorporado, muy gracioso, que muestra chimpancés con camisa y corbata trabajando en una oficina con un colega humano. Después ejecuta player.exe, un descargador de CozyDuke que cuenta con técnicas antidetección:

3d3363598f87c78826c859077606e514,338kb,player.exe,Trojan.Win32.CozyBear.v,CompiledOn:2014.07.02 21:13:33

Características troyanas y antidetección

Este archivo recopila información del sistema y después llama a una instancia WMI en el espacio de nombres root/securitycenter para detectar soluciones de seguridad instaladas en el sistema, lo que significa que este código está diseñado para sistemas x86 con wql:

SELECT * FROM AntiVirusProduct
SELECT * FROM FireWallProduct

El código detecta varias soluciones de seguridad para evadirlas:

  • CRYSTAL
  • KASPERSKY
  • SOPHOS
  • DrWeb
  • AVIRA
  • COMODO Dragon

Además de utilizar WMI/wql, también busca soluciones de seguridad en la llave de registro “SOFTWAREMicrosoftWindowsCurrentVersionUninstall” para evadirlas.

Tras efectuar estas verificaciones, descarga en el directorio que crea varios archivos de programas maliciosos firmados con una firma digital AMD fraudulenta. Estos archivos se guardan en un archivo CAB cifrado de 217kb en los recursos del descargador, con el nombre “A”. Para cifrar y descifrar este archivo CAB, se utiliza un sencillo cifrado XOR con una llave rotativa de 16 bytes: x36x11xddx08xacx4bx72xf8x51x04x68x2ex3ex38x64x32.

El archivo CAB se descomprime y sus contenidos se crean en el disco. Estos archivos descargados contienen funciones para los sistemas Windows 64bit y 32bit, y todos se encuentran dentro de un directorio:

C:Documents and SettingsuserApplication DataATI_Subsystem
6761106f816313394a653db5172dc487,54kb,amdhcp32.dll ← 32bit dll,CompiledOn:2014.07.02 21:13:24
d596827d48a3ff836545b3a999f2c3e3,60kb,aticaldd.dll ← 64bit dll,CompiledOn:2014.07.02 21:13:26
bc626c8f11ed753f33ad1c0fe848d898,285kb,atiumdag.dll ← 32bit dll, 279kb, Trojan.Win32.CozyDuke.a, CompiledOn:2014.07.02 21:13:26
4152e79e3dbde55dcf3fc2014700a022,6kb,racss.dat

El código copia rundll32.exe desde windowssystem32 a su recién creado subdirectorio %appdata%ATI_Subsystem subdirectory como “amdocl_as32.exe” junto a las tres DLLs arriba citadas. Ejecuta atiumdag.dll con dos valores de parámetros, sólo para exportar y un PID arbitrario:

“C:Documents and SettingsuserApplication DataATI_Subsystemamdocl_as32.exe” “C:Documents and SettingsuserApplication DataATI_Subsystematiumdag.dll””, ADL2_ApplicationProfiles_System_Reload 1684″

Esta DLL también incorpora antidetectores. Sin embargo, busca un conjunto diferente pero superpuesto, y la duplicación aleatoria sugiere que este componente está acoplado con su descargador, parcialmente en formato regional, en base a la selección de blancos.

  • K7
  • KASPERSKY
  • AVG

El código recopila información sobre el sistema y formatos XML de estos datos previos a su codificación para un apropiado análisis sintáctico:

El código recopila información sobre el sistema y pone estos datos en formato XML antes de cifrarlos para un apropiado análisis sintáctico.

efd5aba3-6719-4655-8a72-1aa93feefa38C:Documents ySettingsuserApplication DataATI_Subsystemamdocl_as32exeMyPCuserMicrosoft Windows XP 512600 SP 30 x32Admin192.60.11.1008:11:17:f2:9a:efSophos Anti-Virus

Finalmente, este proceso señala a www.sanjosemaristas.com, un sitio que parece haber sido infectado y abusado varias veces en los dos últimos años.

hxxp://www.sanjosemaristas.com/app/index.php?{A01BA0AD-9BB3-4F38-B76B-A00AD11CBAAA}, proporciona el nombre actual de servicio GUID del adaptador de la red. Utiliza las funciones básicas de cifrado estándar de Win32 para generar una llave de sesión CALG_RC4 para cifrar las comunicaciones de datos recopilados y la envía al servidor.

Certificados de firma de los ejecutables

Las muestras suelen estar firmadas con un certificado falso; hemos detectado dos casos, uno con AMD y otro con Intel:

Archivos de configuración:

Parte del programa malicioso utiliza un archivo de configuración cifrado que se guarda en el disco como “racss.dat”. Está cifrado con RC4, mediante la llave {0xb5, 0x78, 0x62, 0x52, 0x98, 0x3e, 0x24, 0xd7, 0x3b, 0xc6, 0xee, 0x7c, 0xb9, 0xed, 0x91, 0x62}. Una vez descifrado, luce así:

Segunda etapa de las comunicaciones y del programa malicioso:

Los atacantes envían a sus víctimas comandos y módulos nuevos para que los ejecuten mediante sus servidores C&C. Los scripts de los C&C los guardan temporalmente hasta que la próxima víctima conecte los archivos locales. Hemos identificado dos de estos archivos:

  • settings.db
  • sdfg3d.db

El archivo de base de datos luce así:

Está cifrado con BASE64 cifrado y usa la misma llave de cifrado RC4 que la configuración del programa malicioso.

Su descifrado expuso las siguientes cargas útiles:

59704bc8bedef32709ab1128734aa846 *ChromeUpdate.ex_
5d8835982d8bfc8b047eb47322436c8a *cmd_task.dll
e0b6f0d368c81a0fb197774d0072f759 *screenshot_task.dll

El descifrado de éstas también expuso un conjunto de archivos TASK que mantienen comandos AGENT y valores de parámetros:

conf.xml

Y un conjunto de archivos de “informes” que contienen la información del sistema robada, salida de errores, y salida “AgentInfo”, de los sistemas atacados:

DCOM_amdocl_ld_API_.raw
Util_amdave_System_.vol
Last_amdpcom_Subsystem_.max
Data_amdmiracast_API_.aaf
7.txt

screenshot_task.dll es una DLL de 32-bit utilizada para capturar imágenes de la ventana completa del escritorio y guardarlas como archivos bitmap en el directorio %temp%. El número de veces que se repiten las capturas de pantalla se configura dentro del archivo TASK XML.

cmd_task.dll es una DLL 32-bit que mantiene varias primitivas. Sirve para, entre otras cosas, crear nuevos procesos y actuar como un shell de comandos.

Cada una de estas cargas útiles se entrega junto a un archivo de configuración con instrucciones para su ejecución, como por ejemplo:

En otro caso, observamos una víctima a la que se le hizo seguimiento:

Los atacantes mapean una unidad de red con Microsoft OneDrive para ejecutar otras herramientas:

Copian un documento cifrado con base 64 desde MicrosoftOneDrive al sistema de la víctima, donde lo descifran:

No todo funciona como planificado, así que mantienen la función de reporte de errores para las comunicaciones con el C2:

Además, ChromeUpdate es un ejecutable de 64-bit (que aparece como un paquete WEXTRACT) que extrañamente descarga una DLL de 32-bit. Cache.dll se guarda sencillamente como un archivo CAB en la sección de recursos de ChromeUpdate.

ChromeUpdate.exe inicia el archivo con “rundll32 cache.dll,ADB_Setup”

Análisis de Cache.dll

Cache.dll está escrito en C/C++ y compilado con un compilador Microsoft.

Generalidades del flujo de código Cache.dll

  • RC4 descifra el servidor C&C y las URLs hardcoded;
  • resuelve llamadas a funciones ocultas;
  • recopila datos identificadores del sistema atacado;
  • cifra los datos recopilados;
  • envía los datos robados al servidor C&C y recupera los comandos.

Detalles del código Cache.dll

Estructuralmente, cache.dll es una puerta trasera bastante grande (425kb). Contiene el código y los datos en bruto, masas amorfas de datos cifrados que se descifrarán y utilizarán en el tiempo de ejecución, y oculta funciones que no se exponen hasta el tiempo de ejecución. El código no presenta cadenas pdb/debug.

Contiene ocho exportaciones, incluyendo DLLMAIN:

  • ADB_Add
  • ADB_Cleanup
  • ADB_Initnj
  • ADB_Load
  • ADB_Release
  • ADB_Remove
  • ADB_Setup

ADB_Setup es un punto de entrada que sencillamente genera otro hilo y espera que se complete.

En la imagen de arriba podemos ver un hilo nuevo creado con la dirección de inicio de Cache.dll que exporta “ADB_Load” por el hilo inicial.

Esta función exportada es controlada mientras que el hilo inicial ejecuta un bucle de mensaje de Windows. Primero toma una masa amorfa cifrada guardada en una variable global y extrae 381 bytes de estos datos cifrados:

La API win32 CryptDecrypt estándar utiliza RC4 para descifrar esta masa amorfa en un servidor C&C, una ruta URL, y parámetros URL hardcoded, que aparecen a continuación, con una sencilla llave de 140-bit “x8BxFFx55x8BxECx83xECx50xA1x84x18x03x68x33xC9x66xF7x45x10xE8x1Fx89x45xFCx8Bx45x14x56”.

Después, el código descifra este conjunto de símbolos importados y resuelve direcciones para sus funciones de red y de robo de datos:

InternetCloseHandle
InternetReadFile
HttpSendRequestA
HttpOpenRequestA
HttpQueryInfoA
InternetConnectA
InternetCrackUrlA
InternetOpenA
InternetSetOptionW
GetAdaptersInfo

Al igual que el anterior componente “atiumdag.dll” del video con el mono oficinista, este código recopila información para identificar el sistema mediante llamadas API win 32 estándar.

  • Nombre de ordenador – GetComputerNameW
  • Nombre de usuario – GetUserNameW
  • Adaptador GUID, dirección IP, dirección MAP – GetAdaptersInfo
  • Versión Windows – GetVersionExW

Después usa las llamadas API de red resueltas en tiempo de ejecución para renviar los datos recopilados al servidor C&C y URLs hardcoded.

URLs de reconexión de Cache.dll:

209.200.83.43/ajax/links.php
209.200.83.43/ajax/api.php
209.200.83.43/ajax/index.php
209.200.83.43/ajax/error.php
209.200.83.43/ajax/profile.php
209.200.83.43/ajax/online.php
209.200.83.43/ajax/loader.php
209.200.83.43/ajax/search.php

Se observa una cadena agente de usuario en la transferencia, generado dinámicamente en base a los ajustes del sistema Windows (recuperados mediante el API win 32 estándar “ObtainUserAgentString”):

“Agente de usuario: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)”

Las comunicaciones con el C2 de CozyDuke incluyen pares de llaves/valores que pasan como parámetros URL. Las llaves observadas nos recuerdan que las comunicaciones de CosmicDuke incluyen:

  • status=
  • k=
  • mode=
  • ajax=
  • name=
  • subNodeId=
  • nodeId=
  • r=
  • t=
  • id=
  • item=
  • item_id=
  • js=
  • j=
  • v=
  • json=
  • i=
  • c=
  • x=
  • a=

Relación con MiniDuke/CosmicDuke/OnionDuke:

Uno de los módulos de la segunda etapa de Cozy Bear, Show.dll, resulta particularmente interesante porque parece haber sido compilado en la misma plataforma que OnionDuke. A continuación comparamos Show.dll con la muestra MD5 de OnionDuke: c8eb6040fd02d77660d19057a38ff769: ambos poseen exactamente las mismas tablas de exportación y parecen llamarse internamente “UserCache.dll”:

Esto podría indicar que los autores de OnionDuke y Cozy Bear son los mismos, o que trabajan juntos.

En otra interesante comparación de otros dos archivos, una reciente herramienta de la segunda etapa de los ataques CozyDuke coincide con un componente de la segunda etapa de otros ataques Miniduke/Onionduke.

2e0361fd73f60c76c69806205307ccac, update.dll (Miniduke), 425kb (nombre interno = “UserCache.dll”)
9e3f3b5e9ece79102d257e8cf982e09e, cache.dll (Cozyduke), 425kb (nombre interno = “UserCache.dll”)

Ambos comparten idénticos nombres de funciones de exportación en sus directorios de exportación, y los nombres parecen haber sido asignados aleatoriamente en el momento de la compilación. La siguiente tabla presenta las funciones coincidentes en base a los datos de tamaño, pero además, también coinciden las llamadas, los IMPs y el código. Los contenidos de una sola de estas exportaciones en update.dll no tienen contraparte coincidente en cache.dll.

A diferencia del archivo atiumdag.dll de arriba, cache.dll y update.dll no contienen funciones antivirus ni antianálisis. Quizás tienen previsto aparejar este programa ladrón con otro descargador que contenga la función antivirus WMI. Esta funcionalidad rotativa parece representativa del conjunto, junto a otras características. Sus componentes puerta trasera personalizados parecen evolucionar ligeramente con el tiempo, con modificaciones en las funciones anti-detección, criptografía y de troyano dependiendo de la operación. Este rápido desarrollo nos recuerda al conjunto de herramientas APT28/Sofacy, especialmente los componentes coreshell y chopstick.

Creemos que en el futuro seguirán y se incrementarán las actividades de este grupo, y que aparecerán variaciones del programa malicioso utilizado en anteriores incidentes relacionados con los Dukes.

Para más información sobre MiniDuke, CosmicDuke y OnionDuke, por favor consulta las Referencias.

MD5s relacionados

62c4ce93050e48d623569c7dcc4d0278, 2537.ex_
a5d6ad8ad82c266fda96e076335a5080, drop1.ex_
93176df76e351b3ea829e0e6c6832bdf, drop1.pd_
7688be226b946e231e0cd36e6b708d20, 8.zip
fd8e27f820bdbdf6cb80a46c67fd978a, doc853.ex_
93176df76e351b3ea829e0e6c6832bdf, doc853.pdf
9ad55b83f2eec0c19873a770b0c86a2f, reader_sl.ex_
f16dff8ec8702518471f637eb5313ab2 1.ex_
8670710bc9477431a01a576b6b5c1b2a
93176df76e351b3ea829e0e6c6832bdf, droppedhppscan854.pdf
f58a4369b8176edbde4396dc977c9008, droppedreader_sl.ex_
83f57f0116a3b3d69ef7b1dbe9943801
b5553645fe819a93aafe2894da13dae7
acffb2823fc655637657dcbd25f35af8
1a42acbdb285a7fba17f95068822ea4e
d543904651b180fd5e4dc1584e639b5e
d7af9a4010c75af6756a603fd6aef5a4
93176df76e351b3ea829e0e6c6832bdf, 3852.pdf
f2b05e6b01be3b6cb14e9068e7a66fc1, droppedreader_sl.ex_
57a1f0658712ee7b3a724b6d07e97259, dropped3852.ex_
93176df76e351b3ea829e0e6c6832bdf, 5463.pdf
eb22b99d44223866e24872d80a4ddefd, dropped5463reader_sl.ex_
90bd910ee161b71c7a37ac642f910059, dropped5463.ex_
1a262a7bfecd981d7874633f41ea5de8
98a6484533fa12a9ba6b1bd9df1899dc
7f6bca4f08c63e597bed969f5b729c56
08709ef0e3d467ce843af4deb77d74d5

CCs relacionados con CozyDuke:

  1. 121.193.130.170:443/wp–ajax.php
  2. 183.78.169.5:443/search.php
  3. 200.119.128.45:443/mobile.php
  4. 200.125.133.28:443/search.php
  5. 200.125.142.11:443/news.php
  6. 201.76.51.10:443/plugins/json.php
  7. 202.206.232.20:443/rss.php
  8. 202.76.237.216:443/search.php
  9. 203.156.161.49:443/plugins/twitter.php
  10. 208.75.241.246:443/msearch.php
  11. 209.40.72.2:443/plugins/fsearch.php
  12. 210.59.2.20:443/search.php
  13. 208.77.177.24:443/fsearch.php
  14. www.getiton.hants.org.uk:80/themes/front/img/ajax.php
  15. www.seccionpolitica.com.ar:80/galeria/index.php
  16. 209.200.83.43/ajax/links.php
  17. 209.200.83.43/ajax/api.php
  18. 209.200.83.43/ajax/index.php
  19. 209.200.83.43/ajax/error.php
  20. 209.200.83.43/ajax/profile.php
  21. 209.200.83.43/ajax/online.php
  22. 209.200.83.43/ajax/loader.php
  23. 209.200.83.43/ajax/search.php

Apéndice: Investigaciones paralelas y anteriores

El misterio de MiniDuke: PDF 0-Day Government Spy Assembler 0x29A Micro Backdoor, Securelist, febrero 2013

Miniduke ha vuelto: Nemesis Gemina y el Botgen Studio, Securelist, julio 2014

MiniDuke 2 (CosmicDuke), CrySyS, julio 2014

COSMICDUKE Cosmu with a twist of MiniDuke [pdf], F-Secure, septiembre 2014

THE CASE OF THE MODIFIED BINARIES, Leviathan Security, octubre 2014

A word on CosmicDuke, Blaze’s Security Blog, septiembre 2014

OnionDuke: APT Attacks Via the Tor Network, F-Secure, noviembre 2014

The Connections Between MiniDuke, CosmicDuke and OnionDuke, F-Secure, enero 2015

Los productos de Kaspersky Lab detectan el programa malicioso usado por CozyDuke como:
HEUR:Trojan.Win32.CozyDuke.gen
Trojan.Win32.CozyBear.*

Publicaciones relacionadas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *