El equipo de ESET Research analizó la actividad de Webworm durante 2025, un grupo APT alineado con China que inicialmente se enfocaba en organizaciones en Asia, pero que recientemente ha desplazado su objetivo hacia Europa. Si bien este es nuestro primer artículo público en el blog sobre el grupo, hemos estado observando las actividades de Webworm desde que Symantec informó por primera vez sobre este actor de amenazas en 2022. A lo largo de los años, hemos observado que este actor modifica continuamente sus tácticas, técnicas y procedimientos (TTPs).

Webworm está vinculado a otros grupos APT alineados con China, como SixLittleMonkeys y FishMonger. En el pasado, utilizó familias de malware conocidas como McRat (también llamado 9002 RAT) y Trochilus, aunque en los últimos años ha comenzado a migrar hacia herramientas proxy, tanto existentes como personalizadas, que son más sigilosas que los backdoors completos. En 2025, Webworm también sumó dos nuevos backdoors a su conjunto de herramientas: EchoCreep, que utiliza Discord para la comunicación de comando y control (C&C), y GraphWorm, que utiliza la API de Microsoft Graph con el mismo propósito. El grupo también es conocido por alojar su malware y herramientas en repositorios de GitHub, lo que permite que el malware se descargue directamente en la máquina de la víctima.

Puntos clave del blogpost:
  • Desde su descubrimiento en 2022, el grupo APT Webworm ha estado actualizando activamente su conjunto de herramientas y sus objetivos.
  • En 2025, el grupo comenzó a emplear backdoors que utilizan Discord y la API de Microsoft Graph para la comunicación de C&C.
  • Investigadores de ESET descifraron más de 400 mensajes de Discord y un archivo de historial de bash encontrado en un servidor de operador, con comandos de reconocimiento utilizados contra más de 50 objetivos únicos.
  • Además de backdoors, Webworm utiliza múltiples herramientas proxy, tanto existentes como personalizadas.
  • El grupo utiliza GitHub para alojar su malware.

Atribuimos la campaña de 2025 a Webworm con base en la información que descubrimos tras descifrar los mensajes de Discord utilizados por el backdoor EchoCreep para la comunicación de C&C. Esta información nos llevó al repositorio de GitHub de los atacantes, que contenía artefactos preparados como la aplicación SoftEther VPN. Dentro del archivo de configuración de SoftEther, encontramos una dirección IP que coincide con una IP conocida de Webworm.

Las víctimas afectadas por Webworm en los países mencionados más adelante en este blogpost han sido debidamente notificadas. Además, los servicios que identificamos, como un repositorio de GitHub y un bucket de S3, han sido dados de baja.

Enfoque evolutivo

En 2022, una de las principales características de Webworm era el uso de backdoors y troyanos de acceso remoto (RAT) conocidos, como McRat y Trochilus. Tal como se describe en el blogpost de Symantec, el grupo apuntaba originalmente principalmente a países de Asia, como Rusia, Mongolia y Georgia.

En 2024, observamos que el grupo comenzó a alejarse de los backdoors tradicionales en favor de herramientas legítimas o semi-legítimas, como proxies SOCKS (SoftEther VPN) y otras soluciones de red. Si bien estas ayudan a Webworm a evadir la detección, también carecen del conjunto completo de comandos que suelen estar disponibles en los backdoors, por lo que los operadores tienen que apoyarse en intérpretes de comandos como cmd.exe o powershell.exe.

En ese momento, también vimos que el grupo comenzó a desacelerar sus operaciones en Asia y a desplazar su foco hacia países europeos. Esta tendencia continuó en 2025, con los ataques que observamos dirigidos a organizaciones gubernamentales en Bélgica, Italia, Serbia y Polonia. Al mismo tiempo, Webworm también incursionó en Sudáfrica, comprometiendo una universidad local.

