Amcache vs ShimCache: wann welches Artefakt gewinnt
Amcache und ShimCache (auch AppCompatCache genannt) sind die
beiden Windows-Artefakte, die am häufigsten miteinander verwechselt
werden, weil beide in der „Application Compatibility"-Infrastruktur
sitzen und beide Binärprogramme aufzeichnen, die auf einem Host
waren. Es sind unterschiedliche Mechanismen, gepflegt von
unterschiedlichen Windows-Subsystemen, mit unterschiedlichen
Grenzen und unterschiedlichem forensischen Wert.
Die wichtigsten Unterschiede:
ShimCache ist kürzer, dünner, kernelseitig gepflegt und vom Loader aktualisiert. Amcache ist länger, reicher, im User-Mode gepflegt und von einem geplanten Task aktualisiert.
Für die breitere Amcache-Referenz siehe die vollständige Amcache-Referenz. Für die Amcache-vs-Prefetch-Frage (ein anderer Vergleich) siehe Amcache vs Prefetch.
Was jedes aufzeichnet#
ShimCache / AppCompatCache#
Ein binäres Blob, gespeichert in der SYSTEM-Registry-Hive unter
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache\AppCompatCache.
Es wird kernelseitig gepflegt — jedes Mal, wenn der Loader ein
Binärprogramm berührt (lädt, ausführt oder in manchen Fällen nur
statet), wird der Cache aktualisiert.
Jeder Eintrag speichert:
- Den vollständigen Pfad der Datei.
- Einen Änderungs-Zeitstempel (die
$STANDARD_INFORMATION-Änderungszeit der Datei zum Zeitpunkt des Cache-Updates). - Ein Flag, das angibt, ob das Binärprogramm ausgeführt wurde.
- Auf einigen Windows-Versionen: einen Eintrags-Erstellungs-Zeitstempel.
Der Cache wird beim Herunterfahren in die Registry geflusht, nicht in Echtzeit. Das erzeugt eine kritische Eigenheit: Auf einem Live-System ist der On-Disk-Cache veraltet bis zum nächsten sauberen Herunterfahren. Um den frischesten ShimCache zu bekommen, brauchen Sie ein Speicherabbild oder ein System, das seit den interessierenden Ereignissen sauber heruntergefahren wurde.
Der Cache ist außerdem größenbegrenzt:
- Windows 7 / Server 2008 R2: 1024 Einträge.
- Windows 8 / 2012: 1024 Einträge.
- Windows 10 / 11 / 2016+: 1024 Einträge.
Wenn das Limit erreicht ist, werden ältere Einträge nach LRU-Verfahren verdrängt. Ein stark genutzter Host kann ShimCache in Tagen durchwälzen.
Amcache#
Eine separate Registry-Hive (Amcache.hve), gepflegt vom
geplanten Task Compatibility Appraiser, der auf Workstations
ungefähr täglich und auf Servern seltener läuft. Die Hive zeichnet
Tausende von Einträgen pro Host mit reichhaltigen Metadaten auf:
SHA-1-Hash, Publisher, Version, Linkdatum, Installationskontext.
Siehe Amcache-Registry-Struktur
für das vollständige Schema.
Der fundamentale Unterschied#
| Eigenschaft | ShimCache | Amcache |
|---|---|---|
| Speicherung | SYSTEM-Hive, einzelner Binärwert |
Eigenständige Amcache.hve |
| Pflegender | Kernel-Loader | Geplanter Task im User-Mode |
| Update-Trigger | Loader berührt das Binärprogramm | Appraiser-Scan |
| Persistenz auf Festplatte | Beim Herunterfahren | Kontinuierlich (mit Transaktionsprotokollen) |
| Max. Einträge | ~1024 | Effektiv unbegrenzt (Tausende typisch) |
| Zeichnet Hash auf? | Nein | Ja — SHA-1 der ersten 31 MiB |
| Zeichnet Publisher / Version auf? | Nein | Ja |
Zeichnet ProgramId auf? |
Nein | Ja |
| Zeichnet Treiber- / Gerätedaten auf? | Nein | Ja (Treiber- + Geräte-Unterschlüssel) |
| Granularität pro Eintrag | Pfad + 1–2 Zeitstempel | Pfad + reichhaltige Metadaten + mehrere Zeitstempel |
| Auf Live-System verfügbar | Veraltet (Herunterfahren nötig) | Frisch |
| Überlebt Löschung des Binärprogramms | Ja | Ja |
| Im Speicher verfügbar | Ja (nützlichster Ort) | Ja (weniger kritisch) |
Für die meisten DFIR-Arbeiten ist Amcache das reichhaltigere Artefakt. ShimCache bleibt essentiell für spezifische Fragen, in denen seine kernelseitige Position sich auszahlt.
Wann ShimCache gewinnt#
Eine Handvoll Fälle, in denen Sie ShimCache wollen, nicht Amcache:
„Hat der Loader dieses Binärprogramm berührt, auch wenn es nicht ausgeführt wurde?"#
ShimCache zeichnet Loader-Berührungen aggressiver auf, als Amcache Präsenz aufzeichnet. Ein Binärprogramm, das von einer Anwendung kurz statet wurde, aber nie ausgeführt und nie vom Appraiser inventarisiert wurde, kann trotzdem eine Spur in ShimCache hinterlassen.
Das ist selten, aber nicht unmöglich. ShimCache ist das einzige Artefakt, das das erfasst.
„Ich habe ein Speicherabbild, aber kein Festplatten-Image"#
ShimCache lebt kontinuierlich im Kernel-Speicher und ist eines der
Artefakte, die das shimcachemem-Plugin von Volatility sauber
extrahiert. Amcache sind Registry-Hive-Daten auf der Festplatte —
um sie aus dem Speicher zu bekommen, müssen Sie die Hive selbst
extrahieren, was mehr Arbeit ist.
„Der Appraiser ist auf diesem Host deaktiviert"#
Gehärtete Endpoints deaktivieren manchmal den Compatibility Appraiser, um Telemetrie an Microsoft zu verhindern. Diese Hosts haben keine Amcache-Aktivität, aber der Kernel pflegt ShimCache weiterhin (es ist Teil des Loaders, nicht des Appraisers).
„Ich brauche Abdeckung vor Windows 10 1709"#
Das moderne Inventory*-Schema in Amcache landete erst in Windows
10 Build 1709. Für ältere 10/8.x-Builds ist Amcache dünner.
ShimCache ist älter als Amcache und konsistent ab Windows 7
verfügbar.
Wann Amcache gewinnt#
Meistens. Die Fälle, in denen Amcache dramatisch besser ist:
„Was ist der SHA-1 dieses Binärprogramms?"#
ShimCache: keine Antwort. Amcache: direkt in der Hash-Spalte.
Allein das ist Grund genug, Amcache zur ersten Anlaufstelle in den
meisten Untersuchungen zu machen.
„Wer hat dieses Binärprogramm veröffentlicht?"#
ShimCache: keine Antwort. Amcache: Publisher, PublisherName,
ProductName.
„Wann erschien dieses Binärprogramm zum ersten Mal auf diesem Host?"#
ShimCache: ein Zeitstempel, aber es ist die Änderungszeit der Datei
zum Zeitpunkt der Loader-Berührung, nicht die Berührungszeit
selbst. Nützlich, aber indirekt. Amcache: KeyLastWriteTimestamp
kommt „wann hat Amcache dies aufgezeichnet" näher, was wiederum
„wann hat der Appraiser es zum ersten Mal gesehen" näher kommt.
Siehe Amcache-Zeitstempel erklärt.
„Steht dieses Binärprogramm in Bezug zu einer installierten Anwendung?"#
ShimCache: keine Beziehungsdaten. Amcache: ProgramId verbindet
mit InventoryApplication für den vollständigen
Installations-Produktkontext. Siehe
Amcache ProgramId erklärt.
„Hostübergreifende Jagd"#
ShimCache: 1024 Einträge pro Host, keine ProgramId, nur Pfade.
Eine hash-basierte hostübergreifende Jagd ist allein aus
ShimCache unmöglich. Amcache: Hash und ProgramId machen
hostübergreifende Pivots trivial. Siehe
Lateral Movement und Amcache-ProgramId-Pivoting.
„Treiber- / Geräte-Beweise"#
ShimCache: nur PE-Binärprogramme, die der Loader berührte.
Amcache: InventoryDriverBinary, InventoryDeviceContainer und
InventoryDevicePnp geben Ihnen eine separate, strukturierte
Treiber- und Geräte-Historie. Essentiell für BYOVD- und
USB-Untersuchungen.
Wie sie sich gegenseitig bekräftigen#
Wenn beide Artefakte einen Eintrag für dasselbe Binärprogramm haben, bekommen Sie eine Multi-Source-Bestätigung:
- ShimCache sagt, dass der Loader es berührte.
- Amcache sagt, dass der Appraiser es inventarisierte, mit Hash und Metadaten.
- Prefetch (falls vorhanden) sagt, dass es tatsächlich ausgeführt wurde, mit Laufzeiten.
Wenn nur ein Artefakt das Binärprogramm hat, ist das Fehlen im anderen selbst ein Signal:
- Nur ShimCache: Der Loader berührte es, aber der Appraiser inventarisierte es nie. Mögliche Gründe: Datei vor dem nächsten Appraiser-Lauf gelöscht, Datei in einem Pfad, den der Appraiser nicht durchsucht, Appraiser deaktiviert.
- Nur Amcache: Der Appraiser inventarisierte es, aber der Loader berührte es nie (im Zeitfenster, das der aktuelle ShimCache abdeckt). Mögliche Gründe: Datei war präsent, wurde aber nie geladen, die Loader-Berührung der Datei wurde aus dem 1024-Einträge-Limit des ShimCache verdrängt, ShimCache wurde geleert.
Gemeinsamer Standard-Workflow#
- Parsen Sie ShimCache mit
AppCompatCacheParser.exe(Zimmerman). - Parsen Sie Amcache mit
AmcacheParser.exe(Zimmerman). - Laden Sie beide in Timeline Explorer.
- Prüfen Sie für jeden Eintrag im Amcache-Triage-Filter „unsigniertes PE in benutzerbeschreibbarem Pfad" ShimCache auf denselben Pfad. Falls vorhanden, berührte der Loader es; falls nicht, nur Präsenz.
- Prüfen Sie für jeden Eintrag in ShimCache mit gesetztem Executed-Flag Amcache auf Hash- / Publisher-Metadaten.
- Querverweisen Sie beides mit Prefetch für den Ausführungsbeweis.
Schnelle Entscheidungstabelle#
| Ihre Frage | ShimCache | Amcache |
|---|---|---|
| War Binärprogramm X auf diesem Host? | ✓ (nur Pfad, letzte 1024) | ✓✓ (Pfad + Metadaten) |
| Was ist der SHA-1 von Binärprogramm X? | ✗ | ✓ |
| Wurde Binärprogramm X ausgeführt? | teilweise (Executed-Flag) | ✗ |
| Wann erschien Binärprogramm X zum ersten Mal? | teilweise | ✓ |
| Hostübergreifende Jagd nach Inhalt? | ✗ | ✓ |
| Hostübergreifende Jagd nach Anwendung? | ✗ | ✓ (ProgramId) |
| Treiber- / Geräte-Beweise? | ✗ | ✓ |
| Abdeckung auf gehärteten / Hosts ohne Appraiser? | ✓ | ✗ |
| Abdeckung auf vor Win10 1709? | ✓ | teilweise |
| Frisch auf Live-System verfügbar? | ✗ (Herunterfahren nötig) | ✓ |
Siehe auch#
- Vollständige Amcache-Referenz — das Artefakt vollständig.
- Amcache vs Prefetch — der andere große Ausführungsbeweis-Vergleich.
- Amcache vs SRUM — Ausführungsbeweise mit langem Fenster.
- Amcache für die Malware-Untersuchung — wie sich alle drei Artefakte in einem echten Playbook verbinden.
Um Ihre eigene Hive neben Ihrem ShimCache-Parse zu erkunden, legen Sie die Datei auf der Startseite des Parsers ab — sie läuft vollständig in Ihrem Browser.
Verwandte Beiträge
- Amcache vs SRUM: Präsenz vs Ressourcennutzung mit langem Fenster
SRUM verfolgt die Ressourcennutzung pro Anwendung über 30+ Tage; Amcache inventarisiert jedes auf der Festplatte präsente Binärprogramm. Hier ist, wie sie sich in einer Windows-DFIR-Timeline ergänzen.
- Amcache vs Prefetch: was jedes wirklich beweist
Amcache zeichnet Präsenz auf; Prefetch zeichnet Ausführung auf. Eine praktische Referenz, wann man was verwendet, worin sie sich überschneiden und wie man sie in einer DFIR-Timeline kombiniert.
- Was ist der Unterschied zwischen Amcache und AppCompatCache?
Amcache ist eine reichhaltigere, vom Appraiser gepflegte Registry-Hive mit Hashes und Metadaten. AppCompatCache (ShimCache) ist ein kleineres, loadergepflegtes Registry-Blob nur mit Pfaden und Zeitstempeln.
- Amcache-Parser im Vergleich: AmcacheParser CLI, Browser-Tool, Volatility, RegRipper
Direkter Vergleich der vier Wege, eine Windows-Amcache.hve-Hive 2026 zu parsen — Eric Zimmermans AmcacheParser CLI, Browser-Tool, Volatility 3 und RegRipper.