SOC Prime Bias: Crítico

24 Apr 2026 15:24 UTC

Pesquisa ESET GopherWhisper: Um túnel cheio de malware

Author Photo
SOC Prime Team linkedin icon Seguir
Pesquisa ESET GopherWhisper: Um túnel cheio de malware
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

A ESET identificou um grupo APT anteriormente desconhecido, alinhado à China e rastreado como GopherWhisper, visando uma organização governamental na Mongólia. O agente de ameaça opera um ecossistema de malware personalizado construído em torno de backdoors Go e C++, carregadores e injetores, abusando fortemente de plataformas de nuvem legítimas para atividades de comando e controle. Seu conjunto de ferramentas, incluindo LaxGopher, RatGopher e BoxOfFriends, se comunica através de serviços como Discord, Slack, Microsoft Outlook e file.io. Os pesquisadores observaram a campanha pela primeira vez em janeiro de 2025.

Investigação

A análise da ESET descobriu o conjunto de ferramentas do grupo, documentou seus métodos de injeção e identificou tokens de API do Slack e Discord usados na operação. Os pesquisadores também extraíram milhares de mensagens de comando e controle e rascunhos de e-mails do Outlook vinculados à campanha. Sua investigação mapeou a infraestrutura de suporte e mostrou como os atacantes confiavam em serviços online confiáveis para ocultar comunicações e exfiltrar dados.

Mitigação

Os defensores devem monitorar atividades não autorizadas de API no Slack, Discord e Outlook, bloquear uploads suspeitos para file.io, e aplicar controles rígidos sobre o comportamento de carregamento de DLL. As equipes de segurança também devem detectar atividades anômalas de injeção svchost.exe e investigar binários desconhecidos baseados em Go em execução no ambiente.

Resposta

Se a atividade do GopherWhisper for detectada, isolar o sistema afetado imediatamente, terminar processos maliciosos, remover DLLs injetadas, redefinir contas de serviço comprometidas e revogar quaisquer tokens de API expostos. Uma investigação forense completa deve seguir, junto com hunting de ameaças na rede para identificar artefatos relacionados ou hosts adicionais comprometidos.

"graph TB %% Class definitions classDef malware fill:#ffcccc classDef process fill:#c2f0c2 classDef file fill:#ffd9b3 classDef technique fill:#e6e6ff classDef service fill:#ffffcc classDef network fill:#d9d9d9 %% Nodes node_initial_loader["<b>Malware</b> – <b>JabGopher Loader</b><br/><b>Action</b>: Create svchost.exe and inject LaxGopher backdoor"] class node_initial_loader malware node_svc_host["<b>Process</b> – svchost.exe"] class node_svc_host process node_laxgopher["<b>Malware</b> – <b>LaxGopher</b> backdoor (DLL)"] class node_laxgopher malware node_whisper_dll["<b>File</b> – whisper.dll (masquerading)"] class node_whisper_dll file node_process_injection["<b>Technique</b> – T1055 Process Injection<br/><b>Description</b>: Inject malicious code into a running process"] class node_process_injection technique node_reflective_loading["<b>Technique</b> – T1620 Reflective Code Loading<br/><b>Description</b>: Load code in memory without using the standard OS loader"] class node_reflective_loading technique node_masquerading["<b>Technique</b> – T1036 Masquerading<br/><b>Description</b>: Rename files to appear legitimate"] class node_masquerading technique node_frienddelivery["<b>Malware</b> – <b>FriendDelivery DLL</b>"] class node_frienddelivery malware node_boxoffriends["<b>Malware</b> – <b>BoxOfFriends</b> backdoor"] class node_boxoffriends malware node_go_backdoor["<b>Malware</b> – Go based backdoors (RatGopher, LaxGopher)"] class node_go_backdoor malware node_c2_slack["<b>Service</b> – Slack (Web Service)"] class node_c2_slack service node_c2_discord["<b>Service</b> – Discord (Web Service)"] class node_c2_discord service node_c2_outlook["<b>Service</b> – Microsoft 365 Outlook Mail REST API"] class node_c2_outlook service node_tech_c2_web["<b>Technique</b> – T1102.002 Web Service Bidirectional Communication<br/><b>Description</b>: Use legitimate web services for C2"] class node_tech_c2_web technique node_tech_mail["<b>Technique</b> – T1071.003 Mail Protocols<br/><b>Description</b>: Use mail protocols for C2"] class node_tech_mail technique node_remote_access["<b>Technique</b> – T1219 Remote Access Tools<br/><b>Description</b>: Provide remote command execution"] class node_remote_access technique node_compactgopher["<b>Malware</b> – CompactGopher"] class node_compactgopher malware node_archive["<b>Technique</b> – T1560.001 Archive Collected Data via Utility<br/><b>Description</b>: Compress data before exfiltration"] class node_archive technique node_data_limit["<b>Technique</b> – T1030 Data Transfer Size Limits<br/><b>Description</b>: Handle size limits by compressing or splitting data"] class node_data_limit technique node_exfil_fileio["<b>Service</b> – file.io cloud storage"] class node_exfil_fileio service node_exfil_tech["<b>Technique</b> – T1567.002 Exfiltration Over Web Service to Cloud Storage<br/><b>Description</b>: Use cloud storage as exfiltration channel"] class node_exfil_tech technique node_transfer_to_cloud["<b>Technique</b> – T1537 Transfer Data to Cloud Account<br/><b>Description</b>: Move data to attackeru2011controlled cloud account"] class node_transfer_to_cloud technique node_sslordoor["<b>Malware</b> – SSLORDoor"] class node_sslordoor malware node_raw_socket["<b>Technique</b> – Raw Socket Communication"] class node_raw_socket technique node_port_443["<b>Network</b> – Port 443"] class node_port_443 network %% Connections node_initial_loader –>|creates| node_svc_host node_initial_loader –>|injects| node_laxgopher node_laxgopher –>|uses| node_process_injection node_laxgopher –>|uses| node_reflective_loading node_laxgopher –>|file name| node_whisper_dll node_whisper_dll –>|masquerades as| node_masquerading node_frienddelivery –>|loads| node_boxoffriends node_boxoffriends –>|uses| node_process_injection node_boxoffriends –>|uses| node_reflective_loading node_laxgopher –>|C2 via| node_c2_slack node_go_backdoor –>|C2 via| node_c2_discord node_go_backdoor –>|C2 via| node_c2_slack node_c2_slack –>|uses technique| node_tech_c2_web node_c2_discord –>|uses technique| node_tech_c2_web node_boxoffriends –>|creates drafts via| node_c2_outlook node_c2_outlook –>|uses technique| node_tech_mail node_go_backdoor –>|provides| node_remote_access node_sslordoor –>|provides| node_remote_access node_compactgopher –>|compresses data with| node_archive node_compactgopher –>|handles size limits via| node_data_limit node_archive –>|uploaded to| node_exfil_fileio node_exfil_fileio –>|uses technique| node_exfil_tech node_exfil_fileio –>|uses technique| node_transfer_to_cloud node_sslordoor –>|uses raw sockets on| node_port_443 node_sslordoor –>|uses| node_raw_socket "

