skip to content

Reading The Artefacts

Artefacts do not narrate; you have to order them and know what each timestamp actually means. Interviewers ask because reading a Shimcache entry as proof of execution is the classic overreach.

on this pageshow

explore

questions

20

In NTFS, what does a file whose $STANDARD_INFORMATION times predate its $FILE_NAME times suggest?

level: juniorimportance: must knowfreq 62%

answer

  1. NTFS stores four times in two places
  2. one set is API-settable, one is not
  3. check the sub-second digits
  4. the entry-modified time resists the stomp
  5. a copy diverges innocently too

basics

~20 s

Backdating. $STANDARD_INFORMATION times are settable through a documented Windows API; $FILE_NAME times are written by the NTFS driver on create, rename and move. $SI older than $FN points to timestomping, though a legitimate rename or restore can also diverge.

solid answer

~50 s

Every NTFS file carries two sets of four timestamps: `$STANDARD_INFORMATION` ($SI), which is what Explorer and most tools display and which any process with write access can set through `SetFileTime`, and `$FILE_NAME` ($FN), which the NTFS driver maintains during creation, rename and move and which no documented API sets directly. So the cheap way to backdate a dropped file touches $SI only, and the mismatch is the tell. Two tells usually travel with it: the $SI MFT-entry-modified time is not settable by that API, so it still shows the moment of the stomp, and several tools zero the sub-second digits where genuine system files carry 100-nanosecond noise. But state the conclusion in the right direction: divergence shows the displayed times cannot be trusted to date the file. It does not prove the file is malicious, and a copy, a rename or a restore from backup produces divergence innocently.

code

text · 12 lines
text
File: C:\Windows\System32\netsvcx.dll   (MFT record 214553)

$STANDARD_INFORMATION
  Created            2009-07-14 01:14:22.0000000
  Modified           2009-07-14 01:14:22.0000000
  Accessed           2009-07-14 01:14:22.0000000
  MFT entry changed  2026-03-02 22:41:07.6431298

$FILE_NAME
  Created            2026-03-02 22:41:07.6217645
  Modified           2026-03-02 22:41:07.6217645
  ...

go deeper

for a junior

Know that NTFS keeps two timestamp sets, that $STANDARD_INFORMATION is the one tools display and the one an API can set, and that $FILE_NAME is written by the filesystem. Be able to say what a mismatch suggests without overclaiming.

for a middle

Explain the mechanics: which API sets which fields, why the MFT-entry-modified time survives a stomp, and why sub-second precision matters. Be ready to name the innocent producers of divergence — copies, renames, restores, installers.

for a senior

Show how you turn the divergence into a defensible statement: corroborate the true arrival time from evidence outside the file's metadata, and phrase the finding as what the artefact supports rather than as an accusation.

for a principal

Own the standard your team applies before an anti-forensics claim goes into a report at all: how many independent artefacts, who argues the innocent case, and how the claim is worded so it survives challenge from someone hostile to it.

