Risposta breve: le tecniche anti-forensiche su NTFS puntano a nascondere cos'è un file, quando è stato toccato o che è esistito. Nessuna delle tecniche comuni è pulita — ognuna lascia un artefatto diverso in $MFT, $UsnJrnl, $LogFile o negli snapshot VSS. Questo articolo cataloga le tecniche e gli indizi che le tradiscono.
Timestomping
Il classico. Strumenti come SetMACE, timestomp e one-liner PowerShell nativi chiamano SetFileTime o scrivono direttamente $STANDARD_INFORMATION per far sembrare un file più vecchio o più recente di quello che è.
Cosa lascia:
- I timestamp
$STANDARD_INFORMATIONe$FILE_NAMEdivergono —SetFileTimeaggiorna solo SI. Vedi i quattro timestamp MFT. - La precisione sotto il secondo è spesso azzerata. L'attività Windows naturale lascia frazioni di secondo; molti strumenti di timestomping arrotondano al secondo.
- Un created
$STANDARD_INFORMATIONpiù vecchio del created$FILE_NAMEè impossibile — i file non possono esistere prima di essere nominati.
Come scoprirlo: analizzate $MFT e marcate ogni record in cui SI e FN divergono di più di qualche secondo, o in cui SI precede FN del tutto. Il parser browser di questo sito espone entrambi i set di timestamp per record.
Flussi di dati alternativi (ADS)
NTFS permette a un file di portare più attributi $DATA. Quello senza nome è il file «vero»; quelli con nome (file.txt:hidden) sono flussi di dati alternativi — invisibili all'Esplora risorse, invisibili a dir, e abitualmente usati per nascondere payload.
Cosa lascia:
- Un ADS è solo un altro attributo
$DATAnello stesso record MFT. Ogni parser che percorre il flusso di attributi li elenca. - L'ADS
Zone.Identifier, aggiunto automaticamente dai browser, sopravvive spesso sui payload scaricati — provando che il file viene da internet e da quale zona di sicurezza.
Come scoprirlo: dir /R da cmd.exe elenca gli ADS su un sistema attivo. streams.exe di Sysinternals li enumera. Il parser MFT li mostra inline con il record. Vedi flussi di dati alternativi.
Cancellare un singolo file
I wiper sofisticati sovrascrivono i cluster del file e poi eliminano il record MFT. Quelli meno sofisticati (del /f, SDelete con impostazioni di default) sovrascrivono i dati ma lasciano in posizione il record MFT.
Cosa lascia:
- Un record MFT eliminato con
$FILE_NAMEe$STANDARD_INFORMATIONintatti — il nome e i timestamp sopravvivono anche se i dati sono spariti. Vedi cosa sopravvive quando elimini un file su NTFS. - Spesso un record
$UsnJrnlper la creazione originale e l'eliminazione. - Voci
$LogFileper le operazioni sui metadati. - Uno snapshot VSS precedente al wipe che contiene ancora il file completo.
Come scoprirlo: anche un file «cancellato» lascia un nome, un percorso e timestamp in $MFT. Combinate con gli snapshot VSS (snapshot e $MFT) e spesso recuperate anche il contenuto.
Cancellare il record MFT stesso
Un attaccante più aggressivo scrive un nuovo file per riutilizzare deliberatamente la slot, sovrascrivendo il record eliminato. Funziona — la slot è persa — ma l'eliminazione è essa stessa un evento.
Cosa lascia:
- Il sequence number del record è stato incrementato. Una reference da
$UsnJrnlo$LogFileal vecchio sequence number è ora obsoleta e vi dice che la slot è stata riutilizzata. $UsnJrnlregistra ancora sia la creazione/eliminazione originale sia la creazione del nuovo file, inclusa una directory genitore diversa se il nuovo file vive altrove.- Le copie snapshot di
$MFTprecedenti al riutilizzo contengono ancora il record originale.
Come scoprirlo: incrociate $UsnJrnl con la $MFT corrente. Una voce $UsnJrnl il cui sequence number del record target è ora più alto di quello referenziato indica un riutilizzo.
Troncatura di $UsnJrnl
Il change journal è finito. Un attaccante che lancia operazioni rumorose (molte scritture di file) può forzare $UsnJrnl a ciclare, sfrattando le voci più vecchie.
Cosa lascia:
- Un
$UsnJrnlche inizia più tardi di quanto il suo parametro$Maxsuggerirebbe è sospetto. $LogFilenon ruota allo stesso modo e registra ancora spesso le operazioni che hanno spinto fuori$UsnJrnl.- Le operazioni rumorose stesse lasciano migliaia di record MFT — sono visibili.
Eliminazione di $UsnJrnl
fsutil usn deletejournal /D C: rimuove interamente il journal. I journal ricreati ripartono da un contatore USN nuovo.
Cosa lascia:
- Un
$UsnJrnlil cui primo USN è sospettosamente alto, o il cui primo record è ore o minuti prima dell'incidente. - Una voce di directory
$Extendil cui sequence number del record MFT è stato incrementato. - Gli snapshot VSS precedenti all'eliminazione contenenti ancora il journal completo.
Rinominare in un file di sistema
Nascondere un malware come svchost.exe, lsass.exe o un altro binario Windows familiare. Tecnicamente non è anti-forensica MFT, ma è il trucco più comune nel mondo reale per ingannare l'analista.
Cosa lascia:
- Un
$FILE_NAMEla cui reference della directory genitore non èC:\Windows\System32. - Un attributo
$DATAla cui dimensione ed entropia non corrispondono alla distribuzione del binario legittimo. - Un ADS
Zone.Identifierproveniente dal download.
Scarabocchi MFT da ransomware
Alcune famiglie di ransomware (Petya, NotPetya, e una manciata da allora) corrompono deliberatamente $MFT per rendere il volume non montabile. È distruttivo piuttosto che evasivo.
Cosa lascia:
- Record
BAADdove dovrebbero esserciFILE. - Un sistema non avviabile, ma un'immagine forensicamente preziosa — scansionate il volume per signature
FILEe la maggior parte della tabella è ancora leggibile.
Vedi pattern ransomware nella MFT per i dettagli.
Il principio generale
Ogni tecnica anti-forensica su NTFS lascia qualche artefatto. Il motivo è strutturale: $MFT, $UsnJrnl, $LogFile e VSS registrano ciascuno una vista diversa degli stessi eventi, e modificare uno di loro è esso stesso un evento che gli altri registrano. Un triage che percorre tutti e quattro insieme è difficile da sconfiggere.