BAM vs. Prefetch vs. ShimCache vs. Amcache im Vergleich
Ausführungsnachweise unter Windows im Vergleich: was BAM, Prefetch, ShimCache und Amcache erfassen, wie lange sie es behalten und wie man sie kombiniert.
TL;DR. BAM beantwortet, welches Konto ein Programm gestartet hat und wann zuletzt. Prefetch beantwortet, wie oft und was es geladen hat. Amcache beantwortet, welche Datei genau (SHA-1). ShimCache beantwortet, ob dieser Pfad auf der Platte existierte. Keines beantwortet alles, und jedes versagt anders – BAM vergisst nach einer Woche und ignoriert USB- und Netzwerkpfade, Prefetch kann abgeschaltet sein, ShimCache wird nur beim Herunterfahren geschrieben, und ein Amcache-Eintrag bedeutet nicht immer Ausführung. Nutzen Sie sie als gegenseitige Zeugen.
Auf diesen Vergleich kommen wir immer wieder zurück, wenn wir den Nachweis der Programmausführung unter Windows 10 und 11 dokumentieren. Zu BAM selbst siehe den kompletten BAM/DAM-Leitfaden; für den benutzerbezogenen Vergleich mit UserAssist BAM vs. UserAssist.
Auf einen Blick
| BAM / DAM | Prefetch | ShimCache | Amcache | |
|---|---|---|---|---|
| Speicherort | SYSTEM-Hive, Services\bam\State\UserSettings\<SID> | C:\Windows\Prefetch\*.pf | SYSTEM-Hive, Control\Session Manager\AppCompatCache | C:\Windows\AppCompat\Programs\Amcache.hve |
| Pro Benutzer? | Ja (SID-Schlüssel) | Nein | Nein | Nein |
| Zeitstempel | Zuletzt erfasste Aktivität (1) | Bis zu 8 letzte Ausführungen (ab Win 8), Zähler | Änderungszeit der Datei, keine Ausführungszeit | Schreibzeiten von Schlüsseln/Einträgen; keine saubere „Ausführungszeit“ |
| Dateiidentität | Nur Pfad | Name + Pfad-Hash, Volume-Seriennummer | Pfad (+ Größe in manchen Versionen) | SHA-1, Größe, Version, Herausgeber |
| Aufbewahrung | ~7 Tage, Bereinigung beim Start | Begrenzte Anzahl .pf-Dateien; älteste werden ersetzt | Begrenzte Cache-Größe; älteste werden verdrängt | Lange |
| Geschrieben | Bei Prozessstart/-ende | Kurz nach dem Start (erste Sekunden überwacht) | Nur beim Herunterfahren | Durch Inventarisierungsaufgaben |
| Blinder Fleck | USB, Netzwerkfreigaben, Konsolen-Tools aus der Kommandozeile | Hosts mit deaktiviertem Prefetch | Aktuelle Sitzung ohne sauberes Herunterfahren | Abhängig von Inventarläufen |
| Auswerten mit | BAM/DAM Parser | Prefetch Parser | ShimCache Parser | Amcache Parser |
Quellen: BAM – Suhanov, BAM internals; Prefetch – libscca-Formatdokumentation; ShimCache – Mandiant, Caching Out; Amcache – ANSSI, Analysis of the AmCache.
(1) Laut Suhanov bei Prozesserstellung und -beendigung aktualisiert.
Wo BAM gewinnt
Zuordnung. Es ist das einzige Artefakt in der Tabelle, das der Ausführung eine SID gibt. Lautet die Frage „War es das Dienstkonto oder der Benutzer?“, entscheidet BAM sie – siehe BAM-Benutzerzuordnung.
Präzision bei der letzten Ausführung. Ein FILETIME mit 100 ns, geschrieben im Moment der Prozessaktivität, gegenüber den (ebenfalls präzisen, aber systemweiten) Prefetch-Zeiten oder der Datei-Änderungszeit im ShimCache, die gar keine Ausführungszeit ist.
Unabhängig von Prefetch-Einstellungen. Prefetch hängt an der Einstellung EnablePrefetcher und ist auf Servern oft nicht verfügbar (warum Prefetch auf Windows Server oft fehlt). BAM hängt nicht von dieser Einstellung ab – auf Server-Builds prüfen Sie aber zuerst, ob BAM überhaupt vorhanden ist (BAM je Windows-Version).
Geringer Sicherungsaufwand. Es steckt im SYSTEM-Hive, den Sie ohnehin sichern.
Wo BAM verliert
Gedächtnis. Etwa eine Woche, Bereinigung beim Start; Einträge gelöschter Dateien verschwinden beim nächsten Start (Grenzen). Prefetch und Amcache reichen oft deutlich weiter zurück.
Abdeckung. Keine Einträge für ausführbare Dateien auf Wechseldatenträgern oder Netzwerkfreigaben, und aus der Kommandozeile gestartete Konsolenprogramme wurden ohne Eintrag beobachtet. Prefetch erfasst Programme, die von einem Wechselvolume gestartet wurden, sehr wohl – die Volume-Informationen zeigen dann eine Seriennummer, die nicht zum Systemlaufwerk gehört –, und ist damit die natürliche Ergänzung.
Identität. Nur der Pfad. Ein umbenanntes Tool bleibt als solches unsichtbar; der SHA-1 aus Amcache identifiziert es.
Tiefe. Ein Zeitstempel. Prefetch liefert bis zu acht Ausführungszeiten, einen Zähler und die Liste der Dateien und Verzeichnisse, die das Programm in seinen ersten Sekunden berührte – oft genug, um zu sehen, welche DLLs oder Dokumente es geöffnet hat.
Kombinationen lesen
| BAM | Prefetch | Amcache | ShimCache | Wahrscheinliche Geschichte |
|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | Ausgeführt, identifiziert, zugeordnet. Die stärkste Position. |
| ✓ | — | ✓ | ✓ | Unter diesem Benutzer ausgeführt; Prefetch deaktiviert oder bereinigt. EnablePrefetcher und die Zeitstempel des Prefetch-Ordners prüfen. |
| — | ✓ | ✓ | ✓ | Ausgeführt, aber BAM hat keinen Eintrag: älter als eine Woche und neu gestartet, von USB/Freigabe gestartet, Konsolenstart aus der Kommandozeile, oder vor einem Neustart gelöscht. |
| ✓ | — | — | — | Kürzliche Ausführung, Dateiidentität unbekannt. Datei oder Hash anderweitig beschaffen. |
| — | — | — | ✓ | Datei war auf der Platte; Ausführung nicht belegt. ShimCache allein beweist unter Windows 10+ keine Ausführung. |
| — | — | ✓ | — | Die Inventarisierung hat die Datei gesehen; die Ausführung braucht Bestätigung (die ANSSI-Studie erörtert, wann Amcache-Einträge eine Ausführung bedeuten und wann nicht). |
Ereignisprotokolle: der fünfte Zeuge
Prozesserstellungsereignisse liefern Befehlszeile und Elternprozess, die keines der vier Artefakte hat:
- Sicherheit 4688 – nur wenn „Prozesserstellung überwachen“ aktiviert ist, und die Befehlszeile nur, wenn zusätzlich die entsprechende Richtlinie gesetzt ist (Microsoft Learn).
- Sysmon Ereignis 1 – wenn Sysmon ausgerollt ist (Sysmon).
Werten Sie sie mit EVTX Parser aus und verknüpfen Sie über Pfad und Zeit. BAMs Benutzerzuordnung plus die Befehlszeile aus 4688 ist das Paar, das die meisten Diskussionen beendet.
Eine praktische Reihenfolge
- Zuerst BAM – klein, benutzerbezogen, und es zeigt, auf welche Konten Sie sich konzentrieren sollten.
- Prefetch – für Zähler, frühere Ausführungen und Konsolen-Tools, die BAM entgangen sind.
- Amcache – Hashes für jeden verdächtigen Pfad aus Schritt 1 und 2.
- ShimCache – Pfade, die existierten, aber anderswo keine Ausführung zeigen (abgelegt, nie gestartet oder von einem Ort gestartet, den BAM ignoriert).
- Ereignisprotokolle, SRUM, USN-Journal – Befehlszeilen, Netzwerknutzung, Erstellen und Löschen von Dateien.
Häufige Fragen
Ist BAM besser als Prefetch?
Keines ist besser; sie beantworten unterschiedliche Fragen. BAM ordnet die Ausführung einem Benutzerkonto mit einem einzigen aktuellen Zeitstempel zu. Prefetch gilt systemweit, speichert aber einen Ausführungszähler, bis zu acht Ausführungszeiten und die vom Programm geladenen Dateien. Nutzen Sie beide, wo es geht.
Welches Windows-Artefakt zeigt, welcher Benutzer ein Programm gestartet hat?
Unter den klassischen Ausführungsartefakten sind BAM/DAM (SID-Schlüssel in SYSTEM) und UserAssist (im NTUSER.DAT jedes Benutzers) benutzerbezogen. Prefetch, ShimCache und Amcache gelten systemweit.