Software falso no GitHub e SourceForge distribuem Deno RAT por Gabriele Orini
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Atores de ameaça estão distribuindo instaladores e plug-ins falsos para softwares amplamente utilizados através do GitHub e SourceForge para entregar uma backdoor baseada em Deno conhecida como DinDoor. O malware instala o runtime Deno através do Scoop ou WinGet, então lança um RAT em JavaScript capaz de roubar dados, executar comandos remotos e habilitar streaming de vídeo ponto a ponto. Pacotes MSI maliciosos e scripts PowerShell são usados para iniciar a cadeia de infecção, enquanto o tráfego de comando e controle é transmitido via HTTP ou WebSocket. A campanha também abusa de canais comprometidos no YouTube para direcionar as vítimas aos repositórios maliciosos.
Investigação
Pesquisadores reconstruíram toda a sequência de infecção, começando com comandos curl que baixaram um arquivo MSI, seguidos por scripts de instalação que implantaram o Scoop, WinGet e Deno antes de executar o carregador JavaScript DinDoor. A análise deles documentou as capacidades do RAT, incluindo reconhecimento do sistema, roubo de navegador e carteira de criptografia, VNC sobre WebSocket e streaming ponto a ponto baseado no Edge. A equipe também extraiu indicadores como domínios, URLs, endereços IP e artefatos de linha de comando para apoiar a detecção e caça de ameaças.
Mitigação
As organizações devem baixar software apenas de sites oficiais dos fornecedores e verificar assinaturas digitais antes de executar qualquer instalador. As equipes de segurança devem monitorar o uso incomum do Scoop e do WinGet para instalar o Deno, bem como a implantação inesperada de software baseado em MSI. O tráfego de saída para os domínios e endereços IP maliciosos identificados deve ser bloqueado, e quaisquer atividades de comandos PowerShell que baixem e executem arquivos de fontes não confiáveis devem ser inspecionadas de perto.
Resposta
Os defensores devem gerar alertas sobre msiexec lançando arquivos de URLs suspeitas do GitHub ou SourceForge, em chaves de registro Run que iniciam deno.exe, e na comunicação de rede com a infraestrutura de comando e controle conhecida. Hosts afetados devem passar por revisão forense para localizar scripts descartados, o runtime Deno e quaisquer mecanismos de persistência. Sistemas comprometidos devem ser isolados imediatamente, e todas as instalações não autorizadas do Deno devem ser removidas.
"graph TB %% Class definitions classDef technique fill:#99ccff classDef tool fill:#ffcc99 classDef operator fill:#ff9900 %% Attack steps as technique nodes step1_malicious_link["<b>Técnica</b> – <b>T1204.001 Execução pelo Usuário: Link Malicioso</b><br/>A vítima clica em um link malicioso no YouTube que redireciona para um projeto falso no GitHub ou SourceForge"] class step1_malicious_link technique step1_content_injection["<b>Técnica</b> – <b>T1659 Injeção de Conteúdo</b><br/>Canais do YouTube comprometidos injetam URLs maliciosas em descrições de vídeos ou comentários"] class step1_content_injection technique step2_msiexec["<b>Técnica</b> – <b>T1218.007 Execução por Proxy de Binário do Sistema: Msiexec</b><br/>Comando baixa um arquivo MSI e o executa via msiexec"] class step2_msiexec technique step3_installer_pkg["<b>Técnica</b> – <b>T1546.016 Execução por Evento: Pacotes de Instalador</b><br/>Script PowerShell utiliza Scoop ou WinGet para instalar o runtime Deno"] class step3_installer_pkg technique step4_logon_script["<b>Técnica</b> – <b>T1037.001 Scripts de Inicialização ou Logon: Script de Logon</b><br/>Cria uma chave de registro Run que lança a backdoor Deno no logon"] class step4_logon_script technique step5_reflective_load["<b>Técnica</b> – <b>T1620 Carregamento de Código Reflexivo</b><br/>Backdoor executa um loop de avaliação que busca e executa código JavaScript inteiramente na memória"] class step5_reflective_load technique step6_c2["<b>Técnica</b> – <b>T1102 Serviço Web</b> e <b>T1102.002 Comunicação Bidirecional</b><br/>Usa endpoints HTTP e um canal personalizado de WebSocket VNC para comando e controle"] class step6_c2 technique step7_browser_creds["<b>Técnica</b> – <b>T1555.003 Credenciais de Armazenamentos de Senha: Navegadores Web</b><br/>Stealer extrai senhas salvas do navegador"] class step7_browser_creds technique step7_input_capture["<b>Técnica</b> – <b>T1056 Captura de Entrada</b><br/>Registro de teclas e captura de formulário para obter credenciais"] class step7_input_capture technique step7_clipboard["<b>Técnica</b> – <b>T1115 Dados da Área de Transferência</b><br/>Coleta conteúdos da área de transferência que podem conter dados sensíveis"] class step7_clipboard technique step8_browser_discovery["<b>Técnica</b> – <b>T1217 Descoberta de Informações do Navegador</b><br/>Coleta arquivos de carteiras de criptomoeda, dados do navegador e capturas de tela"] class step8_browser_discovery technique step9_exfil["<b>Técnica</b> – <b>T1011 Exfiltração por Outro Meio de Rede</b><br/>Transmite dados coletados pelos mesmos canais HTTP/WebSocket"] class step9_exfil technique step10_process_injection["<b>Técnica</b> – <b>T1055.005 Injeção de Processo: Armazenamento Local de Thread</b><br/>Injeta código malicioso em processos legítimos usando TLS"] class step10_process_injection technique step11_indirect_exec["<b>Técnica</b> – <b>T1202 Execução de Comando Indireto</b><br/>Utiliza msiexec para a execução por proxy de cargas úteis adicionais"] class step11_indirect_exec technique %% Optional tool nodes tool_msiexec["<b>Ferramenta</b> – <b>Nome</b>: msiexec<br/><b>Descrição</b>: Executável do Instalador do Windows usado para execução por proxy"] class tool_msiexec tool tool_powershell["<b>Ferramenta</b> – <b>Nome</b>: PowerShell<br/><b>Descrição</b>: Ambiente de script usado para dirigir pacotes de instalador"] class tool_powershell tool tool_deno["<b>Ferramenta</b> – <b>Nome</b>: Deno<br/><b>Descrição</b>: Runtime que hospeda a backdoor JavaScript"] class tool_deno tool %% Connections showing the attack flow step1_malicious_link –>|leva a| step2_msiexec step1_content_injection –>|suporta| step2_msiexec step2_msiexec –>|usa| tool_msiexec step2_msiexec –>|aciona| step3_installer_pkg step3_installer_pkg –>|usa| tool_powershell step3_installer_pkg –>|instala| tool_deno step3_installer_pkg –>|habilita| step4_logon_script step4_logon_script –>|estabelece| step5_reflective_load step5_reflective_load –>|fornece| step6_c2 step6_c2 –>|facilita| step7_browser_creds step6_c2 –>|facilita| step7_input_capture step6_c2 –>|facilita| step7_clipboard step7_browser_creds –>|alimenta em| step8_browser_discovery step7_input_capture –>|alimenta em| step8_browser_discovery step7_clipboard –>|alimenta em| step8_browser_discovery step8_browser_discovery –>|enviado via| step9_exfil step9_exfil –>|usa canal de| step6_c2 step5_reflective_load –>|habilita| step10_process_injection step10_process_injection –>|escalona privilégios para| step11_indirect_exec step11_indirect_exec –>|executa| step2_msiexec class step1_malicious_link,step1_content_injection,step2_msiexec,step3_installer_pkg,step4_logon_script,step5_reflective_load,step6_c2,step7_browser_creds,step7_input_capture,step7_clipboard,step8_browser_discovery,step9_exfil,step10_process_injection,step11_indirect_exec technique class tool_msiexec,tool_powershell,tool_deno tool "
Fluxo de Ataque
Detecções
LOLBAS Conhost (via linha de comando)
Ver
Comando e Controle Suspeito por Solicitação DNS de Domínio de Nível Superior (TLD) Incomum (via DNS)
Ver
IOCs (SourceIP) para detectar: Software falso no GitHub e SourceForge distribui Deno RAT por Gabriele Orini
Ver
IOCs (DestinationIP) para detectar: Software falso no GitHub e SourceForge distribui Deno RAT por Gabriele Orini
Ver
Detecção de Comunicação C2 do DinDoor RAT [Conexão de Rede do Windows]
Ver
Detecção da Distribuição do Deno RAT via Instaladores Falsos [Criação de Processo do Windows]
Ver
Execução do PowerShell com Janela Oculta e Política de Execução Ignorada [Windows PowerShell]
Ver
Execução de Simulação
Pré-requisito: O Verificador de Pré-voo de Telemetria & Baseline deve ter sido aprovado.
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 objetivar gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa do Ataque e Comandos:
Um atacante obteve acesso inicial por meio de um script CMD malicioso entregue em um anexo de phishing. Para manter furtividade, o script executa o PowerShell com uma janela oculta, desativa a política de execução e executa uma carga útil codificada em base64 que baixa e executa uma carga útil de segunda etapa. A linha de comando exata corresponde às três substrings sinalizadas pela regra, garantindo a detecção.-
Estágio 1 – Lançador CMD (simulado pelo testador):
@echo off start "" powershell.exe -NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -EncodedCommand %payload% -
Estágio 2 – Carga útil do PowerShell (codificado em base64, inofensivo para teste):
$cmd = 'Write-Output "Malicious simulation executed"' $bytes = [System.Text.Encoding]::Unicode.GetBytes($cmd) $b64 = [Convert]::ToBase64String($bytes) echo $b64 # Insira este valor como %payload% no arquivo em lote
-
-
Script de Teste de Regressão: O script abaixo automatiza todo o fluxo, gerando o comando codificado, lançando o PowerShell com as flags necessárias e, em seguida, pausando brevemente para permitir que o SIEM ingira o evento.
# ------------------------------------------------- # Teste de Regressão – PowerShell Oculto + Ignorar PE # ------------------------------------------------- # 1) Elaborar uma carga útil inofensiva (Write‑Output) $payload = 'Write-Output "Malicious simulation executed"' # 2) Codificar carga útil em base64 (codificação Unicode, conforme esperado pelo PowerShell) $bytes = [System.Text.Encoding]::Unicode.GetBytes($payload) $b64 = [Convert]::ToBase64String($bytes) # 3) Lançar o PowerShell com o conjunto exato de flags exigido pela regra Sigma $psCmd = @( 'powershell.exe', '-NoProfile', '-ExecutionPolicy', 'Bypass', '-WindowStyle', 'Hidden', '-EncodedCommand', $b64 ) -join ' ' Write-Host "Executing:`n$psCmd" Start-Process -FilePath "powershell.exe" -ArgumentList "-NoProfile","-ExecutionPolicy","Bypass","-WindowStyle","Hidden","-EncodedCommand",$b64 -WindowStyle Hidden # 4) Aguardar para que o registro se propague (ajuste conforme necessário) Start-Sleep -Seconds 10 Write-Host "Simulação completa – verifique o SIEM para detecção." -
Comandos de Limpeza: Remova todos os arquivos temporários (nenhum criado aqui) e certifique-se de que não restem processos do PowerShell.
# Matar quaisquer processos do PowerShell remanescentes gerados pelo teste (excluindo a sessão atual) Get-Process -Name powershell | Where-Object { $_.Id -ne $PID } | Stop-Process -Force Write-Host "Limpeza completa."