SOC Prime Bias: Crítico

18 Jun 2026 14:32 UTC

Arsenal da ESET Research FishMonger Atualizado: SprySOCKS para Windows

Author Photo
SOC Prime Team linkedin icon Seguir
Arsenal da ESET Research FishMonger Atualizado: SprySOCKS para Windows
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

Pesquisadores da ESET descobriram duas novas variantes do backdoor SprySOCKS para Windows, chamadas WIN_DRV e WIN_PLUS, que estão ligadas ao grupo de ameaças FishMonger. A versão WIN_DRV usa um driver de kernel para obter furtividade aprimorada, incluindo a capacidade de ocultar conexões de rede, processos e arquivos. Ambas as variantes suportam vários protocolos de comunicação e fornecem um amplo conjunto de comandos para controle do sistema e roubo de dados.

Investigação

A investigação baseou-se em amostras de malware descobertas através do VirusTotal e da telemetria da ESET, revelando atividades que se estendiam de 2023 a 2024. Os pesquisadores analisaram as cadeias completas de execução, incluindo o carregamento DLL sideloading, carregamento de driver do kernel através do DriverLoader e do RawWNPF, e injeção de processos usando técnicas de doppelgänging. O estudo também revelou padrões de comunicação de comando e controle e chaves de criptografia hardcoded compartilhadas entre vários componentes.

Mitigação

As organizações devem priorizar a correção de aplicativos voltados para a internet para reduzir o risco de comprometimento inicial através de vulnerabilidades do tipo N-day. A fiscalização rigorosa da assinatura de drivers e o monitoramento da instalação não autorizada de drivers de kernel são essenciais. Os defensores também devem monitorar tarefas agendadas suspeitas, alterações no registro sob Opções de Execução de Arquivos de Imagem, e registros de processadores de impressão incomuns.

Resposta

Se essas ameaças forem detectadas, os sistemas afetados devem ser isolados imediatamente para impedir movimentos laterais adicionais ou roubo de dados. Os investigadores devem realizar uma revisão forense detalhada para determinar o vetor de intrusão original e o escopo completo do comprometimento, com atenção especial para a persistência em nível de kernel. Os logs de rede também devem ser verificados para comunicação com infraestruturas conhecidas de comando e controle, enquanto mudanças no sistema como novos serviços ou chaves de registro alteradas devem ser auditadas.

Fluxo de Ataque

## Execução da Simulação

Pré-requisito: O Check de Pré-voo de Telemetria e Base devem ter passado.

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 a narrativa DEVEM refletir diretamente os TTPs identificados e visam gerar a telemetria exata esperada pela lógica de detecção. Exemplos abstratos ou não relacionados levarão a um diagnóstico errado.

  • Narrativa do Ataque e Comandos: O adversário implantou com sucesso o backdoor SprySOCKS em um host Windows comprometido. Para estabelecer um canal de comando e controle, o malware abre um socket de escuta na porta 53781. Para garantir que a comunicação seja reconhecida pelo seu servidor C2 personalizado, o malware injeta o valor hex mágico 0xACACBCBC nos pacotes de handshake iniciais. Isso simula o comportamento específico do protocolo do grupo FishMonger para facilitar a comunicação confiável através de tráfego interceptado ou desviado.

  • Script de Teste de Regressão:

    # Script de Simulação: Geração de Artefato de Rede SprySOCKS
    # Este script imita o comportamento de rede do backdoor SprySOCKS.
    
    $TargetPort = 53781
    $MagicValue = [byte[]] @(0xAC, 0xAC, 0xBC, 0xBC)
    $Listener = [System.Net.Sockets.TcpListener]$TargetPort
    
    try {
        Write-Host "[+] Iniciando ouvinte na porta $TargetPort..." -ForegroundColor Cyan
        $Listener.Start()
        $Client = $Listener.AcceptTcpClient()
        $Stream = $Client.GetStream()
    
        Write-Host "[+] Conexão estabelecida. Enviando valor mágico $MagicValue..." -ForegroundColor Yellow
        # Injetando o valor mágico no fluxo para acionar a lógica 'selection1'
        $Stream.Write($MagicValue, 0, $MagicValue.Length)
    
        Start-Sleep -Seconds 5
    }
    catch {
        Write-Error "[-] Simulação falhou: $($_.Exception.Message)"
    }
    finally {
        Write-Host "[+] Limpando conexões..." -ForegroundColor Cyan
        $Stream.Close()
        $Client.Close()
        $Listener.Stop()
    }
  • Comandos de Limpeza:

    # Garantir que nenhum ouvinte desonesto permaneça ativo
    Get-NetTCPConnection -LocalPort 53781 -ErrorAction SilentlyContinue | Remove-NetTCPConnection
    Write-Host "[+] Limpeza completa." -ForegroundColor Green