Esta publicación de blog fue escrita por Hossein Jazi y Jérôme Segura.
El 2 de julio, encontramos un archivo con un documento incrustado que pretendía ser del gobierno de la India. Este archivo utiliza la inyección de plantilla para eliminar una plantilla maliciosa que cargó una variante de Cobalt Strike.
Un día después, el mismo actor de amenazas cambió su plantilla y soltó un cargador llamado MgBot, ejecutando e inyectando su carga útil final mediante el uso del Servicio de Administración de Aplicaciones (AppMgmt) en Windows.
El 5 de julio, observamos otro archivo con un documento incrustado que tomó prestada una declaración sobre Hong Kong del primer ministro del Reino Unido, Boris Johnson. Este documento utilizó los mismos TTP para descartar y ejecutar la misma carga útil.
Considerando las continuas tensiones entre India y China, así como las nuevas leyes de seguridad sobre Hong Kong, creemos que esta nueva campaña es operada por un actor chino patrocinado por el estado. Según nuestro análisis, creemos que este puede ser un grupo APT chino que ha estado activo desde al menos 2014.
Target activo con diferentes señuelos
Pudimos rastrear las actividades relacionadas con estos actores de amenazas durante la sucesión de varios días basados en intentos únicos de phishing diseñados para comprometer su objetivo.
‘Comprobación de seguridad del correo’ con Cobalt Strike (variante 1)
Esta campaña probablemente se llevó a cabo a través de correos electrónicos de spear phishing. El archivo .rar ( Mail security check.rar ) incluye un documento con el mismo nombre (Figura 1).
El documento utiliza la inyección de plantilla para descargar una plantilla remota desde la siguiente URL (Figura 2).
La plantilla descargada utiliza el protocolo de intercambio dinámico de datos (DDE) para ejecutar comandos maliciosos, que están codificados dentro del contenido del documento (Figura 3).
Después de la decodificación, podemos ver la lista de comandos que DDE ejecutará:
Como muestra la Figura 4, los actores de la amenaza usaron certutil con los parámetros -urlcache -split -f para descargar un scriptlet de su servidor y luego usaron la técnica Squiblydoo para ejecutar el scriptlet descargado a través de regsvr32.exe en la máquina víctima.
Este scriptlet se almacena en el directorio Documentos como «ff.sct». El scriptlet es un archivo XML que tiene incrustado VBscript (Figura 5).
El scriptlet crea una macro VB y llama a Excel para ejecutarlo. La macro se ha ofuscado para evitar el mecanismo de seguridad estático y es responsable de inyectar la carga útil integrada en rundll32.exe utilizando el método de inyección reflectante de DLL. La carga útil inyectada es una variante de Cobalt Strike.
El siguiente diagrama muestra el proceso general de este ataque:
‘Verificación de seguridad del correo’ con MgBot (variante 2)
Como mencionamos anteriormente, un día después del primer ataque, el grupo APT cambió su plantilla remota. En esta nueva variante, los actores dejaron de usar la técnica Squiblydoo y Cobalt Strike como carga útil.
La Figura 7 muestra los nuevos comandos codificados incrustados en el archivo de plantilla.
La Figura 8 muestra la lista de comandos que DDE ejecutará.
En este nuevo archivo de plantilla, el scriptlet storm.sct fue reemplazado por storm.txt . Similar a la versión anterior, certutil se utiliza para descargar el archivo storm.txt, que es un ejecutable almacenado en el directorio Documentos como ff.exe.
El siguiente diagrama muestra el proceso de ejecución general:
«Boris Johnson se compromete a admitir 3 millones de Hong Kong» con MgBot (variante 3)
El último documento utilizado por el grupo APT chino en esta campaña se centró en los problemas que ocurren en Hong Kong. El archivo fue incrustado dentro de un archivo llamado «Boris Johnson se compromete a admitir 3 millones desde Hong Kong a UKrar».
Este documento cita al primer ministro después de que China emitiera una nueva ley de seguridad contra Hong Kong (Figura 10).
Similar a los otros documentos, también utiliza la inyección de plantillas para descargar la plantilla remota (Figura 11).
La plantilla descargada (BNOHK.docx) es similar a ADIN.docx (variante 2) en la que usa DDE para descargar y soltar su cargador.
Análisis de carga útil: MgBot (BLame, Mgmbot)
El ejecutable eliminado (ff.exe) es una nueva variante de un cargador llamado MgBot que elimina y carga la carga útil final. Este cargador pretende ser una herramienta Realtek Audio Manager (Figura 12).
Tiene cuatro recursos integrados en los que dos de ellos están en chino simplificado. Este es un indicador que sugiere que esta campaña probablemente sea operada por un grupo APT chino.
El cargador comienza su proceso mediante la escalada de privilegios a través de un bypass UAC utilizando la interfaz COM CMSTPLUA .
MgBot utiliza varias técnicas anti-análisis y anti-virtualización. El código se auto modifica, lo que significa que altera sus secciones de código durante el tiempo de ejecución. Esto hace que el análisis estático de la muestra sea más difícil.
MgBot intenta evitar ejecutarse en entornos virtualizados conocidos como VmWare , Sandboxie y VirtualBox . Para identificar si se está ejecutando en uno de estos entornos, busca los siguientes archivos DLL: vmhgfs.dll , sbiedll.dll y vboxogl.dll y, si encuentra alguno de estos archivos DLL, pasa a un bucle infinito sin realizar ninguna actividad maliciosa. (Figura 14).
También verifica la presencia de productos de seguridad en la máquina de la víctima y toma un flujo de ejecución diferente si se detecta un producto de seguridad. Por ejemplo, comprueba zhudongfangyu.exe, 360sd.exe, 360Tray.exe, MfeAVSvc.exe y McUICnt.exe en diferentes partes del código (Figura 15). El malware no realiza todas las comprobaciones a la vez, sino que comprueba algunas de ellas en diferentes pasos de su ejecución.
Para invocar las API requeridas, el malware no las llama directamente, sino que crea una tabla de puntero de función para las API requeridas. Cada solicitud a una llamada API se realiza a través del acceso al índice relevante de esta tabla.
Como ejemplo, cuando el malware necesita invocar WinExec , lo invoca a través de su índice desde la tabla de punteros de función.
Después de compilar la tabla de llamadas API necesarias, el malware realiza los siguientes procedimientos:
- Se llama CreateFileW para crear iot7D6E.tmp (nombre aleatorio a partir de IOT) en el % Temp% APPDATA directorio. Este archivo tmp es un archivo cab que incorpora la carga útil final.
- Llama a WriteFile para llenar su contenido
- Llama a CreateProcessInternalW para invocar expand.exe para descomprimir el contenido de iot7D6E.tmp en ProgramData \ Microsoft \ PlayReady \ MSIBACF.tmp \ tmp.dat (el nombre del directorio MSIBACF.tmp se genera aleatoriamente y comienza con MSI y luego es seguido por un MSI combinación de números aleatorios y caracteres)
- Llama a CopyFileW para copiar tmp.dat en pMsrvd.dll
- Llama a DeleteFileW para eliminar tmp.dat
- Cae DBEngin.EXE y WUAUCTL.EXE en el Datos de programa \ Microsoft \ PlayReady directorio. Ambos archivos son rundll32.exe que se usa más tarde para ejecutar la DLL eliminada.
- Modifica la sección de registro de la ubicación de registro HKLM \ SYSTEM \ CurrentControlSet \ Services \ AppMgmt para hacerse persistente. Para realizar esta modificación, coloca dos archivos de registro llamados iix * .tmp (se han agregado números aleatorios a iix) en el directorio% APPDATA% Temp, que son las colmenas de registro antiguas y nuevas para la ubicación de registro mencionada.
Para cargar el archivo DLL caído ( pMsrvd.dll ), el cargador lo registra como un servicio. Para lograr esto, hace uso del servicio ya instalado, AppMgmt, para cargar la carga útil como se muestra en las siguientes imágenes:
Finalmente, ejecuta la DLL eliminada ejecutando net start AppMgmt . Después de cargar la DLL, el cargador crea un archivo cmd ( lgt * .tmp .cmd) en el directorio% APPDATA% TEMP con el contenido que se muestra en la Figura 20. Luego lo ejecuta para eliminar el archivo cmd y el cargador de la máquina de la víctima.
Pudimos identificar varias variantes diferentes de este cargador. En general, todas las variantes descartan la carga útil final usando expand.exe o extrac32.exe y luego usan «net start AppMgmt » o «net start StiSvc» para ejecutar la DLL caída con una de las siguientes configuraciones:
- svchost.exe -k netsvcs -p -s AppMgmt
- svchost.exe -k netsvcs
- svchost.exe -k imgsvc
La DLL eliminada es la carga principal utilizada por este actor de amenazas para realizar actividades maliciosas. A continuación se muestra la información de la versión del archivo que pretende ser una aplicación de Video Team Desktop.
El tiempo de creación de esta DLL parece ser «2008-04-26 16:41:12». Sin embargo, según los datos del encabezado Rich, podemos afirmar que el actor de la amenaza podría haber alterado esto.
La DLL tiene ocho funciones de exportación con nombres cuidadosamente seleccionados para fingir que están haciendo tareas normales. Puede verificar los servicios en ejecución y, en función de eso, puede inyectarse en el espacio de memoria de WmiPrvSE.exe.
Utiliza varias técnicas anti-depuración y anti-virtualización para detectar si se está ejecutando en un entorno virtualizado o si un depurador lo está depurando. Utiliza las llamadas API GetTickCount y QueryPerformanceCounter para detectar el entorno del depurador.
Para detectar si se está ejecutando en un entorno virtual, utiliza instrucciones de detección anti-vm como sldt y cpid que pueden proporcionar información sobre el procesador y también verifica los puertos Vmware IO (VMXH).
Todas las cadenas utilizadas por este RAT están ofuscadas o codificadas con XOR para dificultar su análisis.
Este último fragmento de código incluido en MgBot es un troyano de administración remota con varias capacidades como:
- Comunicación C2 sobre TCP (42.99.116 [.] 225: 12800)
- Posibilidad de tomar capturas de pantalla
- Keylogging
- Gestión de archivos y directorios.
- Gestión de proceso
- Crear MUTEX
Relaciones de infraestructura
A continuación se muestra la infraestructura utilizada por este APT y las relaciones entre los hosts utilizados por este grupo. Este grupo APT ha utilizado varias direcciones IP diferentes para alojar sus cargas maliciosas y también para sus comunicaciones C2.
Lo interesante es que la mayoría de las direcciones IP utilizadas por este APT se encuentran en Hong Kong y casi todas estas direcciones IP basadas en Hong Kong se utilizan para la comunicación C2. Incluso en sus campañas anteriores, en su mayoría han utilizado infraestructura en Hong Kong. El gráfico también muestra la relación entre las diferentes direcciones IP utilizadas por este grupo APT.
Android RAT
También encontramos varias aplicaciones maliciosas de Android que creemos que son parte del conjunto de herramientas utilizadas por este grupo APT. Malwarebytes los detecta como Android / Trojan.Spy.AndroRat.KSRemote .
Todas estas aplicaciones falsas contienen un archivo jar llamado ksremote.jar que proporciona la funcionalidad RAT:
- Pantalla de grabación y audio usando la cámara / micrófono del teléfono
- Localización de teléfono con coordenadas
- Robo de contactos telefónicos, registro de llamadas, SMS, historial web
- Enviar mensajes SMS
Esta RAT se comunica con los servidores de C&C utilizando números de puerto aleatorios dentro del rango 122.10.89.170 a 179 (todos en Hong Kong)
- 122.10.89 [.] 172: 10560
- 122.10.89 [.] 170: 9552
- 122.10.89 [.] 172: 10560
TTP en línea con los APT chinos
Los señuelos utilizados en esta campaña indican que el actor de la amenaza puede estar apuntando al gobierno indio y a las personas en Hong Kong, o al menos a quienes están en contra de la nueva ley de seguridad emitida por China.
Los TTP observados en estos ataques han sido utilizados por varios grupos chinos de APT:
- Se sabe que Rancor APT usa Certutil para descargar su carga útil
- Se sabe que KeyBoy usó DDE en sus campañas anteriores
- APT40 ha utilizado Squiblydoo e inyección de plantillas en sus campañas anteriores.
Teniendo en cuenta estos factores, atribuimos este ataque APT con moderada confianza a un nuevo grupo APT chino. Con base en los TTP utilizados por este grupo de APT, pudimos rastrear sus actividades al menos hasta 2014. En todas sus campañas, el actor ha utilizado una variante de MgBot.
Un actor de amenazas con una larga historia documentada
Una aguja en una publicación de blog del pajar de 2014 detalló una campaña que arroja un troyano disfrazado como una biblioteca legítima de codificadores de MP3. En esta campaña, el actor utilizó CVE-2012-0158 para soltar su troyano. El resto de los TTP, incluidos los métodos utilizados por el actor de la amenaza para ejecutar MgBot y las modificaciones del registro, son similares a esta campaña en curso.
En 2018, este grupo realizó otra operación en la que utilizaron una vulnerabilidad VBScript ( CVE-2018-8174) para iniciar su ataque para eliminar una variante de MgBot. En marzo de 2020, se envió un archivo de archivo ( warning.rar ) a VirusTotal que creemos que es parte de otra campaña utilizada por este actor.
Continuaremos las actividades de este grupo para ver si sus objetivos o técnicas evolucionan. Los usuarios de Malwarebytes están protegidos de esta campaña gracias a nuestra capa anti-exploit sin firma.
Técnicas MITRE ATT y CK
Táctica | CARNÉ DE IDENTIDAD | Nombre | Detalles |
Ejecución | T1059 | Interfaz de línea de comandos | Inicia CMD.EXE para la ejecución de comandos. |
T1106 | Ejecución a través de carga de módulo | Cargas caídas o ejecutables reescritas – WUAUCTL.EXE – svchost.exe – rundll32.exe |
|
T1053 | Rundll32 | Utiliza RUNDLL32.EXE para cargar la biblioteca | |
T1064 | Scripting | WScript.exe: inicia MSHTA.EXE para abrir archivos HTA o HTMLS | |
T1035 | ejecución del servicio | Inicia NET.EXE para la gestión del servicio. | |
T1170 | mshta | Inicia MSHTA.EXE para abrir archivos HTA o HTMLS | |
T1086 | Potencia Shell | Ejecuta scripts de PowerShell | |
Escalada de privilegios | T1050 | nuevo servicio | Crea o modifica servicios de Windows a través de rundll32.exe |
T1088 | Bypass UAC | Ataque de escalada de privilegios conocido a través de DllHost.exe | |
Persistencia | T1031 | Modificar servicio existente | Crea o modifica servicios de Windows a través de rundll32.exe |
T1050 | nuevos servicios | Crea o modifica servicios de Windows a través de rundll32.exe | |
Evasión de defensa | T1107 | Eliminación de archivos | Inicia CMD.EXE para borrarse automáticamente |
T1085 | Rundll32 | Utiliza RUNDLL32.EXE para cargar la biblioteca | |
T1088 | bypass UAC | Ataque de escalada de privilegios conocido a través de DllHost.exe | |
T1497 | Virtualización / Evasión de Sandbox | El cargador utiliza varias técnicas de detección anti-virtualización. | |
T1221 | Inyección de plantilla | Maldoc usa inyección de plantillas para descargar plantillas remotas | |
T1218 | Ejecución de proxy binario firmado | Use Squiblydoo para cargar el ejecutable | |
Descubrimiento | T1012 | Registro de consultas | Lee el GUID de la máquina del registro |
T1082 | Descubrimiento de información del sistema | Lee el GUID de la máquina del registro | |
T1007 | Descubrimiento de servicio del sistema | Inicia NET.EXE para la gestión del servicio. | |
Movimiento lateral | T1105 | Copia remota de archivos | – certutil.exe: descarga archivos ejecutables de Internet – cmd.exe: inicia CertUtil para descargar archivos |
C&C | T1105 | Copia remota de archivos | – certutil.exe: descarga archivos ejecutables de Internet – cmd.exe: inicia CertUtil para descargar archivos |
COI
2a5890aca37a83ca02c78f00f8056e20d9b73f0532007b270dbf99d5ade59e2a Boris Johnson se compromete a admitir 3 millones desde Hong Kong a UKdocx
fc885b50892fe0c27f797ba6670012cd3bbd5dc66f0eb8fdd1b5fca9f1ea98cc BNOHK.docx.zip
3b93bc1e0c73c70bc8f314f2f11a91cf5912dab4c3d34b185bd3f5e7dd0c0790 Boris_Johnson_Pledges_to_Admit_3_Million_From_Hong_Kong_to_U.K.rar
ecf63a9430a95c34f85c4a261691d23f5ac7993f9ac64b0a652110659995fc03 Email security check.rar
1e9c91e4125c60e5cc5c4c6ef8cbb94d7313e20b830a1e380d5d84b8592a7bb6 Correo electrónico de verificación de seguridad.docx
3a04c1bdce61d76ff1a4e1fd0c13da1975b04a6a08c27afdd5ce5c601d99a45b ADIN.docx (storm.sct)
855af291da8120a48b374708ef38393e7c944a8393880ef51352ce44e9648fd8 ADIN.docx (storm.sct)
1e81fb62cb57a3231642f66fee3e10d28a7c81637e4d6a03515f5b95654da585 ff.exe (storm.txt)
99aee7ae27476f057ef3131bb371a276f77a526bb1419bfab79a5fac0582b76a huelga de cobalto
flash.governmentmm.com : este dominio utilizado por el actor para alojar plantillas remotas. Ha sido registrado hace 3 meses por alguien en Estados Unidos.
Muestras de MgBot
2310f3d779acdb4881b5014f4e57dd65b4d6638fd011ac73e90df729b58ae1e0
e224d730e66931069d6760f2cac97ab0f62d1ed4ddec8b58783237d3dcd59468
5b0c93a70032d80c1f5f61e586edde6360ad07b697021a83ed75481385f9f51f
1e81fb62cb57a3231642f66fee3e10d28a7c81637e4d6a03515f5b95654da585
07bb016c3fde6b777be4b43f293cacde2d3aae0d4e4caa15e7c66835e506964f
7bdfabdf9a96b3d941f90ec124836084827f6ef06fadf0dce1ae35c2361f1ac6
8ab344a1901d8129d99681ce33a76f7c64fd95c314ac7459c4b1527c3d968bb4
f41bfc57c2681d94bf102f39d4af022beddafb4d49a49d7d7c1901d14eb698d2
45.77.245 [.] 0: Esta IP ha sido utilizada por Cobalt Strike como un servidor de C&C.
42.99.116 [.] 225 : servidor C&C utilizado por la carga útil final.
Muestras de Android
b5304a0836baf1db8909128028793d12bd418ff78c69dc6f9d014cadede28b77
9aade1f7a1f067688d5da9e9991d3a66799065ffe82fca7bb679a71d89fec846
5f7f87db34340ec83314313ec40333aebe6381ef00b69d032570749d4cedee46
Sobre el autor