En estas campañas más recientes, Webworm parece haber abandonado por completo Trochilus y McRat, mientras continúa expandiendo su conjunto de herramientas. Entre las nuevas incorporaciones destacan dos nuevos backdoors: EchoCreep, basado en Discord, y GraphWorm, basado en Microsoft Graph. Si bien el grupo siguió utilizando soluciones proxy existentes, específicamente iox  (herramienta de port forwarding y proxy de intranet escrita en Go) y frp (fast reverse proxy), también sumó soluciones proxy personalizadas como WormFrp, ChainWorm, SmuxProxy y WormSocket.

Estas herramientas proxy personalizadas no solo son capaces de cifrar las comunicaciones, sino que también admiten encadenamiento a través de múltiples hosts, tanto dentro como fuera de una red. Creemos que los operadores utilizan estas herramientas junto con SoftEther VPN para cubrir mejor sus rastros y aumentar el sigilo de sus actividades. Todos los proxies y servicios VPN de Webworm son servidores en la nube que pertenecen a infraestructura de red controlada por Vultr e IT7 Networks. En función de la cantidad de herramientas proxy y su complejidad, es posible que Webworm esté creando una red oculta mucho más grande, engañando a las víctimas para que ejecuten sus proxies.

Comunicación C&C de Discord y Microsoft Graph API

En 2025, Webworm comenzó a abusar de Discord y de la API de Microsoft Graph para la comunicación de C&C. Mientras analizábamos el backdoor EchoCreep, logramos descubrir más de 400 mensajes de Discord. También encontramos cuatro canales únicos, cada uno correspondiente a una víctima diferente. EchoCreep utiliza Discord para subir archivos, enviar reportes de ejecución y recibir comandos. La comunicación de red del backdoor pasa a través de las APIs de Discord mediante solicitudes HTTP elaboradas.

En el caso de GraphWorm, que utiliza la API de Microsoft Graph para la comunicación de C&C, descubrimos que utiliza exclusivamente endpoints de OneDrive, específicamente para obtener nuevas tareas y para subir información de la víctima. Se crea un directorio de OneDrive separado para cada víctima. Dado que la instancia de OneDrive empleada por GraphWorm se ejecuta en la nube, el backdoor puede aprovechar el endpoint de la API de Microsoft Graph /createUploadSession para subir archivos grandes preparados.

Bucket Amazon S3

Durante nuestra investigación de las campañas de 2025, descubrimos que Webworm había comenzado a utilizar su solución proxy personalizada WormFrp para obtener configuraciones desde un bucket de Amazon S3 comprometido ubicado en wamanharipethe.s3.ap-south-1.amazonaws[.]com. Un bucket de Amazon S3 es una solución de almacenamiento en la nube pública disponible en Amazon Web Services, donde S3 significa simple storage service. Creemos que el bucket comprometido es la versión accesible públicamente —o incluso, posiblemente, mal configurada a nivel de políticas— de whpjewellers.s3.amazonaws[.]com.

Nuestra revisión inicial de los archivos almacenados en el bucket reveló varios snapshots de hosts de máquinas virtuales, uno de los cuales contenía la configuración actual y el estado activo de una máquina perteneciente a una entidad gubernamental en Italia. Esto podría significar que los operadores lograron penetrar con éxito el entorno encargado de gestionar las máquinas virtuales de la víctima. Sin embargo, también es posible que hayan obtenido acceso únicamente a un host donde se almacenaban los snapshots. De cualquier manera, es evidente que a través de este bucket S3, Webworm puede exfiltrar datos mientras una víctima desprevenida asume el costo del servicio.

A finales de octubre de 2025, los actores de amenazas subieron otro archivo al bucket S3, un ejecutable llamado SharpSecretsdump. Esta herramienta, como se menciona en su documentación, imita la actividad del conocido secretsdump.py de Impacket para volcar credenciales desde el host Windows comprometido en el que se despliega. Asumimos que los operadores de Webworm subieron esta herramienta al bucket S3 para utilizarla contra sus víctimas.

