SOC Prime Bias: Crítico

26 May 2026 16:01 UTC

Void Dokkaebi Usa Malware InvisibleFerret Compilado com Cython

Author Photo
SOC Prime Team linkedin icon Seguir
Void Dokkaebi Usa Malware InvisibleFerret Compilado com Cython
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

Void Dokkaebi, um agente de ameaça ligado à Coreia do Norte, melhorou seu malware InvisibleFerret compilando-o com Cython em nativo .pyd and .so binários. Essa mudança ajuda o malware a evitar detecções focadas apenas em scripts Python, mantendo suas funções principais, incluindo roubo de credenciais, keylogging, captura de área de transferência e sequestro de carteiras de criptomoedas. BeaverTail serve como o carregador de múltiplos estágios que recupera e executa os módulos compilados. A campanha é direcionada a desenvolvedores de software e usuários de criptomoedas que possam ter credenciais de carteiras, chaves de assinatura ou outros segredos de alto valor.

Investigação

Os pesquisadores analisaram toda a cadeia de infecção e encontraram uma clara mudança de scripts Python legíveis para módulos de extensão compilados com Cython. Eles também documentaram vários métodos de ofuscação, incluindo codificação Base64, criptografia XOR e manipulação de strings de dividir e trocar. Durante a investigação, eles extraíram endereços IP, portas e nomes de arquivos codificados, e observaram a criação de temporários Python .mod scripts usados para carregar os binários maliciosos. A análise de strings revelou ainda rastros do ambiente de construção e referências a extensões de carteiras de criptomoedas baseadas em navegador.

Mitigação

Os defensores devem expandir além de detecções focadas em scripts e monitorar por .pyd and .so arquivos suspeitos aparecendo em locais incomuns, bem como .mod scripts de carregamento temporário. Oportunidades adicionais de detecção incluem os nomes de arquivos observados, solicitações de saída para ip-api.com, e downloads que envolvem extensões de carteiras de criptomoedas. Remover ou isolar os scripts de carregamento temporário após a execução também pode ajudar a reduzir as oportunidades de persistência.

Resposta

Se indicadores relacionados forem detectados, isole imediatamente o endpoint afetado, bloqueie o tráfego de saída para o endereço IP de comando e controle identificado e procure os binários listados e artefatos de tarefas agendadas. Os investigadores devem analisar qualquer .mod script recuperado para extrair cargas úteis incorporadas e entender melhor a cadeia de execução. Quaisquer credenciais de criptomoeda expostas, segredos de carteiras ou chaves de assinatura devem ser rotacionados sem demora.

Fluxo de Ataque

Ainda estamos atualizando esta parte. Inscreva-se para ser notificado

Me Notifique

Execução de Simulação

Pré-requisito: O Teste de Pré-Voo de Telemetria e Linha de Base deve ter passado.

Justificativa: Esta seção detalha a execução precisa da técnica do adversário (TTP) destinada a acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e visar gerar a telemetria exata que se espera da lógica de detecção. Exemplos abstratos ou não relacionados levarão a diagnósticos errados.

  • Narrativa de Ataque & Comandos:
    O atacante obteve um conjunto de módulos compilados com Cython (mod.pyd, pad.pyd, brw.pyd) que implementam coleta de credenciais e comunicação C2. Para obter persistência, o adversário copia esses módulos para o diretório de configuração do VS Code do usuário atual (%USERPROFILE%.vscode). O VS Code verifica periodicamente esta pasta em busca de extensões, causando o carregamento dos módulos maliciosos por um script Python malicioso posterior. A operação de cópia gera um evento Sysmon FileCreate que coincide com a regra Sigma.

  • Script de Teste de Regressão:

    # -------------------------------------------------
    # Simulação de descarte de módulo Cython InvisibleFerret
    # -------------------------------------------------
    $vscodePath = "$env:USERPROFILE.vscode"
    # Garantir que a pasta de destino exista
    if (-not (Test-Path -Path $vscodePath)) {
        New-Item -ItemType Directory -Path $vscodePath | Out-Null
    }
    
    # Binários maliciosos simulados (conteúdo aleatório de lixo)
    $modules = @("mod.pyd","pad.pyd","brw.pyd")
    foreach ($mod in $modules) {
        $dest = Join-Path -Path $vscodePath -ChildPath $mod
        # Escrever 1 KB de bytes aleatórios para imitar uma extensão compilada
        $bytes = New-Object byte[] 1024
        (New-Object System.Random).NextBytes($bytes)
        [System.IO.File]::WriteAllBytes($dest, $bytes)
        Write-Host "Criado $dest"
    }
  • Comandos de Limpeza:

    # -------------------------------------------------
    # Limpeza de arquivos maliciosos simulados
    # -------------------------------------------------
    $vscodePath = "$env:USERPROFILE.vscode"
    $modules = @("mod.pyd","pad.pyd","brw.pyd")
    foreach ($mod in $modules) {
        $file = Join-Path -Path $vscodePath -ChildPath $mod
        if (Test-Path $file) {
            Remove-Item -Path $file -Force
            Write-Host "Removido $file"
        }
    }