In this section

Check My Knowledge

14 hours · Module 1 · Free

Scenario 1. You open a raw MFT record in HxD and the first four bytes read 42 41 41 44 instead of 46 49 4C 45. What does this indicate about the record?

The record uses a different MFT version. "BAAD" is the signature for NTFS 3.1 records on Windows 10 and later. a

NTFS does not use different signatures for different versions. All valid MFT records use the "FILE" signature regardless of NTFS version. "BAAD" is not a version indicator.

The "BAAD" signature means the record failed the fixup array integrity check. NTFS writes "BAAD" when the fixup verification fails during a read, indicating sector-level corruption, partial overwrite, or write interruption. Some attributes may be intact while others are corrupted. b

Correct. NTFS replaces the "FILE" signature with "BAAD" when the fixup values at the sector boundaries (offsets 0x1FE and 0x3FE) do not match the signature value stored in the fixup array. This is a corruption detection mechanism covered in Section 1.1. The record's data cannot be trusted without manual verification of each attribute.

The MFT extraction tool read from the wrong disk offset and captured non-MFT data. c

If the extraction started from the wrong offset, you would see random data, not the specific "BAAD" string. "BAAD" is deliberately written by NTFS, not random corruption.

The record was securely wiped by an anti-forensic tool that overwrites MFT records with the "BAAD" marker. d

Anti-forensic tools that target MFT records typically zero the record or overwrite with random data. "BAAD" is written by the NTFS driver itself during normal corruption detection, not by external tools.

Scenario 2. A deleted file has flags 0x00, sequence number 12, non-resident flag = 0, and content size = 345 bytes. The volume is an SSD with TRIM enabled. The file was deleted 3 days ago. Can you recover the file content?

No. SSD TRIM destroys all data from deleted files, including data stored in MFT records. a

TRIM operates on data clusters, not MFT records. The MFT is stored in a fixed allocated region that is not subject to TRIM. Resident data inside MFT records is unaffected by TRIM regardless of the drive type. Section 1.4 covers this distinction.

Possibly, but the high sequence number (12) means the resident data may belong to a previous file, not the most recently deleted one. b

A high sequence number means the entry has been reused many times, but the current attributes (with flags 0x00) belong to the most recent file that occupied the entry. The sequence number tells you how many times the slot was recycled, not that the current data is unreliable. Section 1.6 covers sequence number interpretation.

Yes. The file content is resident (non-resident flag = 0, 345 bytes fits within the MFT record). Resident data is stored in the MFT record itself, not in data clusters. TRIM only affects data clusters. As long as the entry has not been reallocated (flags 0x00 confirm it is still free), the 345 bytes are fully recoverable. c

Correct. The non-resident flag of 0 confirms the data is resident inside the MFT record. The MFT region is not subject to TRIM. The flags value 0x00 confirms the entry is free but not reallocated. The content persists until a new file is allocated to this entry. Extract the content by navigating to the $DATA attribute and reading the content bytes. Section 1.4 and Section 1.10 cover resident data recovery.

No. The content at 345 bytes is too small for meaningful forensic analysis. d

Small files are often the most forensically valuable: batch scripts, configuration files, C2 implant configs, text notes listing targets. A 345-byte file could contain a complete batch script with a C2 URL, as shown in the Section 1.4 hex dump example. File size does not determine forensic relevance.

Scenario 3. You find 23 files in a staging directory. All have $SI Created timestamps within a 30-second window in March 2026. All 23 have $SI Modified timestamps from November 2025. The $FN timestamps on all 23 match the March 2026 $SI Created values. What operation produced this pattern?

The files were moved from another directory on the same volume. Same-volume moves preserve $SI Modified but update $SI Created. a

Same-volume moves do not change $SI Created because the MFT entry does not change. Only the parent directory reference in $FN is updated. The copy indicator ($SI Modified before $SI Created) does not appear on same-volume moves. Section 1.8 covers this distinction.

The files were copied. Windows preserves the source file's $SI Modified on the destination but sets $SI Created to the copy time. The 30-second window indicates a batch copy. The $FN timestamps matching $SI Created confirms the files were genuinely created in March (no timestomping). b

Correct. The copy indicator pattern: $SI Modified (November) is earlier than $SI Created (March). The $FN Created timestamps matching $SI Created confirms the files were created on this volume in March, not timestomped. The 30-second window for all 23 files indicates a batch operation (drag-and-drop, xcopy, or script). Section 1.8 covers the copy indicator in detail.

The files were timestomped. The attacker set $SI Modified to November 2025 dates to make the files appear older. c

Timestomping typically targets $SI Created, not $SI Modified. Also, the $FN timestamps match the $SI Created values, confirming the files were genuinely created in March. If timestomping had occurred, $SI and $FN would show a discrepancy. Section 1.9 covers the three detection methods.

The files were extracted from an archive. Archive extraction sets $SI Created to extraction time and $SI Modified to the timestamp stored in the archive. d

