SOC Prime Bias: Crítico

15 May 2026 13:51 UTC

FrostyNeighbor: Novo Travessura e Ameaças Digitais

Author Photo
SOC Prime Team linkedin icon Seguir
FrostyNeighbor: Novo Travessura e Ameaças Digitais
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

A ESET relata que o grupo APT FrostyNeighbor, também rastreado como Ghostwriter, retomou ataques contra organizações governamentais ucranianas usando PDFs de spear-phishing que entregam um downloader baseado em JavaScript conhecido como PicassoLoader, que implanta, por fim, um beacon Cobalt Strike. A campanha depende de validação baseada em geolocalização, persistência por meio de tarefas agendadas e várias técnicas de drop de arquivos para reduzir a visibilidade e evitar detecção. Sua infraestrutura está posicionada atrás do Cloudflare e usa vários needbinding.icu domínios.

Investigação

Pesquisadores reconstruíram a cadeia completa do ataque, começando com o PDF malicioso de isca, passando pelo dropper JavaScript e downloader PicassoLoader, e terminando com a entrega do payload Cobalt Strike. Eles extraíram indicadores, incluindo nomes de arquivos, mudanças de registro e URLs de comando e controle, e os vincularam à prática conhecida de FrostyNeighbor. O relatório também destaca a exploração das CVE-2023-38831 no WinRAR e CVE-2024-42009 no Roundcube.

Mitigação

As organizações devem bloquear tipos de anexos suspeitos, aplicar controles rigorosos sobre a execução de macros e scripts, monitorar tarefas agendadas criadas por binários desconhecidos e restringir o tráfego HTTPS de saída para domínios maliciosos conhecidos. As vulnerabilidades mencionadas devem ser corrigidas prontamente, e restrições de privilégio mínimo devem ser aplicadas ao uso de rundll32.exe uso.

Resposta

Se quaisquer indicadores relacionados forem detectados, isole o sistema afetado imediatamente, colete artefatos forenses e busque pelo beacon Cobalt Strike e componentes do PicassoLoader. Restaure quaisquer credenciais expostas e revise tarefas agendadas e entradas de chave Run para sinais de persistência.

