Respuesta corta: las técnicas anti-forenses en NTFS buscan ocultar qué es un archivo, cuándo se tocó o que haya existido siquiera. Ninguna de las técnicas habituales es limpia — cada una deja un artefacto distinto en $MFT, $UsnJrnl, $LogFile o los snapshots VSS. Este artículo cataloga las técnicas y los indicios que las delatan.
Timestomping
El clásico. Herramientas como SetMACE, timestomp y one-liners de PowerShell integrados llaman a SetFileTime o escriben directamente $STANDARD_INFORMATION para hacer que un archivo parezca más viejo o más nuevo de lo que es.
Qué deja:
- Las marcas de tiempo de
$STANDARD_INFORMATIONy$FILE_NAMEdivergen —SetFileTimesolo actualiza SI. Véase las cuatro marcas de tiempo MFT. - La precisión subsegundo suele ponerse a cero. La actividad natural de Windows deja fracciones de segundo; muchas herramientas de timestomping redondean al segundo.
- Un creado
$STANDARD_INFORMATIONanterior al creado$FILE_NAMEes imposible — los archivos no pueden existir antes de tener nombre.
Cómo detectarlo: analiza $MFT y marca cada registro donde SI y FN difieren en más de unos pocos segundos, o donde SI precede a FN siquiera. El parser navegador de este sitio expone ambos conjuntos de marcas de tiempo por registro.
Flujos de datos alternativos (ADS)
NTFS permite que un archivo lleve varios atributos $DATA. El que no tiene nombre es el archivo «real»; los que sí (file.txt:hidden) son flujos de datos alternativos — invisibles para el Explorador, invisibles para dir, y usados rutinariamente para esconder cargas útiles.
Qué deja:
- Un ADS es solo otro atributo
$DATAen el mismo registro MFT. Todo parser que recorra el flujo de atributos los lista. - El ADS
Zone.Identifier, añadido automáticamente por los navegadores, sobrevive a menudo en cargas descargadas — demostrando que el archivo viene de internet y de qué zona de seguridad.
Cómo detectarlo: dir /R desde cmd.exe lista los ADS en un sistema vivo. streams.exe de Sysinternals los enumera. El parser MFT los muestra en línea con el registro. Véase flujos de datos alternativos.
Borrar un único archivo
Los wipers sofisticados sobrescriben los clústeres del archivo y luego eliminan el registro MFT. Los menos sofisticados (del /f, SDelete con ajustes por defecto) sobrescriben los datos pero dejan el registro MFT en su sitio.
Qué deja:
- Un registro MFT eliminado con
$FILE_NAMEy$STANDARD_INFORMATIONintactos — el nombre y las marcas de tiempo sobreviven aunque los datos hayan desaparecido. Véase qué sobrevive cuando eliminas un archivo en NTFS. - A menudo un registro
$UsnJrnlpara la creación original y la eliminación. - Entradas en
$LogFilepara las operaciones de metadatos. - Un snapshot VSS de antes del borrado que aún contiene el archivo completo.
Cómo detectarlo: incluso un archivo «borrado» deja un nombre, una ruta y marcas de tiempo en $MFT. Combínalo con snapshots VSS (snapshots y $MFT) y a menudo recuperas también el contenido.
Borrar el propio registro MFT
Un atacante más agresivo escribe un archivo nuevo para reutilizar deliberadamente la posición, sobrescribiendo el registro eliminado. Esto funciona — la posición se pierde — pero la eliminación es ella misma un evento.
Qué deja:
- El número de secuencia del registro se ha incrementado. Una referencia desde
$UsnJrnlo$LogFileal número de secuencia antiguo queda obsoleta y te indica que la posición se ha reutilizado. $UsnJrnlsigue registrando tanto la creación/eliminación original como la creación del nuevo archivo, incluido un directorio padre distinto si el nuevo archivo vive en otro sitio.- Las copias snapshot de
$MFTde antes de la reutilización aún contienen el registro original.
Cómo detectarlo: cruza $UsnJrnl contra la $MFT actual. Una entrada de $UsnJrnl cuyo registro objetivo tiene ahora un número de secuencia superior al referenciado en la entrada indica una reutilización.
Truncamiento de $UsnJrnl
El diario de cambios es finito. Un atacante que lance operaciones ruidosas (muchas escrituras de archivos) puede forzar a $UsnJrnl a dar la vuelta, desalojando entradas antiguas.
Qué deja:
- Un
$UsnJrnlque empieza más tarde de lo que sugeriría su parámetro$Maxes sospechoso. $LogFileno rota del mismo modo y a menudo aún registra las operaciones que empujaron$UsnJrnlfuera.- Las propias operaciones ruidosas dejan miles de registros MFT — son visibles.
Eliminación de $UsnJrnl
fsutil usn deletejournal /D C: elimina el diario por completo. Los diarios recreados parten de un contador USN fresco.
Qué deja:
- Un
$UsnJrnlcuyo primer USN es sospechosamente alto, o cuyo primer registro es horas o minutos antes del incidente. - Una entrada de directorio
$Extendcuyo número de secuencia del registro MFT se ha incrementado. - Snapshots VSS de antes de la eliminación que aún contienen el diario completo.
Renombrar a un archivo de sistema
Ocultar malware como svchost.exe, lsass.exe u otro binario familiar de Windows. Técnicamente no es anti-forense de MFT, pero es el truco más común en la vida real para engañar a los analistas.
Qué deja:
- Un
$FILE_NAMEcuya referencia de directorio padre no esC:\Windows\System32. - Un atributo
$DATAcuyo tamaño y entropía no coinciden con la distribución del binario legítimo. - Un ADS
Zone.Identifierde la descarga.
Garabatos MFT del ransomware
Algunas familias de ransomware (Petya, NotPetya y un puñado desde entonces) corrompen deliberadamente $MFT para que el volumen sea no-montable. Es destructivo más que evasivo.
Qué deja:
- Registros
BAADdonde debería haberFILE. - Un sistema no-arrancable, pero una imagen valiosa para el forense — escanea el volumen por firma
FILEy la mayor parte de la tabla sigue siendo legible.
Véase patrones de ransomware en la MFT para los detalles.
El principio general
Toda técnica anti-forense en NTFS deja algún artefacto. La razón es estructural: $MFT, $UsnJrnl, $LogFile y VSS registran cada uno una vista distinta de los mismos eventos, y modificar uno de ellos es en sí mismo un evento que los demás registran. Un triaje que recorre los cuatro juntos es difícil de vencer.