Amcache vs Prefetch: was jedes wirklich beweist

Sowohl Amcache als auch Prefetch sind Windows-Artefakte, die Ihnen sagen, welche Binärprogramme auf einem Host waren. Sie werden ständig verwechselt, und die Verwechslung erzeugt falsche Befunde. Diese Seite ist der praktische Leitfaden dazu, was jedes wirklich beweist und wann man was verwendet.

Der wichtigste Unterschied gleich vorab:

Prefetch beweist Ausführung. Amcache beweist Präsenz.

Für die breitere Amcache-Referenz siehe die vollständige Amcache-Referenz. Für die Dateistruktur siehe Amcache-Registry-Struktur.


Was jedes aufzeichnet#

Prefetch#

Ein Verzeichnis von .pf-Dateien (C:\Windows\Prefetch\), gepflegt vom Prefetcher-Subsystem. Jede Datei wird erstellt, wenn ein Binärprogramm zum ersten Mal ausgeführt wird, und bei nachfolgenden Ausführungen aktualisiert. Jede .pf-Datei enthält:

  • Den Namen und Hash der ausführbaren Datei.
  • Bis zu 8 Ausführungs-Zeitstempel (10 unter Windows 11) — tatsächliche Läufe.
  • Eine Lauf-Zählung.
  • Eine Liste von Dateien, die die ausführbare Datei während ihrer ersten 10 Sekunden Ausführung geladen hat.
  • Eine Liste referenzierter Volumes.

Prefetch existiert, weil Windows die geladenen Dateien-Daten verwendet, um diese Dateien vorzucachen, bevor das Binärprogramm das nächste Mal läuft, was die Startzeit beschleunigt. Der forensische Wert ist ein Nebeneffekt: Die Existenz einer .pf ist ein Beweis, dass das Binärprogramm lief.

Amcache#

Eine einzelne Registry-Hive (C:\Windows\AppCompat\Programs\Amcache.hve), befüllt vom geplanten Task Compatibility Appraiser. Der Appraiser durchläuft das System periodisch (ungefähr täglich auf Workstations) und inventarisiert jedes PE-Binärprogramm, das er findet, wobei er Folgendes aufzeichnet:

  • Vollständiger Pfad, Größe, SHA-1-Hash der ersten 31 MiB.
  • PE-Metadaten (Publisher, Version, Linkdatum, Sprache).
  • Anwendungskontext (ProgramId, Installationsdatum).
  • Treiber- und Gerätekontext für die relevanten Kategorien.

Amcache existiert, um die Kompatibilitäts-Telemetrie-Infrastruktur von Windows zu unterstützen. Der forensische Wert ist wiederum ein Nebeneffekt.


Der fundamentale Unterschied#

Frage Prefetch Amcache
„Lief dieses Binärprogramm auf diesem Host?" Ja — definitiv. Nein.
„War dieses Binärprogramm jemals auf der Festplatte?" Nicht direkt (nur falls es lief). Ja.
„Wann lief es?" Ja — bis zu 8/10 Zeitstempel pro Binärprogramm. Nein.
„Was ist sein SHA-1?" Hash existiert, ist aber ein Prefetch-Hash, kein SHA-1. Ja — SHA-1 der ersten 31 MiB.
„Was ist sein vollständiger Pfad?" Wiederherstellbar. Ja — direkt.
„Überlebt es eine Löschung?" Die .pf überlebt die Löschung des Binärprogramms. Der Hive-Eintrag überlebt die Löschung des Binärprogramms.
„Überlebt es einen Systemneustart?" Ja. Ja.
„Überlebt es das direkte Löschen des Artefakts?" Nein — .pf-Dateien können gelöscht werden. Nein — Hive kann gelöscht werden (Transaktionsprotokolle und VSS bewahren oft).

Die zwei Artefakte beantworten unterschiedliche Fragen. Wo sie sich überschneiden (dieselbe Datei, derselbe Host, dasselbe Zeitfenster), bekräftigen sie einander. Wo sie auseinandergehen, ist die Divergenz selbst Information.


