ShimCache vs. Prefetch: was beweist, dass ein Programm lief?

3 Min. Lesezeit

TL;DR. Prefetch ist echter Ausführungsbeweis — mit Laufzahl und Laufzeiten. ShimCache beweist nur, dass eine Datei existierte und untersucht wurde. Für „lief sie, und wann?" greifen Sie zuerst zu Prefetch; ist Prefetch deaktiviert oder gelöscht, wird ShimCache zum Ausweich-Zeugen für die Existenz.

ShimCache und Prefetch werden ständig verglichen, weil beide „Programme auf einem Windows-Host" zutage fördern. Aber es ist nicht dieselbe Art Beweis, und sie als austauschbar zu behandeln erzeugt falsche Schlüsse. Hier der direkte Vergleich.

Auf einen Blick

ShimCachePrefetch
OrtHKLM\SYSTEM\…\AppCompatCacheC:\Windows\Prefetch\*.pf
Was es beweistDatei existierte / wurde untersuchtDatei wurde ausgeführt
LaufzählerNeinJa
AusführungszeitstempelNein (nur Datei-mtime)Ja — letzte 8 Laufzeiten
Referenzierte DateienNeinJa — geladene DLLs, Datendateien
SchreibzeitpunktNur bei sauberem ShutdownInnerhalb ~10 s nach Ausführung
Standard auf ServernJaOft deaktiviert
KapazitätBis zu 1.024 Einträge1.024 .pf-Dateien (Win8+)

Wo Prefetch gewinnt

Prefetch ist das stärkere Ausführungs-Artefakt, Punkt. Jede .pf-Datei liefert die letzte Laufzeit (bis zu acht ab Windows 8), einen Gesamt-Laufzähler und die Liste der vom Prozess geladenen Dateien. Das genügt, um „diese Binärdatei lief zu diesen Zeiten" zu behaupten — was ShimCache nie kann, denn sein einziger Zeitstempel ist die letzte Änderungszeit der Datei, keine Ausführungszeit.

Wo ShimCache gewinnt

Prefetch hat eine kritische Schwäche: Es ist auf Servern, auf SSD-optimierten Images und durch Angreifer häufig deaktiviert (EnablePrefetcher = 0). Auch Aufräum-Tools löschen es aktiv. ShimCache dagegen ist immer aktiv und sensibel genug, eine Binärdatei zu erfassen, die abgelegt und gelöscht wurde, bevor sie je lief. Ist Prefetch leer, beantwortet ShimCache oft noch „hat diese Datei diesen Host je berührt?" — siehe Beweist der ShimCache, dass ein Programm ausgeführt wurde?, wie weit sich diese Schlussfolgerung treiben lässt.

Wie man sie zusammen verwendet

  • Beide vorhanden, Pfade stimmen überein: starker Ausführungsbeweis. Nutzen Sie Prefetch-Laufzeiten als Ereignis-Zeitleiste; die ShimCache-mtime nur zum Verankern der Datei-Identität.
  • Nur Prefetch: Ausführung ist bewiesen; ShimCache wurde vielleicht nur noch nicht geflusht (es schreibt nur beim Shutdown — siehe wo ShimCache gespeichert wird).
  • Nur ShimCache: Die Datei existierte und wurde untersucht. Behaupten Sie keine Ausführung ohne Untermauerung — ziehen Sie AmCache, BAM und Ereignisprotokolle (vollständige Matrix hier).
  • Keines von beiden, aber Ausführung vermutet: suchen Sie nach Anti-Forensik. Prefetch-Löschung plus fehlender ShimCache-Flush ist selbst ein Befund, behandelt in ShimCache-Anti-Forensik.

Um die ShimCache-Seite ohne Installation zu lesen, ziehen Sie eine SYSTEM-Hive in den Shimcache Parser — komplett im Browser.

Weiterführende Quellen

Verwandte Artikel