What is KeyLastWriteTimestamp in Amcache? (glossary)
KeyLastWriteTimestamp is the last time the registry wrote the key holding this Amcache entry. Surfaced by AmcacheParser as a column on every CSV. It is the most important timestamp in Amcache, and the one most often confused with LinkDate. They are not the same and they answer different questions.
What it represents#
Every registry key has a last-write time written by Windows itself. When the appraiser creates or updates an entry under Root\InventoryApplicationFile, that key's last-write advances. AmcacheParser reads it and exposes it as KeyLastWriteTimestamp.
In practice:
- First time the appraiser inventories a file, the timestamp is the appraiser-run time after the file was noticed. Upper bound for "first present on disk".
- Metadata changes (new hash, larger size, version string change) advance the timestamp.
- A stable file whose metadata never changes keeps the same timestamp even after many subsequent appraiser passes. It is "last written to", not "last seen".
That last bullet is what catches people. A binary present and unchanged for two years has a KeyLastWriteTimestamp two years old.
The four timestamps and which one to use#
| Question | Field |
|---|---|
| When did Amcache record this? | KeyLastWriteTimestamp |
| When was the binary compiled? | LinkDate |
| When did the file land on disk? | MFT $STANDARD_INFORMATION.CreationTime |
| When did it execute? | Prefetch run times |
The standard time-window pivot#
Take a suspicious row. Take its KeyLastWriteTimestamp. Open a one-hour window centred on it. Pull from that window:
- Other Amcache rows on the same host.
- Prefetch entries.
- Sysmon
1(process create),7(image load),11(file create). - Security 4688.
- MFT and USN journal creates.
That's the canonical reconstruction. Almost every Amcache-based finding ends up running this pivot at least once.
For the long-form reference, see Amcache timestamps explained.
Related terms#
Related posts
- What is LinkDate in Amcache? (glossary)
LinkDate is the PE TimeDateStamp. Attacker-controllable. Use it for build clustering, not for host timelines.
- What is Amcache ProgramId? (glossary)
ProgramId is the 44-character application-identity hash Amcache stores. Stable across hosts for the same install. Catches re-compiles and renames where Hash misses.
- What is Root\InventoryApplicationFile? (glossary)
The principal Amcache key. One sub-key per PE the appraiser inventoried, with hash, path, publisher, link date, and a registry write time. Where 90% of analyst time goes.
- What is Amcache FileId? (glossary)
FileId is '0000' plus the SHA-1 of the first 31 MiB of the file. Strip the prefix before you hit VirusTotal or you will silently get back nothing.