Warum Windows Server keine Prefetch-Dateien hat
Wenn Sie eine Windows-Server-Installation triagieren und das Prefetch\-Verzeichnis leer ist, sollte Ihr erster Reflex nicht „der Angreifer hat es gewischt" sein. Der erste Reflex sollte sein: „Server-Defaults". Microsoft liefert Prefetch auf Server-SKUs deaktiviert aus, weil die Workload-Annahme — lang laufende Dienste statt kurzlebiger interaktiver Apps — das Feature kontraproduktiv für die Art von Speicherverwaltung macht, die Server interessiert.
Diese Voreinstellung erwischt DFIR-Analysten in den Einsätzen, die ich gesehen habe, etwa einmal pro Quartal. Das Registry-Layout im Vorfeld zu kennen, erspart die peinliche E-Mail an den Kunden mit der Frage „fehlt Ihr Prefetch absichtlich".
Der Registry-Schalter
Ein Schlüssel steuert alles:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
Zwei Werte, die zählen:
EnablePrefetcher(DWORD).0aus.1nur App-Launch-Prefetch.2nur Boot-Prefetch.3beides, der Workstation-Standard.EnableSuperfetch(DWORD). Gleiche Semantik. Steuert das breitere SuperFetch / SysMain-Feature, das die Prefetch-Logik auf modernem Windows beherbergt.
Workstation-Defaults sind 3 für beide. Server-Defaults sind 0 für beide. Die Boot/App-Aufteilung von EnablePrefetcher ist überwiegend historisch; in der Praxis sieht man fast immer 3 oder 0, nicht die Zwischenwerte.
Parsen Sie die SYSTEM-Hive offline mit dem Registry-Parser, wenn Sie nur ein Image haben und wissen wollen, wie der Live-Zustand zum Zeitpunkt der Erfassung gewesen wäre. Vergleichen Sie gegen Werte in älteren Volume Shadow Copies, um zu sehen, ob eine Workstation mitten in der Untersuchung auf 0 umkonfiguriert wurde; die LastWrite-Zeit der SYSTEM-Hive gibt Ihnen den Zeitpunkt der Änderung.
Der SysMain-Dienst
Der Dienst, der tatsächlich .pf-Dateien schreibt, ist SysMain (umbenannt von Superfetch vor Jahren). Wenn SysMain gestoppt oder deaktiviert ist, wird kein Prefetch generiert, egal was die Registry sagt. Beide Bedingungen müssen erfüllt sein:
EnablePrefetcher = 3SysMainläuft
Auf einem Live-System:
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters"
sc query SysMain
Auf einem toten System ist das Äquivalent das Parsen der SYSTEM-Hive und der System-EVTX nach SCM-Events. Service Control Manager protokolliert jeden SysMain-Start/Stopp im System-Log — nützlich, um einzugrenzen, wann die Generierung tatsächlich pausiert hat.
Forensische Implikationen
Ein leerer Prefetch\-Ordner ist für sich genommen kein Befund. Bevor Sie folgern „keine Ausführungsbeweise auf diesem Host", prüfen Sie vier Dinge:
- OS-Edition. Server-SKUs, die seit Monaten laufen, haben immer noch im Wesentlichen kein Prefetch. Workstation-SKUs, die seit einer Stunde laufen, haben bereits Dutzende.
- Registry-Werte zur Erfassungszeit. Sowohl
EnablePrefetcherals auchEnableSuperfetchauf0ist Konfiguration, keine Manipulation. Einer auf3und einer auf0ist ungewöhnlich und einen genaueren Blick wert. - SysMain-Status. Die System-EVTX zeigt Dienst-Stopps und -Starts; korrelieren Sie die Timeline gegen den interessierenden Zeitraum.
- SSD-spezifisches Verhalten. Einige Windows-10-Builds und Win11 22H2+ auf SSD-only-Systemen deaktivieren Teile von Prefetch opportunistisch. Die Registry sagt immer noch
3. Die Abdeckung sinkt trotzdem. Das ist nicht (nur) Anti-Forensik — das ist OS-Verhalten.
Wenn die Punkte 1–4 alle in Ordnung sind und der Ordner immer noch leer ist, dann fragen Sie, ob das Verzeichnis gewischt wurde. Carven Sie unalloziert nach MAM\x04-Signaturen und ziehen Sie das USN-Journal für .pf-Löschereignisse. Der dedizierte Manipulationsbeitrag hat das vollständige Verfahren.
Reaktivieren für laufende Erfassung
Wenn Sie den Host kontrollieren und Prefetch für künftige Sichtbarkeit aktivieren wollen:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters" /v EnablePrefetcher /t REG_DWORD /d 3 /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters" /v EnableSuperfetch /t REG_DWORD /d 3 /f
sc config SysMain start= auto
net start SysMain
Das Aktivieren füllt nichts nach. SysMain beginnt mit dem Schreiben frischer .pf-Dateien ab dem Moment, in dem es startet; Sie erhalten keine Aufzeichnung von Ausführungen, die davor passierten. Für Pre-Enablement-Ausführungsbeweise auf einem Server greifen Sie auf AmCache, Shimcache, SRUM für Prozessressourcen-Nutzung und das Security/Sysmon-EVTX zurück, sofern Prozessauditierung aktiv war.
Per Policy deaktiviert, nicht per Angreifer
In gehärteten Umgebungen — CIS-Baseline, STIG, Hersteller-Konfigurationsprofil — wird Prefetch manchmal per Gruppenrichtlinie unterdrückt. Die Registry-Werte sehen genauso aus wie bei einer manuellen Deaktivierung. Der Weg, das zu erkennen, ist gpresult /h auf einem Live-Host (oder das Parsen der relevanten Gruppenrichtlinien-Artefakte aus dem Image). Wenn die Policy EnablePrefetcher = 0 erzwingt, ist das Absicht. Wenn der Wert mitten in der Uptime von 3 auf 0 umspringt, ohne entsprechende GPO-Aktualisierung, ist das etwas anderes.
Weiterführende Literatur
- Microsoft Docs, Memory Management — PrefetchParameters.
- Eric Zimmerman, Registry Explorer für die Live- oder Offline-Inspektion der SYSTEM-Hive.