Entre diciembre de 2025 y enero de 2026, los operadores subieron 20 archivos nuevos al servicio, dos de los cuales habían sido exfiltrados de una entidad gubernamental en España. El primero de estos archivos, un archivo XML, contiene las configuraciones guardadas de hosts virtuales utilizadas por mRemoteNG, un gestor de conexiones remotas de código abierto. El segundo archivo es un diagrama de Microsoft Visio que detalla la infraestructura detrás de un dominio utilizado por esta entidad gubernamental.

Repositorio GitHub

Mientras analizábamos la infraestructura de C&C de EchoCreep en Discord, logramos obtener identificadores únicos de Discord relacionados con usuarios, canales y servidores (guilds). Lamentablemente, debido al acceso limitado al token del bot, no hubo llamadas a la API que pudieran utilizarse para enumerar información sobre los propietarios del servidor o del propio bot.

Sin embargo, los mensajes de Discord revelaron el repositorio de GitHub https://github[.]com/anjsdgasdf/WordPress, que actúa como repositorio de staging para otras herramientas y malware utilizados por Webworm (una de estas herramientas utilizaba el bucket de Amazon S3 comprometido mencionado anteriormente). Al ser un fork directo del repositorio legítimo de  WordPress, podía pasar desapercibido a simple vista. La Figura 1 muestra una vista general de este repositorio, con archivos en staging ubicados en el directorio wp-admin.

Figure 1. Forked WordPress repository
Figura 1. Repositorio de WordPress bifurcado

Infiltración

Aunque no pudimos identificar el punto de entrada que Webworm utiliza para comprometer a sus víctimas, descubrimos que el grupo emplea utilidades de código abierto para rastrear archivos y directorios de servidores web de las víctimas, y buscar vulnerabilidades en ellos.

Detectamos esto después de notar que una máquina de una víctima se comunicaba con un servidor proxy alojado en 64.176.85[.]158. Al revisar la dirección IP, observamos que anteriormente se había alojado allí, en el puerto 80, un directorio abierto que contenía las utilidades de código abierto mencionadas. La Figura 2 muestra una vista de nivel superior de este listado de directorio abierto.

Figure 2. Open directory listing
Figura 2. Listado de directorios abiertos

Los directorios clave relevantes para nuestro blogpost son nuclei/, .dirsearch/ y el archivo .bash_history. Tal como se observa en la Figura 3, los operadores de Webworm lograron realizar fuerza bruta sobre directorios y archivos dentro de servidores web utilizando dirsearch, una utilidad de escaneo de rutas web con la capacidad de filtrar códigos de estado específicos, y nuclei, un escáner de vulnerabilidades de código abierto, para identificar posibles vulnerabilidades en objetivos específicos.

Figure 3. History of nuclei and dirsearch
Figura 3. Historial de nuclei y dirsearch

Los resultados de la ejecución de dirsearch se almacenaron en el directorio .dirsearch, lo que reveló que la herramienta había sido utilizada contra 56 objetivos de distintos países como España, Hungría, Bélgica, Nigeria, Chequia y Serbia.

En el directorio nuclei, encontramos el script LegalHackers, llamado _1.sh. Se trata de un exploit de prueba de concepto para CVE-2017-7692, una vulnerabilidad que permite la ejecución remota de código posterior a la autenticación en el cliente de webmail SquirrelMail. Al revisar el directorio .bash_history, descubrimos que se había ejecutado un script con un nombre similar contra un objetivo de webmail en Serbia. Esto lleva a suponer que el grupo obtuvo las credenciales de la víctima serbia y pudo haber utilizado esta vulnerabilidad como parte del acceso inicial.

Conjunto de herramientas

En este blogpost, analizamos en detalle las nuevas incorporaciones al arsenal de Webworm. Primero, sus dos backdoors personalizados: EchoCreep y GraphWorm. Luego, las soluciones proxy personalizadas que el grupo implementó en sus campañas de 2025: WormFrp, ChainWorm, SmuxProxy y WormSocket.

EchoCreep

EchoCreep es un nuevo backdoor, escrito en Go, que utiliza Discord como servidor de C&C, con mensajes que se remontan al 21 de marzo de 2024. Es capaz de ejecutar los comandos que se muestran en la Tabla 1.

Tabla 1. Comandos de EchoCreep

