Beweise gelöschter Binärprogramme aus Amcache wiederherstellen
Das einzelne am meisten unterschätzte Feature von Amcache.hve
ist, dass es die Binärprogramme überlebt, die es aufzeichnet.
Ein Angreifer kann ein Tool in dem Moment löschen, in dem er es
nicht mehr braucht; der Amcache-Snapshot des Pfades, Hashes,
Publishers, der Version und Inventarzeit dieses Binärprogramms
persistiert typischerweise wochen- oder monatelang in der Hive.
Diese Seite ist der praktische Workflow für die Verwendung von Amcache, wenn das Binärprogramm selbst weg ist.
Für die breitere Artefakt-Referenz siehe die vollständige Amcache-Referenz; für den kanonischen Vergleich siehe Amcache vs Prefetch und Amcache vs ShimCache.
Warum Amcache das Binärprogramm überlebt#
Der Compatibility Appraiser, der geplante Task, der Amcache
befüllt, schreibt den Inventar-Snapshot einmal pro Scan. Sobald
ein Eintrag in Root\InventoryApplicationFile ist, bleibt er in
der Hive, bis:
- Ein späterer Appraiser-Lauf ihn aktiv entfernt (was die Ausnahme ist, nicht die Regel), oder
- Die Hive selbst gelöscht oder herausgealtert wird.
In der Praxis persistieren Einträge auf einer typischen Windows-11-Workstation monatelang, selbst nachdem das zugrunde liegende Binärprogramm weg ist. Auf einer langlebigen Workstation sind mehrjährige Einträge Standard.
Das macht Amcache zum zuverlässigsten Post-Löschungs-Artefakt für PE-Dateien unter Windows.
Was Sie wiederherstellen#
Wenn ein Binärprogramm gelöscht wird, verlieren Sie typischerweise:
- Das Binärprogramm selbst.
- Dateisystem-Zeitstempel (der MFT-Eintrag kann ebenfalls gelöscht oder überschrieben sein).
- Die Möglichkeit, den Hash des Binärprogramms direkt zu verifizieren.
Was Sie in Amcache behalten:
| Wiederhergestellt | Aus Amcache-Feld |
|---|---|
| Vollständiger Pfad zum Inventarzeitpunkt | FullPath / LowerCaseLongPath |
| SHA-1 der ersten 31 MiB | Hash (0000-Präfix von FileId entfernen) |
| Dateigröße | Size |
| PE-Linkdatum | LinkDate |
| Publisher | Publisher / PublisherName |
| Versions-Strings | Version, BinFileVersion, ProductVersion |
| Produktname | ProductName |
| Anwendungsidentität | ProgramId |
| Wann der Appraiser es sah | KeyLastWriteTimestamp |
Dieses Set wiederhergestellter Felder reicht aus, um:
- Den Hash bei VirusTotal- / TI-Feeds einzureichen — siehe Amcache FileId erklärt.
- Auf
ProgramIdüber andere Hosts hinweg zu pivotieren — siehe Lateral Movement und Amcache-ProgramId-Pivoting. - Das Drop-Ereignis mit
KeyLastWriteTimestampzeitlich einzugrenzen — siehe Amcache-Zeitstempel erklärt. - Die Identität des Binärprogramms zu rekonstruieren, auch wenn seine Bytes weg sind.
Der Post-Löschungs-Workflow#
Ein wiederholbarer Workflow für „Wir denken, sie haben hier ein Tool abgelegt und dann gelöscht":
1. Sammeln Sie die Hive plus Transaktionsprotokolle#
Copy-Item 'C:\Windows\AppCompat\Programs\Amcache.hve' 'C:\Triage\' -Force
Copy-Item 'C:\Windows\AppCompat\Programs\Amcache.hve.LOG1' 'C:\Triage\' -Force
Copy-Item 'C:\Windows\AppCompat\Programs\Amcache.hve.LOG2' 'C:\Triage\' -ForceWenn Sie vermuten, dass der Angreifer auch die Live-Hive gelöscht oder verändert hat, listen Sie Volume Shadow Copies auf und schnappen Sie sich die Kopie der Hive aus jedem Schatten — siehe Wo Amcache.hve auf der Festplatte liegt. Auf einer Workstation umfassen zwei oder drei Schattenkopien typischerweise die letzte Woche oder zwei; jede ist ein separates Parse-Ziel.
2. Parsen mit Multi-Pass#
AmcacheParser.exe `
-f 'C:\Triage\Amcache.hve' `
--csv 'C:\Triage\Parsed' `
--csvf 'HOST01_amcache.csv' `
--mpDas --mp-Flag ist hier kritisch: Es stellt verwaiste Einträge
wieder her, die der Appraiser deassoziiert, aber nicht vollständig
gelöscht hat. Einige davon sind genau die Art von „gerade
gelöschten" Zeilen, nach denen Sie suchen.
3. Filtern Sie auf verdächtige unsignierte PEs in benutzerbeschreibbaren Pfaden#
Das ist der Standard-Triage-Filter, mit einer Änderung: Lassen Sie
jeden Filter auf FullPath existiert auf Festplatte weg, weil die
Datei das nicht mehr tut.
Import-Csv 'C:\Triage\Parsed\HOST01_amcache_UnassociatedFileEntries.csv' |
Where-Object {
$_.IsPeFile -eq 'True' -and
-not $_.Publisher -and
$_.FullPath -match '\\Users\\|\\ProgramData\\|\\AppData\\|\\Temp\\'
} |
Select-Object KeyLastWriteTimestamp, FullPath, Hash, Size, LinkDate |
Sort-Object KeyLastWriteTimestampDiese Liste ist das, was der Angreifer abgelegt (und wahrscheinlich gelöscht) hat, wie der Appraiser es sah.
4. Querverweisen gegen das Dateisystem#
Prüfen Sie für jede Zeile, ob die Datei noch auf der Festplatte existiert:
$rows = Import-Csv ... | Where-Object { ... }
$rows | ForEach-Object {
$exists = Test-Path -LiteralPath $_.FullPath
[pscustomobject]@{
Path = $_.FullPath
Hash = $_.Hash
SeenAt = $_.KeyLastWriteTimestamp
OnDisk = $exists
}
} | Where-Object { -not $_.OnDisk }Zeilen, in denen OnDisk = False, sind die
Kandidaten für gelöschte Binärprogramme.
5. Anreicherung mit VirusTotal#
Hashen Sie alles, reichen Sie es ein, erfassen Sie die Ergebnisse. Selbst ein Lookup mit geringem Volumen gegen die öffentliche API fördert auf einem typisch infizierten Host bekannte bösartige Treffer zutage.
import csv, requests, time
API = 'https://www.virustotal.com/api/v3/files/'
HEADERS = {'x-apikey': '<your-key>'}
with open('deleted_candidates.csv', newline='') as f:
for row in csv.DictReader(f):
h = row['Hash']
if not h:
continue
r = requests.get(API + h, headers=HEADERS)
if r.status_code == 200:
stats = r.json()['data']['attributes']['last_analysis_stats']
if stats.get('malicious', 0) > 0:
print(h, row['Path'], stats)
time.sleep(15)Für Dateien größer als 31 MiB denken Sie daran, dass der Hash von Amcache ein Präfix-Hash ist, kein Volltext-Hash — siehe Amcache FileId erklärt für die Nuance.
6. Zeitliche Eingrenzung des Drop-Ereignisses#
Nehmen Sie für jedes bestätigt-böse gelöschte Binärprogramm seinen
KeyLastWriteTimestamp ± 1 Stunde und ziehen Sie aus diesem
Fenster:
- Alle anderen Amcache-Zeilen (Treiber + Gerät + andere im selben Fenster inventarisierte Dateien — oft der Rest des Angreifer-Toolkits).
- Prefetch (
PECmd-Ausgabe) — bestätigt die Ausführung. - Security 4688 / Sysmon 1 — Prozesserstellung mit Kommandozeile.
- Sysmon 11 (Datei erstellen) — bestätigt, wann die Datei geschrieben wurde.
- MFT-Einträge für
\Users\bob\...\— Dateisystem-Bekräftigung.
Sie rekonstruieren typischerweise die gesamte Drop- + Ausführungs-
- Cleanup-Sequenz aus diesen Joins, auch wenn das Binärprogramm selbst weg ist.
Anti-Forensik-Gegenmaßnahmen#
Ein paar spezifische Techniken, die Angreifer verwenden, um Binärprogramme vor Amcache zu verbergen, und wie man sie erkennt:
Drop und Löschen innerhalb eines Appraiser-Zyklus#
Wenn der Angreifer ein Binärprogramm droppt, ausführt und löscht, alles innerhalb eines einzelnen Appraiser-Intervalls (typischerweise <24 h auf Workstations), erscheint das Binärprogramm möglicherweise nie in Amcache.
Detektion: Querverweisen Sie Prefetch (das Ausführung in Echtzeit aufzeichnet und Binär-Löschung überlebt) und Sysmon 1 / 11 (Echtzeit-Prozess- und -Datei-Erstellung) gegen Amcache. Binärprogramme, die in Prefetch / Sysmon präsent sind, aber aus Amcache fehlen, sind „Intra-Appraiser"-Drops.
Direkte Hive-Modifikation#
Ein fähiger Angreifer mit Admin kann Amcache.hve bearbeiten, um
bestimmte Einträge zu entfernen. Das ist unüblich (meist, weil es
fummelig ist und die meisten Angreifer es sich nicht antun), aber
möglich.
Detektion: Parsen Sie die Live-Hive UND alle Versionen der Hive in den Volume Shadow Copies. Diffen Sie sie. Einträge, die in Schatten präsent, aber aus der Live-Hive abwesend sind, sind Beweise absichtlicher Bereinigung. Einträge in der Live-Hive an unerwarteten Offsets sind Beweise von Umstrukturierung.
Appraiser-Sabotage#
Den geplanten Task Compatibility Appraiser zu deaktivieren oder zu behindern stoppt neue Amcache-Schreibvorgänge vollständig. Alte Einträge bleiben (bis sie herausaltern), aber die Hive wird zum Zeitpunkt der Sabotage „eingefroren".
Detektion: Prüfen Sie die Task-Historie des Appraisers im
Task-Scheduler-Ereignisprotokoll
(Microsoft-Windows-TaskScheduler/Operational). Schauen Sie sich
die KeyLastWriteTimestamp-Verteilung der Hive an — wenn sie an
einem bestimmten Datum abrupt stoppt und Sie neuere Einträge
erwarten würden, vermuten Sie Sabotage. Prüfen Sie auch
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags
auf DisableInventory oder ähnliche Deaktivierungswerte.
Hive-Löschung#
Die offene Löschung von Amcache.hve ist die plumpste Option.
Windows erstellt die Hive beim nächsten Appraiser-Lauf neu, aber
der vorherige Inhalt geht vom Live-System verloren.
Detektion: Der früheste KeyLastWriteTimestamp der neu
erstellten Hive wird viel jünger sein als erwartet. Vergleichen
Sie mit Volume Shadow Copies und mit forensischen Backups; stellen
Sie die vorherige Hive aus Schatten wieder her.
Was Amcache nicht wiederherstellen kann#
Trotz seiner Stärken als Post-Löschungs-Artefakt stellt Amcache nicht wieder her:
- Das Binärprogramm selbst (Sie haben einen Hash und Metadaten, keine Bytes).
- Die Kommandozeile des Binärprogramms bei der Ausführung (verwenden Sie stattdessen die Dateiliste von Prefetch und 4688 / Sysmon 1).
- Die Netzwerkziele, die das Binärprogramm kontaktierte (verwenden Sie SRUM, Firewall-Logs, EDR-Netzwerktelemetrie).
- Den Benutzerkontext, unter dem das Binärprogramm lief (verwenden Sie 4688 / Sysmon 1).
Amcache ist ein Artefakt im Post-Löschungs-Werkzeugkasten. Paaren Sie es mit den anderen Windows-Ausführungsbeweis-Quellen für eine vollständige Rekonstruktion.
Siehe auch#
- Vollständige Amcache-Referenz — das Artefakt vollständig.
- Amcache vs Prefetch — der kanonische Präsenz-vs-Ausführungs-Vergleich.
- Amcache vs ShimCache — das andere Post-Löschungs-Artefakt für PE-Dateien.
- Amcache FileId erklärt — der Hash, den Sie aus gelöschten Binärprogrammen wiederherstellen.
- Amcache für die Malware-Untersuchung — das breitere Untersuchungs-Playbook für Eindringungen.
Um Ihre Hive nach Kandidaten gelöschter Binärprogramme zu durchsuchen, ohne etwas zu installieren, legen Sie eine Datei auf der Startseite des Parsers ab — sie parst vollständig in Ihrem Browser.
Verwandte Beiträge
- 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.
- Kann Amcache von Angreifern gelöscht werden?
Ja — ein Angreifer mit Admin-Rechten kann Amcache.hve bearbeiten oder löschen, aber die Bereinigung ist nachweisbar: Volume Shadow Copies, Transaktionsprotokolle und das eigene Log des Appraisers bewahren in der Regel den vorherigen Zustand.
- AmcacheParser-Ausgabespalten erklärt: jedes CSV-Feld dekodiert
Eine Feld-für-Feld-Referenz für die CSV-Ausgabe von AmcacheParser — FileId, PathHash, ProgramId, LinkDate, BinFileVersion, IsPeFile und jede andere Spalte, mit den Pivots, die in DFIR zählen.