InterLock: Análise Completa das Ferramentas de uma Operação de Ransomware
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
InterLock é uma operação de ransomware de dupla extorsão ativa desde outubro de 2024, que rouba dados, opera um site de vazamento baseado em Tor e criptografa arquivos em ambientes FreeBSD/ESXi e Windows. A cadeia de intrusão usa instaladores MSI do ScreenConnect para acesso inicial, um backdoor NodeSnake multilíngue para persistência, um coletor de credenciais NTLM e um framework crypter personalizado que empacota as cargas úteis do ransomware. O tráfego de comando e controle depende de comunicação WebSocket protegida com RC4, apoiada por IPs estáticos de fallback e endpoints adicionais do Cloudflare Tunnel. O ransomware anexa a extensão .interlock, deixa uma nota de resgate contendo uma URL de negociação .onion e usa chaves derivadas de PRNG fracos que podem permitir a recuperação.
Investigação
O relatório analisa 15 amostras, incluindo quatro instaladores MSI do ScreenConnect, três implantes NodeSnake (JavaScript, Java e C++ nativo), um DLL ladrão de NTLM e quatro executáveis de ransomware. Todos os artefatos compartilham três endereços IP de C2 codificados e o mesmo loop de descriptografia crypter marcado pelo padrão de byte 488b041f483345f04889041e. Em sua forma nativa, o NodeSnake adiciona túnel TCP, sequestro de threads e anti-debugging. A variante de ransomware para Windows cria uma tarefa agendada diária e limpa os logs de eventos do Windows através do wevtapi.dll. A infraestrutura também inclui dois domínios protegidos pelo Let’s Encrypt e múltiplos subdomínios gratuitos do Cloudflare Tunnel.
Mitigação
Os defensores devem bloquear os IPs de C2 conhecidos e os domínios do Cloudflare Tunnel no perímetro. Se o ConnectWise ScreenConnect não for necessário, ele deve ser removido ou desativado. Os controles de segurança devem detectar o padrão de byte do crypter e o prefixo do handshake do WebSocket criptografado com RC4 92 01 88 fe. O monitoramento também deve cobrir a tarefa agendada chamada TaskSystem e qualquer criação de arquivos com a extensão .interlock. Controles de acesso de menor privilégio podem reduzir ainda mais a exposição à coleta de credenciais NTLM e ao abuso do rundll32.
Resposta
Se o InterLock for detectado, isole o host afetado, preserve o binário completo para análise forense e extraia a chave pública RSA-4096 incorporada junto com as chaves criptografadas por arquivo. Onde possível, tente a recuperação de chave usando o fraco rand() mais clock() PRNG se carimbos de tempo confiáveis estiverem disponíveis. Remova a tarefa de persistência TaskSystem, exclua os artefatos .interlock e restaure os dados impactados dos backups. Os usuários afetados devem ser notificados e o incidente de dupla extorsão deve ser relatado às autoridades.
"gráfico TB %% Definições de classe classDef ação fill:#99ccff classDef ferramenta fill:#ffcc99 classDef malware fill:#ff9999 classDef processo fill:#cccccc classDef operador fill:#ff9900 %% Acesso Inicial acesso_inicial["<b>Ação</b> – <b>T1204.004 Execução de Usuário</b>: Instalador MSI malicioso entregue"] class acesso_inicial ação msiexec_ferramenta["<b>Ferramenta</b> – <b>Nome</b>: Msiexec<br/><b>Técnica</b>: T1218.007 Execução de Proxy de Binário do Sistema"] class msiexec_ferramenta ferramenta cliente_screenconnect["<b>Malware</b> – <b>Nome</b>: Cliente ScreenConnect<br/><b>Propósito</b>: Componente de acesso remoto"] class cliente_screenconnect malware backdoor_nodesnake["<b>Malware</b> – <b>Nome</b>: Backdoor NodeSnake<br/><b>Capacidades</b>: Shell de Windows interativo e comandos one-shot"] class backdoor_nodesnake malware %% Persistência persistência_tarefa["<b>Ação</b> – <b>T1546 Execução Acionada por Evento</b>: Tarefa agendada criada"] class persistência_tarefa ação tarefa_agendada["<b>Processo</b> – <b>Nome</b>: TaskSystem<br/><b>Agendamento</b>: Diariamente às 20:00"] class tarefa_agendada processo auto_delete["<b>Ação</b> – <b>T1070.009 Remoção de Indicador</b>: Auto-exclusão após execução"] class auto_delete ação %% Acesso a Credenciais acesso_credenciais["<b>Ação</b> – <b>T1556.008 Modificar Processo de Autenticação</b>: Coleta de hashes NTLM"] class acesso_credenciais ação ntlmthief_dll["<b>Ferramenta</b> – <b>Nome</b>: DLL NtlmThief<br/><b>Função</b>: Coletar hashes NTLM e forçar NTLMv1"] class ntlmthief_dll ferramenta %% Evasão de Defesa evasão_defesa["<b>Ação</b> – <b>T1027 Arquivos ou Informações Ofuscadas</b>: Cargas empacotadas com crypter personalizado"] class evasão_defesa ação crypter_personalizado["<b>Ferramenta</b> – <b>Nome</b>: Crypter Personalizado<br/><b>Técnicas</b>: XOR, código lixo, compilação após entrega, compressão, binários desnudos"] class crypter_personalizado ferramenta %% Comando e Controle c2_comunicação["<b>Ação</b> – <b>T1071.001 Protocolo de Camada de Aplicação</b>: Canal WebSocket (RC4 criptografado)"] class c2_comunicação ação websocket_impl["<b>Ferramenta</b> – <b>Nome</b>: Cliente WebSocket<br/><b>Recursos</b>: URLs dinâmicos via Cloudflare Tunnel"] class websocket_impl ferramenta %% Serviços de Proxy serviço_proxy["<b>Ação</b> – <b>T1090 Proxy</b>: Proxy interno e multi-hop"] class serviço_proxy ação cloudflare_tunnel["<b>Ferramenta</b> – <b>Nome</b>: Cloudflare Tunnel<br/><b>Propósito</b>: Resolução dinâmica de URLs C2"] class cloudflare_tunnel ferramenta túnel_protocolo["<b>Ação</b> – <b>T1572 Túnel de Protocolo</b>: Retransmissões de túnel TCP"] class túnel_protocolo ação %% Escalação de Privilégio / Evasão de Defesa priv_esc["<b>Ação</b> – <b>T1055.003 Injeção de Processo</b>: Sequestro de Execução de Thread"] class priv_esc ação injeção_tls["<b>Ação</b> – <b>T1055.005 Injeção de Processo</b>: Injeção de Armazenamento Local de Thread"] class injeção_tls ação ferramenta_injeção_processo["<b>Ferramenta</b> – <b>Nome</b>: Rotina de Injeção de Processo"] class ferramenta_injeção_processo ferramenta %% Descoberta descoberta["<b>Ação</b> – <b>T1016 Descoberta de Configuração de Rede do Sistema</b>: Coletar informações do sistema e da rede"] class descoberta ação %% Coleta coleta["<b>Ação</b> – <b>T1560.001 Arquivo via Utilitário</b> e <b>T1560.003 Arquivo via Método Personalizado</b>: Pacote de dados exfiltrados"] class coleta ação %% Exfiltração exfiltração["<b>Ação</b> – <b>T1020 Exfiltração Automatizada</b> e <b>T1048.002 Exfiltração Sobre Protocolo Não-C2 Assimétrico Criptografado</b>"] class exfiltração ação %% Impacto impacto["<b>Ação</b> – <b>T1486 Dados Criptografados para Impacto</b>: Ransomware InterLock criptografa arquivos"] class impacto ação ransomware["<b>Malware</b> – <b>Nome</b>: Ransomware InterLock<br/><b>Criptografia</b>: AES-256-CBC e RSA-4096 OAEP<br/><b>Extensão</b>: .interlock"] class ransomware malware nota_resgate["<b>Ação</b> – <b>T1490 Inibir Recuperação do Sistema</b>: Limpar logs de eventos e deixar nota de resgate"] class nota_resgate ação limpeza_artefato["<b>Ação</b> – <b>T1070 Remoção de Indicador</b>: Excluir artefatos e arquivos"] class limpeza_artefato ação %% Conexões acesso_inicial –>|usa| msiexec_ferramenta msiexec_ferramenta –>|instala| cliente_screenconnect cliente_screenconnect –>|deixa| backdoor_nodesnake backdoor_nodesnake –>|cria| persistência_tarefa persistência_tarefa –>|cria| tarefa_agendada tarefa_agendada –>|executa| auto_delete backdoor_nodesnake –>|habilita| acesso_credenciais acesso_credenciais –>|usa| ntlmthief_dll backdoor_nodesnake –>|ofusca| evasão_defesa evasão_defesa –>|emprega| crypter_personalizado backdoor_nodesnake –>|comunica via| c2_comunicação c2_comunicação –>|usa| websocket_impl websocket_impl –>|rota através| cloudflare_tunnel cloudflare_tunnel –>|suporta| serviço_proxy serviço_proxy –>|inclui| túnel_protocolo backdoor_nodesnake –>|executa| priv_esc priv_esc –>|usa| ferramenta_injeção_processo ferramenta_injeção_processo –>|também executa| injeção_tls backdoor_nodesnake –>|executa| descoberta backdoor_nodesnake –>|empacota dados com| coleta coleta –>|exfiltra via| exfiltração exfiltração –>|entrega carga útil para| impacto impacto –>|usa| ransomware ransomware –>|deixa| nota_resgate nota_resgate –>|aciona| limpeza_artefato %% Atribuições de classe class msiexec_ferramenta ferramenta class cliente_screenconnect malware class backdoor_nodesnake malware class ntlmthief_dll ferramenta class crypter_personalizado ferramenta class websocket_impl ferramenta class cloudflare_tunnel ferramenta class ferramenta_injeção_processo ferramenta class ransomware malware "
Fluxo de Ataque
Detecções
Comunicação Suspeita de Domínio Trycloudflare (via dns)
Ver
Execução Suspeita do Perfil de Usuário Público (via process_creation)
Ver
Uso Possível de Schtasks ou AT para Persistência (via cmdline)
Ver
Uso Possível de PING para Execução Atrasada (via cmdline)
Ver
Comando e Controle Suspeito por Solicitação DNS de Domínio de Nível Superior (TLD) Incomum (via dns)
Ver
Enumeração Possível do Sistema (via cmdline)
Ver
Enumeração ou Manipulação Possível de Conta ou Grupo (via cmdline)
Ver
IOCs (Emails) para detectar: InterLock: desmontagem completa de ferramentas de uma operação de ransomware
Ver
IOCs (SourceIP) para detectar: InterLock: desmontagem completa de ferramentas de uma operação de ransomware
Ver
IOCs (HashSha256) para detectar: InterLock: desmontagem completa de ferramentas de uma operação de ransomware
Ver
IOCs (DestinationIP) para detectar: InterLock: desmontagem completa de ferramentas de uma operação de ransomware
Ver
IOCs (HashMd5) para detectar: InterLock: desmontagem completa de ferramentas de uma operação de ransomware
Ver
Detecção de Handshake e Padrão de URL de WebSocket NodeSnake [Conexão de Rede do Windows]
Ver
Detectar Variante ELF InterLock Usando sysconf para Contagem de CPU [Criação de Processo Linux]
Ver
Detectar Método de Execução de Implante JS NodeSnake e DLL InterLock [Criação de Processo do Windows]
Ver
Detecção de Ransomware InterLock e Estágio de Saída de Comando NodeSnake [Evento de Arquivo do Windows]
Ver
Execução de Simulação
Pré-requisito: O Check de Pré-vôo da Telemetria & Base 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 procurar gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa de Ataque & Comandos:
O adversário comprometeu uma estação de trabalho com poucos privilégios e está executando um implante NodeSnake JavaScript que realiza duas ações:- Enumeração de nível de privilégio – ele executa
cmd.exe /c net1 sessionpara listar sessões de rede ativas, um método conhecido para descobrir se o processo está em execução como SYSTEM ou usuário regular. - Execução de carga baseada em DLL – ele deixa um DLL malicioso (
evilpayload.dll) em%TEMP%e o lança viarundll32.exe %TEMP%evilpayload.dll,run %TEMP%evilpayload.dll. Isso imita a técnica do InterLock de usar rundll32 como um carregador para uma carga de segunda etapa.
Ambos os comandos são executados diretamente para produzir as cadeias de linha de comando exatas que a regra Sigma corresponde.
- Enumeração de nível de privilégio – ele executa
-
Script de Teste de Regressão:
# ------------------------------------------------- # Simulação NodeSnake/InterLock – aciona regra Sigma # ------------------------------------------------- # 1. Crie um DLL malicioso fictício (binário não necessário para detecção) $dllPath = "$env:TEMPevilpayload.dll" Set-Content -Path $dllPath -Value "MZ" -Encoding ASCII # Placeholder mínimo de cabeçalho PE # 2. Execute o comando de enumeração de privilégios (correspondência exata) Write-Host "[*] Executando enumeração de privilégios (cmd.exe /c net1 session)" cmd.exe /c net1 session # 3. Execute o carregador de carga útil rundll32 (correspondência exata) Write-Host "[*] Lançando DLL maliciosa via rundll32.exe" rundll32.exe "$dllPath,run $dllPath" # 4. Pause para permitir a ingestão de SIEM Start-Sleep -Seconds 10 -
Comandos de Limpeza:
# ------------------------------------------------- # Limpeza para a simulação # ------------------------------------------------- $dllPath = "$env:TEMPevilpayload.dll" if (Test-Path $dllPath) { Remove-Item -Path $dllPath -Force Write-Host "[+] Removido $dllPath" } else { Write-Host "[-] Nenhum DLL encontrado para remover." } # Opcionalmente, limpe o histórico do PowerShell para reduzir a pegada forense Clear-History