Command Arguments Description
upload File path Uploads a file, as an attachment, to Discord from the specified file system path.
download Source (URL) and destination (path) Downloads a file from the provided source URL to the file system path destination.
shell String Executes the string within a cmd.exe shell.
sleep Integer (seconds) Sleeps for the specified number of seconds before providing a success report back to the Discord server.

Aunque no pudimos confirmar cómo el backdoor llegó a la máquina de la víctima, parece que la persistencia solo se obtuvo después del compromiso a través de comandos de C&C.

Toda la comunicación de red de EchoCreep se canaliza a través de endpoints de la API de Discord mediante solicitudes HTTP elaboradas. Para procesar los comandos, el backdoor primero necesita decodificarlos usando base64 y luego descifrarlos utilizando AES-CBC-128. La Figura 4 muestra un ejemplo de un comando y una respuesta después de que ambos han sido descifrados.

{{CODE_BLOCK_0}}

Figura 4. Comando y respuesta de EchoCreep

De los 433 mensajes de Discord que desciframos, no fue evidente exactamente quiénes fueron los afectados, ya que no son clientes de ESET. Sin embargo, al menos pudimos determinar la cantidad de víctimas comprometidas por EchoCreep en base a los nombres de los canales. Descubrimos que estos nombres correspondían a la dirección IP de la víctima, o a una combinación de la dirección IP y el nombre de host de la máquina de la víctima. Al identificar cuatro canales únicos con esta convención de nombres, creemos que hay cuatro víctimas.

Tras la primera ejecución de EchoCreep, este no intenta crear un nuevo canal, sino que envía un mensaje indicando  Up Success a un canal que ya existe (ver Figura 5 y Figura 6). Esto indica que los canales fueron creados antes de la ejecución del backdoor, lo que sugiere que los operadores ya conocían a los objetivos o que exfiltraron la información necesaria luego del acceso inicial.

Figure 5. EchoCreep Discord Up Success message
Figura 5. MensajeUp Success deEchoCreep Discord
Figure 6. EchoCreep backdoor Up Success message
Figura 6. Mensaje Up Success del backdoor de EchoCreep

Los primeros mensajes, enviados entre el 21 de marzo de 2024 y el 31 de marzo de 2025, parecen haber sido comandos de prueba de los operadores. La Figura 7 muestra que los actores de amenazas dejaron allí cierta información sobre sus configuraciones de IP locales.

{{CODE_BLOCK_1}}

Figura 7. Output de ipconfig en Windows

Muchos de los otros mensajes más tempranos contenían valores basura, posiblemente utilizados como prueba para validar la comunicación, como se observa en la Figura 8.

Figure 8. Junk commands
Figura 8. Comandos basura

Poco después, comenzamos a observar operaciones de download como las de la Figura 9, mostrando el desarrollo de comandos avanzados.

Figure 9. frp download
Figura 9. frp download

Además, en la Figura 10 vemos actividades de prueba que podrían haber sido adaptaciones tempranas del mecanismo de persistencia que Webworm utilizaría más adelante contra las víctimas. Otro aspecto interesante es que se ejecuta el comando run en lugar del comando shell que se utilizó posteriormente, lo que respalda nuestra conclusión de que se trataba de pruebas iniciales.

Figure 10. Test VBScript
Figura 10. VBScript de prueba

La primera intrusión efectiva tuvo lugar el 9 de abril de 2025, cuando aparecieron nuevos mensajes Up Success en los registros asociados a un nuevo nombre de canal. Poco después del compromiso inicial, el actor de amenazas utilizó comandos shell para ejecutar curl y descargar archivos.

GraphWorm

GraphWorm es otro nuevo backdoor utilizado por Webworm. Se ejecuta cada vez que la víctima inicia sesión en la máquina. GraphWorm utiliza la API de Microsoft Graph para la comunicación de C&C, lo que indica que Webworm cuenta con nueva infraestructura para comprometer a las víctimas, almacenando información dentro de un tenant de Microsoft Graph. Según lo observado, el backdoor utiliza exclusivamente OneDrive para recibir comandos y enviar datos de la víctima. Los datos involucrados en estas comunicaciones primero se cifran con AES-256-CBC utilizando llamadas de la librería OpenSSL EVP y luego se codifican en base64. GraphWorm también permite configurar ajustes de proxy, lo que posibilita tunelizar todo el tráfico a través del proxy especificado.

