Prefetch vs Amcache vs ShimCache
Windows zeichnet Belege für Programmausführung an mindestens drei Stellen auf. Sie überlappen sich. Sie widersprechen sich. Jedes erfasst etwas, das die anderen übersehen. Der Fehler ist, eines davon als autoritativ zu behandeln.
- Prefetch:
C:\Windows\Prefetch\*.pf. Per-Execution-Timing-Cache. - AmCache:
C:\Windows\AppCompat\Programs\Amcache.hve. Registry-Hive des Programminventars. - Shimcache (AppCompatCache):
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache. Registry-basierter Kompatibilitäts-Cache.
Prefetch — die Timing-Geschichte
Prefetch sagt Ihnen, wann eine Binärdatei lief und wie oft. Jede .pf enthält bis zu acht FILETIME-Last-Run-Slots (auf v26+), einen monotonen Ausführungszähler, die Volume-Informationen für das Start-Volume und die Dateimetrik-Liste der Pfade, die die Binärdatei in ihren ersten zehn Sekunden berührt hat. Der Dateiname bettet einen Hash des Startpfads ein, sodass zwei Kopien derselben Binärdatei in verschiedenen Verzeichnissen zwei verschiedene .pf-Einträge erzeugen.
Was Prefetch nicht gibt: eine vollständige Historie. Das Verzeichnis ist gekappt (typischerweise um die 1024 Einträge; ältere Einträge laufen während der Wartung ab, aggressiver auf Win10 1709+ und auf SSD-gestützten Win11 22H2+). Es läuft standardmäßig auch nicht auf Windows Server.
Greifen Sie zuerst zu Prefetch, wenn die Frage lautet „lief das, wann und von wo". Der Parser auf dieser Seite oder PECmd über den Ordner legt es in einem Durchgang offen.
AmCache — die Inventar-Geschichte
AmCache ist eine Registry-Hive (Amcache.hve), die von Application Experience und verwandter Kompatibilitäts-Infrastruktur befüllt wird. Sie zeichnet Metadaten für jede Binärdatei auf, die das System gesehen hat — das heißt durch AppCompat katalogisiert, nicht nur ausgeführt. SHA-1-Hash, Dateigröße, Herausgeber, Version, Signaturstatus, Installationsdatum und eine Handvoll anderer Felder.
Wo Prefetch sagt „das lief achtmal letzten Dienstag", sagt AmCache „diese Binärdatei existiert an diesem Pfad mit diesem SHA-1 und diesem Herausgeber". Kombinieren Sie die beiden und Sie haben „diese exakte Binärdatei, durch Hash identifiziert, wurde N-mal ausgeführt". Diese Kombination ist das, was Ihnen erlaubt, eine Ausführungsbehauptung zu verteidigen, wenn die Binärdatei auf der Festplatte ausgetauscht wurde.
Für Offline-AmCache-Analyse siehe den AmCache-Parser. Auf Pre-Win8-Hosts ist das analoge Artefakt RecentFileCache, das viel dünner ist, aber dieselbe Lücke abdeckt.
Shimcache — die Kompatibilitäts-Geschichte
Shimcache (AppCompatCache) lebt in der SYSTEM-Hive und existiert, um die Anwendungs-Kompatibilitäts-Shimming-Engine zu füttern, nicht DFIR. Es zeichnet Dateipfad, Last-Modified-Zeitstempel aus NTFS und ein Ausführungs-Flag auf (dessen Bedeutung sich über Windows-Versionen hinweg verschoben hat, manchmal bedeutsam). Harte Obergrenze um 1024 Einträge auf modernem Windows.
Es ist älter und flacher als die anderen beiden. Das Ausführungs-Flag ist auf modernen Versionen unzuverlässig — seine Anwesenheit ist kein Ausführungsbeweis, und seine Abwesenheit ist kein Beweis für Nicht-Ausführung. Behandeln Sie den Zeitstempel als die NTFS-Modifikationszeit der Binärdatei zum Zeitpunkt, als Shimcache sie beobachtete, nicht als Ausführungszeit.
Shimcache gewinnt in einem konkreten Szenario: Wenn Prefetch gewischt wurde und AmCache nicht verfügbar oder ebenfalls angefasst ist, hält Shimcache oft noch einen Datensatz, weil es in der SYSTEM-Hive lebt, die Angreifer häufiger in Ruhe lassen. Es ist auch nützlich als dritte Bestätigungsquelle — wenn Prefetch, AmCache und Shimcache die Binärdatei an demselben Pfad mit übereinstimmenden Zeitstempeln verorten, ist der Beweis schwer anzugreifen.
Welches zuerst
Für die meisten „lief das"-Fragen:
- Prefetch. Aktualität und Ausführungshäufigkeit.
- AmCache. Hash, Signatur und breiteres Inventar.
- Shimcache. Pfad-Bestätigung und Fallback, wenn die ersten beiden angefasst wurden.
Für das größere Bild ist keines dieser drei das Ende der Fahnenstange. Das USN-Journal sagt Ihnen, wann die Binärdatei erstmals auf der Festplatte landete und wann sie berührt wurde. SRUM sagt Ihnen Prozessressourcen-Nutzung mit Per-App-Netzwerk-Bytes auf Workstations, auf denen SRUM aktiviert ist. LNK-Dateien und Jump Lists platzieren den Benutzer ins Bild. Das Security/Sysmon-EVTX gibt Ihnen Befehlszeilen, Parent-Prozesse und Benutzerkontext, den keines der drei Ausführungsartefakte oben für sich allein liefert.
Jedes Artefakt in dieser Flotte erledigt eines davon. Zusammen decken sie die Lücken ab, die ein einzelnes lässt.
Weiterführende Literatur
- Yogesh Khatri, die originalen AmCache-Texte — immer noch die sauberste Beschreibung dessen, was die Hive tatsächlich enthält.
- Mandiant, „Caching Out: The Value of Shimcache" — Pflichtlektüre dazu, was das Ausführungs-Flag bedeutet und nicht bedeutet.
- Eric Zimmerman, das Trio AppCompatCacheParser / AmcacheParser / PECmd für Offline-Analyse.