"graph TB %% Class definitions classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef file fill:#c2f0c2 classDef tool fill:#cccccc classDef malware fill:#ff9999 %% Nodes – Actions attack_initial_access["<b>Ação</b> – <b>T1566.001 Phishing: Anexo de Spearphishing</b><br/>E-mail com PDF malicioso com link para um arquivo RAR."] class attack_initial_access action action_user_execution["<b>Ação</b> – <b>T1204.002 Execução do Usuário</b><br/>A vítima abre o PDF que executa um dropper JavaScript."] class action_user_execution action %% Nodes – Files file_malicious_pdf["<b>Arquivo</b> – <b>Nome</b>: malicious.pdf<br/>Contém dropper JavaScript."] class file_malicious_pdf file file_rar["<b>Arquivo</b> – <b>Nome</b>: payload.rar<br/>Entregue via link no PDF."] class file_rar file file_scheduled_xml["<b>Arquivo</b> – <b>Nome</b>: scheduled_task.xml<br/>XML usado para registrar uma tarefa agendada."] class file_scheduled_xml file file_reg["<b>Arquivo</b> – <b>Nome</b>: persistence.reg<br/>Arquivo de registro que cria uma chave Run.""" class file_reg file file_lnk["<b>Arquivo</b> – <b>Nome</b>: launcher.lnk<br/>Atalho colocado na pasta de Inicialização.""" class file_lnk file %% Nodes – Malware / Tools malware_javascript_dropper["<b>Malware</b> – <b>Nome</b>: JavaScript Dropper<br/>Executa scripts codificados em base64 e incorpora payloads de segunda etapa."] class malware_javascript_dropper malware tool_picasso_loader["<b>Ferramenta</b> – <b>Nome</b>: PicassoLoader<br/>Coleta informações do sistema, lista de processos e dados de identidade da vítima."] class tool_picasso_loader tool malware_cobalt_strike["<b>Malware</b> – <b>Nome</b>: Cobalt Strike Beacon<br/>Fornece capacidades de controle remoto.""" class malware_cobalt_strike malware %% Nodes – Techniques technique_obfuscation["<b>Técnica</b> – <b>T1027 Arquivos ou Informações Ofuscados</b><br/>Os payloads são codificados em base64 para evitar detecção."] class technique_obfuscation technique technique_embedded_payload["<b>Técnica</b> – <b>T1027.009 Payloads Incorporados</b><br/>Downloader e beacon são ocultados dentro do JavaScript."] class technique_embedded_payload technique technique_gather_identity["<b>Técnica</b> – <b>T1589 Coleta de Informações de Identidade da Vítima</b><br/>Coleta nome de usuário, nome do computador, versão do SO e tempo de inicialização."] class technique_gather_identity technique technique_system_info["<b>Técnica</b> – <b>T1082 Descoberta de Informações do Sistema</b><br/>Coleta especificações detalhadas do sistema."] class technique_system_info technique technique_process_discovery["<b>Técnica</b> – <b>T1057 Descoberta de Processos</b><br/>Enumera processos em execução no host."] class technique_process_discovery technique technique_c2_https["<b>Técnica</b> – <b>T1071.001 Protocolo de Camada de Aplicação: Protocolos Web</b><br/>Comunica-se com C2 através de HTTPS POST.""" class technique_c2_https technique technique_scheduled_task["<b>Técnica</b> – <b>T1053.005 Tarefa/Trabalho Agendado</b><br/>Cria um XML de tarefa agendada para persistência.""" class technique_scheduled_task technique technique_run_key["<b>Técnica</b> – <b>T1060 Chaves de Execução do Registro / Pasta de Inicialização</b><br/>Adiciona uma chave Run apontando para um LNK malicioso.""" class technique_run_key technique technique_exfiltration["<b>Técnica</b> – <b>T1041 Exfiltração via Canal C2</b><br/>Envia dados coletados pelo mesmo canal HTTPS.""" class technique_exfiltration technique %% Connections – Attack Flow attack_initial_access –>|entrega| file_malicious_pdf file_malicious_pdf –>|aberto_por| action_user_execution action_user_execution –>|executa| malware_javascript_dropper malware_javascript_dropper –>|usa| technique_obfuscation malware_javascript_dropper –>|contém| technique_embedded_payload technique_embedded_payload –>|solta| tool_picasso_loader tool_picasso_loader –>|coleta| technique_system_info tool_picasso_loader –>|coleta| technique_process_discovery tool_picasso_loader –>|coleta| technique_gather_identity tool_picasso_loader –>|contata| technique_c2_https technique_c2_https –>|entrega| malware_cobalt_strike malware_cobalt_strike –>|estabelece| technique_scheduled_task technique_scheduled_task –>|cria| file_scheduled_xml malware_cobalt_strike –>|estabelece| technique_run_key technique_run_key –>|cria| file_reg file_reg –>|adiciona| file_lnk technique_c2_https –>|exfiltra via| technique_exfiltration "

Fluxo de Ataque

Execução de Simulação

Pré-requisito: O Cheque Pré-voo de Telemetria & Benchmark deve ter sido aprovado.

Racional: Esta seção detalha a execução precisa da técnica de adversário (TTP) projetada para acionar a regra de detecção. Os comandos e narrativa DEVEM refletir diretamente os TTPs identificados e visam gerar a telemetria exata esperada pela lógica de detecção.

  • Narrativa do Ataque e Comandos:

    O adversário obteve um ponto de apoio no host da vítima e deseja implantar um beacon Cobalt Strike enquanto permanece fora do radar. Eles:

    1. Copiar rundll32.exe para um local não convencional (C:ProgramDataTemprundll32.exe) para evadir alertas simples de lista branca.
    2. Derramar a DLL maliciosa (ViberPC.dll) em %ProgramData%. Esta DLL contém o payload inicializado de Cobalt Strike.
    3. Executar o rundll32.exe copiado com uma linha de comando que carrega a DLL maliciosa (%ProgramData%ViberPC.dll).
    4. Dropar dois arquivos JavaScript (53_7.03.2026_R.js and Update.js) que contêm JScript que contata o servidor C2 e finaliza a instalação do beacon.
    5. Executar os arquivos JavaScript usando cscript.exe, causando a criação de processos cujo Imagem termina com .js e cuja Linha de Comando contém os nomes exatos dos arquivos.

    Estas etapas geram os eventos exatos de criação de processo do Sysmon correspondidos por seleção1, seleção2, e seleção3 na regra Sigma.

  • Script de Teste de Regressão:

    # Simulação de Implantação do Cobalt Strike FrostyNeighborn# -------------------------------------------------n# 1. Prepare caminhosn$tempDir = "$env:ProgramDataTemp"n$rundllCopy = Join-Path $tempDir "rundll32.exe"n$malDll    = "$env:ProgramDataViberPC.dll"n$js1       = "$env:ProgramData53_7.03.2026_R.js"n$js2       = "$env:ProgramDataUpdate.js"nn# 2. Assegure que o diretório temporário existenNew-Item -Path $tempDir -ItemType Directory -Force | Out-Nullnn# 3. Copiar rundll32.exe para um local não convencionalnCopy-Item -Path "$env:SystemRootSystem32rundll32.exe" -Destination $rundllCopy -Forcenn# 4. Criar uma DLL maliciosa dummy (no ataque real este seria o payload)n$dummyDll = [IO.File]::ReadAllBytes("$env:SystemRootSystem32driversetchosts") # binary placeholdern[IO.File]::WriteAllBytes($malDll, $dummyDll)nn# 5. Executar o rundll32 copiado com o DLL maliciosonStart-Process -FilePath $rundllCopy -ArgumentList "`"$malDll`"" -WindowStyle Hiddennn# 6. Derramar os payloads de JavaScriptn$jsContent = @"n// JScript simples que se comunica com um endpoint C2 (simulado)nvar xhr = new ActiveXObject("MSXML2.XMLHTTP");nxhr.open("GET", "http://127.0.0.1:8080/beacon", false);nxhr.send();n"@nnSet-Content -Path $js1 -Value $jsContent -Encoding ASCIInSet-Content -Path $js2 -Value $jsContent -Encoding ASCIInn# 7. Executar os arquivos JavaScript via cscript (isto cria processos com imagem .js)nStart-Process -FilePath "cscript.exe" -ArgumentList "//NoLogo `"$js1`"" -WindowStyle HiddennStart-Process -FilePath "cscript.exe" -ArgumentList "//NoLogo `"$js2`"" -WindowStyle Hiddennn# 8. Pausar para permitir a ingestão pelo SIEMnStart-Sleep -Seconds 15
  • Comandos de Limpeza:

    # Limpeza após simulaçãon$paths = @(n    "$env:ProgramDataViberPC.dll",n    "$env:ProgramData53_7.03.2026_R.js",n    "$env:ProgramDataUpdate.js",n    "$env:ProgramDataTemprundll32.exe"n)nforeach ($p in $paths) {n    if (Test-Path $p) { Remove-Item -Path $p -Force }n}n# Opcionalmente parar quaisquer processos cscript remanescentes iniciados pelo testenGet-Process -Name cscript -ErrorAction SilentlyContinue | Stop-Process -Force