← Voltar ao blog

$UsnJrnl e $MFT: journal e tabela de arquivos

· 2 min de leitura

O $MFT é um instantâneo. Descreve como cada arquivo está agora — seus metadados, onde vivem os dados, seu estado de alocação. O que ele não registra é a sequência de mudanças que produziu esse estado. Para isso, o NTFS mantém um segundo artefato: o Update Sequence Number Journal, $UsnJrnl.

O que o $UsnJrnl registra

Toda vez que um arquivo é criado, modificado, renomeado ou excluído, o NTFS anexa ao $UsnJrnl um registro de tamanho fixo descrevendo o evento. Os campos incluem:

  • o USN (um inteiro de 64 bits estritamente crescente);
  • o número de registro MFT do arquivo alterado;
  • o número de registro do diretório pai;
  • uma máscara de motivo: FILE_CREATE, DATA_OVERWRITE, RENAME_OLD_NAME, CLOSE, FILE_DELETE e várias outras;
  • um timestamp.

O resultado é um log cronológico de todo evento significativo do sistema de arquivos desde a criação ou última rotação do journal. Em um sistema típico, cobre dias a semanas.

Onde fica

O $UsnJrnl é um arquivo NTFS comum cujos dados vivem no fluxo nomeado $J. Fica no diretório especial $Extend, ao lado de outros arquivos de sistema como $LogFile e $Quota.

Você o extrai com as mesmas ferramentas do $MFT:

  • o target MFT do KAPE inclui $UsnJrnl;
  • o FTK Imager exporta a partir de [volume NTFS]/$Extend/$UsnJrnl:$J;
  • ferramentas de imagem de disco leem direto dos clusters brutos.

Como complementa o $MFT

Combine os dois e padrões emergem que nenhum mostraria sozinho:

  • Um arquivo que você não acha em disco mas aparece no $UsnJrnl — criado e excluído entre dois snapshots, mas o journal manteve o registro.
  • A ordem exata das renomeações durante um ransomwareOPEN, DATA_OVERWRITE, RENAME_OLD_NAME, RENAME_NEW_NAME, CLOSE.
  • Se um arquivo «modificado» foi de fato reescrito ou apenas tocado — os motivos do $UsnJrnl distinguem sobrescrita de dados de mudança de metadados.

Para reconstrução de linha do tempo, o fluxo típico é: percorrer o $MFT para o estado atual e, em seguida, o $UsnJrnl para a história das mudanças que levaram a ele.

Limites

O $UsnJrnl rotaciona. Por padrão tem 32 MB, o que dá para alguns dias de atividade num sistema agitado. Eventos antigos caem do fim. Se você chega a uma investigação mais de uma semana depois dos fatos, espere lacunas — e apoie-se mais no slack do $MFT e no $LogFile.

Recursos externos