Legacy-ShimCache-Formate: Windows XP, 2003, Vista, 7 und 8

4 Min. Lesezeit

TL;DR. Jede Windows-Generation hat die AppCompatCache-Struktur neu geschrieben. XP nutzt eine Magic 0xDEADBEEF und einen festen 552-Byte-Datensatz. Server 2003, Vista/2008, Windows 7/2008 R2 und Windows 8/8.1 haben jeweils eigene Header- und Eintragslayouts. Ein Parser muss anhand der Header-Magic verzweigen. Es gibt kein einheitliches Format.

Die meiste ShimCache-Dokumentation deckt das Windows-10/11-Layout ab, weil das ist, was Ermittler auf Workstations sehen. Dann bekommst du einen SYSTEM-Hive von einem Windows-7-Domänencontroller, einer Server-2008-R2-Anwendungskiste oder der gelegentlichen XP-Appliance, auf der noch Line-of-Business-Code läuft, und der moderne Parser verweigert höflich. Das ist die Referenz für diese Fälle.

Warum es kein einheitliches Format gibt

ShimCache ist eine interne Windows-Struktur ohne öffentliche Spezifikation. Microsoft hat sie über Releases hinweg umgeformt, während sich die Shim-Infrastruktur weiterentwickelte. Auch der Registry-Wertname und der Pfad wanderten. Ein robuster Parser identifiziert die Version aus dem Header, bevor er einen einzigen Eintrag liest. Eric Zimmermans AppCompatCacheParser handhabt jede Version. Mandiants Shim Cache Parser handhabt die meisten. Ohne einen Versionserkennungsschritt eigenes zu rollen ist, wie du stille Korruption produzierst.

Versionsweiser Spickzettel

WindowsRegistry-WertHeader-MagicEintragsform
XP (32-Bit)…\AppCompatibility\AppCompatCache0xDEADBEEFFeste 552-Byte-Datensätze, max. 96
Server 2003…\AppCompatCache\AppCompatCache0xBADC0FFE24-Byte (x86) / 32-Byte (x64) Einträge
Vista / 2008…\AppCompatCache\AppCompatCache0xBADC0FFEWie 2003, andere Flags
Windows 7 / 2008 R2…\AppCompatCache\AppCompatCache0xBADC0FEE32-Byte-Header; Einträge tragen das Insertion-Flag
Windows 8 / 2012…\AppCompatCache\AppCompatCache0x00000080Variable-Length-00ts-Eintragssignatur
Windows 8.1 / 2012 R2…\AppCompatCache\AppCompatCache0x0000008010ts-Eintragssignatur

Das moderne Windows-10/11-10ts-Layout ist separat beschrieben.

XP, der Außenseiter

Windows XP ist anders als alles danach. 0xDEADBEEF-Magic, feste 552-Byte-Datensätze, ein hartes Cap von 96 Einträgen, UTF-16-Pfade auf feste Länge aufgefüllt. Es speicherte auch einen Last-Update-Zeitstempel und ein Dateigrößen-Feld, das spätere Versionen fallen ließen. Wenn du 0xDEADBEEF siehst, bist du in XP-Territorium, und keine der modernen Parsing-Logiken trifft zu. Auch der Registry-Pfad wanderte: XP hält den Wert unter AppCompatibility, nicht AppCompatCache.

Windows 7, das, das du am häufigsten treffen wirst

Windows 7 und Server 2008 R2 sind in der IR immer noch häufig. Magic 0xBADC0FEE, ein 32-Byte-Header und pro-Eintrag-Datensätze, die den Pfad, die Last-Modified-Zeit der Datei und (einzigartig nützlich) ein Ausführungs-Flag enthalten, das in Windows 8 und später entfernt wurde. Unter Windows 7 ist ein gesetztes Ausführungs-Flag eine vernünftige Bestätigung einer Ausführung, nicht absolut. Übertrage das nicht auf neuere Systeme, wie in Beweist der ShimCache eine Ausführung? erklärt.

Windows-7-Hives paaren sich auch mit RecentFileCache.bcf, dem Vorläufer von AmCache. Wenn du einen Win7-SYSTEM hast, hast du wahrscheinlich eine nützliche RecentFileCache.bcf daneben.

Der 8/8.1-Übergang

Windows 8 führte den variablen Eintrag mit einer Per-Eintrag-Signatur (00ts) ein, und 8.1 bumpte sie auf 10ts. Das ist der strukturelle Vorfahre des Windows-10/11-Formats, also ist ein Parser, der 8.1 handhabt, größtenteils dabei, 10 zu handhaben. Die Header-Magic wanderte auf 0x00000080 (der Offset des ersten Eintrags), was die Konvention ist, die moderne Hives beibehalten haben.

Server 2003 und Vista

Magic 0xBADC0FFE. Einträge sind kleiner (24 Byte auf x86, 32 Byte auf x64). Vista fügte ein Flag-Wort hinzu, das 2003 nicht hatte. Beide sind in moderner Incident-Response unüblich, tauchen aber in Lift-and-Shift-Migrationen von Legacy-Infrastruktur auf.

Sie ohne Toolchain parsen

Der Shimcache Parser erkennt die Header-Magic automatisch und verzweigt zum richtigen Decoder für XP, 2003, Vista, 7, 8, 8.1 und 10/11. Du kannst einen Legacy-SYSTEM-Hive im Browser lesen, ohne alte Tooling auszupacken. Für Erfassungshinweise auf diesen älteren Systemen siehe Einen SYSTEM-Hive beschaffen. Für breitere Registry-Triage auf einer Legacy-Kiste handhabt der registry parser die Eigenheiten des älteren Hive-Formats.

Weiterführende Lektüre

Verwandte Artikel