## Two timestamp sets, one file Every file on an NTFS volume has a record in the Master File Table (MFT), and that record carries its timestamps in at least two different attributes. `$STANDARD_INFORMATION` ($SI) holds four times — Modified, Accessed, Created and MFT-entry-modified, commonly abbreviated MACB. These are the values Windows Explorer shows, the values a directory listing prints, and the values nearly every tool reads. `$FILE_NAME` ($FN) holds a second set of the same four times, alongside the file's name and a reference to its parent directory. Nothing in ordinary use displays them. The forensic significance lies in who writes each set. The $SI Created, Modified and Accessed times are settable by any process with write access to the file through a documented Windows API (`SetFileTime`) — which is why backup and archiving tools can restore original times, and why an intruder can set them to anything at all. The $FN times are maintained by the NTFS driver itself during file creation, rename and move; there is no documented API that writes them directly. The cheap, widely tooled way to backdate a dropped file therefore touches $SI and leaves $FN alone. ## The divergence, and what it is worth A file whose $SI Created time reads 2009 while its $FN Created time reads three weeks ago is internally inconsistent: the volume's own name record says the entry was written three weeks ago. That inconsistency is the finding. It is evidence that the displayed times are not the times the file appeared. It is not evidence that the file is malicious, not proof of who set the times, and not by itself a reliable time of arrival. Two further tells usually accompany it: - **The $SI MFT-entry-modified time.** `SetFileTime` does not set it; NTFS updates it whenever the record changes — including the change that stomped the other three. A file with three times in 2009 and a fourth reading a moment inside the suspected intrusion window is loudly stomped. - **Sub-second precision.** NTFS timestamps have 100-nanosecond resolution. Several well-known timestomping tools write whole seconds, leaving a run of zeroes where every neighbouring system binary carries noise. A handful of files in a system directory that all share exactly `.0000000` is anomalous on its own. ## Ordinary explanations you must clear first This is where the finding is most often overstated, and where an interviewer will push: - **A copy.** Copying a file to a new volume or folder gives the destination a fresh $SI Created time while preserving Modified from the source. The result — Created later than Modified — looks wrong and is entirely normal. Candidates report it as tampering constantly. - **A rename or move.** The $FN times are rewritten by the operating system on rename and move, so a file that was legitimately renamed can show $FN times later than $SI times with nobody having stomped anything. - **Installers and archive extraction.** Tools that deliberately restore original timestamps set $SI on purpose; an unpacked archive or an old installer routinely leaves files whose $SI times predate the machine itself. - **A restore.** A file recovered from backup onto a rebuilt host carries its old $SI times under a brand-new $FN — which is exactly what an ageing server that has been restored once or twice looks like. None of those produce the whole pattern at once: backdated $SI times, an $SI entry-modified time inside the incident window, zeroed sub-seconds, an executable in a system directory, at a moment that lines up with other activity. One divergent field is a question. A coherent pattern across independent fields is a finding. ## What to do with it Treat the divergence as a reason to date the file from something an intruder cannot edit as easily as file metadata: other on-disk records of file activity, records held on other hosts, and any copy that already left the machine. Then write the claim in the direction the evidence supports. "The displayed creation time is inconsistent with the volume's own name record, so it cannot be used to date this file" is defensible on this evidence alone. "The intruder backdated this file on 2 March" needs the corroborating artefacts, and an interviewer will ask which ones you have.

  • A file's Created time is later than its Modified time. Is that timestomping?
    Almost never. Copying a file gives the destination a new Created time while preserving the source's Modified time, so Created-after-Modified is the normal signature of a copy. Reporting it as tampering is the classic overreach. It becomes interesting only when the file is somewhere a copy should not have landed, or when the $FILE_NAME times contradict the $STANDARD_INFORMATION times as well.
  • The backdated file's times all end in whole seconds. What does that add?
    NTFS records timestamps at 100-nanosecond resolution, so genuine files carry sub-second noise. Several timestomping tools write whole seconds only, leaving zeroes in that field. It is corroboration rather than proof: it points at a specific class of tooling, and a group of files in one directory sharing that pattern is far stronger than a single file doing so.
  • What does $SI/$FN divergence not tell you?
    It does not tell you the file is malicious, who altered the times, or when the file truly arrived. It tells you the displayed times are unreliable for dating this file. The real arrival time has to come from evidence outside the file's own metadata, and the report should say which evidence you used.

It is like a parcel with a hand-written date on the label and a machine-printed date on the postage. Anyone can write on the label; the franking was applied by the post office.

saying these in an interview costs you the question

  • Treats the Created date Explorer shows as authoritative
  • Says any $SI and $FN divergence proves deliberate timestomping
  • Believes timestomping tools alter both timestamp sets equally
  • Reads a backdated timestamp as proof the file is malicious
  • Calls a Created time later than Modified time tampering

context

open as a page

On NTFS, what actually happens to a deleted file's data, and why can an examiner sometimes recover it?

level: juniorimportance: must knowfreq 66%

basics

~20 s

Deleting on NTFS only rewrites bookkeeping. The MFT record is flagged not-in-use, the directory index entry is removed, and the file's clusters are marked free in the volume bitmap. The bytes themselves stay on disk until something reuses those clusters.

open as a page

Does a Shimcache entry for a binary prove that the binary executed on that host?

level: juniorimportance: must knowfreq 72%

basics

~20 s

No. A Shimcache (AppCompatCache) entry records that Windows' application-compatibility engine saw that file at that path with that last-modified time. Windows 8 and later store no execution flag at all, so an entry is evidence of existence, not of a run.

open as a page

What evidence exists only in a Windows memory image and never in a disk image?

level: juniorimportance: must knowfreq 70%

basics

~20 s

Only RAM holds running state: code that never touched disk, full process command lines, live network endpoints with their owning process id, decrypted data, and credential material such as hashes, Kerberos tickets and session keys held by lsass.

open as a page

In NTFS forensics, what do the M, A, C and B timestamps each record?

level: juniorimportance: must knowfreq 72%

basics

~20 s

M is when the file's data was last written, A when it was last read, C when its MFT record's metadata last changed, and B (birth) when the file first appeared on that volume. C is not the creation time.

open as a page

Which artefacts prove that a Run key, service or scheduled task you found actually executed?

level: middleimportance: must knowfreq 60%

basics

~20 s

A persistence entry is configuration — an instruction to run later — so it proves nothing ran. Execution proof comes from a separate artefact: a Task Scheduler action-start record, a service state-change record, a Prefetch file for the payload, or a process-creation event.

open as a page