Archive extraction does produce this pattern, making it a legitimate false positive for the copy indicator. However, the question states these are in a "staging directory," and you would verify by checking whether an archive file exists with a matching creation timestamp. The question tests whether you recognize the copy indicator pattern. Both copy and archive extraction use the same API mechanism.

Scenario 4. An attacker's executable shows $SI Created = 2025-06-15T09:00:00.0000000 and $FN Created = 2026-03-18T02:14:33.7654321. The USN Journal has an entry for this file with reason code BASIC_INFO_CHANGE at 2026-03-18T02:15:01. How do you classify and document this finding?

Confirmed timestomping with full timeline reconstruction. The file was created at 02:14:33 ($FN Created). At 02:15:01, the attacker modified $SI Created to June 2025 (USN BASIC_INFO_CHANGE). All three methods are positive: temporal inversion (9 months), zero fractional seconds on $SI, and USN confirmation. Classification: CONFIRMED. a

Correct. This is the strongest possible timestomping finding: Method 1 (temporal inversion, $SI 9 months before $FN), Method 2 (zero fractional seconds on $SI while $FN has full nanosecond precision), and Method 3 (USN BASIC_INFO_CHANGE at 02:15:01 documents the exact time of the manipulation). The 28-second gap between creation (02:14:33) and timestomping (02:15:01) reconstructs the attacker's actions. Section 1.9 covers the systematic detection workflow and classification system.

The BASIC_INFO_CHANGE entry records a permission change, not a timestamp change. You cannot distinguish the two from the reason code alone. b

BASIC_INFO_CHANGE does cover both permission and timestamp modifications. However, when combined with the temporal inversion ($SI Created 9 months before $FN Created) and the zero fractional seconds, the conclusion is unambiguous. The USN entry provides the real time of the modification; the $SI/$FN comparison confirms what was modified.

The evidence is ambiguous. BASIC_INFO_CHANGE could be timestomping or a legitimate update. Without additional evidence beyond MFT and USN, you cannot classify this as confirmed. c

Three independent detection methods all pointing to the same conclusion is not ambiguous. Temporal inversion alone is near-definitive (the only false positive is the tunnel cache, which produces seconds of difference, not months). Combined with zero-precision $SI and USN confirmation, this is the strongest classification available. Section 1.9 defines CONFIRMED as temporal inversion plus one or more corroborating methods.

The file was legitimately created in June 2025 and the $FN timestamp was updated during a March 2026 modification. $FN timestamps update on file rename and move operations. d

$FN Modified and $FN Entry Modified can update on rename and move, but $FN Created is set once at file creation and is never updated by rename or move operations. A $FN Created of March 2026 means the file was created on this volume in March 2026. Section 1.3 covers $FN Created stability.

Scenario 5. A directory currently contains 3 files but has $INDEX_ALLOCATION and $BITMAP attributes on its MFT record. What should you do?

Nothing. $INDEX_ALLOCATION is created for all directories regardless of how many files they contain. a

Small directories (under approximately 15-20 files) fit entirely in $INDEX_ROOT without $INDEX_ALLOCATION. NTFS only creates $INDEX_ALLOCATION when the directory grows beyond $INDEX_ROOT capacity. Section 1.5 covers the threshold.

The $INDEX_ALLOCATION belongs to a previous directory that occupied this MFT entry. It is stale data from a different directory. b

When an MFT entry is reallocated, all attributes are rewritten. $INDEX_ALLOCATION on the current directory belongs to the current directory, not a previous occupant. The presence of $INDEX_ALLOCATION means this directory at some point contained enough files to require B-tree expansion.

The 3 files have extremely long filenames that overflow $INDEX_ROOT. The $INDEX_ALLOCATION is needed for the current file count. c

While very long filenames do consume more space in $INDEX_ROOT, 3 files would need filenames of approximately 200+ characters each to overflow. This is possible but extremely unlikely. The far more common explanation is that the directory previously contained many more files.

Parse the $I30 slack in the $INDEX_ALLOCATION records. This directory previously contained many more files. The removed files' index entries may persist in slack space with filenames, timestamps, and MFT references proving what the directory previously contained. d

Correct. NTFS only creates $INDEX_ALLOCATION when a directory exceeds approximately 15-20 files. A directory with 3 files and $INDEX_ALLOCATION once held many more. The deleted entries' $FILE_NAME structures persist in $I30 slack until overwritten by new insertions. Use MFTECmd with --de or INDXParse to carve these entries. Section 1.5 covers $I30 slack analysis.

Scenario 6. MFTECmd output shows two rows with identical EntryNumber 5000 and SequenceNumber 3, both InUse = True. Row A has FileName "report.docx" and row B has FileName "REPORT~1.DOC". What is the relationship?

They are hard links. Two directory entries point to the same MFT record with different filenames. a

Hard links do share the same MFT entry, but "REPORT~1.DOC" is a DOS 8.3 short name format (uppercase, tilde, 8.3 structure). If these were hard links, both names would be in Win32 format. The naming pattern identifies this as the automatic Win32 + DOS name pairing, not hard links.