Wie sie sich überschneiden und auseinandergehen#

Beide vorhanden (der typische Fall)#

Ein Binärprogramm läuft, der Prefetcher erstellt eine .pf, und der Appraiser inventarisiert es bei seinem nächsten Durchlauf. Sie sehen das Binärprogramm in beiden Artefakten. Die Prefetch verrät Ihnen die Laufzeiten; die Amcache verrät Ihnen den Pfad, Publisher, Hash und die Metadaten.

Nur Amcache — „präsent, aber nie gelaufen"#

Sie finden ein Binärprogramm in *_UnassociatedFileEntries.csv ohne entsprechende .pf. Mögliche Gründe:

  • Das Binärprogramm wurde auf der Festplatte abgelegt, aber nie ausgeführt.
  • Das Binärprogramm wurde ausgeführt, aber Prefetch ist deaktiviert (selten — der Registry-Schlüssel PrefetchParameters steuert dies).
  • Das Binärprogramm wurde einmal ausgeführt, aber die .pf wurde gelöscht (Anti-Forensik, Festplattenbereinigung, absichtliche Entfernung).

Die Lesart „präsent, aber nie gelaufen" ist die häufigste, und es ist ein sehr anderer Befund als „ausgeführt". Ein vorbereitetes, aber nie gelaufenes Angreifer-Tool, eine abgelegte DLL, die nur von rundll32.exe geladen wurde (in dem Fall wird stattdessen die .pf von rundll32.exe aktualisiert), ein Payload, der auf einen Trigger wartete, der nie kam.

Nur Prefetch — „lief, aber kein Inventar"#

Sie finden eine .pf für ein Binärprogramm, aber keine Zeile in Amcache. Mögliche Gründe:

  • Das Binärprogramm wurde zwischen Appraiser-Läufen ausgeführt und vor dem nächsten Durchlauf gelöscht. Die Prefetch überlebte; Amcache hat die Datei nie gesehen.
  • Das Binärprogramm lebt in einem Pfad, den der Appraiser nicht durchsucht.
  • Der Appraiser ist deaktiviert oder hat Fehlfunktionen.

Die Lesart „lief, aber kein Inventar" ist das stärkere Signal für absichtliche Bereinigung. Das Binärprogramm lebte lange genug, um auszuführen, dann verschwand es vor dem nächsten Inventardurchlauf. Diese Zeitbedingung ist charakteristisch für:

  • Cobalt Strike / Sliver / ähnliche C2-Stager, die droppen, ausführen und sich selbst löschen.
  • In-Memory-Tooling, das nur kurz einen winzigen Launcher auf die Festplatte schrieb.
  • Wiper-Deployment, bei dem der Operator den Dropper nach erfolgreicher Ausführung entfernte.

Beide abwesend — „nie gesehen"#

Ein Binärprogramm erscheint weder in Prefetch noch in Amcache. Der stärkste Fall für „das passierte nie auf diesem Host" — aber nicht schlüssig:

  • Beide Artefakte können von einem ausreichend fähigen Angreifer gelöscht werden.
  • Ein Binärprogramm, das nie ausgeführt wurde und in einem kurzen Fenster zwischen Appraiser-Läufen inventarisiert wurde, kann auch unter harmlosen Umständen in beiden fehlen.
  • Auf Servern mit deaktiviertem Appraiser kann Amcache für einige Perioden völlig leer sein.

Unterschiede beim Hashing#

Eine Falle, die neue Analysten erwischt:

  • Prefetch-Hash ist ein Windows-spezifischer Pfad-Hash (kein Inhalts-Hash). Er steht im Dateinamen der .pf: NOTEPAD.EXE-1A2B3C4D.pf. Sie können ihn nicht bei VirusTotal einreichen.
  • Amcache-Hash ist ein echter SHA-1 der ersten 31 MiB. Sie können ihn direkt bei VirusTotal einreichen. Siehe Amcache FileId erklärt.

Um einen Inhalts-Hash aus Prefetch zu bekommen, brauchen Sie das Binärprogramm selbst — die .pf-Datei enthält weder das Binärprogramm noch einen Inhalts-Hash.


