Skip to content
Diese Seite wurde mit KI-Unterstützung erstellt und übersetzt. Falls Ihnen Ungenauigkeiten auffallen, helfen Sie gerne bei der Verbesserung. Auf GitHub bearbeiten

Hash-Matching

Hash-Matching ist die erste und schnellste Schicht in der PRX-SD-Erkennungspipeline. Für jede gescannte Datei berechnet PRX-SD einen kryptografischen Hash und sucht ihn in einer lokalen Datenbank bekannter Malware-Hashes. Ein Treffer bedeutet, dass die Datei eine exakte, byte-für-byte Kopie eines bekannten Malware-Samples ist.

Funktionsweise

  1. Hash-Berechnung -- PRX-SD berechnet den SHA-256-Hash der Datei. Für VirusShare-Lookups wird auch der MD5-Hash berechnet.
  2. LMDB-Lookup -- Der Hash wird gegen die LMDB-Datenbank mit einem speichergemappten B+-Baum geprüft. Dies bietet O(1) durchschnittliche Lookup-Zeit.
  3. Metadaten-Abruf -- Wenn ein Treffer gefunden wird, werden zugehörige Metadaten (Quelle, Malware-Familie, Erstentdeckungsdatum) zurückgegeben.
  4. Urteil -- Ein Hash-Treffer erzeugt sofort ein MALICIOUS-Urteil, und die verbleibenden Erkennungsschichten werden übersprungen.

Performance

OperationZeit
SHA-256-Berechnung (1 KB-Datei)~2 Mikrosekunden
SHA-256-Berechnung (10 MB-Datei)~15 Millisekunden
LMDB-Lookup~0,5 Mikrosekunden
Gesamt pro Datei (kleine Datei, Hash-Treffer)~3 Mikrosekunden

LMDB verwendet speichergemappte Dateien, sodass der Page-Cache des Betriebssystems häufig genutzte Teile der Datenbank im RAM hält. Bei einem System mit ausreichend Speicher sind Lookups praktisch kostenlos.

Unterstützte Hash-Typen

Hash-TypGrößeVerwendung
SHA-256256-Bit (64 Hex-Zeichen)Primärer Hash für alle Lookups. Wird von abuse.ch-Feeds und eingebauter Blocklist verwendet.
MD5128-Bit (32 Hex-Zeichen)Wird für VirusShare-Datenbankkompatibilität verwendet. Nur berechnet, wenn VirusShare-Daten vorhanden sind.

MD5-Einschränkungen

MD5 ist kryptografisch gebrochen und anfällig für Kollisionsangriffe. PRX-SD verwendet MD5 nur aus Abwärtskompatibilitätsgründen mit der VirusShare-Datenbank. SHA-256 ist der primäre Hash für alle anderen Quellen.

Datenquellen

PRX-SD aggregiert Hash-Signaturen aus mehreren Bedrohungsgeheimdienst-Feeds:

QuelleHash-TypKostenlosInhaltUpdate-Frequenz
abuse.ch MalwareBazaarSHA-256JaAktuelle 48-Stunden-Malware-SamplesAlle 5 Minuten
abuse.ch URLhausSHA-256JaMalware-Dateien von bösartigen URLsStündlich
abuse.ch Feodo TrackerSHA-256JaBanking-Trojaner (Emotet, Dridex, TrickBot)Alle 5 Minuten
abuse.ch ThreatFoxSHA-256JaCommunity-IOC-Sharing-PlattformStündlich
VirusShareMD5Ja20M+ Malware-Hashes (historisch)Periodisch
Eingebaute BlocklistSHA-256EnthaltenEICAR, WannaCry, NotPetya, Emotet usw.Mit Releases

Gesamte Hash-Abdeckung

Update-ModusHashesDatenbankgröße
Standard (sd update)~28.000 SHA-256~5 MB
Vollständig (sd update --full)~28.000 SHA-256 + 20M+ MD5~800 MB

Hash-Datenbank aktualisieren

Standard-Update

Holt die neuesten SHA-256-Hashes von allen abuse.ch-Feeds:

bash
sd update

Dies läuft automatisch, wenn PRX-SD zum ersten Mal installiert wird, und kann mit Cron oder sd service für kontinuierliche Updates geplant werden.

Vollständiges Update

Enthält die vollständige VirusShare-MD5-Datenbank:

bash
sd update --full

Wann den vollständigen Modus verwenden

Die VirusShare-Datenbank enthält 20M+ historische MD5-Hashes, die Jahre zurückreichen. Sie ist nützlich für forensische Untersuchungen und umfassendes Scannen, fügt aber ~800 MB zur Datenbank hinzu. Für den täglichen Schutz ist das Standard-Update ausreichend.

Manueller Hash-Import

Benutzerdefinierte Hash-Listen aus Textdateien importieren (ein Hash pro Zeile):

bash
sd import my_hashes.txt

Der Import-Befehl erkennt den Hash-Typ automatisch (SHA-256 oder MD5) anhand der String-Länge. Sie können auch Metadaten angeben:

bash
sd import my_hashes.txt --source "internal-ir" --family "custom-trojan"

LMDB-Datenbank

PRX-SD speichert Hashes in LMDB (Lightning Memory-Mapped Database), ausgewählt für seine Eigenschaften:

EigenschaftVorteil
Speichergemapptes I/OZero-Copy-Lesevorgänge, kein Serialisierungs-Overhead
B+-Baum-StrukturO(1) amortisierte Lookups
ACID-TransaktionenSichere gleichzeitige Lesevorgänge während Updates
AbsturzsicherCopy-on-Write verhindert Korruption
Kompakte GrößeEffiziente Speicherung von Hash-Schlüsseln

Die Datenbank wird standardmäßig unter ~/.local/share/prx-sd/signatures.lmdb gespeichert. Der Pfad kann angepasst werden:

toml
# ~/.config/prx-sd/config.toml
[database]
path = "/opt/prx-sd/signatures.lmdb"

Datenbankstatus prüfen

Aktuelle Hash-Datenbankstatistiken anzeigen:

bash
sd info
PRX-SD Signature Database
=========================
SHA-256 hashes:  28,428
MD5 hashes:      0 (run 'sd update --full' for VirusShare)
YARA rules:      38,800
Database path:   /home/user/.local/share/prx-sd/signatures.lmdb
Database size:   4.8 MB
Last updated:    2026-03-21 10:00:00 UTC

Wie Hash-Matching in die Pipeline passt

Hash-Matching ist als erste Verteidigungslinie konzipiert, weil:

  • Geschwindigkeit -- Bei ~3 Mikrosekunden pro Datei fügt es vernachlässigbaren Overhead hinzu. Eine Million sauberer Dateien kann in unter 3 Sekunden geprüft werden.
  • Keine Fehlalarme -- Ein SHA-256-Treffer ist eine kryptografische Garantie, dass die Datei identisch mit einem bekannten Malware-Sample ist.
  • Kurzschluss -- Wenn ein Hash-Treffer gefunden wird, werden YARA- und heuristische Analyse vollständig übersprungen, was erhebliche Verarbeitungszeit spart.

Die Einschränkung des Hash-Matchings ist, dass es nur exakte Kopien bekannter Samples erkennt. Eine Ein-Byte-Änderung produziert einen anderen Hash und umgeht diese Schicht. Deshalb existieren die YARA- und heuristischen Schichten als nachfolgende Abwehrmaßnahmen.

Nächste Schritte

Released under the Apache-2.0 License.