← Volver al blog

Detectar actividad de ransomware en el journal USN

Aunque el binario desaparezca, un ransomware deja una huella muy reconocible en $UsnJrnl:$J. Repaso de los patrones a buscar y las combinaciones de códigos de razón asociadas.

4 min de lectura

El ransomware es una de las señales más limpias del journal USN. Haga lo que haga el operador — robo de credenciales, movimiento lateral, persistencia — la fase de cifrado toca el sistema de ficheros con un patrón uniforme y de alto volumen que destaca incluso meses después. Este artículo recorre cómo es ese patrón y cómo encontrarlo.

Se asume que ya has extraído el $J y lo has parseado (el parser de esta página vale; también usnrs y otros). Para un repaso del bitmask de razón, nuestro artículo de códigos de razón es la referencia de campo.

El patrón canónico

La mayoría de los ransomware modernos (LockBit, BlackCat/ALPHV, Royal, Akira, las variantes post-Conti, etc.) siguen la misma receta de tres pasos por fichero:

  1. Abrir el fichero para lectura.
  2. Sobrescribir el contenido en sitio — o escribir un nuevo fichero al lado y borrar el original.
  3. Renombrar para añadir una extensión marcadora (.locked, .lockbit, una cadena aleatoria de 8 caracteres, o ninguna en algunas familias).

En el journal, eso produce, para cada fichero:

DataOverwrite | Close
DataOverwrite | Close
…           ← repetido, uno por bloque escrito
RenameOldName | Close   (antiguo: document.docx)
RenameNewName | Close   (nuevo: document.docx.locked)

Las dos señales distintivas:

  • Ráfagas de DataOverwrite en una ventana corta sobre miles de ficheros. La actividad normal rara vez produce DataOverwrite continuos en ficheros que no sean bases de datos.
  • RenameNewName masivos con sufijos de extensión idénticos. La proporción de renombrados sobre ficheros activos se dispara durante el cifrado.

En MITRE ATT&CK, corresponde principalmente a T1486 Data Encrypted for Impact y el comportamiento de renombrado asociado.

Receta práctica de detección

Sobre un journal parseado:

  1. Histogrameá los DataOverwrite por minuto. Graficar o simplemente bucketizar por minuto y buscar el acantilado. Un host Windows normal muestra una baseline baja estable (unos pocos por minuto), interrumpida por ráfagas de aplicación (guardado Office, caché Chrome). Un ransomware produce un pico sostenido de 50 a 500× sobre esa baseline, que no para hasta quedarse sin ficheros.
  2. Clusterizá los RenameNewName. Agrupar por nueva extensión o por regex sobre el nuevo nombre. Si el 80% de los renombrados de una ventana comparten el mismo sufijo o un mismo patrón .{8}, es un cifrador.
  3. Cruzá con FileDelete | Close. Algunas familias escriben el cifrado a un fichero nuevo y borran el original. Acoplar con un FileCreate de mismo stem y distinta extensión emitido en el mismo segundo.
  4. Subí al directorio padre. Los ransomware que cifran todos los subdirectorios del perfil de usuario o todas las recursos compartidos pegan en Users\<user>\Documents, Users\<user>\Desktop, cada raíz de unidad mapeada. Las rutas completas resueltas por el MFT lo hacen trivial.

El parser de este sitio expone el filtro por razón directamente — ponerlo en DataOverwrite para el paso 1, RenameNewName para el paso 2.

Cómo se ven los datos

Extracto redactado de un caso LockBit 3.0 real:

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 fichero del directorio se cifra dentro del mismo segundo. La nueva extensión es una cadena aleatoria uniforme de 9 caracteres — fuerte señal de cluster para el paso 2.

Más allá del cifrado

El journal también captura comportamientos preparatorios y de limpieza:

  • Borrado de shadow copies: en realidad no es visible en $J (vive en espacios de nombres gestionados por $WSC), pero un FileCreate de ficheros temporales lanzados por vssadmin.exe aparece justo antes de la ráfaga de cifrado.
  • Escaneos de descubrimiento: muchas familias enumeran el volumen por listado de directorio, lo que no produce entradas de journal — pero si el operador soltó herramientas como adfind.exe o PsExec.exe, verás sus FileCreate.
  • Entrega de nota: cualquier familia moderna escribe una nota de rescate en cada directorio cifrado. Un FileCreate del mismo nombre de fichero (README.txt, HOW_TO_DECRYPT.html, etc.) en muchos directorios en el mismo minuto es la regex perezosa que atrapa a la mayoría.

Lo que el journal no te dirá

El journal USN registra cambios al sistema de ficheros, no actores. Para atar un usuario o un proceso a la ráfaga de cifrado necesitas:

Para el playbook de respuesta más amplio, la guía #StopRansomware de CISA es la referencia que manda.

Nota sobre el ruido de fondo

Algunos comportamientos legítimos se parecen superficialmente al ransomware:

  • Despliegue de cifrado de disco (conversión inicial de BitLocker) produce una ráfaga continua de DataOverwrite — pero no produce RenameNewName. Falso positivo fácil de descartar.
  • Software de copias como Veeam o Macrium puede producir ráfagas de DataOverwrite en el volumen destino. Comprobar siempre el usuario/ruta.
  • Autosave de Office o rebuilds de Visual Studio generan ráfagas cortas. El histograma por minuto los hace obvios — son transitorios, el ransomware es monótono.

Si tu lógica de detección no produce alertas sobre la baseline, está infraespecificada. La señal que buscas es la combinación de tasa de DataOverwrite, tasa de RenameNewName y clustering de extensión — no una de ellas en solitario.