Amcache: die vollständige Forensik-Referenz der Windows-.hve-Hive

TL;DR — Amcache in einem Absatz. Amcache ist eine Windows- Registry-Hive (Amcache.hve), gepflegt vom Microsoft Compatibility Appraiser. Sie protokolliert jede PE-Datei, die der Appraiser auf dem Host inventarisiert hat — mit SHA-1-Hash, vollständigem Pfad, Herausgeber, PE-Linkdatum und Inventarzeitstempel. Analysten nutzen sie, um die Präsenz einer Binärdatei zu belegen (nicht zwingend deren Ausführung), per Hash über Hosts hinweg zu pivotieren und Spuren gelöschter Angreifer-Tools wiederherzustellen.

Amcache.hve ist die Windows-Registry-Hive, die aufzeichnet, welche Programme auf einem Rechner präsent waren oder ausgeführt wurden, mit reichhaltigen Metadaten: vollständiger Pfad, SHA-1-Hash, PE-Linkdatum, Herausgeber, Version und Inventarzeit. Für die digitale Forensik und Incident Response ist sie eines der vier Artefakte, die jeder Windows-Analyst zuerst lernt — neben Prefetch, ShimCache und dem Sicherheitsereignisprotokoll.

Diese Seite ist die kanonische Referenz zum Artefakt selbst: was es ist, wo es lebt, wie Windows es erzeugt, was jeder Top-Level- Schlüssel enthält, wie man es in einer Untersuchung verwendet und wie es sich zu benachbarten Ausführungsbeweis-Quellen verhält. Für die Behandlung von Parsing-Tools siehe den vollständigen Leitfaden zu AmcacheParser; für die ursprüngliche Kurzeinführung siehe Amcache für Windows-Forensik verstehen.


Amcache im Vergleich zu benachbarten Artefakten#

Die häufigste Frage neuer Amcache-Analysten ist: „Wie unterscheidet sich das von ShimCache / Prefetch / SRUM?" Schnellreferenz:

Artefakt Was es belegt Hash? Pfad? Kapazität Quelle
Amcache.hve Binärdatei war präsent auf dem Host ✅ SHA-1 (erste 31 MiB) ✅ Vollständig Tausende Einträge Compatibility Appraiser
ShimCache (AppCompatCache) Binärdatei wurde vom Loader gesehen ✅ Vollständig ~1.024 Einträge (LRU) Application-Compatibility-Loader
Prefetch Binärdatei wurde ausgeführt ✅ Vollständig ~1.024 .pf-Dateien Windows-Prefetcher (Pf-Dienst)
SRUM Binärdatei verbrauchte Ressourcen über 30+ Tage ✅ Vollständig App-Aggregate System Resource Usage Monitor
Security 4688 Prozess erzeugt (Echtzeit) ✅ Vollständig Durch Logrotation begrenzt Audit-Subsystem

Pivot-Faustregel: Amcache für Präsenz und Hash; ShimCache für die Loader-gesehene Liste; Prefetch für Ausführung; SRUM für Nutzung über Zeit; 4688 für das Echtzeit-Ereignis. Details zu jeder Gegenüberstellung: Amcache vs ShimCache, Amcache vs Prefetch, Amcache vs SRUM, Amcache vs AppCompatCache.


Was Amcache tatsächlich ist#

Amcache ist eine Registry-Hive — dasselbe Binärformat wie SYSTEM, SOFTWARE, SAM, SECURITY und NTUSER.DAT. Es ist keine Protokolldatei, keine Datenbank, keine flache Liste. Es ist ein Schlüssel-/Wertbaum mit typisierten Werten, und genau diese Struktur macht sie sowohl reichhaltig als auch von Hand etwas mühsam zu lesen.

Die Hive wird vom Microsoft Compatibility Appraiser befüllt, einem geplanten Task, der mit Windows unter \Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser ausgeliefert wird. Der Appraiser durchsucht das System nach installierter und vorhandener Software, sammelt PE-Header-Metadaten zu jeder Datei und schreibt strukturierte Inventareinträge in die Hive. Auf modernen Windows-10- und 11-Builds läuft der Appraiser ungefähr täglich; auf Windows-Server-Builds variiert die Kadenz, ist aber typischerweise mehrmals pro Woche.

