ShimCache

Beim ShimCache (auch: Application Compatibility Cache, AppCompatCache) handelt es sich um eine Datenbank, mittels derer Windows in der Lage ist Inkompatibilitäten bei ausführbaren Dateien zu identifizieren.

Unter Windows 10 wird diese Datenbank nicht mehr gepflegt, daher kann diese nur für ältere Windowsversionen ausgewertet werden.

Jede im ShimCache enthaltene Anwendung wird beim Laden, Updaten oder Umbenennen durch das Betriebssystem auf Kompatibilität geprüft, also ob ein Shimming notwendig ist. Selbst wenn kein Shimming notwendig ist, wird trotzdem der ShimCache überprüft und ein Eintrag darin erzeugt und ggf. eine Kompatibilitätserweiterung zur bestehenden Datei hinzugefügt.

Dies ermöglicht älteren Programmen auch auf neueren Windows-Systemen ausgeführt zu werden (-> Abwärtskompatibilität). Der ShimCache fungiert in diesem Fall als Proxy-Schicht zwischen der alten Anwendung und dem neuen Betriebssystem. Dadurch entfällt die Notwendigkeit die Anwendung wegen eines Upgrades des Hostbetriebssystems anpassen zu müssen. Diese Kompatibilitätserweiterungen werden auch als Shims bezeichnet. Je nach Menge der ausführbaren Dateien kann es Hunderte von Shims auf einem Windows-Betriebssystem geben.

Die Datenbank mit ihren Einträgen ist in der Registry unter SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache\zu finden.


Für jede ausführbare Datei des Systems sind im ShimCache folgende Informationen enthalten:

Cache Entry Position, Nummer des jeweiligen Eintrags in der Datenbank

Pfad zur jeweiligen ausführbaren Datei

Zeitstempel „Last Modified“ (UTC). Dieser wird upgedated, sobald ein neues shimming erfolgt

Executed-Flag, dieser gibt an, ob diese ausführbare Daten auch ausgeführt wurde.

In der IT-Forensik sind die darin enthaltenen Informationen vor allem in Bezug auf Programmausführungen und im Rahmen der Analyse malwarebezogener Spuren von Bedeutung.

Der Wert dieser Beweisquelle wurde erst 2012 durch die Veröffentlichung von Andrew Davis "Leveraging the Application Compatibility Cache in Forensic Investigations" bekannt. Weiterhin erstellte er auch das ShimCache Parser-Tool, welches in der Lage ist die Registry-Informationen des ShimCaches zu extrahieren.

In dem ShimCache kann mal also feststellen, in welchem Pfad sich eine ausführbare Datei befindet und unter welchem Namen sie dort zu finden ist. Der Zeitpunkt der Überprüfung auf Kompatibilitätsprobleme ist feststellbar und mittels Execute-Flag kann auch nachgewiesen werden, ob die Datei bereits ausgeführt wurde. Die normale Deinstallation einer Anwendung führt im Übrigen nicht dazu, dass dessen Spuren in der Windows Registry gelöscht werden.

Damit lässt sich eindeutig und gerichtsfest nachweisen, ob nicht legitime und/oder gelöschte Software auf einem System nachweisbar ist und auch wann diese zuletzt ausgeführt wurde. Dadurch ist der ShimCache eine gute Alternative bei der Suche nach Artefakten, wenn der Prefetch auf dem System deaktiviert wurde. Aber auch bei aktiviertem Prefetch sind die Artefakte das ShimCaches wertvoll, da diese die Erkenntnisse aus dem Prefetch untermauern können.

Wichtig ist, dass die Registry erst dann aktualisiert wird, wenn das System heruntergefahren oder neu gestartet wird. Damit wird selbstverständlich auch der ShimCache erst durch einen Neustart aktualisiert. Daher muss geprüft werden, ob die Zeiten im ShimCache auch mit den Startzeiten der Windows-Sicherheitsereignisprotokolle in Korrelation stehen. Dies bedeutet aber auch, dass eine Untersuchung dieser Quelle im Rahmen der Live-Forensik nicht geeignet ist.