← Voltar ao blog

Detectando atividade de ransomware no journal USN

Mesmo quando o binário sumiu, o ransomware deixa uma impressão muito característica em $UsnJrnl:$J. Visão geral dos padrões a procurar e das combinações de códigos de razão correspondentes.

4 min de leitura

Ransomware é um dos sinais mais limpos no journal USN. Tudo o que o operador tenha feito — roubo de credenciais, movimento lateral, persistência — a fase de criptografia toca o sistema de arquivos com um padrão uniforme e de alto volume que se destaca mesmo meses depois. Este artigo descreve como é esse padrão e como encontrá-lo.

A suposição é que você já extraiu o $J e o parseou (o parser desta página serve; também usnrs e outros). Para um lembrete sobre o bitmask de razão, nosso post dedicado é a referência de campo.

O padrão canônico

A maioria dos ransomware modernos (LockBit, BlackCat/ALPHV, Royal, Akira, as variantes pós-Conti etc.) segue a mesma receita em três passos por arquivo:

  1. Abrir o arquivo para leitura.
  2. Sobrescrever o conteúdo no lugar — ou escrever um novo arquivo ao lado e excluir o original.
  3. Renomear adicionando uma extensão marcadora (.locked, .lockbit, uma string aleatória de 8 caracteres, ou nenhuma em algumas famílias).

No journal, isso produz, para cada arquivo:

DataOverwrite | Close
DataOverwrite | Close
…           ← repetido, um por bloco de escrita
RenameOldName | Close   (antigo: document.docx)
RenameNewName | Close   (novo: document.docx.locked)

Os dois sinais distintivos:

  • Rajadas de DataOverwrite em uma janela curta sobre milhares de arquivos. Atividade normal raramente produz DataOverwrite contínuos em arquivos não-banco-de-dados.
  • RenameNewName em massa com sufixos de extensão idênticos. A proporção de novos nomes por arquivo ativo explode durante a criptografia.

No MITRE ATT&CK, isso corresponde principalmente a T1486 Data Encrypted for Impact e ao comportamento de renomeação associado.

Receita prática de detecção

Em cima de um journal parseado:

  1. Histograma os DataOverwrite por minuto. Plotar ou simplesmente bucketizar por minuto e procurar o despenhadeiro. Um host Windows normal exibe uma baseline baixa estável (alguns por minuto), interrompida por rajadas de aplicação (save do Office, cache do Chrome). Um ransomware exibe um pico sustentado de 50–500× sobre essa baseline, que só para quando o host acaba de arquivos.
  2. Clusterize os RenameNewName. Agrupar por nova extensão ou por regex sobre o novo nome. Se 80% das renomeações de uma janela compartilham o mesmo sufixo ou o mesmo padrão .{8}, é um encriptador.
  3. Cruze com FileDelete | Close. Algumas famílias escrevem o cifrado em um arquivo novo e excluem o original. Casar com um FileCreate de mesmo radical e extensão diferente emitido no mesmo segundo.
  4. Suba ao diretório pai. Ransomwares que criptografam todos os subdiretórios do perfil do usuário ou todos os compartilhamentos batem em Users\<user>\Documents, Users\<user>\Desktop, cada raiz de unidade mapeada. Os caminhos completos resolvidos pelo MFT tornam isso trivial.

O parser deste site expõe o filtro por razão diretamente — colocar em DataOverwrite para o passo 1, RenameNewName para o passo 2.

Como os dados se parecem

Trecho redigido de um caso real de LockBit 3.0:

2024-04-12T03:14:08Z  DataOverwrite Close   C:\Users\ana\Desktop\notes.docx
2024-04-12T03:14:08Z  DataOverwrite Close   C:\Users\ana\Desktop\notes.docx
2024-04-12T03:14:08Z  DataOverwrite Close   C:\Users\ana\Desktop\notes.docx
2024-04-12T03:14:08Z  RenameOldName Close   C:\Users\ana\Desktop\notes.docx
2024-04-12T03:14:08Z  RenameNewName Close   C:\Users\ana\Desktop\notes.docx.HLJkNskOq
2024-04-12T03:14:08Z  DataOverwrite Close   C:\Users\ana\Desktop\quarterly.xlsx
…

Cada arquivo do diretório é criptografado dentro do mesmo segundo de relógio. A nova extensão é uma string aleatória uniforme de 9 caracteres — sinal de cluster forte para o passo 2.

Além da fase de criptografia

O journal também captura comportamentos preparatórios e de limpeza:

  • Exclusão de shadow copies: não visível em $J (vive em namespaces gerenciados por $WSC), mas um FileCreate de arquivos temporários disparados por vssadmin.exe aparece momentos antes da rajada de criptografia.
  • Varreduras de discovery: muitas famílias enumeram o volume por listagem de diretório, o que não produz entradas no journal — mas se o operador deixou ferramentas como adfind.exe ou PsExec.exe, você verá os FileCreate deles.
  • Entrega da nota: toda família moderna escreve uma nota de resgate em cada diretório criptografado. Um FileCreate do mesmo nome de arquivo (README.txt, HOW_TO_DECRYPT.html etc.) em muitos diretórios no mesmo minuto é a regex preguiçosa que pega a maior parte.

O que o journal não vai te dizer

O journal USN registra mudanças no sistema de arquivos, não atores. Para amarrar um usuário ou processo à rajada de criptografia você precisa:

Para o playbook de resposta mais amplo, o guia #StopRansomware da CISA é a referência de autoridade.

Uma nota sobre o ruído de baseline

Alguns comportamentos legítimos se parecem superficialmente com ransomware:

  • Implantação de criptografia de disco (conversão inicial do BitLocker) produz uma rajada contínua de DataOverwrite — mas não produz eventos RenameNewName. Falso positivo fácil de descartar.
  • Software de backup como Veeam ou Macrium pode produzir rajadas de DataOverwrite no volume de destino. Sempre cruzar o usuário/caminho.
  • AutoSalvar do Office ou rebuilds do Visual Studio soltam rajadas curtas. O histograma por minuto os deixa óbvios — são transitórios, ransomware é monotônico.

Se sua lógica de detecção não emite alertas em cima da baseline, está subespecificada. O sinal que você quer é a combinação de taxa de DataOverwrite, taxa de RenameNewName e clusterização de extensão — não qualquer um deles sozinho.