Centrado principalmente en Asia, este nuevo grupo de ciberespionaje utiliza herramientas no documentadas, incluida la extracción esteganográfica de cargas útiles de PowerShell de archivos PNG.
Los investigadores de ESET encontraron recientemente ataques dirigidos que utilizaron herramientas no documentadas contra varias empresas de alto perfil y gobiernos locales, principalmente en Asia. Estos ataques fueron realizados por un grupo de espionaje previamente desconocido que hemos llamado Worok y que ha estado activo desde al menos 2020. El conjunto de herramientas de Worok incluye un cargador CLRLoad de C++, un PowHeartBeat de puerta trasera de PowerShell y un cargador PNGLoad de C# que usa esteganografía para extraer información maliciosa oculta. cargas útiles de archivos PNG.
¿Quién es Workok?
Durante el ProxyShell (CVE-2021-34523) divulgación de vulnerabilidades a principios de 2021, observamos actividad de varios grupos APT. Uno exhibía características comunes con TA428:
- Horarios de actividad
- Verticales objetivo
- Uso de ShadowPad
El resto del conjunto de herramientas es muy diferente: por ejemplo, TA428 participó en el Compromiso de escritorio capaz en 2020. Consideramos que los vínculos no son lo suficientemente fuertes como para considerar a Worok como el mismo grupo que TA428, pero los dos grupos pueden compartir herramientas y tener intereses comunes. Decidimos crear un clúster y lo llamamos Worok. El nombre fue elegido después de un mutex en un cargador utilizado por el grupo. Luego se vinculó a este grupo más actividad con variantes de las mismas herramientas. Según la telemetría de ESET, Worok ha estado activo desde fines de 2020 y continúa activo al momento de escribir este artículo.
A fines de 2020, Worok estaba apuntando a gobiernos y empresas en varios países, específicamente:
- Una empresa de telecomunicaciones en el este de Asia
- Un banco en Asia Central
- Una empresa de la industria marítima en el sudeste asiático
- Una entidad gubernamental en el Medio Oriente
- Una empresa privada en el sur de África
Hubo una interrupción significativa en las operaciones observadas de 2021-05 a 2022-01, pero la actividad de Worok regresó en 2022-02, con el objetivo de:
- Una empresa de energía en Asia Central
- Una entidad del sector público en el sudeste asiático
La Figura 1 presenta un mapa de calor visual de las regiones y verticales objetivo.
Teniendo en cuenta los perfiles de los objetivos y las herramientas que hemos visto desplegadas contra estas víctimas, creemos que el objetivo principal de Worok es robar información.
El análisis técnico
Si bien se desconoce la mayoría de los accesos iniciales, en algunos casos hasta 2021 y 2022 hemos visto exploits utilizados contra las vulnerabilidades de ProxyShell. En tales casos, normalmente se cargan webshells después de explotar estas vulnerabilidades, para proporcionar persistencia en la red de la víctima. Luego, los operadores utilizaron varios implantes para obtener más capacidades.
Una vez que se obtuvo el acceso, los operadores desplegaron múltiples herramientas disponibles públicamente para el reconocimiento, incluyendo Mimikatz, Lombriz, ReGeorgy NBTscany luego implementaron sus implantes personalizados: un cargador de primera etapa, seguido de un cargador de .NET de segunda etapa (PNGLoad). Desafortunadamente, no hemos podido recuperar ninguna de las cargas útiles finales. En 2021, el cargador de primera etapa era un ensamblaje CLR (CLRLoad), mientras que en 2022 se reemplazó, en la mayoría de los casos, por una puerta trasera de PowerShell con todas las funciones (PowHeartBeat); ambas cadenas de ejecución se muestran en la Figura 2. Estos tres Las herramientas se describen en detalle en las siguientes subsecciones.
CLRLoad: cargador de ensamblaje CLR
CLRLoad es un Windows PE genérico que hemos visto en versiones de 32 y 64 bits. Es un cargador escrito en C++ que carga la siguiente etapa (PNGLoad), que debe ser un Ensamblado de Common Language Runtime (CLR) archivo DLL. Ese código se carga desde un archivo ubicado en el disco en un directorio legítimo, presumiblemente para engañar a las víctimas o al personal de respuesta a incidentes haciéndoles creer que es un software legítimo.
Algunas muestras de CLRLoad comienzan descodificando la ruta completa del archivo cuyo contenido cargarán en la siguiente etapa. Estas rutas de archivo están codificadas con un XOR de un solo byte, con una clave diferente en cada muestra. Decodificadas o en texto claro, estas rutas de archivo son absolutas, siendo las siguientes las que hemos encontrado:
- C:Archivos de programaVMwareHerramientas de VMwareVMware VGAuthxsec_1_5.dll
- C:Archivos de programaUltraViewermsvbvm80.dll
- C:Archivos de programaInternet ExplorerJsprofile.dll
- C:Archivos de programaWinRarRarExtMgt.dll
- C:Archivos de programa (x86)Foxit SoftwareFoxit Readerlucenelib.dll
A continuación, se crea un mutex y hemos visto un nombre diferente en cada muestra. El cargador comprueba este mutex; si lo encuentra, sale, porque el cargador ya se está ejecutando. En una de las muestras, el mutex Wo0r0KGWhYGO se encontró, lo que le dio al grupo su nombre de Worok.
CLRLoad luego carga un ensamblado CLR desde la ruta del archivo posiblemente decodificado. Como código no administrado, CLRLoad logra esto a través de CorBindToRuntimeEx Llamadas a la API de Windows en variantes de 32 bits, o CLRCreateInstancia llamadas en variantes de 64 bits.
PowHeartBeat: puerta trasera de PowerShell
PowHeartBeat es una puerta trasera con todas las funciones escrita en PowerShell, ofuscada mediante varias técnicas, como compresión, codificación y cifrado. Según la telemetría de ESET, creemos que PowHeartBeat reemplazó a CLRLoad en campañas más recientes de Worok como la herramienta utilizada para lanzar PNGLoad.
La primera capa del código de puerta trasera consta de varios fragmentos de código PowerShell codificado en base64. Una vez que se reconstruye la carga útil, se ejecuta a través de IEX. Una vez decodificado, se ejecuta otra capa de código ofuscado, que podemos ver en la Figura 3.
La segunda capa de la primera puerta trasera base64 decodifica la siguiente capa de su código, que luego se descifra con DES triple (modo CBC). Después del descifrado, este código se descomprime usando el gzip algoritmo, dando así la tercera capa de código de PowerShell, que es la puerta trasera real. Se divide en dos partes principales: configuración y manejo de comandos de puerta trasera.
La capa principal del código de puerta trasera también está escrita en PowerShell y usa HTTP o ICMP para comunicarse con el servidor C&C. Funciona como se muestra en la Figura 4.
Configuración
La configuración contiene varios campos, incluido el número de versión, la configuración de proxy opcional y la dirección de C&C. La Tabla 1 describe los significados de los campos de configuración en las diferentes versiones que hemos observado.
Tabla 1. Significados de los campos de configuración
Nombre del campo | Descripción |
---|---|
nouse/ikuyrtydyfg (otras muestras) |
No usado. |
Identificación del cliente | Identificador del cliente, utilizado para los siguientes fines: · Como valor a la hora de construir el Encabezado de cookie para comunicaciones C&C. · Como artefacto criptográfico para el cifrado de datos enviados. |
Versión | Número de versión de PowHeartBeat. |
Tiempos ejecutivos | Número de intentos de ejecución permitidos al emitir un EjecutarCmd (comando en ejecución) comando. |
Agente de usuario | Agente de usuario utilizado para las comunicaciones de C&C. |
árbitro | árbitro encabezado utilizado para las comunicaciones de C&C. |
AceptarCodificación | No usado. |
ID de cliente de cookie ID de tarea de cookie ID de terminal de cookie |
Valores utilizados para construir el Cookies encabezado para comunicaciones C&C. |
URLHttps | Protocolo a utilizar para las comunicaciones de C&C. |
UrlDominio Dirección IP dominios |
URL, dominio(s) o dirección IP utilizada como servidor C&C. Si dominios no está vacío, se elige en lugar de Dirección IP. En otros casos, Dirección IP se toma. |
UrlEnviarLatido Del Corazón | Ruta URL utilizada cuando la puerta trasera solicita comandos al servidor C&C. |
UrlEnviarResultado | Ruta URL utilizada cuando la puerta trasera envía los resultados del comando al servidor C&C. |
Obtener URL | URL completa, utilizada por PowHeartBeat para solicitar comandos del servidor C&C. Es la concatenación de los elementos URL anteriores. |
Poner URL | Igual que Obtener URL pero se usa para enviar los resultados del comando al servidor C&C. |
trayectoria de corriente | No usado. |
Bandera de habilitación de proxy | Indicador que indica si el backdoor debe usar un proxy o no para comunicarse con el servidor C&C. |
Proxymsg | Dirección del proxy a utilizar si Bandera de habilitación de proxy se establece a $ verdadero. |
Intervalo | Tiempo en segundos que el script duerme entre solicitudes GET. |
Ruta de configuración básica | Ruta a un archivo de configuración opcional que contiene Hasta la hora, Falta del tiempo, Intervalo predeterminadoy dominios. Esos valores se anularán si el archivo está presente. |
Hasta la hora | Hora del día a partir de la cual la puerta trasera comienza a operar, lo que significa que comienza a realizar solicitudes GET al servidor de C&C. |
Falta del tiempo | Hora del día hasta la que puede funcionar el backdoor, es decir, la hora en que deja de realizar solicitudes al servidor de C&C. |
índice de dominio | Índice del nombre de dominio actual que se usará para las comunicaciones con el servidor C&C. En caso de que una solicitud devuelva un mensaje de error diferente de 304 ("No modificado"), índice de dominio está incrementado. |
Llave secreta | Clave utilizada para descifrar/cifrar la configuración. La configuración está encriptada con XOR de múltiples bytes. |
Si registro | No usado. |
IfLogFilePath | Bandera que indica si el registro está habilitado. |
ruta de registro | Ruta del archivo de registro. |
archivo proxy | Ruta de archivo de la configuración de proxy opcional. Si está vacío o no se encuentra en el sistema de archivos, la puerta trasera recupera la configuración del proxy del usuario del valor del registro. HKCUSoftwareMicrosoftWindowsVersión actualConfiguración de InternetProxyServer . |
SiConfig | Indicador que indica si se debe utilizar un archivo de configuración. |
La Figura 5 muestra un ejemplo de la configuración extraída de una muestra de PowHeartBeat (SHA-1: 757ABA12D04FD1167528FDD107A441D11CD8C427).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
$Script:nouse = 100; if(Test-Path $MyInvocation.MyCommand.Path){Remove-item $MyInvocation.MyCommand.Path -Force;} $Script:ClientId = “83”; $Script:Version = “2.1.3.0003”; $Script:ExecTimes = 10; $Script:UserAgent = “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3487.100 Safari/537.36”; $Script:Referer = “www.adobe.com”; $Script:AcceptEncoding = “text/html,app1ication/xhtml+xml,app1ication/xml;q=0.9,*/*;q=0.8”; $Script:CookieClientId = “s_ecid”; $Script:CookieTaskId = “aam_uuid”; $Script:CookieTerminalId = “AAMC_adobe_0”; $Script:UrlHttps = “http://”; $Script:UrlDomain= ” 118.193.78[.]22:443″; $Script:UrlSendHeartBeat = “/latest/AdobeMessagingClient.js”; $Script:UrlSendResult = “/content/dam/offers-homepage/homepage.jpg”; $Script:GetUrl = $Script:UrlHttps + $Script:UrlDomain + $Script:UrlSendHeartBeat; $Script:PutUrl = $Script:UrlHttps + $Script:UrlDomain + $Script:UrlSendResult; $Script:currentPath = Split-Path -Parent $MyInvocation.MyCommand.Definition; $Script:ProxyEnableFlag = $false; $Script:Proxymsg; $Script:Interval = 10 ; $Script:BasicConfigPath = “C:ProgramDataunins.dat”; $Script:UpTime = 0; $Script:DownTime = 24; $Script:Domains; $Script:DomainIndex; $Script:SecretKey = “###ConfigKey###”; #$Script:IfLog = $true; $Script:IfLogFilePath = “C:ProgramDatatpncp.dat”; $Script:logpath = “C:ProgramDataunins000.dat”; $Script:ProxyFile = “C:ProgramDatahwrenalm.dat”; $Script:IfConfig = $false; |
Figura 5. Ejemplo de configuración
Cifrado de datos
PowHeartBeat cifra los registros y el contenido adicional del archivo de configuración.
El contenido del archivo de registro se cifra a través de XOR de varios bytes con una clave especificada en texto no cifrado en la muestra. Curiosamente, Identificación del cliente se utiliza como sal para el índice en la matriz de claves. La clave es una matriz de 256 bytes, que era idéntica en cada muestra que encontramos. El contenido del archivo de configuración adicional se cifra a través de XOR de varios bytes con el valor de Llave secreta como su clave.
Comunicaciones C&C
PowHeartBeat usó HTTP para las comunicaciones de C&C hasta la versión 2.4 y luego cambió a ICMP. En ambos casos la comunicación no está encriptada.
HTTP
En un ciclo infinito, la puerta trasera envía una solicitud GET al servidor C&C, solicitando un comando para emitir. La puerta trasera descifra la respuesta cifrada, que procesa el comando y escribe la salida del comando en un archivo cuyo contenido se envía al servidor C&C a través de una solicitud POST.
El formato de las solicitudes GET es el siguiente:
GET <UrlSendHeartBeat> HTTP/1.1 User-Agent: <UserAgent> Referer: <Referer> Host: <Domain> Cookie: <CookieClientId>=<ClientId> Connection: close |
Tenga en cuenta que la solicitud se crea utilizando los campos de configuración del mismo nombre.
En la respuesta del servidor C&C, el tercer byte del contenido es el identificador de comando que indica el comando que debe procesar el backdoor. lo llamaremos comando_id. El contenido restante de la respuesta se pasará como argumento al comando que se procesa. Este contenido está encriptado con el algoritmo que se muestra en la Figura 6, ID de tarea siendo el valor de la cookie nombrada después ID de tarea de cookieel valor de la configuración.
1 2 3 4 5 6 7 8 9 10 |
o[int] $pos = $taskId % 256; for ($i = 0; $i -lt $tmpBytes.Value.Length; $i++) { $pos = $pos + $clientId; if ($pos -ge 256) { $pos = $pos % 256; } $tmpBytes.Value[$i] = [byte]($tmpBytes.Value[$i] -bxor $hexEnc[$pos]); } |
Figura 6. Algoritmo de cifrado de datos de contenido de solicitudes
La respuesta del servidor C&C también contiene otra cookie, cuyo nombre es especificado por la puerta trasera. ID de terminal de cookie variable de configuración. El valor de esta cookie se repite en la solicitud POST del backdoor y no debe estar vacía. Después de ejecutar el comando de puerta trasera, PowHeartBeat envía el resultado como una solicitud POST al servidor de C&C. El resultado se envía como un archivo cuyo nombre es .png.
ICMP
A partir de la versión 2.4 de PowHeartBeat, HTTP fue reemplazado por ICMP, los paquetes enviados tenían un tiempo de espera de seis segundos y eran sin fragmentar. La comunicación a través de ICMP es probablemente una forma de evadir la detección.
No hay cambios importantes en las versiones 2.4 y posteriores, pero notamos algunas modificaciones en el código:
- PowHeartBeat envía un paquete de latidos en cada bucle que contiene la cadena ABCDEFGHIJKLMNOPQRSTU VWXYZ, antes de solicitar un comando. Esto informa al servidor C&C que la puerta trasera está lista para recibir comandos.
- Las solicitudes para obtener comandos realizados por la puerta trasera contienen la cadena abcdefghijklmnop.
Los paquetes Heartbeat tienen el formato descrito en la Figura 7.
La diferencia entre los Identificación del cliente y bandera del cliente es que Identificación del cliente difiere en cada muestra mientras que bandera del cliente es el mismo en todas las muestras que utilizan ICMP. bandera del latido del corazón indica que la puerta trasera está enviando un latido. La respuesta del servidor C&C tiene el formato descrito en la Figura 8.
bandera aquí indica si hay un comando para enviar a la puerta trasera. Las solicitudes para obtener comandos tienen el formato descrito en la Figura 9.
Tenga en cuenta que el modo ICMP de la puerta trasera permite recibir una cantidad ilimitada de datos, divididos en fragmentos, y las variables longitud de datos, posición actual y longitud total se utilizan para realizar un seguimiento de los datos transmitidos. Las respuestas a estas solicitudes tienen el formato descrito en la Figura 10.
Como en las respuestas HTTP, el identificador de comando es el tercer byte de datos.
Después de siete respuestas ICMP consecutivas con contenido vacío o con formato inconsistente, las transferencias entre la puerta trasera y el servidor C&C se consideran finalizadas.
Con respecto a las solicitudes para enviar el resultado del comando emitido al servidor C&C, el modo del servidor se cambia por el modo de publicación y la cadena final (abcdefghijklmnop) se cambia por los datos de resultado.
Comandos de puerta trasera
PowHeartBeat tiene varias capacidades, incluida la ejecución de comandos/procesos y la manipulación de archivos. La Tabla 2 enumera todos los comandos admitidos por las diversas muestras analizadas.
Tabla 2. Descripciones de los comandos de PowHeartBeat
Nombre | Identificador de comando | Descripción |
---|---|---|
Cmd | 0x02 | Ejecute un comando de PowerShell. |
Exe | 0x04 | Ejecutar un comando como un . |
Subir archivo | 0x06 | Sube un archivo a la máquina de la víctima. El contenido del archivo está comprimido con gzip. |
Descarga de archivos | 0x08 | Descargue un archivo de la máquina de la víctima y devuelva la ruta del archivo, la longitud del archivo, el tiempo de creación, los tiempos de acceso y el contenido del archivo al servidor de C&C. |
vista de archivo | 0x0A | Obtener información de archivo de un directorio específico, en particular: · Nombres de archivo · Atributos de archivo · Últimos tiempos de escritura · Contenido del archivo |
Archivo Eliminar | 0x0C | Eliminar un archivo. |
Renombrar archivo | 0x0E | Cambiar el nombre o mover un archivo. |
CambiarDir | 0x10 | Cambie la ubicación de trabajo actual de la puerta trasera. |
Info | 0x12 | Obtenga una categoría de información de acuerdo con el argumento especificado: · "Información básica": Identificación del cliente, Versión, nombre de host, direcciones IP, explorer.exe información de versión y tamaño, sistema operativo (arquitectura y bandera que indica si la máquina es un servidor), Intervalo, directorio actual, información de la unidad (nombre, tipo, espacio libre y tamaño total), hora actual · “Información de Intervalo de Tiempo”: Intervalo y hora actual · “Información de dominio”: contenido del archivo de configuración descifrado |
Config | 0x14 | Actualice el contenido del archivo de configuración y vuelva a cargar la configuración. |
N/A | 0x63 | Salida de puerta trasera. |
En caso de errores en el lado de la puerta trasera, la puerta trasera utiliza un identificador de comando específico 0x00 en la solicitud POST al servidor C&C, lo que indica que ocurrió un error.
Tenga en cuenta que antes de enviar la información al servidor de C&C, los datos se comprimen con gzip.
PNGLoad: cargador esteganográfico
PNGLoad es la carga útil de segunda etapa implementada por Worok en sistemas comprometidos y, según la telemetría de ESET, cargada por CLRLoad o PowHeartBeat. Si bien no vemos ningún código en PowHeartBeat que cargue directamente PNGLoad, la puerta trasera tiene la capacidad de descargar y ejecutar cargas útiles adicionales desde el servidor C&C, que es probablemente la forma en que los atacantes han implementado PNGLoad en sistemas comprometidos con PowHeartBeat. PNGLoad es un cargador que usa bytes de archivos PNG para crear una carga útil para ejecutar. Es un ejecutable .NET de 64 bits, ofuscado con Reactor .NET – que se hace pasar por software legítimo. Por ejemplo, la Figura 11 muestra los encabezados CLR de una muestra que se hace pasar por una DLL de WinRAR.
Una vez desofuscado, solo una clase está presente. En esta clase hay un ruta principal atributo que contiene la ruta del directorio que busca la puerta trasera, incluidos sus subdirectorios, para archivos con un .png extensión, como se muestra en la Figura 12.
Cada .png archivo localizado por esta búsqueda de ruta principal luego se verifica el contenido incrustado esteganográficamente. Primero, el bit menos significativo de los valores R (rojo), G (verde), B (azul) y A (alfa) de cada píxel se obtiene y ensambla en un búfer. Si los primeros ocho bytes de ese búfer coinciden con el número mágico que se ve en la Figura 13 y el siguiente valor de ocho bytes, control, no es nulo, el archivo pasa la verificación de contenido esteganográfico de PNGLoad. Para dichos archivos, el procesamiento continúa con el resto del búfer descifrado con un XOR de múltiples bytes, utilizando la clave almacenada en PNGLoad. Bytes de clave secreta atributo, y luego el búfer descifrado se descomprime con gzip. Se espera que el resultado sea un script de PowerShell, que se ejecuta inmediatamente.
Curiosamente, las operaciones realizadas por PNGLoad se registran en un archivo cuya ruta se almacena en la variable Ruta del archivo de registro. Las operaciones solo se registran si hay un archivo presente cuya ruta está especificada por la variable interna IfLogFilePath.
No hemos podido obtener una muestra. .png utilizado junto con PNGLoad, pero la forma en que opera PNGLoad sugiere que debería funcionar con archivos PNG válidos. Para ocultar la carga útil maliciosa, Worok usa objetos de mapa de bits en C#, que solo toman información de píxeles de los archivos, no los metadatos del archivo. Esto significa que Worok puede ocultar sus cargas maliciosas en imágenes PNG válidas de aspecto inocuo y, por lo tanto, ocultarse a simple vista.
Conclusión
Worok es un grupo de ciberespionaje que desarrolla sus propias herramientas, además de aprovechar las herramientas existentes, para comprometer sus objetivos. Robar información de sus víctimas es lo que creemos que buscan los operadores porque se enfocan en entidades de alto perfil en Asia y África, apuntando a varios sectores, tanto privados como públicos, pero con un énfasis específico en entidades gubernamentales. Los tiempos de actividad y el conjunto de herramientas indican posibles vínculos con TA428, pero hacemos esta evaluación con poca confianza. Su conjunto de herramientas personalizado incluye dos cargadores, uno en C++ y otro en C# .NET, y una puerta trasera de PowerShell. Si bien nuestra visibilidad es limitada, esperamos que arrojar luz sobre este grupo anime a otros investigadores a compartir información sobre este grupo.
ESET Research ahora también ofrece fuentes de datos e informes de inteligencia APT privados. Para cualquier consulta sobre este servicio, visite el Inteligencia de amenazas de ESET .
IOCs
archivos
SHA-1 | Nombre del archivo | Nombre de detección de ESET | Comentario |
---|---|---|---|
3A47185D0735CDECF4C7C2299EB18401BFB328D5 | guión | PowerShell/PowHeartBeat.B | PowHeartBeat 2.4.3.0003. |
27ABB54A858AD1C1FF2863913BDA698D184E180D | guión | PowerShell/PowHeartBeat.A | PowHeartBeat 2.4.3.0003. |
678A131A9E932B9436241402D9727AA7D06A87E3 | guión | PowerShell/PowHeartBeat.B | PowHeartBeat 2.4.3.0003. |
757ABA12D04FD1167528FDD107A441D11CD8C427 | guión | PowerShell/PowHeartBeat.B | PowHeartBeat 2.1.3.0003. |
54700A48D934676FC698675B4CA5F712C0373188 | guión | PowerShell/PowHeartBeat.A | PowHeartBeat 1.1.3.0002. |
C2F53C138CB1B87D8FC9253A7088DB30B25389AF | guión | PowerShell/PowHeartBeat.A | PowHeartBeat 1.1.3.0002. |
C2F1954DE11F72A46A4E823DE767210A3743B205 | tmp.ps1 | PowerShell/PowHeartBeat.B | PowHeartBeat 2.4.3.0004. |
CE430A27DF87A6952D732B4562A7C23BEF4602D1 | tmp.ps1 | PowerShell/PowHeartBeat.A | PowHeartBeat 2.1.3.0004. |
EDE5AB2B94BA85F28D5EE22656958E4ECD77B6FF | guión | PowerShell/PowHeartBeat.A | PowHeartBeat 2.4.3.0003. |
4721EEBA13535D1EE98654EFCE6B43B778F13126 | vix64.dll | MSIL/PNGLoader.A | Cargador PNG. |
728A6CB7A150141B4250659CF853F39BFDB7A46C | RarExtMgt.dll | MSIL/PNGLoader.A | Cargador PNG. |
864E55749D28036704B6EA66555A86527E02AF4A | Jsprofile.dll | MSIL/PNGLoader.A | Cargador PNG. |
8DA6387F30C584B5FD3694A99EC066784209CA4C | vssxml.dll | MSIL/PNGLoader.A | Cargador PNG. |
AA60FB4293530FBFF00D200C0D44EEB1A17B1C76 | xsec_1_5.dll | MSIL/PNGLoader.A | Cargador PNG. |
B2EAEC695DD8BB518C7E24C4F37A08344D6975BE | msvbvm80.dll | MSIL/PNGLoader.A | Cargador PNG. |
CDB6B1CAFEE098615508F107814179DEAED1EBCF | lucenelib.dll | MSIL/PNGLoader.A | Cargador PNG. |
4F9A43E6CF37FF20AE96E564C93898FDA6787F7D | vsstrace.dll | Win64/CRLLoad.C | CLRCargar. |
F181E87B0CD6AA4575FD51B9F868CA7B27240610 | crypt.dll | Win32/CLRCargar.A | CLRCargar. |
4CCF0386BDE80C339EFE0CC734CB497E0B08049C | crypt.dll | Win32/CLRCargar.A | CLRCargar. |
5CFC0D776AF023DCFE8EDED5CADA03C6D7F9C244 | wlbsctrl.dll | Win64/CRLLoad.E | CLRCargar. |
05F19EBF6D46576144276090CC113C6AB8CCEC08 | wlbsctrl.dll | Win32/CLRCargar.A | CLRCargar. |
A5D548543D3C3037DA67DC0DA47214B2C2B15864 | secur32.dll | Win64/CLRCargar.H | CLRCargar. |
CBF42DCAF579AF7E6055237E524C0F30507090F3 | dbghelp.dll | Win64/CRLLoad.C | CLRCargar. |
Rutas de archivos
Algunos de los ruta principal, Ruta del archivo de registro y IfLogFilePath valores que encontramos en las muestras de PNGLoad:
ruta principal | Ruta del archivo de registro | IfLogFilePath |
---|---|---|
C:Archivos de programaVMwareHerramientas de VMware | C:Archivos de programaVMwareHerramientas de VMwareVMware VGAuthreadme.txt | C:Archivos de programaVMwareHerramientas de VMwareVMware VGAuthVMWSU_V1_1.dll |
C:Archivos de programaWinRar | C:Archivos de programaWinRarrarinstall.log | C:Archivos de programaWinRardes.dat |
C:Archivos de programaUltraViewer | C:Archivos de programaUltraViewerCopyRights.dat | C:Archivos de programaUltraVieweruvcr.dll |
Nuestra red
Dominio | IP |
---|---|
Ninguna | 118.193.78[.]22 |
Ninguna | 118.193.78[.]57 |
avión.comerciales-de-viajes[.]agencia | 5.183.101[.]9 |
central.suhypercloud[.]org | 45.77.36[.]243 |
mutexes
En las muestras de CLRLoad, los nombres mutex que encontramos son:
aB82UduGX0EX
ad8TbUIZl5Ga
Mr2PJVxbIBD4
oERiQtKLgPgK
U37uxsCsA4Xm
Wo0r0KGWhYGO
xBUjQR2vxYTz
zYCLBWekRX3t
3c3401ad-e77d-4142-8db5-8eb5483d7e41
9xvzMsaWqxMi
Puede encontrar una lista completa de indicadores de compromiso (IoC) y muestras en nuestro repositorio de GitHub.
Técnicas MITRE ATT & CK
Esta tabla fue construida usando Versión 11 del marco MITRE ATT & CK.
Táctica | ID | Nombre | Descripción |
---|---|---|---|
Reconocimiento | T1592.002 | Recopilar información del anfitrión de la víctima: Software | PowHeartBeat reúne explorer.exe información. |
T1592.001 | Recopilar información del anfitrión de la víctima: hardware | PowHeartBeat recopila información sobre las unidades. | |
T1590.005 | Recopilar información de la red de la víctima: direcciones IP | PowHeartBeat recopila las direcciones IP de la computadora comprometida. | |
Desarrollo de recursos | T1583.004 | Adquirir Infraestructura: Servidor | Worok utiliza sus propios servidores C&C. |
T1588.002 | Obtenga capacidades: herramienta | Workok implementó múltiples herramientas disponibles públicamente en las máquinas comprometidas. | |
T1583.001 | Adquirir infraestructura: dominios | Worok tiene dominios registrados para facilitar la comunicación y puesta en escena de C&C. | |
T1588.005 | Obtener capacidades: hazañas | Worok ha utilizado la vulnerabilidad ProxyShell. | |
T1587.001 | Desarrollar capacidades: malware | Worok ha desarrollado su propio malware: CLRLoad, PNGLoad, PowHeartBeat. | |
T1587.003 | Desarrollar Capacidades: Certificados Digitales | Worok ha creado certificados Let's Encrypt SSL para habilitar la autenticación TLS mutua para malware. | |
Ejecución | T1059.001 | Intérprete de comandos y secuencias de comandos: PowerShell | PowHeartBeat está escrito en PowerShell. |
Persistencia | T1505.003 | Componente de software de servidor: Web Shell | Workok usa el shell web ReGeorg. |
Evasión de defensa | T1140 | Desofuscar / decodificar archivos o información | Worok utiliza varios esquemas personalizados basados en XOR para cifrar cadenas y registros en PowHeartBeat, PNGLoad y CLRLoad. |
T1036.005 | Enmascaramiento: coincide con el nombre o la ubicación legítimos | Las muestras de PNGLoad se implementan en directorios de VMWare que parecen legítimos. | |
Acceso a credenciales | T1003.001 | Volcado de credenciales del sistema operativo: memoria LSASS | Worok usa Mimikatz para volcar las credenciales de la memoria LSASS. |
Descubrimiento de moléculas | T1082 | Descubrimiento de información del sistema | PowHeartBeat recopila información del sistema operativo. |
T1083 | Descubrimiento de archivos y directorios | PowHeartBeat puede enumerar archivos y directorios. | |
T1046 | Descubrimiento de servicios de red | Usos de trabajo NbtScan para obtener información de red en máquinas comprometidas. | |
T1124 | Descubrimiento de la hora del sistema | PowHeartBeat recopila la información de tiempo de la víctima. | |
Colecciones | T1005 | Datos del sistema local | PowHeartBeat recopila datos del sistema local. |
T1560.002 | Archivar datos recopilados: Archivar a través de la biblioteca | PowHeartBeat gzip comprime los datos antes de enviarlos al servidor C&C. | |
Comando y control | T1071.001 | Protocolo de capa de aplicación: protocolos web | Algunas variantes de PowHeartBeat utilizan HTTP como protocolo de comunicación con el servidor C&C. |
T1090.001 | Proxy: Proxy interno | PowHeartBeat maneja la configuración del proxy en la máquina de la víctima. | |
T1001.002 | Ofuscación de datos: esteganografía | PNGLoad extrae valores de píxeles de .png archivos para reconstruir las cargas útiles. | |
T1573.002 | Canal cifrado: criptografía asimétrica | PowHeartBeat maneja las comunicaciones HTTPS con el servidor C&C. | |
T1095 | Protocolo de capa de no aplicación | Algunas variantes de PowHeartBeat utilizan ICMP como protocolo de comunicación con el servidor C&C. | |
T1132.001 | Codificación de datos: codificación estándar | Worok utiliza la codificación XOR en PowHeartBeat y PNGLoad. | |
T1132.002 | Codificación de datos: codificación no estándar | Worok usa algoritmos de codificación XOR que hacen uso de una sal adicional. | |
exfiltración | T1041 | Exfiltración sobre canal C2 | PowHeartBeat utiliza su canal de comunicación C&C para extraer información. |
- blockchain
- Coingenius
- carteras de criptomonedas
- intercambio crypto
- seguridad cibernética
- ciberdelincuentes
- La Ciberseguridad
- departamento de seguridad nacional
- billeteras digitales
- Investigación de ESET
- cortafuegos
- Kaspersky
- el malware
- Mcafee
- NexBLOC
- Platón
- platón ai
- Inteligencia de datos de Platón
- Juego de Platón
- PlatónDatos
- juego de platos
- VPN
- Vivimos la seguridad
- seguridad del sitio web
- zephyrnet