Fluxo de Ataque

Execução de Simulação

Pré-requisito: O Check de Pré-voo de Telemetria & Base de Referência deve ter passado.

Racional: 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 visam gerar a telemetria exata esperada pela lógica de detecção.

  • Narrativa do Ataque & Comandos:
    O atacante primeiro gera um novo svchost.exe processo (o host escolhido para injeção). Usando um injetor de DLL reflexivo, o LaxGopher.dll malicioso é carregado na memória desse processo, atingindo Injeção de Biblioteca Dinâmica de Vínculo (T1055.001). Uma vez que o backdoor está residente, ele abre um cmd.exe oculto para executar comandos recebidos de seu servidor C2, cumprindo o Windows Command Shell (T1059.003). Essa cadeia espelha o comportamento descrito na pesquisa do GopherWhisper e gera os dois eventos de criação de processo que a regra Sigma procura.

  • Script de Teste de Regressão:

    # -------------------------------------------------------------
    # Simulação de Injeção de Processo Estilo GopherWhisper
    # -------------------------------------------------------------
    $svcHost = "$env:SystemRootSystem32svchost.exe"
    $dllPath = "C:TempLaxGopher.dll"   # Presume-se que um DLL de teste benigno exista aqui
    $cmdPath = "$env:SystemRootSystem32cmd.exe"
    
    # 1. Inicie uma nova instância do svchost.exe (suspensa) para ser o alvo da injeção
    $svchost = Start-Process -FilePath $svcHost -ArgumentList "-k", "netsvcs" `
                -PassThru -WindowStyle Hidden
    
    # 2. Realize uma injeção reflexiva simplista (placeholder)
    #    Em um teste real, você chamaria um injetor adequado; aqui apenas registramos a intenção.
    Write-Host "[*] Injetando $dllPath no PID $($svchost.Id) (simulado)"
    # Comando de injeção simulado:
    #   .Invoke-ReflectiveDLLInjection.ps1 -Pid $svchost.Id -Path $dllPath
    
    # 3. Lançar cmd.exe do contexto do processo injetado (simulado)
    Write-Host "[*] Lançando cmd.exe do svchost injetado (simulado)"
    Start-Process -FilePath $cmdPath -ArgumentList "/c echo Comprometido > C:Temppwned.txt" `
                  -WindowStyle Hidden
    
    # 4. Dormir brevemente para permitir que o Sysmon registre eventos
    Start-Sleep -Seconds 5
  • Comandos de Limpeza:

    # Termine os processos simulados svchost.exe e cmd.exe
    Get-Process -Name svchost -ErrorAction SilentlyContinue | Stop-Process -Force
    Get-Process -Name cmd -ErrorAction SilentlyContinue | Stop-Process -Force
    
    # Remover o DLL de teste (opcional)
    Remove-Item -Path "C:TempLaxGopher.dll" -Force -ErrorAction SilentlyContinue