They are the same file with two $FILE_NAME attributes. "report.docx" is the Win32 long filename (namespace 0x01) and "REPORT~1.DOC" is the DOS 8.3 short filename (namespace 0x02). MFTECmd outputs one row per $FN attribute, so one file with both names produces two CSV rows. b

Correct. NTFS creates both a Win32 long name and a DOS-compatible 8.3 short name when the long name exceeds 8.3 format requirements. Each name is a separate $FN attribute in the MFT record. MFTECmd outputs one row per $FN attribute. When counting unique files, use distinct EntryNumber values, not total row count. Section 1.3 covers namespace flags and multiple $FN attributes.

File B is the previous version. The file was renamed from "REPORT~1.DOC" to "report.docx" and both names persist. c

Both rows show InUse = True with the same sequence number, meaning they are current attributes of the same active file, not historical versions. A rename would update the $FN attribute in place, not create a second one alongside the old name.

This is a parser error. MFTECmd is outputting the same entry twice with different name interpretations. d

This is correct, expected behavior from MFTECmd. The tool outputs one row per $FILE_NAME attribute by design, because each $FN attribute has its own set of timestamps that may differ. Both rows provide forensically relevant data.

Scenario 7. A $FILE_NAME attribute references parent directory MFT entry 500, sequence 3. You look up entry 500 and find it currently has sequence 5, flags 0x03, and the $FN filename is "Projects". MFTECmd shows the file's ParentPath as ".\Projects\". Is the path correct?

Yes. The entry number matches (500) and the directory is active (flags 0x03). The path resolution is correct. a

The entry number matches but the sequence number does not. The $FN reference says sequence 3, but entry 500 currently has sequence 5. This means entry 500 has been deallocated and reallocated twice since the file's parent reference was created. The current "Projects" directory is a different directory that happened to reuse the same MFT slot.

No. The flags value 0x03 means the entry is a deleted directory, so the parent no longer exists. b

Flags 0x03 means the entry is an active directory (0x01 = in use, 0x02 = directory, 0x03 = both). The flags indicate the entry is currently in use as a directory. The issue is the sequence number mismatch, not the allocation status.

No. The referenced sequence number (3) does not match the current sequence (5). The original parent directory was deleted, and entry 500 was reused for a different directory now named "Projects". MFTECmd resolved to the current directory name, which is wrong. The file's actual parent directory no longer exists at this entry. c

Correct. The sequence number mismatch (referenced 3 vs current 5) proves the file's parent directory was deleted and the entry reused. MFTECmd resolves parent paths by looking up the entry number without always validating the sequence, so it resolved to "Projects" (the current occupant) instead of the original directory that occupied entry 500 at sequence 3. Section 1.6 covers stale reference detection through sequence number verification.

Cannot determine without checking the USN Journal for the original directory name at entry 500, sequence 3. d

You can determine the path is wrong from the sequence number mismatch alone. The USN Journal would help you find the original directory name, but the mismatch itself is sufficient to identify the error. Always check sequence numbers on parent references for critical evidence files.

Scenario 8. You are writing a forensic report for court. You recovered a deleted batch script (487 bytes, resident) from MFT entry 38,271 (sequence 6, flags 0x00). The script contains a C2 URL. How do you document the recovery?

Document five elements: source (MFT entry 38,271 sequence 6, flags 0x00), method (resident content extracted from $DATA attribute, non-resident flag 0x00, content size 487 bytes), integrity (MFT collected with KAPE, SHA256 verified, FILE signature intact, fixup valid, attribute chain parses correctly), confidence (HIGH, intact resident data in free entry), and limitations (provides content and metadata at deletion time, does not identify which user created or executed the file). a

Correct. The five-element documentation framework from Section 1.10 establishes the recovery's reliability and preempts challenges. Source identifies the record. Method explains the extraction. Integrity proves the data is authentic. Confidence rates the reliability. Limitations acknowledge what the evidence does not prove. This level of documentation withstands cross-examination.

"The file was recovered using MFTECmd from the Master File Table." This is sufficient for a forensic report. b

This is insufficient. It does not specify which MFT entry, how the content was extracted (MFTECmd does not export resident content in standard CSV output), how integrity was verified, or what the recovery's limitations are. Opposing counsel would challenge every undocumented aspect.

"I used a hex editor to extract 487 bytes from the MFT. The content is a batch script containing a C2 URL." No further documentation is needed. c

This describes what was done but not why the result should be trusted. It lacks hash verification, integrity assessment, and confidence rating. A court requires methodology documentation that establishes the reliability of the evidence, not just a description of the extraction.

Deleted file recovery cannot be presented in court because the chain of custody was broken when the file was deleted. d

Deleted file recovery is routinely accepted in court proceedings. The chain of custody applies to the evidence media (the disk image or MFT extraction), not to individual files. The forensic methodology documentation establishes that the recovered data is authentic and unmodified. Deleted file recovery is a standard forensic technique with decades of legal precedent.

💬

How was this module?

Your feedback helps us improve the course. One click is enough — comments are optional.

Thank you — your feedback has been received.
Unlock the Full Course See Full Course Agenda