How do you show from a memory image that code was injected into a signed running process?

level: seniorimportance: must knowfreq 58%

basics

~10 s

Read the address space, not the process list. Look for private committed regions marked executable with no file backing them, a PE header in anonymous memory, and threads starting outside every loaded module.

open as a page

How do you build one UTC timeline from NTFS MACB times, a local-time app log and UTC proxy records?

level: seniorimportance: must knowfreq 56%

basics

~20 s

Convert every source to UTC, establishing each source's offset rather than assuming one. Keep every row's original value, source and applied offset, and derive those offsets from an anchor event two independent sources both captured.

open as a page

A disk image shows gigabytes of zero-filled unallocated space. What can you actually conclude?

level: middleimportance: should knowfreq 45%

basics

~20 s

Only that nothing is recoverable from those clusters. Free space carries no timestamps and no ownership, so it cannot say when it was overwritten, by whom, or whether anything was there. Restores and fresh virtual disks look identical.

open as a page

What does a file carved from unallocated space lack that a file recovered through its MFT record keeps?

level: middleimportance: should knowfreq 54%

basics

~20 s

A carved file is content with no context: no filename, no path, no owner, no filesystem timestamps. An intact MFT record keeps all of those bound to the data, so you can say where the file lived and when.

open as a page

What does an NTFS $UsnJrnl entry recording a file's deletion prove, and what can it never show?

level: middleimportance: should knowfreq 47%

basics

~20 s

A $UsnJrnl entry proves a file with that name, under that parent directory, was created, written to or deleted at that time. It carries no content, no size, and no identity of whoever did it.

open as a page

Why might a Windows host hold no Prefetch file for a program you know executed?

level: middleimportance: should knowfreq 45%

basics

~20 s

Prefetch is not universal. It is off by default on Windows Server, can be switched off by the EnablePrefetcher setting, has a fixed capacity that evicts old entries, and names files by executable name plus a path hash.

open as a page

Why can two process lists built from one memory image disagree about which processes existed?

level: middleimportance: should knowfreq 48%

basics

~20 s

One list walks the kernel's doubly-linked list of process structures; the other scans physical memory for those structures directly. Scanning also finds processes unlinked from the list and remnants of processes that already exited, so it usually returns more.

open as a page

An NTFS file's creation time is weeks later than its modification time — what does that indicate?

level: middleimportance: should knowfreq 54%

basics

~20 s

It is the ordinary signature of a file arriving as a copy. The copy created a new file here, so the creation time is when it landed, while the modification time travelled with the content from its source.

open as a page

You disabled noisy audit subcategories on a domain controller last quarter without a ticket; IR now reads the six-week gap as evasion. What do you show them?

level: seniorimportance: should knowfreq 42%

basics

~20 s

Show provenance, scope and shape: the policy object carrying the change, who edited it and when, that it reached every domain controller rather than one, that the loud subcategories went while logon auditing stayed, and that it predates every other indicator.

open as a page

Four hundred hosts carry the same scheduled task, service and Run key — which artefacts decide rollout versus foothold?

level: seniorimportance: should knowfreq 36%

basics

~20 s

Fleet-wide uniformity favours a managed rollout but settles nothing on its own. Decide on artefact identity: the signer and Amcache hash of each binary, the task's author and principal, the account on the service-install record, and what the interpreter's Prefetch shows it read.

open as a page

An SSD laptop with TRIM enabled had a folder emptied three weeks ago -- what can you still recover?

level: seniorimportance: nice to knowfreq 34%

basics

~20 s

Expect metadata, not content. TRIM tells the drive those blocks are unused, so the controller unmaps them, reads return zeroes and carving finds nothing. Change-journal and MFT remnants can still prove a name, a size and a deletion time.

open as a page

A memory image from a running server contradicts itself between structures - what causes that?

level: seniorimportance: nice to knowfreq 30%

basics

~20 s

Smear. A memory image of a running host is written over minutes while the kernel keeps changing memory, so different parts of the image are from different moments. It has no single point in time and self-contradiction is expected, not corruption.

open as a page

An anti-forensics finding would name a long-serving administrator, but two of your three indicators have ordinary explanations. What do you assert?

level: principalimportance: nice to knowfreq 28%

basics

~20 s

Assert only the indicator no ordinary process produces, and write the other two into the report as withdrawn with the explanations accounting for them. Separate observation from inference, state confidence, and leave the personnel decision to whoever owns it.

open as a page

How do you state timeline ordering confidence to counsel when timestamps come from different clocks?

level: principalimportance: nice to knowfreq 30%

basics

~10 s

Give each ordering claim a bound. Same-clock events order reliably; cross-clock events only when the gap exceeds the offset uncertainty. Otherwise say the order cannot be established, and name what would settle it.

open as a page