Der Appraiser war ursprünglich Teil der Infrastruktur des Customer Experience Improvement Program (CEIP) — Microsofts Mechanismus, um Kompatibilitäts-Telemetrie vor großen Windows- Upgrades an die eigenen Server zu senden. Der forensische Wert von Amcache ist in gewisser Weise ein Nebeneffekt dieser Telemetrie- Pipeline: Der Appraiser musste ein lokales Inventar pflegen, um zu wissen, was zu senden ist, und auf eben dieses lokale Inventar pivotieren Analysten heute.

Warum Analysten sich darum kümmern#

Amcache beantwortet eine Frage, die kein anderes Windows-Artefakt so sauber beantwortet:

„Hat diese ausführbare Datei jemals auf diesem Host existiert, und wenn ja, mit welcher SHA-1, an welchem Pfad und etwa wann?"

Drei Dinge machen diese Frage in der DFIR besonders wertvoll:

  1. Sie überlebt Löschungen. Ein Wiper kann das Binärprogramm von der Festplatte entfernen; der Inventar-Snapshot in der Hive bleibt bis zum nächsten Appraiser-Lauf erhalten — und selbst dann ist der vorherige Lauf oft noch in den Transaktionsprotokollen.
  2. Sie hasht das Binärprogramm im Voraus. Amcache speichert den SHA-1 der ersten ~31 MiB der Datei zum Inventarzeitpunkt. Selbst wenn Sie das Binärprogramm nicht mehr haben, können Sie diesen Hash bei VirusTotal, Threat-Intelligence-Feeds oder Ihrer internen Allowlist-Datenbank einreichen.
  3. Sie zeichnet den Pfad auf. Wo das Binärprogramm auf der Festplatte lag, ist oft die ganze Geschichte — \Users\<name>\AppData\Local\Temp\svchost.exe ist seine eigene Anklageschrift.

Wo Amcache liegt#

Auf einem laufenden Windows-System:

C:\Windows\AppCompat\Programs\Amcache.hve
C:\Windows\AppCompat\Programs\Amcache.hve.LOG1
C:\Windows\AppCompat\Programs\Amcache.hve.LOG2

Die .LOG1- und .LOG2-Dateien sind die Transaktionsprotokolle der Hive — derselbe Write-Ahead-Log-Mechanismus, den jede Registry-Hive verwendet. Sammeln Sie immer alle drei zusammen. Wenn Sie nur Amcache.hve greifen, können Sie die jüngsten Schreibvorgänge unbemerkt verpassen, weil die neuesten Änderungen möglicherweise noch in den Protokollen liegen und auf das Flushen warten.

Für das vollständige Set an Standortfragen (ältere Windows-Pfade, wo es in einem Forensikabbild sitzt, wie KAPE / Velociraptor es sammelt) siehe Wo Amcache.hve auf der Festplatte liegt.

Historie über Windows-Versionen hinweg#

