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

Amcache.hve ist eine Windows-Registry-Hive mit einem Wurzelschlüssel (Root) und einem Baum von Unterschlüsseln darunter. Jeder Unterschlüssel hält eine andere Inventarkategorie: PE-Dateien, installierte Anwendungen, Treiber, Geräte, Verknüpfungen. Diese Seite geht jeden nennenswerten Schlüssel durch, was er aufzeichnet und welche Werte Sie in der DFIR tatsächlich verwenden.

Für den High-Level-Kontext siehe die vollständige Amcache-Referenz. Für die von AmcacheParser erzeugte Referenz auf CSV-Spalten-Ebene siehe AmcacheParser-Ausgabespalten erklärt.


Top-Level-Layout#

Auf einer modernen Windows-11-Hive enthält Root ungefähr:

Root\
├── InventoryApplication
├── InventoryApplicationDriver
├── InventoryApplicationFile
├── InventoryApplicationFramework
├── InventoryApplicationShortcut
├── InventoryDeviceContainer
├── InventoryDeviceInterface
├── InventoryDeviceMediaClass
├── InventoryDevicePnp
├── InventoryDriverBinary
├── InventoryDriverPackage
├── InventoryMiscellaneousUUPInfo
├── File                  (Legacy, kann leer sein)
└── Programs              (Legacy, oft dünn besiedelt)

Das moderne Schema ist Inventory*. Das Legacy-Schema sind die flachen Schlüssel File und Programs, die seit Windows 8 präsent sind. Windows 10 (Build 1709 und später) und Windows 11 schreiben beide das moderne Schema; einige Legacy-Einträge können je nach Build noch erscheinen.


Root\InventoryApplicationFile — der Hauptschlüssel#

Das ist der Schlüssel, in dem Sie die meiste Zeit verbringen. Ein Unterschlüssel pro Datei, die der Appraiser inventarisiert hat, benannt nach dem LongPathHash der Datei (ein interner Amcache-Identifikator) mit einer kurzen Diskriminator-Endung. Jeder Unterschlüssel hält Werte für diese Datei.

Nennenswerte Werte#

Wertname Typ Bedeutung
Name REG_SZ Nur der Dateiname (z. B. mimikatz.exe).
LowerCaseLongPath REG_SZ Vollständiger Pfad, kleingeschrieben.
LongPathHash REG_SZ Amcache-interner Pfad-Dedup-Hash.
FileId REG_SZ "0000" + sha1_hex — der Inhalts-Hash der Datei. Siehe Amcache FileId erklärt.
Size REG_QWORD Dateigröße in Bytes.
IsPeFile REG_DWORD 1, wenn die Datei ein PE ist.
IsOsComponent REG_DWORD 1, wenn die Datei Teil von Windows ist.
Publisher REG_SZ Publisher-String aus der PE-Signatur / -Ressource.
Version REG_SZ VS_FIXEDFILEINFO.dwFileVersion.
BinFileVersion REG_SZ Binäre Dateiversion.
BinProductVersion REG_SZ Binäre Produktversion.
ProductName REG_SZ PE-Ressource ProductName.
ProductVersion REG_SZ PE-Ressource ProductVersion.
LinkDate REG_SZ PE-IMAGE_FILE_HEADER.TimeDateStamp (Kompilier-/Linkzeit).
Language REG_DWORD PE-Ressource Sprach-ID.
Usn REG_QWORD An dieses Inventar gebundener USN-Journal-Eintrag.
ProgramId REG_SZ 44-Zeichen-Anwendungsidentitäts-Hash — verbindet zu InventoryApplication. Siehe Amcache ProgramId erklärt.

Der eigene LastWriteTimestamp des Schlüssels (kein Wert, sondern die Metadaten auf Registry-Ebene) ist das, was AmcacheParser als KeyLastWriteTimestamp ausgibt. Er ist der einzelne nützlichste Zeitstempel für „Wann hat Amcache diesen Eintrag erfasst?". Vollständige Behandlung: Amcache-Zeitstempel erklärt.

Associated vs Unassociated#