En su primera ejecución, el backdoor crea un ID único de la víctima concatenando la IP del adaptador de red, el ID del procesador y el número de serie de un dispositivo físico mediante el framework WMI.

Este ID único se utiliza en el proceso para renombrar o crear una nueva carpeta de OneDrive dentro del tenant. Cada carpeta es única para cada compromiso y contiene subcarpetas específicas bajo cada víctima. Las tres subcarpetas/files, /result, y /job se utilizan para almacenar archivos, resultados de los comandos ejecutados en la máquina de la víctima y tareas encoladas por los operadores para su ejecución, respectivamente.

Una vez que la carpeta se crea correctamente, el backdoor recopila información sobre la máquina de la víctima, lo que da como resultado el objeto JSON que se muestra en la Figura 11.

 

{
    "Host Name": "<computer_name>",
    "IP Address": "<ip>",
    "MAC Address": "<mac>",
    "Operating System": "<os>",
    "Privilege": "<Admin|Regular User>",
    "Time Zone": "<UTC-XXXX>",
    "User Name": "<username>",
    "Workgroup": "<workgroup",
    "publicKey": "<key>"
}

Figura 11. Estructura de la configuración

Los comandos que GraphWorm recibe a través de OneDrive se describen en la Tabla 2, en orden de descubrimiento.

Tabla 2. Comandos de GraphWorm

Command Arguments Description
keyExchange String <adminPublicKey> This value is set in memory and unfortunately its purpose is not easily identifiable. It could be used to set a public key within the application to gain reverse shell access.
sessionKey String <sessionKey> String <keyId> Another set of values set within memory and not evident how they are used. Believed to be an RSA private key and AES key to be updated in memory and used for cryptographic functions.
kill N/A Stops the execution of the backdoor.
shell N/A Spawns a new instance of cmd.exe.
exec File path Executes a new process using CreateProcessW.
upload String <onedrive_path> String <agent_path> Downloads a file based on the OneDrive and agent path. The <onedrive_path> is believed to be the full path as it appears in OneDrive, resulting in the format of /me/drive/root:/<onedrive_path>, and <agent_path> is the full file path as it appears on disk.
sleep Integer Updates sleep duration.
poll Integer Updates sleep duration for an undetermined reason. Possibly because the development of commands is still ongoing.
rest Integer Sleep for a duration of time.
upgrade JSON text The JSON text contains configuration settings to update fields in memory, followed by writing of these changes to the config.dat file on disk.
download String <onedrive_path> String <file_path> Uploads the file from the provided <file_path> to the path desired in OneDrive. <onedrive_path> is believed to be in the format of /me/drive/root:/<uniqueid>/<filename>/:content.
heartbeat Integer <min> Integer <max> Used to create a random delay period between the min and max of how long to wait to update alive.txt.

Durante nuestra investigación, observamos que, tras la finalización del comando shell, los resultados se escribían en un archivo llamado beacon_shell_output.txt y se guardaban en un directorio temporal. Para subir estos resultados de comandos shell de gran tamaño, es muy probable que los operadores hayan utilizado el endpoint de la API de Microsoft Graph/createUploadSession, ya que el backdoor opera sobre una instancia en la nube de OneDrive.

WormFrp

WormFrp es una herramienta de tunelización proxy inspirada en la utilidad existente fast reverse proxy (frp) que Webworm también utiliza. Los actores de amenazas ampliaron frp con funcionalidades personalizadas para que la herramienta pueda obtener sus valores de configuración desde un bucket de Amazon S3 comprometido, wamanharipethe.s3.ap-south-1.amazonaws[.]com.