Die Hive hat eine kleine, aber unsaubere Historie:

  • Windows 7 / Server 2008 R2 führte das Artefakt als RecentFileCache.bcf ein — eine flache Binärdatei, keine Hive, und in den Metadaten viel ärmer. Es ist nicht direkt mit dem modernen Amcache vergleichbar.
  • Windows 8 / 8.1 führte Amcache.hve in seiner Hive-Form mit den Schlüsseln Root\File und Root\Programs ein (das „Legacy"- Schema).
  • Windows 10 Build 1709 (Fall Creators Update) fügte die Schlüssel Root\InventoryApplicationFile und die zugehörigen Inventory*-Schlüssel hinzu — das moderne Schema. Die Legacy- Schlüssel blieben auf einigen Builds zur Kompatibilität erhalten, wurden aber im Laufe der Zeit dünner.
  • Windows 11 setzt das Windows-10-Schema mit kleineren Ergänzungen fort, insbesondere granulareren Treiber- und Device- Container-Einträgen.

Wenn Sie eine Hive parsen, arbeiten Sie in der Regel mit dem modernen Inventory*-Schema. Die Legacy-Schlüssel Root\Programs und Root\File lohnen sich dennoch auf alten Systemen und auf Builds, auf denen der Appraiser deaktiviert wurde — sie erfassen manchmal Daten, die die modernen Schlüssel verpassen. Wir behandeln Windows-versionsspezifische Aspekte in Amcache unter Windows 11 und 10 und Amcache unter Windows Server.


Die Hive-Struktur#

Auf der obersten Ebene hat die Hive einen einzelnen Root-Schlüssel mit diesen nennenswerten Unterschlüsseln (auf einem modernen Windows-11-System):

Root\
├── InventoryApplication
├── InventoryApplicationDriver
├── InventoryApplicationFile
├── InventoryApplicationFramework
├── InventoryApplicationShortcut
├── InventoryDeviceContainer
├── InventoryDeviceInterface
├── InventoryDevicePnp
├── InventoryDriverBinary
├── InventoryDriverPackage
├── InventoryMiscellaneousUUPInfo
├── File             (Legacy)
└── Programs         (Legacy)

Die fünf, die DFIR-Analysten in praktisch jedem Fall anfassen:

Schlüssel Inhalt
InventoryApplicationFile Jede PE-Datei, die der Appraiser inventarisiert hat, mit vollständigem Pfad, SHA-1, Linkdatum, Herausgeber, Version. Die reichhaltigste Einzelquelle.
InventoryApplication Installierte Anwendungen (MSI- / Add-Remove-Programs-Einträge). Eltern für die Dateieinträge über ProgramId.
InventoryDriverBinary Jede vom System geladene Treiber-Binärdatei, mit Flags für signiert / Kernel-Modus. Kritisch für Kernel-Rootkit-Untersuchungen.
InventoryDeviceContainer Geräteeinträge mit Anzeigenamen: Drucker, Displays, Wechselmedien-Controller.
InventoryDevicePnp PnP-Enumerationseinträge, einer pro Geräteschnittstelle. Paart sich mit InventoryDeviceContainer über InstanceId.

Für eine Schlüssel-für-Schlüssel-Aufschlüsselung — jeder Unterschlüssel, jeder nennenswerte Wert und was er bedeutet — siehe Amcache-Registry-Struktur und -Schlüssel.

Schema-Versionierung#

Das Schema von Amcache hat sich im Laufe der Lebensdauer von Windows 10 mehrfach verschoben. Neue Wertnamen tauchen auf; alte verschwinden oder ändern ihren Typ. Deshalb ist ein generischer Registry-Viewer ein schlechtes Werkzeug für Amcache — die angezeigten Werte sind korrekt, aber unbeschriftet, und Sie verbringen mehr Zeit mit dem Abgleich gegen Blogbeiträge als mit der Analyse. Verwenden Sie einen zweckgebundenen Parser (AmcacheParser, den browserbasierten Parser dieser Seite oder das amcache-Plugin von RegRipper) und lassen Sie das Tool das Schema für Sie verfolgen.


Die Felder, die Analysten tatsächlich verwenden#

Eine Handvoll Werte pro Inventareintrag tragen 90 % des investigativen Gewichts:

FileId#

Der 41-Zeichen-String "0000" + sha1_hex, der eine Datei eindeutig über ihren Inhalt identifiziert. Das führende 0000 ist ein historisches Typ-Tag; die übrigen 40 Hex-Zeichen sind der SHA-1 der ersten 31 MiB der Datei. Entfernen Sie das Präfix und Sie haben einen Hash, den Sie direkt bei VirusTotal, IOC-Feeds oder Ihrer Hash-Allowlist-Datenbank einreichen können.

Ein paar Fallen:

  • Der Hash deckt nur die ersten 31 MiB ab, nicht die ganze Datei. Für Installer und große Binärprogramme ist er trotzdem unterscheidend, aber es ist technisch ein Präfix-Hash, kein Volltext-Hash.
  • Dateien kleiner als 31 MiB werden vollständig gehasht, sodass das Ergebnis einem Standard-SHA-1 entspricht.

Vollständige Behandlung: Amcache FileId erklärt.

ProgramId#

Ein 44-Zeichen-Identitäts-Hash, den Windows einer logischen Anwendung zuweist — eine Kombination aus Name, Herausgeber, Version und Sprache. Dieselbe ProgramId verbindet eine Datei in InventoryApplicationFile mit dem übergeordneten Anwendungsdatensatz in InventoryApplication. Sie ist außerdem über Hosts hinweg stabil: Zwei Maschinen mit derselben installierten Anwendung teilen typischerweise dieselbe ProgramId dafür, was sie zu einem nützlichen Pivot für hostübergreifende Hunts macht.

Vollständige Behandlung: Amcache ProgramId erklärt.

Zeitstempel#

Amcache stellt mehrere unterschiedliche Zeitstempel bereit, und sie zu verwechseln ist der häufigste Fehler, den neue Amcache-Analysten machen:

Feld Was es repräsentiert
KeyLastWriteTimestamp Registry-Last-Write des Schlüssels, der diesen Eintrag enthält. Das, was „wann Amcache diese Datei erfasst hat" am nächsten kommt.
LinkDate PE-Header-TimeDateStamp — wann das Binärprogramm kompiliert / gelinkt wurde. Vom Angreifer steuerbar; nicht als Beleg für die Präsenzzeit behandeln.
LastModified (falls vorhanden) Inventarseitiger Last-Modified-Marker; nicht in jeder Schema-Version vorhanden.
MsiInstallDate Wann das übergeordnete MSI installiert wurde (falls die Datei daraus stammt).

Der richtige Pivot für „Wann ist dieses Binärprogramm auf diesem Host aufgetaucht?" ist KeyLastWriteTimestamp. Vollständige Behandlung: Amcache-Zeitstempel erklärt.

Pfad, Publisher, IsPeFile#

Der Triage-Filter „Ist das verdächtig?", auf den sich die meisten Analysten standardisieren:

IsPeFile = True UND Publisher ist leer UND FullPath liegt unter \Users\, \AppData\, \ProgramData\ oder \Temp\.

Dieser einzelne Filter, angewendet auf InventoryApplicationFile, fördert die überwältigende Mehrheit der Artefakte handelsüblicher Schadsoftware auf einem typisch infizierten Host zutage. Er erzeugt auch reichlich Fehlalarme — Raubkopien, individuelle Entwickler-Skripte, portable Apps — weshalb er ein Triage-Filter ist und keine Detektionsregel.


Was Amcache nicht ist#

Drei hartnäckige Missverständnisse sollten wir vorab korrigieren, weil sie routinemäßig zu falschen Befunden führen:

Amcache ist kein „Ausführungsbeweis"#

Ein Binärprogramm, das in Amcache erscheint, bedeutet, dass der Appraiser die Datei zur Inventarzeit auf der Festplatte gesehen hat. Der Appraiser inventarisiert Dateien basierend darauf, wo sie liegen (Program Files, ProgramData, das Startmenü, kürzlich berührte Pfade) — nicht basierend darauf, ob sie ausgeführt wurden. Ein Binärprogramm kann in Amcache erscheinen, ohne jemals ausgeführt worden zu sein.

Für Ausführung benötigen Sie Prefetch (das stärkste Signal), Prozesserstellungs-Events (4688 / Sysmon 1), ShimCache als bekräftigendes Signal oder SRUM für Korrelation über längere Fenster. Siehe Amcache vs Prefetch und Amcache vs ShimCache für die kanonischen Unterschiede und Amcache vs SRUM für die Paarung über längere Fenster.

Amcache ist nicht vollständig#

Der Appraiser übersieht Dinge:

  • Dateien außerhalb der Pfade, die er durchsucht.
  • Dateien, die zwischen Appraiser-Läufen kamen und gingen.
  • Dateien auf einem Host, auf dem der Appraiser deaktiviert wurde (manche gehärteten Endpoints).
  • Auf älteren Windows-Builds Dateien außerhalb des Legacy-Bereichs Programs / File.

Das Fehlen in Amcache ist kein Beweis dafür, dass ein Binärprogramm nie präsent war. Es ist nur ein Beweis dafür, dass der Appraiser es nicht gesehen hat.

Amcache ist nicht manipulationssicher#

Die Hive liegt an einem bekannten Ort auf der Festplatte. Ein Angreifer mit Admin-Rechten kann sie ändern, löschen oder — subtiler — den Zeitplan des Appraisers so anpassen, dass er nicht mehr aufzeichnet. Nichts davon ist bei handelsüblichen Eindringversuchen üblich (der Nutzen, Amcache zu säubern, lohnt selten das Rauschen, das es erzeugt), aber möglich ist es, und Sie sollten Amcache als ein Signal unter vielen behandeln, nicht als Grundwahrheit.


Amcache in einer Untersuchung verwenden#

Die Standard-Ermittlungsschleife bei einem rein Windows-basierten Eindringen:

  1. Sammeln. Schnappen Sie sich Amcache.hve + Amcache.hve.LOG1 + Amcache.hve.LOG2. KAPEs Amcache-Target erledigt das in einem Befehl; Velociraptors Windows.Forensics.Amcache-Artefakt erledigt es remote.
  2. Parsen. Führen Sie AmcacheParser mit --mp aus, um verwaiste Einträge wiederherzustellen. Sie erhalten eine CSV pro Kategorie.
  3. Triage-Filter. Wenden Sie den Filter „unsigniertes PE in benutzerbeschreibbarem Pfad" auf *_UnassociatedFileEntries.csv an. Das ergibt eine überschaubare Liste — typischerweise einige Dutzend Zeilen auf einem typisch infizierten Host.
  4. Pivotieren. Nehmen Sie für jede verbleibende Zeile den SHA-1-Hash und prüfen Sie ihn gegen VirusTotal, Ihren TI-Feed und Ihre historischen Detektionen. Prüfen Sie für jede Zeile auch den FullPath gegen Ihre Dateisystem-Timeline und die Prefetch-CSV — zeigt Prefetch, dass dasselbe Binärprogramm ausgeführt wurde? Existiert die Datei noch auf der Festplatte?
  5. Ausführung bestätigen. Querverweisen Sie Treffer gegen Prefetch (definitive Ausführung), Sysmon 1 / 7 (Prozess- und Image-Load) und Security 4688 (Prozesserstellung), falls aktiviert.
  6. Zeitlich eingrenzen. Nehmen Sie KeyLastWriteTimestamp verdächtiger Zeilen und bauen Sie ein enges Zeitfenster darum herum. Ziehen Sie alle Events, Dateisystemänderungen und Registry-Schreibvorgänge aus diesem Fenster für das vollständige Bild.

Für spezifische Szenarien behandeln die Use-Case-Beiträge das Playbook im Detail:


Tooling-Landschaft#

Sie haben mehrere vernünftige Optionen, um die Hive tatsächlich zu parsen:

Tool Am besten geeignet für
AmcacheParser von Eric Zimmerman Produktive DFIR auf einem Windows-Analystenrechner. Die kanonische Implementierung.
Browserbasierter Parser (diese Seite) Triage, Lehre, Nicht-Windows-Analysten, gesperrte Hosts. Läuft in WebAssembly, die Datei verlässt nie den Browser.
amcache-Plugin von RegRipper Schnelle interaktive Analyse als Teil eines breiteren RegRipper-Sweeps.
Volatility-Plugins Die Hive aus einem Speicherabbild ziehen und dann an AmcacheParser übergeben.

Für die praktische Frage „welches sollte ich jetzt nehmen?" lautet die Antwort fast immer: Erics AmcacheParser.exe für die Untersuchung, der Browser-Parser dieser Seite für Triage oder einen schnellen Blick, ohne irgendetwas zu installieren. Die Pfade über RegRipper und Volatility existieren für spezifische Kontexte — interaktive RegRipper-Sweeps bzw. reine Speicherakquisitionen.


Häufig gestellte Fragen#

Wie groß ist Amcache.hve typischerweise?#

Auf einer typischen Windows-11-Workstation reicht Amcache.hve von 2 MB bis 25 MB. Stark genutzte Entwickler-Workstations und Server mit vielen kurzlebigen Binärprogrammen können über 50 MB hinaus wachsen. Die Transaktionsprotokolle sind klein (in der Regel je <1 MB).

Wie weit reicht Amcache zurück?#

Die Hive ist nicht zeitlich begrenzt, sondern durch das eigene Retention-Verhalten von Windows. Auf einer langlebigen Workstation sehen Sie Inventareinträge, die Monate oder Jahre alt sind, besonders für Inventory*-Einträge, bei denen das Binärprogramm noch auf der Festplatte vorhanden ist. Sobald ein Binärprogramm entfernt wurde und der Appraiser mehrere Durchläufe hatte, um das zu bemerken, altert der entsprechende Eintrag in der Regel (aber nicht immer) heraus.

Zeichnet Amcache DLLs auf?#

Ja, in modernen Schemata. InventoryApplicationFile zeichnet sowohl EXEs als auch DLLs auf (allgemein gefiltert auf PE-Dateien). Hives vor Windows 10 1709 möglicherweise nicht, je nach Build.

Zeichnet Amcache Skripte auf?#

Im Allgemeinen nicht für .ps1, .bat, .vbs, .js usw. — Amcache konzentriert sich auf PE-Binärdateien. Skript-Ausführungsbeweise kommen aus den PowerShell-Operational- Logs, AMSI, Sysmon oder Prefetch (für cscript.exe- / wscript.exe-Aufrufe selbst).

Wie ist das Verhältnis zwischen Amcache und ShimCache?#

Es sind unterschiedliche Artefakte, obwohl beide mit Anwendungskompatibilität zu tun haben. ShimCache (AppCompatCache in der SYSTEM-Hive) wird vom Loader für Zwecke der Anwendungskompatibilität gepflegt und zeichnet bis zu 1024 Einträge pro Host mit eingeschränkten Metadaten auf. Amcache wird vom Appraiser für Zwecke der Kompatibilitäts-Telemetrie gepflegt und zeichnet Tausende von Einträgen mit reichhaltigen Metadaten auf. Siehe Amcache vs ShimCache für den vollständigen Vergleich.

Kann ich Amcache.hve unter Linux oder macOS lesen?#

Ja. Verwenden Sie dotnet AmcacheParser.dll auf einem Host mit .NET-Runtime oder den browserbasierten Parser dieser Seite, der in WebAssembly läuft und in jedem modernen Browser funktioniert, unabhängig vom Host-Betriebssystem. Das Hive-Format ist portabel.

Sind Amcache-Beweise vor Gericht zulässig?#

Das hängt von der Jurisdiktion ab und davon, wie die Beweise gesammelt wurden. Amcache selbst ist gut dokumentiert und in der DFIR weit verbreitet, was hilft. Die üblichen Regeln gelten: Bewahren Sie die Hive (und ihre Transaktionsprotokolle) mit dokumentierter Chain of Custody, hashen Sie sie vor und nach der Analyse und verwenden Sie einen dokumentierten Parser, dessen Verhalten Sie verteidigen können.


Wohin als Nächstes#

Wenn Sie hier gelandet sind auf der Suche nach...

Verwandte Beiträge

  • Amcache-Registry-Struktur: jeder Schlüssel erklärt

    Eine Schlüssel-für-Schlüssel-Tour durch die Registry-Hive Amcache.hve — Root\\InventoryApplicationFile, InventoryApplication, InventoryDriverBinary, die Legacy-Schlüssel Programs und File und was jeder nennenswerte Wert bedeutet.

  • Wo ist der Amcache-Registry-Schlüssel?

    Amcache ist eine eigene Hive-Datei unter C:\Windows\AppCompat\Programs\Amcache.hve — kein Schlüssel unter HKLM. Beim Laden durch Tools oder durch Windows selbst wird sie als HKLM\Amcache eingehängt.

  • Volatility und Amcache: die Hive aus Speicherabbildern extrahieren

    Ein praktischer Leitfaden zur Wiederherstellung von Amcache aus einem Windows-Speicherabbild mit Volatility — wann speicherseitige Wiederherstellung die einzige Option ist, welche Plugins zu verwenden sind und wie an AmcacheParser übergeben wird.

  • RegRipper amcache-Plugin: was es tut und wann man es verwendet

    Ein praktischer Leitfaden zum amcache-Plugin von RegRipper — was es parst, wie sich seine Text-Ausgabe von AmcacheParsers CSV unterscheidet und wann man darauf zurückgreift statt (oder zusätzlich zum) Zimmerman-Tool.

Zurück zu allen Beiträgen