Wie man sie in einer Timeline kombiniert#

Der richtige Weg, beide zu verwenden:

  1. Parsen Sie beide. AmcacheParser für Amcache; PECmd (ebenfalls Zimmerman) für Prefetch.
  2. Laden Sie beide CSVs in Timeline Explorer. Filtern Sie Prefetch auf das interessierende Zeitfenster der *_UnassociatedFileEntries.csv des Hosts.
  3. Triage aus Amcache. Wenden Sie den Filter „unsigniertes PE in benutzerbeschreibbarem Pfad" an, um verdächtige Binärprogramme zutage zu fördern.
  4. Bestätigen Sie die Ausführung über Prefetch. Prüfen Sie für jede verdächtige Zeile, ob eine .pf existiert. Wenn ja, haben Sie einen Ausführungsbeweis. Wenn nein, nur Präsenz.
  5. Querverweise auf Zeitstempel. Prefetch liefert präzise Laufzeiten; der KeyLastWriteTimestamp von Amcache liefert eine Inventarzeit, die eingrenzt, wann das Binärprogramm zum ersten Mal erschien. Der frühere von „erster Prefetch-Lauf" und „erstes Amcache-Inventar" ist Ihre beste Schätzung, wann das Binärprogramm ankam.

Mehr zum zeitlich gebundenen Amcache-Pivot in Amcache-Zeitstempel erklärt.


Schnelle Entscheidungstabelle#

Ihre Frage Schauen Sie auf...
Lief dieses Binärprogramm jemals auf diesem Host? Prefetch.
Wann lief dieses Binärprogramm? Prefetch (bis zu 8/10 Mal).
War dieses Binärprogramm auf diesem Host präsent? Amcache.
Was ist sein SHA-1-Hash? Amcache Hash.
Was war sein vollständiger Pfad? Amcache FullPath (oder aus Prefetch-Metadaten wiederherstellen).
Wurde es mehrfach ausgeführt? Prefetch-Lauf-Zählung.
Welche anderen Dateien hat es beim Laufen geladen? Prefetch-Liste geladener Dateien.
Ist das Binärprogramm noch auf der Festplatte? Dateisystem-Prüfung; Amcache sagt es nicht.
Hat sich der Inhalt des Binärprogramms im Laufe der Zeit geändert? Amcache (Zeilen mit gleichem FullPath, unterschiedlichem Hash, unterschiedlichem KeyLastWriteTimestamp).
Ist dieses Binärprogramm auf anderen Hosts präsent? Amcache Hash und ProgramId über gesammelte Hives.

Anti-Forensik-Implikationen#

Beide Artefakte können manipuliert werden, aber sie haben unterschiedliche Schwächen:

  • Prefetch ist pro Datei. Ein Angreifer, der nach einem bestimmten Binärprogramm aufräumen will, muss nur die .pf dieses Binärprogramms löschen. Einfach und gezielt.
  • Amcache ist monolithisch. Einen bestimmten Eintrag zu bereinigen, erfordert die Bearbeitung der Hive an Ort und Stelle — möglich, aber aufwendiger als das Löschen einer Datei. Viele Angreifer löschen einfach die ganze Hive, was laut ist (der Appraiser erstellt sie neu) und forensisch offensichtlich.
  • Transaktionsprotokolle und VSS bewahren die Amcache-Historie, die der Angreifer möglicherweise nicht zu bereinigen gedacht hat. Siehe Wo Amcache.hve auf der Festplatte liegt für den VSS-Wiederherstellungs-Workflow.

In einer Untersuchung, in der Sie Manipulation vermuten, ist das Fehlen erwarteter Einträge in beiden Artefakten selbst der Befund.


Siehe auch#

Möchten Sie eine Hive neben Ihren Prefetch-Daten ansehen? Legen Sie die Hive auf der Startseite des Parsers ab — sie parst vollständig in Ihrem Browser und passt schön zur CSV-Ausgabe von PECmd.

Verwandte Beiträge

Zurück zu allen Beiträgen