Caçando Lazarus: Dentro da Infraestrutura de C2 da Entrevista Contagiosa
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Red Asgard relatou um comprometimento da cadeia de suprimentos ligado a um projeto de criptomoeda promovido via Upwork, onde operadores do Lazarus incorporaram código malicioso no processo de construção/workflow. A cadeia abusa da execução automática de tarefas do VSCode, de um backdoor Node.js implementado através do construtor Function, e da entrega de carga útil protegida por cookies para buscar JavaScript malicioso da infraestrutura de comando-e-controle hospedada no Vercel. O stack C2 é dividido em domínios Vercel de primeiro estágio e servidores Windows dedicados de segundo estágio, os quais entregam um backdoor Python pesadamente ofuscado com funcionalidade de mineração XMRig. A campanha também utiliza dead drops no Pastebin, um protocolo binário personalizado e compartimentação estrita de credenciais para complicar a análise e o desmantelamento.
Investigação
Os pesquisadores enumeraram três domínios Vercel expondo endpoints autenticados por token e identificaram cinco sistemas C2 dedicados executando Express.js on porta 1244. Eles também documentaram uma técnica de timing-oracle usada para inferir ou enumerar tokens de campanhas ativas. A engenharia reversa de uma carga útil com 64 camadas revelou, em última análise, um componente trojanizado que persiste através do posicionamento na pasta de Inicialização e criação de tarefas agendadas. Descobertas adicionais incluíram credenciais MongoDB hard-coded, aproximadamente 1.000 URLs de dead drops no Pastebin, e ouvintes de protocolo Z238 personalizado em várias portas.
Mitigação
Bloquear comunicações de saída para os domínios Vercel identificados e restringir egressos para as portas 1244, 1249, e 22411–22412. Monitorar a criação de Windows Update Script.pyw em locais de Inicialização, tarefas agendadas chamadas “Runtime Broker” e execução suspeita de msedge.exe consistente com disfarce de minerador. Detectar processos Node.js invocando Function.constructor e atividade HTTP POST anômala para endpoints /keys. Reduzir a exposição desabilitando tarefas automáticas do VSCode e revisando scripts de pacote antes de executar npm install ou passos de construção em repositórios não confiáveis.
Resposta
Se indicadores forem observados, isolar o sistema afetado, terminar processos suspeitos e preservar artefatos de memória e disco para revisão forense. Revogar quaisquer credenciais MongoDB expostas e rotacionar todos os segredos de contas de serviço relevantes. Executar um inventário de contas e acessos para identificar usuários impactados, depois redefinir credenciais e invalidar sessões/tokens ativos. Notificar partes interessadas internas e coordenar com as autoridades se houver evidência de roubo de criptomoedas ou comprometimento de carteiras.
“graph TB %% Class definitions classDef technique fill:#cce5ff classDef artifact fill:#e2f7d6 %% Step 1 u2013 Phishing via Service tech_phishing[“<b>Técnica</b> – <b>T1566.003 Phishing: Spearphishing via Service</b><br/><b>Descrição</b>: O atacante se passou por um freelancer no Upwork e postou uma entrevista de emprego falsa para entregar um repositório de código malicioso.”] class tech_phishing technique artifact_upwork[“<b>Artefato</b> – <b>Nome</b>: Anúncio de Emprego Falso no Upwork<br/><b>Propósito</b>: Atrair a vítima para baixar um repositório malicioso.”] class artifact_upwork artifact tech_phishing u002du002d>|entrega| artifact_upwork %% Step 2 u2013 Comprometimento da Cadeia de Suprimentos tech_supplychain[“<b>Técnica</b> – <b>T1195.001 Comprometimento da Cadeia de Suprimentos: Comprometer Dependências de Software e Ferramentas de Desenvolvimento</b><br/><b>Descrição</b>: VSCode <code>tasks.json</code> malicioso e código JavaScript injetado no repositório.”] class tech_supplychain technique artifact_tasksjson[“<b>Artefato</b> – <b>Nome</b>: VSCode <code>tasks.json</code><br/><b>Conteúdo</b>: Definição de Tarefa maliciosa invocando o construtor de função JavaScript e <code>getCookie()</code>.”] class artifact_tasksjson artifact artifact_upwork u002du002d>|contém| artifact_tasksjson artifact_tasksjson u002du002d>|permite| tech_supplychain %% Step 3 u2013 Execução pelo Usuário tech_userexec[“<b>Técnica</b> – <b>T1204.002 Execução pelo Usuário: Arquivo Malicioso</b><br/><b>Descrição</b>: A vítima abriu a pasta do projeto no VSCode, acionando a autoexecução das tarefas maliciosas.”] class tech_userexec technique artifact_tasksjson u002du002d>|acionado por| tech_userexec %% Step 4 u2013 Execução de JavaScript tech_jsexec[“<b>Técnica</b> – <b>T1059.007 Interpretador de Comando e Script: JavaScript</b><br/><b>Descrição</b>: JavaScript executado via tarefas do VSCode e construtor de funções para baixar cargas adicionais.”] class tech_jsexec technique tech_userexec u002du002d>|leva a| tech_jsexec %% Step 5 u2013 Backdoor em Python tech_python[“<b>Técnica</b> – <b>T1059.006 Interpretador de Comando e Script: Python</b><br/><b>Descrição</b>: Backdoor em Python fortemente ofuscado (<code>bro_*.js</code>) baixado e executado no host da vítima.”] class tech_python technique artifact_python_backdoor[“<b>Artefato</b> – <b>Nome</b>: Backdoor em Python Ofuscado (<code>bro_*.js</code>)<br/><b>Características</b>: Codificação e decodificação em múltiplas camadas.”] class artifact_python_backdoor artifact tech_jsexec u002du002d>|baixa| artifact_python_backdoor artifact_python_backdoor u002du002d>|executa| tech_python %% Step 6 u2013 Persistência no Início tech_startup[“<b>Técnica</b> – <b>T1037.005 Scripts de Inicialização: Itens de Inicialização</b><br/><b>Descrição</b>: Persistência ao colocar <code>Windows Update Script.pyw</code> na pasta de Inicialização.”] class tech_startup technique artifact_startup_script[“<b>Artefato</b> – <b>Nome</b>: <code>Windows Update Script.pyw</code><br/><b>Localização</b>: Pasta de Inicialização”] class artifact_startup_script artifact tech_python u002du002d>|cria| artifact_startup_script artifact_startup_script u002du002d>|permite| tech_startup %% Step 7 u2013 Tarefa Agendada tech_schedtask[“<b>Técnica</b> – <b>T1053 Tarefa/Job Agendado</b><br/><b>Descrição</b>: Tarefa agendada chamada u201cRuntime Brokeru201d criada para executar no logon.”] class tech_schedtask technique artifact_schedtask[“<b>Artefato</b> – <b>Nome</b>: Tarefa Agendada u201cRuntime Brokeru201d<br/><b>Acionador</b>: No logon do usuário”] class artifact_schedtask artifact tech_startup u002du002d>|adiciona| artifact_schedtask artifact_schedtask u002du002d>|executa| tech_schedtask %% Step 8 u2013 Colheita de Credenciais de Navegadores tech_credbrowser[“<b>Técnica</b> – <b>T1555.003 Credenciais de Armazenamento de Senhas: Credenciais de Navegadores Web</b><br/><b>Descrição</b>: Malware coletou dados de perfis de navegadores e credenciais armazenadas.”] class tech_credbrowser technique artifact_browser_data[“<b>Artefato</b> – <b>Dados</b>: Senhas e cookies extraídos do navegador”] class artifact_browser_data artifact tech_schedtask u002du002d>|coleta| tech_credbrowser tech_credbrowser u002du002d>|armazena| artifact_browser_data %% Step 9 u2013 Roubo de Cookie de Sessão Web tech_stealcookie[“<b>Técnica</b> – <b>T1539 Roubo de Cookie de Sessão Web</b><br/><b>Descrição</b>: A função <code>getCookie()</code> recuperou cookies de sessão do navegador da vítima.”] class tech_stealcookie technique artifact_getcookie[“<b>Artefato</b> – <b>Dados</b>: Cookies de sessão capturados de navegadores”] class artifact_getcookie artifact tech_credbrowser u002du002d>|permite| tech_stealcookie tech_stealcookie u002du002d>|produz| artifact_getcookie %% Step 10 u2013 Uso de Material de Autenticação Alternativo tech_altauth[“<b>Técnica</b> – <b>T1550.004 Uso de Material de Autenticação Alternativo: Cookie de Sessão Web</b><br/><b>Descrição</b>: Cookies colhidos usados posteriormente para sequestrar sessões web autenticadas.”] class tech_altauth technique artifact_getcookie u002du002d>|utilizado por| tech_altauth %% Step 11 u2013 Mascaramento tech_masquerade[“<b>Técnica</b> – <b>T1036.003 Mascaramento: Renomear Utilitários Legítimos</b><br/><b>Descrição</b>: Binários maliciosos renomeados para u201cRuntime Broker.exeu201d e u201cmsedge.exeu201d.”] class tech_masquerade technique artifact_renamed_bins[“<b>Artefato</b> – <b>Arquivos</b>: <code>Runtime Broker.exe</code>, <code>msedge.exe</code> (malicioso)”] class artifact_renamed_bins artifact tech_altauth u002du002d>|entrega| artifact_renamed_bins artifact_renamed_bins u002du002d>|usado em| tech_masquerade %% Step 12 u2013 Comprometimento de Defesas tech_impairdefense[“<b>Técnica</b> – <b>T1562 Comprometimento de Defesas</b><br/><b>Descrição</b>: Exclusões do Windows Defender adicionadas via PowerShell para evadir detecção.”] class tech_impairdefense technique artifact_defender_exclusion[“<b>Artefato</b> – <b>Comando</b>: Script PowerShell adicionando caminhos de exclusão do Defender”] class artifact_defender_exclusion artifact tech_masquerade u002du002d>|executa| artifact_defender_exclusion artifact_defender_exclusion u002du002d>|permite| tech_impairdefense %% Step 13 u2013 Arquivos Ofuscados tech_obfuscation[“<b>Técnica</b> – <b>T1027 Arquivos ou Informações Ofuscadas</b><br/><b>Descrição</b>: Payload utilizou 64 camadas de ofuscação aninhadas (Base85, XOR, zlib, Base64 invertido).”] class tech_obfuscation technique tech_impairdefense u002du002d>|protege| tech_obfuscation %% Step 14 u2013 Ocultar Artefatos tech_hideartifacts[“<b>Técnica</b> – <b>T1564.012 Ocultar Artefatos: Exclusões de Arquivo/Caminho</b><br/><b>Descrição</b>: Exclusões do Defender e arquivos ocultos usados para ocultar artefatos maliciosos.”] class tech_hideartifacts technique tech_obfuscation u002du002d>|facilita| tech_hideartifacts %% Step 15 u2013 Resolver Drop Morto tech_dead_drop[“<b>Técnica</b> – <b>T1102.001 Serviço Web: Resolver Drop Morto</b><br/><b>Descrição</b>: O malware buscou comandos em uma rede de ~1.000 contas de drop morto no Pastebin.”] class tech_dead_drop technique artifact_pastebin[“<b>Artefato</b> – <b>Serviço</b>: Contas no Pastebin de resolver drop morto”] class artifact_pastebin artifact tech_hideartifacts u002du002d>|recupera| artifact_pastebin artifact_pastebin u002du002d>|fornece comandos para| tech_dead_drop %% Step 16 u2013 Exfiltração via FTP tech_exfilftp[“<b>Técnica</b> – <b>T1048.003 Exfiltração via Protocolo Alternativo: Protocolo Não C2 Não Criptografado</b><br/><b>Descrição</b>: Dados coletados exfiltrados via FTP na porta 21.”] class tech_exfilftp technique artifact_ftp[“<b>Artefato</b> – <b>Protocolo</b>: FTP (porta 21) usado para transferência de dados”] class artifact_ftp artifact tech_dead_drop u002du002d>|envia dados via| tech_exfilftp tech_exfilftp u002du002d>|usa| artifact_ftp %% Step 17 u2013 Seqüestro de Recursos (Mineração de Monero) tech_resourcehijack[“<b>Técnica</b> – <b>T1496.001 Seqüestro de Recursos: Seqüestro de Computação</b><br/><b>Descrição</b>: Minerador de Monero XMRig implantado, disfarçado como u201cmsedge.exeu201d, para monetizar hosts infectados.”] class tech_resourcehijack technique artifact_xmrig[“<b>Artefato</b> – <b>Arquivo</b>: Binário do minerador XMRig nomeado <code>msedge.exe</code>”] class artifact_xmrig artifact tech_exfilftp u002du002d>|fornece recursos para| tech_resourcehijack tech_resourcehijack u002du002d>|executa| artifact_xmrig %% Step 18 u2013 Descoberta de Informações do Navegador tech_browserdisc[“<b>Técnica</b> – <b>T1217 Descoberta de Informações do Navegador</b><br/><b>Descrição</b>: O atacante enumerou informações do navegador para localizar credenciais adicionais e dados de sessão.”] class tech_browserdisc technique artifact_browser_info[“<b>Artefato</b> – <b>Dados</b>: Versão do navegador, caminhos de perfil, extensões instaladas”] class artifact_browser_info artifact tech_resourcehijack u002du002d>|coleta| tech_browserdisc tech_browserdisc u002du002d>|reúne| artifact_browser_info “
Fluxo de Ataque
Detecções
Possível Infiltração / Exfiltração de Dados / C2 via Serviços / Ferramentas de Terceiros (via dns)
Visualizar
Alterações Suspeitas nas Preferências do Windows Defender (via powershell)
Visualizar
Binários/ Scripts Suspeitos em Local de Inicialização Automática (via evento_arquivo)
Visualizar
Arquivo oculto foi criado no host Linux (via file_event)
Visualizar
Possível infiltração / exfiltração de dados / C2 via serviços / ferramentas de terceiros (via proxy)
Visualizar
IOCs (Emails) para detectar: Caçando Lazarus: Dentro da Infraestrutura C2 de Entrevista Contagiosa
Visualizar
IOCs (DestinationIP) para detectar: Caçando Lazarus: Dentro da Infraestrutura C2 de Entrevista Contagiosa
Visualizar
IOCs (SourceIP) para detectar: Caçando Lazarus: Dentro da Infraestrutura C2 de Entrevista Contagiosa
Visualizar
IOCs (HashSha256) para detectar: Caçando Lazarus: Dentro da Infraestrutura C2 de Entrevista Contagiosa
Visualizar
Função getCookie suspeita que busca JavaScript malicioso do domínio Vercel [Evento de Arquivo no Windows]
Visualizar
Uso suspeito de Function.constructor em errorHandler.js para RCE no Backend [Evento de Arquivo no Windows]
Visualizar
Mascaramento de Processos Maliciosos como RuntimeBroker e XMRig Miner como msedge.exe [Criação de Processo no Windows]
Visualizar
Configuração Maliciosa de Autoexecução do VSCode [Evento de Arquivo no Windows]
Visualizar
Execução da Simulação
Pré-requisito: O Check de Pré-voo de Telemetria e Linha Base deve ter passado.
Narrativa e Comandos do Ataque
O adversário copia o legítimo RuntimeBroker.exe binário para um local não padrão (%TEMP%) para mascarar-se como um processo confiável enquanto evita a detecção baseada em caminhos de sistema conhecidos. Ao executar a cópia, o evento de criação do processo contém o nome de imagem esperado, mas um caminho que falha na verificação de contenção “System32”, satisfazendo selection_runtime.
Script de Teste de Regressão
# -----------------------------------------------
# TC-20260114-A1B2C – Simulação de Mascaramento
# -----------------------------------------------
# 1. Definir caminhos
$src = "$env:SystemRootSystem32RuntimeBroker.exe"
$dest = "$env:TEMPRuntimeBroker.exe"
# 2. Copiar o binário legítimo para um diretório não-sistema
Copy-Item -Path $src -Destination $dest -Force
# 3. Executar o binário copiado (isso deve acionar a regra Sigma)
Start-Process -FilePath $dest -WindowStyle Hidden
# 4. OPCIONAL: Simular o cenário de mascaramento de msedge (miner)
# (Copiar qualquer executável benigno, renomear para msedge.exe, colocar em %LOCALAPPDATA%MicrosoftWindowsApplications)
$minerSrc = "$env:SystemRootSystem32notepad.exe"
$minerDest = "$env:LOCALAPPDATAMicrosoftWindowsApplicationsmsedge.exe"
Copy-Item -Path $minerSrc -Destination $minerDest -Force
Start-Process -FilePath $minerDest -WindowStyle Hidden
# -----------------------------------------------
Comandos de Limpeza
# Remover as cópias maliciosas
Remove-Item -Path "$env:TEMPRuntimeBroker.exe" -Force -ErrorAction SilentlyContinue
Remove-Item -Path "$env:LOCALAPPDATAMicrosoftWindowsApplicationsmsedge.exe" -Force -ErrorAction SilentlyContinue