File & folder access
USN Journal ($UsnJrnl:$J)
USN journal cheat sheet: $UsnJrnl:$J and $Max, record fields, reason flags, parent references, default size, rollover, fsutil and MFTECmd parsing.
- Location
- C:\$Extend\$UsnJrnl:$J
- Proves
- When a file was created, renamed, written, deleted or had its attributes changed
- Timestamps
- Per-record TimeStamp as FILETIME, UTC; BASIC_INFO_CHANGE records give the real time of timestomping
- Retention
- Bounded by max size (commonly 32 MB on system volumes), oldest purged: hours to weeks of activity; deletable with fsutil
- Access
- Administrator; not readable through normal file APIs: raw NTFS copy of $J and $Max (KAPE $J) together with the $MFT
- Type
- File / file system
- Windows
- XPVista / 78 / 8.11011
- KAPE target
- $J
- Velociraptor
- Windows.Triage.Targets:$J
Tools
Compare all toolsWhat it is
The Update Sequence Number (USN) change journal is an NTFS feature that appends a record every time a file or directory changes on a volume. Windows components such as the Search indexer and backup or replication software use it to find changed files without rescanning the disk. For investigators it is a compact, time-ordered log of file creation, renaming, writing and deletion that often covers days or weeks, and it keeps the names of files long after they are gone.
Location
| Windows version | Path | Notes |
|---|---|---|
| XP to 11 (NTFS volumes with an active journal) | <volume>\$Extend\$UsnJrnl:$J | The records; a sparse named stream |
| XP to 11 | <volume>\$Extend\$UsnJrnl:$Max | Journal parameters: maximum size, allocation delta, journal ID |
$J is sparse: when old records are purged, their clusters are released and read back as zeros. The logical size of $J can be several gigabytes while only the most recent tens of megabytes contain data. On current Windows versions the system volume has an active journal; secondary and removable volumes may or may not.
What it proves
- File activity with timestamps: creation, deletion, rename (old and new name), content writes, truncation, attribute or timestamp changes, security changes and alternate data stream changes.
- Existence of deleted files: the file name and its file reference remain in the journal even after the MFT record has been reused.
- Location: the parent directory reference lets you rebuild the full path by joining with the $MFT.
- Anti-forensics: timestamp changes (
BasicInfoChange), mass renames before deletion, and gaps or a recreated journal. - It does not record who made the change, which process did it, or the file content. A write shows as
DataExtendorDataOverwritewithout detail.
Key fields
| Field | Meaning |
|---|---|
Usn | Offset of the record in the journal; strictly increasing |
TimeStamp | When the record was written |
FileReferenceNumber | MFT entry and sequence number of the file |
ParentFileReferenceNumber | MFT entry and sequence number of the parent directory |
Reason | Bit flags describing accumulated changes since the file was opened |
FileName | Name of the file at the time of the record (no path) |
FileAttributes | Attributes such as hidden, system, directory, archive |
SourceInfo | Set when the change came from a system or replication component rather than the user application |
SecurityId | Security ID of the file, pointing into $Secure:$SDS |
MajorVersion | Record version: 2 is the usual NTFS record (64-bit references); 3 uses 128-bit file IDs; 4 records only appear when range tracking is enabled |
Common Reason flags: DATA_OVERWRITE (0x1), DATA_EXTEND (0x2), DATA_TRUNCATION (0x4), NAMED_DATA_* (0x10–0x40, alternate data streams), FILE_CREATE (0x100), FILE_DELETE (0x200), SECURITY_CHANGE (0x800), RENAME_OLD_NAME (0x1000), RENAME_NEW_NAME (0x2000), BASIC_INFO_CHANGE (0x8000), HARD_LINK_CHANGE (0x10000), STREAM_CHANGE (0x200000), CLOSE (0x80000000).
Timestamps
| Timestamp | Set when | Format | Pitfalls |
|---|---|---|---|
TimeStamp | NTFS writes the journal record | FILETIME, UTC | Flags accumulate while the file is open; the record with CLOSE may be seconds or minutes after the first change |
| Rename pair | Two records: old name with the old parent, new name with the new parent | FILETIME, UTC | A move between folders is also a rename; compare parent references |
BASIC_INFO_CHANGE record | A timestamp or attribute was changed | FILETIME, UTC | This is the real time of a timestomping operation, even if $SI now shows another date |
Retention and clearing
- The journal is bounded by its maximum size plus an allocation delta. When it exceeds that size NTFS purges the oldest records at the next checkpoint. On Windows 10/11 system volumes the maximum size is commonly 32 MB (
0x2000000) with an 8 MB delta; check it withfsutil usn queryjournal. Retention is therefore measured in activity, not days: hours on a build server, weeks on a quiet laptop. - Purged records can survive elsewhere: in volume shadow copies, in unallocated space (carving), and in $LogFile for very recent changes.
fsutil usn deletejournal /d C:disables and deletes the journal. Windows or an application may recreate it later with a new journal ID, which you can see in$Maxandfsutil usn queryjournal. A journal that starts suspiciously recently, or a missing$UsnJrnl, is an anti-forensics lead.- An attacker can also enlarge or shrink the journal with
fsutil usn createjournal m=<size> a=<delta> C:.
Collection
- KAPE target:
$J(collects$Jand$Max; also part ofFileSystem) - Velociraptor (
Windows.Triage.Targets):$J - Built-in: the stream is not readable through normal file APIs, so copy it with a raw-NTFS tool.
fsutilgives live information and can read records:
fsutil usn queryjournal C:
fsutil usn readdata C:\Users\Public\payload.exe
fsutil usn readjournal C: > E:\case\usn_live.txt
Collect $J together with the $MFT of the same volume, at the same moment, so parent paths can be resolved.
Parsing tools
- MFTECmd (Eric Zimmerman):
MFTECmd.exe -f E:\C\$Extend\$J -m E:\C\$MFT --csv E:\outparses the records and uses the$MFTto resolve parent paths. - Velociraptor:
Windows.Forensics.Usnparses the live or a collected journal, with filters on file name, path and date;Windows.Carving.USNcarves older records from raw disk. - dfir_ntfs (Maxim Suhanov):
ntfs_parser --usn <$MFT> <$J> out.csvwith path reconstruction. - NTFS Log Tracker (Junghoon Oh, free): loads
$UsnJrnl,$LogFileand$MFTinto SQLite for combined queries. - Plaso: the
usnjrnlparser adds each record to a super timeline.
Investigation tips
- Filter on
FileCreatefor executables, scripts and archives in user-writable paths, then check whether a matching Prefetch file was created seconds later: a strong execution sequence. - Look for
RenameOldName/RenameNewNamepairs that change extensions (.txtto.exe, many files to a ransomware extension) or move data into a staging folder beforeFileDelete. - A
BasicInfoChangerecord on a file whose $SI times are years old is a timestomping indicator; compare with the $MFTSI<FNflag. - Search for deleted tool names (
mimikatz,rclone,procdump): the journal often keeps them after $MFT records have been reused. - Parse
$Jfrom every shadow copy and deduplicate byUsnto extend the timeline further back. - Check
SourceInfo: records from replication or data-management components are background activity, not user actions.
Related artifacts
- Master File Table ($MFT)$MFT cheat sheet: FILE records, $SI vs $FN timestamps, resident data, deleted records, sequence numbers, timestomping checks and MFTECmd parsing.
- $LogFile (NTFS transaction log)$LogFile cheat sheet: NTFS metadata journal (MFT record 2), 64 MB default, redo/undo operations, restart area, short retention and parsers.
- $I30 index attributes$I30 cheat sheet: NTFS directory indexes ($INDEX_ROOT, $INDEX_ALLOCATION), INDX records, timestamps, slack entries of deleted files and parsers.
- Prefetch Files (.pf)Windows Prefetch cheat sheet: .pf location per version, run count, the last eight run times, referenced files, retention limits and how to parse.
- Volume Shadow Copies (VSS)Volume Shadow Copies cheat sheet: store files in System Volume Information, copy-on-write blocks, deletion by ransomware, mounting and parsing.
Glossary terms
- NTFSNTFS (New Technology File System) is the default Windows file system; its metadata files such as $MFT, $LogFile and $UsnJrnl are core forensic sources.
- MFT file reference numberThe 64-bit NTFS identifier of a file: a 48-bit MFT entry number plus a 16-bit sequence number that changes each time the entry is reused.
- FILETIMEThe 64-bit Windows timestamp format counting 100-nanosecond intervals since 1 January 1601 UTC, used by NTFS, the registry and many artifacts.
- TimestompingAn anti-forensic technique that alters a file's timestamps to hide when it was created, modified, or accessed.
- Anti-forensicsTechniques used to destroy, hide or falsify evidence, such as log clearing, timestomping, wiping and deleting shadow copies or the USN journal.