TL;DR. Prioritätsreihenfolge, die ich in der Triage tatsächlich nutze: Prefetch (am stärksten, wenn aktiviert), BAM/DAM (per-User-Letzte-Ausführung auf Win10+, sträflich unterbenutzt), AmCache (SHA-1-Identifikation), ShimCache (Existenzanker), UserAssist (nur Explorer-initiierte Starts). Kein einzelnes Artefakt schließt einen Fall ab. Triangulieren oder aufhören, Ausführung zu behaupten.
Es gibt kein einzelnes Windows-Artefakt, das die Frage "ist dieses Programm gelaufen, wann und durch wen?" perfekt beantwortet. Wer dir etwas anderes sagt, hat entweder nicht genug Fälle bearbeitet oder verkauft dir etwas. Was funktioniert, ist eine kurze Liste von Artefakten, die jeweils einen Teil der Frage abdecken, und die Gewohnheit, querzulesen.
Die Kurzliste
| Artefakt | Speicherort | Aufzeichnung | Verlässlichkeit für Ausführung |
|---|---|---|---|
| Prefetch | C:\Windows\Prefetch\*.pf | Pfad, Run-Count, letzte 8 Laufzeiten, geladene Dateien | Sehr hoch. Nur beim Prozessstart geschrieben. |
| AmCache | C:\Windows\AppCompat\Programs\Amcache.hve | Pfad, SHA-1, Größe, Herausgeber, Installation + First-Run | Hoch. Explizite Ausführungszeitstempel. |
| ShimCache | SYSTEM-Hive …\Session Manager\AppCompatCache | Pfad, Datei-mtime | Mittel. Beweist Existenz; impliziert oft (nicht immer) Ausführung. |
| UserAssist | NTUSER.DAT …\UserAssist (registry) | Per-User-GUI-Programmstarts via Explorer | Hoch, aber nur benutzerinitiiert, ROT13-kodierte Namen. |
| BAM / DAM | SYSTEM-Hive …\bam\State und …\dam\State | Per-User-Letzte-Ausführung jeder Binärdatei | Sehr hoch. Win10+, leicht zu parsen, oft übersehen. |
In Prioritätsreihenfolge lesen
1. Prefetch zuerst. Eine .pf-Datei ist das, was Windows einer "das lief"-Quittung am nächsten kommt. Bis zu acht Laufzeiten, Gesamtaufruf-Count, Liste der geladenen Module. Workstation-SKUs lassen Prefetch standardmäßig an. Eric Zimmermans PECmd ist der kanonische Parser. Der Prefetch-Parser deckt das Format ab, falls du eigenes rollen willst.
2. BAM / DAM als Zweites. Background- und Desktop-Activity-Moderator drosseln Hintergrund-Apps und halten per-User-, per-Binärdatei-Zeitstempel "letzte Ausführung" im SYSTEM-Hive unter …\Services\bam\State und …\Services\dam\State. Vorhanden unter Windows 10 und 11, rauscharm, leicht zu lesen. Ich habe Fälle anhand von BAM-Zeilen geschlossen, die niemand im ursprünglichen IR-Team gezogen hatte.
3. AmCache als Drittes. Sichert Prefetch auf Servern (wo Prefetch oft deaktiviert ist) und auf Hosts ab, auf denen der Angreifer den Prefetch-Ordner geleert hat. SHA-1-Hashes sind das Killer-Feature: Wenn die Datei gelöscht ist, ist der Hash dein einziger Hebel für VirusTotal und Threat Intel. Siehe ShimCache vs. AmCache.
4. ShimCache als Viertes. Existenzanker, keine Ausführungsbehauptung. Der Proof-of-Execution-Post deckt die Argumentation ab.
5. UserAssist zuletzt. Starker Hinweis auf interaktiven Start via Explorer. Blind für alles, was aus einer Shell, einem geplanten Task oder einem Dienst gestartet wurde. Nützlich, wenn die Frage lautet "hat der Benutzer das angeklickt?". Lies es mit jedem Registry-Tool, das ROT13 versteht; der registry parser dekodiert es inline.
Dinge, die beißen
- Prefetch kann aus sein. SSDs, Server-SKUs und Group Policy deaktivieren es alle. Leeres Prefetch ist kein Beweis für Abwesenheit.
- AmCache rotiert. Alte Einträge altern aus. Zieh den Hive früh in der Triage.
- ShimCache-Zeitstempel sind Datei-mtime. Nicht die Ausführungszeit. Nicht die Flush-Zeit. Die mtime der Datei. Lies das, bis es haftet.
- UserAssist ist ROT13. Trivial zu dekodieren, stolpert aber casual Reader.
- BAM wird unterbenutzt. Vielleicht das sauberste "lief diese Binärdatei für diesen Benutzer?"-Signal auf modernem Windows.
Andere Artefakte, die je nach Fall lohnen: RecentFileCache (Win7 legacy), SRUM für Netzwerk- und Prozessressourcennutzung über 30 Tage, Jump Lists und LNK-Dateien für Shell-Aktivität, die MFT und das USN-Journal für Timelines auf Dateisystemebene.
Tooling
Für High-Fidelity-Offline-Parsen ist die Eric-Zimmerman-Tool-Suite der De-facto-Standard. AppCompatCacheParser, AmcacheParser, PECmd, RBCmd, alle verlässlich. Velociraptor handhabt Live-Triage in Flottengröße. Speziell für ShimCache liest der Shimcache Parser einen Hive direkt im Browser, ohne irgendetwas zu installieren.
Weiterführende Lektüre
- Eric Zimmermans AppCompatCacheParser. Referenz-ShimCache-Parser.
- Velociraptor ShimCache artifact. Logik für Live-System-Erfassung.
- Mehrnoushs ShimCache & AmCache forensic analysis. ausführliches fallgetriebenes Write-up.