Was ist Amcache FileId? (Glossar)

FileId ist "0000" gefolgt vom SHA-1 der ersten 31 MiB der Datei. Einundvierzig Zeichen. Liegt in Root\InventoryApplicationFile. Eines der nützlichsten Einzelfelder, das der Compatibility Appraiser je geschrieben hat, und dasjenige, das neue Analysten häufiger erwischt als jedes andere.

0000da39a3ee5e6b4b0d3255bfef95601890afd80709

Zwei Fallen#

Das Präfix ist eine Falle#

VirusTotal, Threat-Intel-Feeds und Ihre interne Allowlist wollen alle einen 40-Zeichen-Hex-SHA-1. Sie matchen nichts, wenn Sie "0000" mitsenden. Sie sagen Ihnen das auch nicht. Die Antwort sieht identisch aus wie "wir haben diese Datei nie gesehen". Streifen Sie das Präfix ab.

AmcacheParser erledigt das für Sie, indem es die Spalte in FileId (mit Präfix) und Hash (ohne) aufteilt. Verwenden Sie Hash.

Die 31-MiB-Grenze ist eine Falle#

Der Hash deckt nur die ersten 31 MiB der Datei ab. Für die meisten PE-Binärdateien ist das irrelevant, weil fast alles kleiner ist. Für große Installer, dicke Spiele-Binärdateien und eine ordentliche Menge Enterprise-Software wird der Amcache-Wert nicht einem Vollinhalts-SHA-1 entsprechen. Wenn VirusTotal bei einem 200-MB-Installer keine Treffer liefert, hashen Sie die ersten 31 MiB und suchen danach, oder hashen Sie die ganze Datei und suchen das Ergebnis. Oft koexistieren beide in VTs Index, weil beide irgendwann eingereicht wurden.

Um denselben Wert zu berechnen:

import hashlib
def amcache_sha1(path):
    h = hashlib.sha1()
    with open(path, 'rb') as f:
        h.update(f.read(31 * 1024 * 1024))
    return h.hexdigest()

Wo sie ihre Miete verdient#

  • VirusTotal-Triage auf jeder verdächtigen Zeile.
  • Cross-Host-Hash-Jagden, um die Verbreitung einzugrenzen (siehe Lateral Movement und Amcache-ProgramId-Pivoting).
  • Sysmon 7 (Image Loaded) Joins. Sysmon zeichnet den SHA-1 jeder DLL-Ladung auf. Matchen Sie Hash mit Sysmons Hashes und Sie haben "welcher Prozess die Angreifer-DLL geladen hat und wann".

Für die Langform-Referenz siehe Amcache FileId erklärt.

Verwandte Begriffe#

Verwandte Beiträge

  • Was ist Amcache ProgramId? (Glossar)

    ProgramId ist der 44-Zeichen-Anwendungs-Identitätshash, den Amcache speichert. Über Hosts hinweg stabil bei derselben Installation. Erwischt Neukompilierungen und Umbenennungen, wo Hash daneben liegt.

  • Was ist LinkDate in Amcache? (Glossar)

    LinkDate ist der PE-TimeDateStamp. Angreiferkontrollierbar. Verwenden Sie ihn für Build-Clustering, nicht für Host-Zeitlinien.

  • Was ist KeyLastWriteTimestamp in Amcache? (Glossar)

    Die Registry-Schreibzeit des Amcache-Keys. Das Nächste an 'wann der Appraiser das aufgezeichnet hat'. Das Feld, das neue Analysten am häufigsten mit LinkDate verwechseln.

  • Was ist Root\InventoryApplicationFile? (Glossar)

    Der Hauptschlüssel in Amcache. Ein Unterschlüssel pro PE, das der Appraiser inventarisiert hat, mit Hash, Pfad, Hersteller, Linkdatum und einem Registry-Schreibzeitstempel. Wo 90 % der Analystenzeit verbracht werden.

Zurück zu allen Beiträgen