El bucket S3 comprometido contiene varios archivos con extensión .txt que están cifrados con AES en modo ECB. Cada instancia de WormFrp tiene una clave AES única codificada de forma fija y obtiene un archivo único desde el bucket S3. El archivo de configuración se actualiza durante la ejecución de WormFrp para enviar información de vuelta al operador y así identificar desde dónde se establece el túnel.

WormFrp requiere un argumento de línea de comandos para ejecutarse. Tras obtener su configuración desde el bucket S3, WormFrp intenta iniciar sesión en un servidor frp, abriendo un proxy inverso y un proxy TCP SOCKS5. Según las muestras observadas, el nombre de usuario y la contraseña siempre se generan de forma aleatoria.

Cada instancia de WormFrp se conecta a un servidor frp a través de una dirección IP pública. Puede observarse actividad de red adicional desde la máquina de la víctima una vez que el proxy inverso ha sido configurado.

ChainWorm

ChainWorm es otra herramienta proxy personalizada utilizada por los operadores de Webworm. Parece que la función principal de ChainWorm es ayudar a expandir la infraestructura de red de proxies de Webworm abriendo un puerto en la máquina en la que se implementa. Webworm puede usar esta herramienta para encadenar proxies, donde datos especialmente elaborados se envían a través del puerto conectándose a otro sistema remoto, reenviando el tráfico al siguiente destino a través de un número indeterminado de saltos.

Por lo general, el puerto que se abre en el host comprometido está codificado de forma fija en la herramienta. Luego se abren conexiones TCP en ese puerto para recibir cualquier transmisión que derive en conexiones salientes adicionales hacia una dirección IP o un hostname junto con su puerto.

Utilizando la combinación de hostname y puerto, se establece una conexión con el siguiente salto en la cadena. Una vez establecidas las conexiones entre origen y destino, cualquier dato que se transmita se reenvía al siguiente salto ascendente en la cadena. Si en algún momento ocurre una excepción, se notifica al origen con la secuencia de bytes 0x05 01 00 01 00 00 00 00 00 00 00 00 antes de intentar reconectar.

SmuxProxy

SmuxProxy es una utilidad basada en iox, una herramienta de port forwarding y proxy de intranet. Sobre la funcionalidad existente de iox, SmuxProxy incorpora pequeñas personalizaciones que permiten definir de forma fija una dirección IP y un puerto de servidor, facilitando su despliegue y ejecución por parte de los operadores. También puede generar una clave aleatoria y un vector de inicialización para comunicaciones cifradas.

WormSocket

El último de los neuvos proxies personalizados de Webworm es WormSocket, una herramienta que utiliza servidores configurados con socket.io para establecer un proxy para solicitudes web. WormSocket permite contar con una red de proxies altamente configurable y escalable, permitiendo interactuar con nodos específicos en cualquier momento.

Su configuración se basa tanto en valores codificados de forma fija como en argumentos de línea de comandos. WormSocket acepta un argumento opcional de línea de comandos --proxy, seguido de un URI que contiene autenticación básica, el cual se utiliza como configuración para crear un objeto WebProxy. Este proxy se utiliza sobre una conexión a un web socket. Las configuraciones de este web socket están codificadas de forma fija en WormSocket.

Una vez que WormSocket se inicia, primero se conecta a la dirección IP y puerto configurados intentando conexiones mediante los esquemas  ws, wss, http, y https. Una vez que se establece una conexión exitosa, se crea una tarea asíncrona para recibir y enviar nuevos mensajes. Existen cuatro tipos posibles de mensajes, que se describen en detalle en la Tabla 3.

