YARA-Regeln für die Incident Response
YARA in der Incident Response: Scope, eine Regel aus einer Probe schreiben, eindeutige Strings wählen, Konfidenz-Score, Hunting im gesamten Netz und im Speicher.
Im Vorfall macht YARA aus einem analysierten Artefakt eine Frage an alle Systeme: „Wo gibt es das noch?“ Unter Zeitdruck zählen Geschwindigkeit und Präzision mehr als Eleganz — die Grundlagen bleiben dieselben.
Scope: was scannen
- Dateien auf der Platte: Payloads, Dropper, Webshells, Skripte, zurückgelassene Tools.
- Triage-Sammlungen (z. B. mit Velociraptor oder KAPE), viel kleiner als vollständige Images.
- Speicher: zur Laufzeit entschlüsselte Implantate, injizierter Code, reflektive Loader.
- Archive und Mail: Phishing-Anhänge, ZIPs, ISOs.
Früh festlegen, ob ein Treffer „bestätigen und eindämmen“ oder „untersuchen“ bedeutet — das bestimmt, wie aggressiv die Regel sein darf.
Eine Regel aus einer Probe schreiben
- Kandidaten sammeln:
strings(ASCII und UTF-16) oder Disassembler; Mutexe, PDB-Pfade, eigene User-Agents, Konfigurationsmarker, Befehle, Fehlermeldungen, ungewöhnliche Exporte. - Rauschen entfernen: Strings aus Runtime, Standardbibliothek, Packern oder Frameworks.
- Code ergänzen, wenn Strings verschlüsselt sind: Entschlüsselungsschleife, Konfig-Parser oder API-Hashing als Hex, Operanden als Wildcards.
- Bedingung strukturieren: Typ und Größe zuerst, dann ein sehr spezifischer oder mehrere schwache Indikatoren.
- Testen an der Probe und an sauberen Dateien der betroffenen Umgebung.
rule MAL_IR_Example_Implant
{
meta:
= "Implantat auf FIN-WKS-07, Fall 2026-042 (Beispiel)"
= "IR-Team"
= "2026-09-29"
= 80
strings:
$x1 = "Global\\svc_backup_sync_mtx" ascii wide
$x2 = "C:\\build\\agent\\Release\\svcagent.pdb" ascii
$s1 = "/api/v2/beacon" ascii
$s2 = "Mozilla/5.0 (Windows NT 10.0; SvcAgent)" ascii
$s3 = { 8B 4D ?? 33 C0 8A 04 0E 34 5A 88 04 0F }
condition:
uint16(0) == 0x5A4D and filesize < 3MB and
(1 of ($x*) or 2 of ($s*))
}
Konfidenz und Score
score (0–100), Präfixe MAL_ gegenüber SUSP_/HUNT_ (siehe Konventionen) und Tags wie memory für reine Speicherregeln.
Hunting im gesamten Netz
Regeln über vorhandene Werkzeuge verteilen: benutzerdefinierte IOCs im EDR, THOR-ähnliche Scanner oder Velociraptor-Artefakte wie Windows.Detection.Yara.Process und Generic.Detection.Yara.Glob. Mit einer Pilotgruppe beginnen und Größen und Pfade begrenzen.
Speicher vs. Platte
Im Speicher sind Strings oft entschlüsselt; Speicherbereiche beginnen nicht mit Datei-Headern, daher gelten uint16(0) == 0x5A4D und filesize nicht gleichermaßen — eigene Speicherregeln mit sehr spezifischen Strings schreiben.
Dokumentieren und teilen
Beschreibung, Referenz, Hashes, Datum und Lizenz ergänzen; TLP für die interne Weitergabe, eine Lizenz wie die Detection Rule License für die Veröffentlichung (siehe Öffentliche Regelsammlungen).
Schnelle Iteration
Regel in den Editor einfügen, Probe ablegen, dann den Scanner über ein ZIP sauberer Dateien laufen lassen — alles lokal im Browser.
FAQ
- Wie schreibe ich eine YARA-Regel aus einer Malware-Probe?
- Probe-spezifische Strings und Code-Folgen extrahieren, alles aus Compiler, Runtime oder gängigen Bibliotheken verwerfen, wenige sehr spezifische Indikatoren mit einer Dateityp-Prüfung kombinieren und gegen saubere Dateien testen.
- Festplatte oder Speicher scannen?
- Beides, wenn möglich. Die Festplatte zeigt Dateien und Persistenz, der Speicher Implantate, die nur entschlüsselt in Prozessen existieren.
- Was bedeutet das Meta-Feld score?
- Eine Konvention (u. a. YARA Forge), die von 0 bis 100 ausdrückt, wie stark ein Treffer auf bösartige Aktivität hinweist.