Wenn AmcacheParser diesen Schlüssel liest, teilt er die Einträge in zwei CSVs auf:

  • *_AssociatedFileEntries.csv — Einträge, deren ProgramId zu einem Eintrag in InventoryApplication passt. Die Datei ist mit einem installierten Produkt assoziiert.
  • *_UnassociatedFileEntries.csv — Einträge, deren ProgramId zu keinem installierten Anwendungsdatensatz passt. Das sind typischerweise Ad-hoc-Binärprogramme, heruntergeladene Tools, Skripte und — DFIR-relevant — Angreifer-Tooling.

Die Unassociated-Datei ist der Ort, an dem die meisten bösartigen Binärprogramme auf einem kompromittierten Host auftauchen.


Root\InventoryApplication — installierte Anwendungen#

Ein Unterschlüssel pro installierter Anwendung, mit der ProgramId als Schlüssel. Nennenswerte Werte:

Wertname Bedeutung
ProgramId Die 44-Zeichen-Identität, ebenfalls als Unterschlüsselname verwendet.
Name Anzeigename der Anwendung.
Version Anwendungsversion.
Publisher Publisher-String.
RootDirPath Installationsverzeichnis.
Source Wie der Appraiser von der App erfahren hat: MSI, AddRemoveProgram, Win32WindowsUpdate, Inbox, ...
Type Anwendungstyp (Application, Driver, ...).
Language LCID.
MsiPackageCode MSI-GUID, falls aus einem MSI.
MsiProductCode MSI-Produktcode, falls aus einem MSI.
InstallDate Installationsdatum der Anwendung (FILETIME).

Pivot-Muster: Nehmen Sie eine ProgramId von einer verdächtigen Datei in InventoryApplicationFile, finden Sie hier die entsprechende Anwendung, und Sie haben den vollständigen Installations-Produktkontext (Publisher, Version, Installationsdatum) für diese Datei.


Root\InventoryDriverBinary — Treiber-Binärdateien im Kernel-Modus#

Ein Unterschlüssel pro Treiber-Binärdatei, die das System geladen hat. Nennenswerte Werte:

Wertname Bedeutung
DriverName Dateiname des Treibers.
Inf Die .inf, die ihn installiert hat.
DriverVersion Treiber-Versionsstring.
Product PE-Ressource ProductName.
ProductVersion PE-Ressource ProductVersion.
WdfVersion Windows-Driver-Framework-Version.
DriverCompany Firmenstring aus dem PE.
DriverPackageStrongName Strong Name.
Service Zugehöriger Dienstname.
DriverSigned Ob der Treiber eine gültige Signatur beanspruchte.
DriverIsKernelMode 1 für Treiber im Kernel-Modus.
DriverTimeStamp PE-Linkdatum des Treibers.
ImageSize Image-Größe in Bytes.
Hash SHA-1 des Treibers.

Für BYOVD-Untersuchungen (bring-your-own-vulnerable-driver) sortieren Sie aufsteigend nach DriverTimeStamp und suchen Sie nach alten, aber signierten Treibern, die kürzlich auf dem Host aufgetaucht sind. Ein 2014 kompilierter Treiber, der heute zum ersten Mal in Ihrer Amcache erscheint, ist konstruktionsbedingt verdächtig.


Root\InventoryDeviceContainer — verbundene Geräte#

Ein Unterschlüssel pro „Device Container", den Windows verfolgt (Drucker, Displays, Wechselmedien-Controller, Bluetooth-Geräte, Netzwerkspeicher, ...). Nennenswerte Werte:

Wertname Bedeutung
FriendlyName „Brother HL-L2350DW", „Logitech BRIO", ...
Manufacturer Vendor-String.
ModelName / ModelNumber Modell-Identifikatoren.
Categories Gerätekategorien.
DiscoveryMethod Wie Windows das Gerät enumeriert hat.
IsConnected 1, wenn beim letzten Inventar verbunden.
IsPaired 1, wenn gekoppelt (Bluetooth usw.).
Icon Pfad zur Icon-Ressource des Geräts.

Das ist oft die sauberste Antwort auf „Hat dieses Peripheriegerät jemals mit diesem Host verbunden?". Speziell für die USB-Massenspeicher-Historie siehe USB- und Gerätehistorie aus Amcache.


Root\InventoryDevicePnp — PnP-Enumerationseinträge#

Ein Unterschlüssel pro Geräteschnittstelle. Nennenswerte Werte:

Wertname Bedeutung
BusReportedDescription Was das Gerät Windows mitgeteilt hat, dass es ist.
DeviceClass Treiberklassen-GUID.
DeviceId / InstanceId PnP-Instanz-Identifikator.
Manufacturer Vendor-String.
Model Modell-String.
Service Treiberdienst.
DriverName Treiberdatei hinter dem Gerät.

DevicePnp ist die technische Sicht; DeviceContainer ist die benutzerseitige Sicht. Verknüpfen Sie die beiden über InstanceId für das vollständige Bild.


Root\InventoryApplicationShortcut — Startmenü- / angeheftete Verknüpfungen#

Ein Unterschlüssel pro Verknüpfung, die Windows verfolgt. Jeder Eintrag enthält den Zielpfad der Verknüpfung und eine ProgramId, die zur übergeordneten Anwendung verlinkt. Weniger im Einsatz in der Incident Response, aber nützlich für die Frage „Was hatte der Benutzer am $DATUM angeheftet?".


Root\InventoryApplicationDriver und InventoryApplicationFramework#

Das sind kleinere Kataloge, die an die moderne InventoryApplication-Sicht gebunden sind. Driver listet User-Mode-Treiber, die mit installierten Anwendungen verknüpft sind; Framework listet Framework-Abhängigkeiten. Beide tauchen selten in der DFIR auf; sie sind nützlicher für Anwendungs-Inventar-Audits als für die Incident Response.


Root\InventoryMiscellaneousUUPInfo#

Zeichnet Informationen über Unified-Update-Platform-Pakete auf. Selten relevant für Sicherheitsuntersuchungen, es sei denn, Sie verfolgen, wie ein bestimmtes Windows-Update ausgeliefert wurde.


Root\Programs (Legacy)#

Der ältere Katalog installierter Anwendungen, der InventoryApplication vorausging. Spärlichere Metadaten, aber auf einigen älteren Builds ist dies die einzige befüllte Anwendungsliste. AmcacheParser gibt sie als *_ProgramEntries.csv aus. Nennenswerte Werte:

Wertname Bedeutung
Name Programm-Anzeigename.
Version Programmversion.
Publisher Publisher-String.
InstallDate Installationsdatum (FILETIME).
LanguageCode LCID.
InstallSource Quellpfad (CD, Netzwerkfreigabe, Downloads-Ordner, URL).
UninstallString Kommandozeile zur Deinstallation.
RootDirPath Installationsverzeichnis.
Source MSI, AddRemoveProgram usw.
Type Application, Driver usw.
ProgramInstanceId Identifikator pro Installation.

InstallSource ist der Wert, den Sie im Auge behalten sollten. Er zeichnet manchmal die Download-URL oder die Netzwerkfreigabe auf, von der ein Installer kam, was bei der Untersuchung von Supply-Chain- oder Social-Engineering-Eindringversuchen unbezahlbar ist.


Root\File (Legacy)#

Der ältere Katalog pro Datei. Auf modernen Hives ist dieser Schlüssel oft leer oder enthält eine kleine Untermenge dessen, was InventoryApplicationFile aufzeichnet. Lohnt einen Blick, aber selten die primäre Quelle auf einem Windows-10+-Host.


Wie Werte kodiert sind#

Ein paar Kodierungseigenheiten, die man kennen sollte:

  • Zeitstempel sind meist als Windows-FILETIME-64-Bit-Werte gespeichert (100-ns-Ticks seit 1601-01-01 UTC). AmcacheParser konvertiert sie in ISO-8601 UTC.
  • PE-Linkdaten sind als 32-Bit-time_t-Werte gespeichert (Sekunden seit 1970-01-01 UTC). AmcacheParser konvertiert sie ebenfalls.
  • Hashes sind als 41-Zeichen-Strings mit einem "0000"- Typ-Präfix gespeichert.
  • Booleans sind REG_DWORD 0 oder 1.
  • Pfad-Strings werden in LowerCaseLongPath kleingeschrieben gespeichert. Die ursprüngliche Groß-/Kleinschreibung wird nicht erhalten.

Siehe auch#

Um die Struktur auf einer Hive zu erkunden, die Sie kontrollieren, legen Sie eine Datei auf der Startseite des Parsers ab — jeder Schlüssel und Wert ist in der UI durchsuchbar.

Verwandte Beiträge

Zurück zu allen Beiträgen