Zeichnet der ShimCache gelöschte Dateien auf?

3 Min. Lesezeit

TL;DR. Ja. Ein ShimCache-Eintrag bleibt in der Registry, egal ob die Datei noch auf der Disk existiert. Das Löschen der Binärdatei löscht ihren ShimCache-Eintrag nicht — deshalb ist das Artefakt so wertvoll, um Tools zu fassen, die ein Angreifer ablegte, nutzte und wischte.

„Zeigt der ShimCache eine Datei noch nach dem Löschen?" ist eine der häufigsten Fragen in der Programmausführungs-Forensik — und die Antwort ist der eigentliche Grund, das Artefakt zu ziehen.

Kurze Antwort: ja

Der ShimCache speichert einen Pfad + Letzte-Änderungszeit-Zeitstempel in einem Registry-Wert. Dieser Datensatz hat keine Rückverbindung zum Dateisystem. Wird die ausführbare Datei gelöscht, gibt NTFS die Datei frei — der Registry-Wert bleibt aber unangetastet. Der Eintrag bleibt, bis er entweder durch neuere Einträge verdrängt wird (der Cache fasst bis zu 1.024) oder der Wert selbst geleert wird.

So kann eine Binärdatei, die ein Angreifer in C:\Users\Public\ ablegte, ausführte und zehn Minuten später löschte, immer noch einen sauberen, lesbaren ShimCache-Eintrag mit dem vollständigen Pfad hinterlassen, den sie einst belegte.

Warum das forensisch mächtig ist

Einträge gelöschter Dateien sind oft der einzige überlebende Beweis für das Angreifer-Werkzeug:

  • Eine umbenannte mimikatz.exe, gelöscht nach dem Diebstahl von Anmeldedaten.
  • Ein Staging-Archiv, entfernt nach der Exfiltration.
  • Ein Dropper, der sich nach Installation einer Payload selbst löschte.

In jedem Fall ist die Datei weg, aber der ShimCache-Pfad sagt Ihnen, dass sie existierte, wo, und (über den Letzte-Änderungszeit-Zeitstempel) bindet sie an einen Build. Das ist das Rückgrat des Malware-Hunting mit dem ShimCache und der Ransomware-Untersuchungen, bei denen Angreifer routinemäßig ihre Tools wischen.

Wie lange überlebt ein Eintrag einer gelöschten Datei?

Zwei Grenzen gelten:

  • Verdrängung. Der Cache ist begrenzt (bis zu 1.024 Einträge). Auf einem ausgelasteten Host kann starke Ausführungsaktivität alte Einträge hinausdrängen. Auf einem ruhigen Server kann er Monate überleben.
  • Flush-Zeitpunkt. Neue Einträge persistieren nur beim sauberen Shutdown in die Hive. Wurde der Host seit dem Löschen nicht heruntergefahren, ist der überlebende Eintrag vielleicht noch nur im Speicher — ziehen Sie ihn aus einem Speicherabbild (wie). Das Speicher-/Flush-Modell wird in wo der ShimCache gespeichert wird behandelt.

Was es nicht beweist

Ein Eintrag einer gelöschten Datei beweist, dass die Datei auf diesem Host existierte und untersucht wurde. Er beweist für sich nicht die Ausführung und sagt nicht, wann gelöscht wurde (der Zeitstempel ist die mtime der Datei, kein Löschdatum). Behandeln Sie ihn als starken Existenz-Zeugen und untermauern Sie die Ausführung mit Prefetch/AmCache — siehe beweist der ShimCache Ausführung.

Um zu prüfen, welche Einträge einer Hive auf nicht mehr existierende Dateien zeigen, parsen Sie sie mit dem Shimcache Parser und gleichen Sie die Pfade ab — alles läuft lokal im Browser.

Weiterführende Quellen

Verwandte Artikel