Type Message class Values Description
1 InitiateForwarderClientReq String <ForwardedClientId> Uses the IpAddress field to perform a DNS lookup to obtain the host address of a possible domain passed through, the result of which is used to create a new TCP client with the Port. Once the client establishes connectivity, it is stored within a dictionary of ForwardedClientId and TcpClient pairs.
In addition, a new InitiateForwarderClientRep message object is created with the same information used to build the TCP client, and sent with the messages read through the client and stored in a ConcurrentQueue for later use.
String <IpAddress>
Integer <Port>
2 InitiateForwarderClientRep String <ForwarderClientId> ForwarderClientId is used to look up an already configured TCP client created by InitiateForwarderClientReq in the client dictionary, all other values appear to not be in use. Once the TCP client is retrieved, new messages are read and stored in a ConcurrentQueue for later use.
String <BindAddress>
Integer <BindPort>
Integer <AddressType>
Integer <Reason>
3 SendDataMessage String <ForwarderClientId> Sends the Data through base64 encoding followed by the TCP client associated with ForwarderClientId.
Bytes[] <Data>
4 CheckInMessage String <MessengerId> Assigns MessengerId to the internal MessengerId, which does not appear to be used for anything.

Conclusión

Webworm es un grupo APT alineado con China activo al menos desde 2022. Emplea un conjunto de herramientas en constante evolución compuesto principalmente por backdoors y una combinación de utilidades proxy de código abierto y personalizadas. En las campañas de 2025 que observamos, Webworm comenzó a utilizar backdoors basados en Discord (EchoCreep) y en la API de Microsoft Graph (GraphWorm). El grupo también continúa haciendo staging de archivos en repositorios de GitHub, y solo podemos suponer que seguirá haciéndolo en el futuro.

A través de nuestro análisis, tuvimos la oportunidad de recuperar comandos ejecutados desde un servidor que nos brindaron una visión de las posibles técnicas de acceso inicial del grupo, utilizando un escáner de vulnerabilidades de código abierto, así como de identificar algunos de sus objetivos.

Está claro que Webworm es un grupo APT muy activo que seguirá buscando utilizar nuevas herramientas para comprometer a sus víctimas, ya sea a través del acceso inicial o posterior al compromiso.

Para cualquier consulta sobre nuestra investigación publicada en WeLiveSecurity, por favor contáctenos en threatintel@eset.com.
ESET Research ofrece informes privados de inteligencia APT y fuentes de datos. Para cualquier consulta sobre este servicio, visite la página de ESET Threat Intelligence.

IoCs

Puede encontrar una lista completa de indicadores de compromiso (IoC) y muestras en nuestro repositorio de GitHub.

Archivos

SHA-1 Filename Detection Description
CB4E50433336707381429707F59C3CBE8D497D98 SearchApp.exe WinGo/Agent.ZK EchoCreep backdoor using Discord for C&C.
1DF40A4A31B30B62EC33DC6FECC2C4408302ADC7 ssh.exe WinGo/HackTool.Proxy.AE WormFrp proxy tool.
7DCFE9EE25841DFD58D3D6871BF867FE32141DFB svc.exe MSIL/HackTool.Proxy.H WormHole proxy tool.
77F1970D620216C5FFF4E14A6CCC13FCCC267217 C2OverOneDrive_v0316.exe Win32/Agent.VWD GraphWorm backdoor using the Microsoft Graph API for C&C.
948159A7FC2E688386864BEA59FD40DFFC4B24D6 MessengerClient.exe MSIL/HackTool.Proxy.I WormSocket proxy tool.
A3C077BDF8898E612CCD65BC82E7960834ADB2A9 dsocks.exe WinGo/Riskware.Iox.L SmuxProxy, a custom iox with hardcoded IP.

Red

IP Domain Hosting provider First seen Details
N/A wamanharipethe.s3.ap-south-1.amazonaws[.]com N/A 2025-04-14 Compromised S3 for frp configurations and data exfiltration.
45.77.13[.]67 N/A Vultr Holdings, LLC 2025-04-07 WormSocket web socket server.
64.176.85[.]158 N/A The Constant Company, LLC 2025-06-28 SmuxProxy server.
104.243.23[.]43 N/A IT7 Networks Inc 2025-04-09 SmuxProxy server.
108.61.200[.]151 N/A Vultr Holdings, LLC 2025-04-10 WormFrp proxy server.
144.168.60[.]233 N/A IT7 Networks Inc 2025-06-30 Reverse shell IP discovered on SmuxProxy server.

Técnicas ATT&CK de MITRE

