Zurück zu allen Beiträgen

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). 0 aus. 1 nur App-Launch-Prefetch. 2 nur Boot-Prefetch. 3 beides, 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 = 3
  • SysMain lä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:

  1. 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.
  2. Registry-Werte zur Erfassungszeit. Sowohl EnablePrefetcher als auch EnableSuperfetch auf 0 ist Konfiguration, keine Manipulation. Einer auf 3 und einer auf 0 ist ungewöhnlich und einen genaueren Blick wert.
  3. SysMain-Status. Die System-EVTX zeigt Dienst-Stopps und -Starts; korrelieren Sie die Timeline gegen den interessierenden Zeitraum.
  4. 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