Prefetch, Amcache oder ShimCache
Windows hält Hinweise auf Programmausführungen an mindestens drei getrennten Stellen fest, jede mit eigenem Format, eigener Aufbewahrung und eigenen Eigenheiten:
- Prefetch (
C:\Windows\Prefetch\*.pf) — Timing-Cache pro Ausführung - Amcache (
C:\Windows\AppCompat\Programs\Amcache.hve) — Registry-Hive mit Programminventar - ShimCache / AppCompatCache (
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache) — registrybasierter Kompatibilitäts-Cache
Sie überlappen sich. Sie widersprechen sich. Und jedes erfasst etwas, das den anderen entgeht.
Prefetch — die Timing-Spur
Prefetch sagt Ihnen, wann ein Programm lief und wie oft. Jede
.pf-Datei enthält bis zu acht jüngste Ausführungszeitstempel sowie
einen Run Counter. Außerdem hält sie die Liste der Dateien fest, die
die ausführbare Datei beim ersten Lauf geladen hat — nützlich für die
Malware-Analyse.
Was Prefetch Ihnen nicht liefert: eine vollständige Liste aller jemals ausgeführten Programme. Dateien werden gelöscht, sobald der Cache voll ist (typischerweise bei 1024 Einträgen gedeckelt), sodass eine ausgelastete Workstation ältere Einträge fortlaufend rotiert. Auf Windows Server ist Prefetch zudem standardmäßig deaktiviert.
Greifen Sie zu Prefetch, wenn Sie Ausführungshäufigkeit, Aktualität oder den Lade-Fingerabdruck einer ausführbaren Datei brauchen. Der Parser auf dieser Seite stellt all das in einem Durchgang bereit.
Amcache — die Inventar-Spur
Amcache ist eine Registry-Hive (Amcache.hve), die die Windows
Application-Compatibility-Infrastruktur befüllt. Sie protokolliert
Metadaten zu jeder Binary, die das System gesehen hat — nicht nur zu
jenen, die es ausgeführt hat. Damit ist Amcache das breitere
Inventar: SHA-1-Hashes, Dateigrößen, Herausgeber, Version,
Installationszeitstempel und der Signaturstatus der Binary.
Wo Prefetch Ihnen sagt, dass ein Programm vergangenen Dienstag achtmal lief, sagt Amcache Ihnen, dass das Programm existiert, welchen SHA-1 es trägt und ungefähr wann es auf dem System auftauchte. Die beiden ergänzen sich gut: Prefetchs Run Count plus Amcaches Hash genügt, um festzustellen „genau diese Binary wurde N-mal ausgeführt".
Für das Parsen von Amcache siehe den Amcache-Parser.
ShimCache — die Kompatibilitäts-Spur
ShimCache (auch AppCompatCache genannt) ist älter und flacher als die anderen beiden. Er protokolliert Dateipfad, Last-Modified-Zeitstempel und ein Flag, das eine Ausführung anzeigt, und ist auf modernen Windows-Versionen hart auf etwa 1024 Einträge gedeckelt. Er existiert in erster Linie, um die Application-Compatibility-Shimming-Engine zu bedienen, nicht für forensische Zwecke.
ShimCache punktet in genau einem Szenario: wenn Prefetch deaktiviert oder gelöscht wurde und Amcache nicht verfügbar ist, kann ShimCache trotzdem noch einen Eintrag enthalten. Außerdem ist er als Bestätigungsquelle nützlich — stimmen alle drei Artefakte bei Pfad und Zeitstempel überein, ist die Beweislage solide.
Welches zuerst?
Für die meisten Untersuchungen der Frage „wurde dieses Programm ausgeführt" lautet die Reihenfolge:
- Prefetch für Laufzeitbelege und Aktualität
- Amcache für Hash, Version und breiteres Inventar
- ShimCache als bestätigende Rückfalloption, wenn die ersten beiden lückenhaft oder verdächtig sind
Jeder Parser dieser Reihe deckt eines dieser Artefakte ab. Zusammen schließen sie die Lücke, die jedes Einzelne von ihnen hinterlässt.