Esta tabla se ha elaborado utilizando la versión 19 del frame MITRE ATT&CK.

Tactic ID Name Description
Reconnaissance T1595.002 Active Scanning: Vulnerability Scanning Webworm utilized the open-source vulnerability scanner nuclei against targets.
T1595.003 Active Scanning: Wordlist Scanning Webworm used dirsearch, which leverages wordlists, to perform web directory scanning on targets.
Resource Development T1588.006 Obtain Capabilities: Vulnerabilities Webworm used publicly available exploit code for post-authentication remote code execution.
T1583.004 Acquire Infrastructure: Server Servers for WormFrp, SmuxProxy, and WormSocket are hosted on cloud services operated on Vultr and IT7 Network ASNs.
T1583.003 Acquire Infrastructure: Virtual Private Server Webworm makes use of SoftEther VPN servers that have been seen hosted on Vultr cloud services.
T1584.006 Compromise Infrastructure: Web Services Webworm has been seen compromising S3 buckets as well as using tools like nuclei to find footholds.
T1608.002 Stage Capabilities: Upload Tool Webworm staged tools in its GitHub repo for direct download onto compromised systems.
Execution T1059.003 Command and Scripting Interpreter: Windows Command Shell EchoCreep and GraphWorm both use the Windows command line to execute operator commands.
T1053.005 Scheduled Task/Job: Scheduled Task EchoCreep is executed under the custom-created MicrosoftSSHUpdate scheduled task.
Persistence T1547.001 Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder GraphWorm persists by making updates to registry Run keys.
Defense Impairment T1070.004 Indicator Removal: File Deletion GraphWorm cleans up a created beacon file after successful upload.
T1112 Modify Registry GraphWorm makes modifications to registry Run keys for persistence.
T1027.013 Obfuscated Files or Information: Encrypted/Encoded File GraphWorm and EchoCreep use encryption and encoding techniques to obfuscate data.
T1550.001 Use Alternate Authentication Material: Application Access Token GraphWorm and EchoCreep use API keys to communicate with the C&C infrastructure.
T1078.004 Valid Accounts: Cloud Accounts GraphWorm uses a valid cloud account to access Microsoft Graph APIs.
T1070.006 Indicator Removal: Timestomp EchoCreep contains a modified timestamp attribute.
Lateral Movement T1021.007 Remote Services: Cloud Services Webworm makes use of a compromised S3 bucket to use as a file staging zone.
Collection T1005 Data from Local System Both EchoCreep and GraphWorm can collect data from the local system.
T1074.001 Data Staged: Local Data Staging GraphWorm stages a beacon file locally before uploading to the C&C.
T1074.002 Data Staged: Remote Data Staging GraphWorm stages files and tasks within OneDrive via the Microsoft Graph API.
Command and Control T1071.001 Application Layer Protocol: Web Protocols EchoCreep, GraphWorm, and WormSocket make use of HTTP and the WebSocket protocol.
T1132.001 Data Encoding: Standard Encoding EchoCreep, GraphWorm, and WormSocket make use of base64 encoding.
T1573.002 Encrypted Channel: Asymmetric Cryptography EchoCreep, GraphWorm, WormSocket, and WormFrp use AES in some capacity.
T1090.003 Proxy: Multi-hop Proxy WormSocket and ChainWorm create multiple proxy hops.
T1090.002 Proxy: External Proxy WormFrp, ChainWorm, WormSocket, SmuxProxy, and GraphWorm have the capability to connect to external proxies.
T1090.001 Proxy: Internal Proxy ChainWorm and WormSocket can create internal proxies.
T1102.002 Web Service: Bidirectional Communication EchoCreep and GraphWorm use Discord and the Microsoft Graph API for C&C infrastructure.
Exfiltration T1041 Exfiltration Over C2 Channel EchoCreep and GraphWorm exfiltrate data to their respective C&C infrastructures.
T1567.002 Exfiltration Over Web Service: Exfiltration to Cloud Storage GraphWorm exfiltrates data to OneDrive via the Microsoft Graph API.