# PROC — MuddyWater: Infraestrutura C2 via Blockchain Ethereum
## Visão Geral
O [[g0069-mango-sandstorm|MuddyWater]] (MOIS, Irã) é conhecido por inovar continuamente em técnicas de Command and Control para evitar takedowns de infraestrutura. Em vez de operar servidores C2 dedicados — que podem ser derrubados por autoridades, bloqueados por provedores de hospedagem ou sinkholed por pesquisadores — o grupo passou a utilizar a **blockchain pública Ethereum** como canal de comunicação unidirecional: os operadores públicam comandos codificados no campo `input data` de transações Ethereum, e os implantes nas máquinas das vítimas os leem consultando nós RPC públicos como Infura ou Alchemy. Não há servidor para derrubar porque a infraestrutura é descentralizada e gerida por milhares de participantes independentes da rede.
Essa abordagem é uma implementação extremamente criativa da técnica [[t1102-web-service|T1102 - Web Service]], que tipicamente abusa de plataformas como GitHub, Pastebin ou Google Docs como repositórios de configuração e staging de comandos. O uso de Ethereum eleva a resiliência a um nível diferente: a imutabilidade da blockchain significa que comandos públicados existem permanentemente, e o anonimato relativo das carteiras dificulta a atribuição e o rastreamento da infraestrutura de operação. A técnica foi observada na [[operation-olalampo|Operation Olalampo]] e está associada ao implante **MuddyC2Go**, uma versão do framework C2 do grupo reescrita em Go para dificultar análise e detecção por produtos de segurança treinados nas versões anteriores em Python.
O canal de C2 de entrada (comandos via blockchain) é separado do canal de saída (exfiltração via serviços cloud como OneDrive ou Google Drive), o que fragmenta os indicadores e complica a correlação por equipes de defesa. Para bloquear essa técnica efetivamente, uma organização precisaria impedir todo tráfego de processos não-browser para APIs de provedores Ethereum RPC — uma medida que a maioria das políticas de proxy corporativo não contempla por padrão.
**Contexto Brasil/LATAM:** O [[g0069-mango-sandstorm|MuddyWater]] tem histórico de campanhas contra governos, telecomúnicações e organizações de defesa no Oriente Médio e Ásia Central, mas técnicas como C2 via blockchain são passíveis de adoção por grupos com foco em LATAM. Organizações brasileiras do setor de telecomúnicações ([[sector-telecom|Setor Telecom]]) e governo que utilizam serviços Web3 ou permitem tráfego amplo de saída têm exposição direta a variantes desse procedimento. Grupos de ransomware e espionagem com atuação regional já testam técnicas de C2 resiliente para manter acesso persistente em ambientes com NDR e proxies corporativos. A baixa familiaridade das equipes SOC brasileiras com tráfego JSON-RPC de blockchain cria um ponto cego operacional relevante.
## Attack Flow
```mermaid
graph TB
A[Spearphishing<br/>Acesso Inicial] --> B[Deploy MuddyC2Go<br/>Implante Go]
B --> C[Polling Ethereum<br/>via Infura RPC]:::critical
C --> D[Execução de<br/>Comandos Decodificados]
D --> E[Exfiltração<br/>OneDrive / Drive]
classDef critical fill:#e74c3c,color:#fff
```
## Como Funciona
### 1. Preparação — Infraestrutura Blockchain e Deploy do Implante
Os operadores do [[g0069-mango-sandstorm|MuddyWater]] criam uma **carteira Ethereum dedicada** para cada campanha ou cluster de vítimas. Esse endereço de carteira é hardcoded no implante antes da distribuição — ele funciona como o identificador da "estação de rádio" que o implante vai sintonizar. Os comandos são estruturados em JSON, codificados em Base64 e inseridos no campo `input data` de transações enviadas ao endereço da carteira controlada pelo operador. Cada transação custa uma pequena quantidade de ETH em gas fees, mas o custo operacional é marginal comparado ao ganho em resiliência. O implante **MuddyC2Go** é distribuído via spearphishing com anexos ou links que executam um dropper, frequentemente abusando de [[t1059-007-javascript|T1059.007]] ou macros para o estágio inicial de execução.
> **Event IDs relevantes:** `4688` (criação de processo — novo executável Go em diretório incomum), Sysmon `1` (process creaté com hash não reconhecido), EDR alert para binário Go sem assinatura digital.
### 2. Execução — Polling da Blockchain via JSON-RPC
O implante executa um loop de polling a cada 60 segundos, consultando um nó RPC Ethereum público — normalmente `mainnet.infura.io`, `rpc.alchemy.com` ou `eth.llamarpc.com` — via chamada `eth_getLogs` para o endereço do operador. A chamada retorna todas as transações recentes associadas ao endereço monitorado. O implante inspeciona o campo `input data` de cada transação nova (a partir do último bloco processado, armazenado localmente), decodifica o Base64 e deserializa o JSON para extrair o comando a executar. O tráfego de rede gerado é HTTPS para domínios de provedores RPC legítimos e amplamente utilizados — sem indicador de domínio malicioso no próprio fluxo de rede.
> **Event IDs relevantes:** Sysmon `3` (network connection) para `infura.io` ou `alchemy.com` por processo não-browser; Windows Firewall `5156` (conexão permitida) com destino a IPs de provedores Ethereum; Proxy logs com `eth_getLogs` no corpo da requisição.
### 3. Pós-execução — Exfiltração por Canal Separado e Persistência
Após executar comandos recebidos via blockchain, o [[g0069-mango-sandstorm|MuddyWater]] usa um **canal separado para exfiltração**: ferramentas como `rclone` ou scripts PowerShell que fazem upload para OneDrive, Google Drive ou Telegram usando credenciais ou tokens obtidos nas máquinas das vítimas. Essa separação de canais — C2 de entrada via Ethereum, saída via cloud storage legítimo — divide os indicadores de comprometimento em dois fluxos de tráfego completamente distintos, dificultando a correlação. A persistência do implante é geralmente estabelecida via chave de Registro `Run`, tarefa agendada ou serviço Windows com nome que imita componentes do sistema operacional. O beacon de intervalo regular (60s) é detectável por análise comportamental de rede como padrão de beacon — mas raramente é investigado porque o destino parece ser um serviço legítimo de Web3.
> **Event IDs relevantes:** `4698`/`4702` (tarefa agendada criada/modificada), `7045` (novo serviço instalado), Sysmon `11` (file created — rclone.exe em diretório temporário), DLP alert para upload de volume elevado para cloud storage por processo incomum.
## Detecção
### Event IDs Críticos
| Event ID / Log | Produto | Indicador |
|---|---|---|
| Sysmon 1 — processo Go desconhecido | Windows / Sysmon | Executável Go sem assinatura em `%AppData%` ou `%Temp%` |
| Sysmon 3 — conexão a `infura.io` por não-browser | Windows / Sysmon | Polling blockchain de processo inesperado |
| Windows Firewall 5156 — destino porta 443 provedor ETH | Windows | Conexão sainte para nós Ethereum RPC |
| Proxy log — `eth_getLogs` no corpo da requisição | Proxy corporativo | Chamada JSON-RPC de blockchain fora de contexto Web3 |
| Sysmon 11 — `rclone.exe` criado em diretório temp | Windows / Sysmon | Ferramenta de exfiltração instalada |
| EDR — beacon regular para mesmo host externo | EDR Behavioral | Intervalo fixo de ~60s indica implante de polling |
### Sigma Rule — Polling de Blockchain por Processo Não-Browser
```yaml
title: MuddyWater - Conexão JSON-RPC Ethereum por Processo Não-Browser
id: b8d4e1f2-3a7c-4b9e-8f2d-6c0a1e3b5d7f
status: experimental
description: >
Detecta conexões de rede para provedores de nó RPC Ethereum (Infura, Alchemy,
QuickNode) originadas de processos que não são navegadores. Indica possível
uso de blockchain como canal C2, técnica observada no MuddyWater (Operation Olalampo).
author: RunkIntel
daté: 2026-03-24
references:
- https://research.checkpoint.com/2024/muddywater-ethereum-c2/
logsource:
category: network_connection
product: windows
detection:
selection:
Initiated: 'true'
DestinationHostname|endswith:
- 'infura.io'
- 'alchemy.com'
- 'quicknode.pro'
- 'llamarpc.com'
- 'ankr.com'
filter_browsers:
Image|endswith:
- '\chrome.exe'
- '\firefox.exe'
- '\msedge.exe'
- '\brave.exe'
- '\opera.exe'
filter_expected_web3:
Image|endswith:
- '\MetaMask.exe'
- '\Exodus.exe'
condition: selection and not filter_browsers and not filter_expected_web3
falsepositives:
- Aplicações Web3 legítimas não listadas no filtro
- Desenvolvimento local de dApps
level: medium
tags:
- attack.command_and_control
- attack.t1102
- attack.t1573
```
## Mitigação
| Controle | Ação Recomendada | Prioridade |
|---|---|---|
| Política de proxy — bloqueio seletivo | Bloquear requisições para APIs Ethereum RPC (`infura.io`, `alchemy.com`, `quicknode.pro`, `llamarpc.com`) para processos não-browser, exceto aplicações Web3 aprovadas explicitamente na allowlist | Alta |
| Monitoramento DNS | Criar alerta para resolução DNS de provedores Ethereum por processos não-browser ou servidores corporativos que não têm justificativa de uso Web3 | Alta |
| Análise de beacon comportamental | Configurar NDR para detectar conexões HTTPS com intervalo fixo (55-65s) para o mesmo host externo — padrão característico de implantes de polling | Alta |
| CASB — controle de uploads | Monitorar e alertar para uploads de volume elevado para OneDrive, Google Drive ou Telegram originados de processos sem histórico de uso dessas plataformas | Média |
| Inventário de executáveis Go | Manter inventário de aplicações Go legítimas no ambiente; alertar para novos executáveis Go não reconhecidos em endpoints | Média |
| Segmentação de rede | Restringir acesso direto à internet de servidores e estações administrativas; forçar todo tráfego por proxy inspecionado com TLS inspection ativa | Média |
| Threat hunting periódico | Buscar em logs de proxy por padrão `eth_getLogs` e `eth_getTransactionByHash` fora de contexto de desenvolvimento ou aplicações Web3 aprovadas | Baixa |
## Referências
- [[g0069-mango-sandstorm|MuddyWater]] — grupo iraniano MOIS responsável pelo procedimento
- [[operation-olalampo|Operation Olalampo]] — campanha onde a técnica de C2 via blockchain foi observada
- [[t1102-web-service|T1102 - Web Service]] — técnica MITRE base (blockchain como dead drop / canal C2)
- [[t1567-002-exfiltration-cloud-storage|T1567.002 - Exfiltration to Cloud Storage]] — canal de exfiltração complementar separado do C2
- [[t1027-obfuscated-files|T1027 - Obfuscated Files]] — codificação Base64 dos comandos nas transações
- [[t1059-007-javascript|T1059.007 - JavaScript]] — execução de payloads JS em estágios iniciais da cadeia de infecção
- [[t1568-002-domain-generation-algorithms|T1568.002 - Domain Generation Algorithms]] — técnica relacionada de C2 resiliente
- [[proc-apt29-cloud-token-theft|PROC - APT29 Cloud Token Theft]] — outro exemplo de abuso de infraestrutura legítima como canal furtivo
- [[proc-lockbit-double-extortion|PROC - LockBit Double Extortion]] — procedimento relacionado com exfiltração antes de impacto
- [[_techniques|Índice de TTPs]] — visão geral de todas as técnicas documentadas
---
*Fonte: [Check Point Research — MuddyWater Blockchain C2](https://research.checkpoint.com/2024/muddywater-ethereum-c2/)*
*Fonte: [CISA — Iran-Based Threat Actor MuddyWater](https://www.cisa.gov/news-events/cybersecurity-advisories/aa22-055a)*