
Muster-Extraktor für obfuskierten Code
Fnord ist ein Muster-Extraktor für obfuskierten Code
Fnord hat zwei Hauptfunktionen:
Fnord verarbeitet die Datei mit einem gleitenden Fenster variabler Größe, um alle Sequenzen mit einer Mindestlänge -m X (Standard: 4) bis zu einer Maximallänge -x X (Standard: 40) zu extrahieren. Für jede Länge zeigt Fnord die am häufigsten vorkommenden Sequenzen -t X (Standard: 3) in einer Tabelle an.
Jede Zeile der Tabelle enthält:
Fnord erzeugt auch eine experimentelle YARA-Regel. Während der YARA-Regelerstellung berechnet es eine Punktzahl basierend auf der Länge der Sequenz und der Anzahl der Vorkommen (Länge * Vorkommen). Anschließend wird jede Sequenz verarbeitet, indem alle Nicht-Buchstaben-Zeichen entfernt werden und sie mit einer Liste von Schlüsselwörtern (Groß-/Kleinschreibung nicht beachtet) verglichen werden, um Sequenzen zu erkennen, die interessanter sind als andere. Bevor jede Zeichenkette in die Regel geschrieben wird, berechnet Fnord eine Levenshtein-Distanz und überspringt Sequenzen, die bereits integrierten Sequenzen zu ähnlich sind.
[Experimentell] Fnord wurde vor einigen Tagen erstellt und ich habe es mit einigen Beispielen getestet. Ich vermute, dass ich in den kommenden Wochen die Standardwerte anpassen und weitere Schlüsselwörter, Filter und Bewertungsoptionen hinzufügen werde.
Wenn Sie obfuskierten Code in einer Probe gefunden haben, extrahieren Sie den obfuskierten Abschnitt der Probe mit einem Hex-Editor und speichern Sie ihn in einer neuen Datei. Verwenden Sie diese neue Datei für die Analyse.
Spielen Sie mit den Flags -s, -k, -r, --yara-strings, -m und -e.
Bitte senden Sie mir Beispiele, die schwache YARA-Regeln erzeugen, die verbessert werden könnten.
____ __
/ __/__ ___ _______/ /
/ _// _ \/ _ \/ __/ _ /
/_/ /_//_/\___/_/ \_,_/ Pattern Extractor for Obfuscated Code
v0.7, Florian Roth
usage: fnord.py [-h] [-f file] [-m min] [-x max] [-t top] [-n min-occ]
[-e min-entropy] [--strings] [--include-padding] [--debug]
[--noyara] [-s similarity] [-k keywords-multiplier]
[-r structure-multiplier] [-c count-limiter] [--yara-exact]
[--yara-strings max] [--show-score] [--show-count]
[--author author]
Fnord - Pattern Extractor for Obfuscated Code
optional arguments:
-h, --help show this help message and exit
-f file File to process
-m min Minimum sequence length
-x max Maximum sequence length
-t top Number of items in the Top x list
-n min-occ Minimum number of occurrences to show
-e min-entropy Minimum entropy
--strings Show strings only
--include-padding Include 0x00 and 0x20 in the extracted strings
--debug Debug output
YARA Rule Creation:
--noyara Do not generate an experimental YARA rule
-s similarity Allowed similarity (use values between 0.1=low and
10=high, default=1.5)
-k keywords-multiplier
Keywords multiplier (multiplies score of sequences if
keyword is found) (best use values between 1 and 5,
default=2.0)
-r structure-multiplier
Structure multiplier (multiplies score of sequences if
it is identified as code structure and not payload)
(best use values between 1 and 5, default=2.0)
-c count-limiter Count limiter (limts the impact of the count by
capping it at a certain amount) (best use values
between 5 and 100, default=20)
--yara-exact Add magic header and magic footer limitations to the
rule
--yara-strings max Maximum sequence length
--show-score Show score in comments of YARA rules
--show-count Show count in sample in comments of YARA rules
--author author YARA rule author
git clone https://github.com/Neo23x0/Fnord.git und cd Fnordpip3 install -r ./requirements.txtpython3 ./fnord.py --helppython3 fnord.py -f ./test/wraeop.sct --yara-strings 10
python3 fnord.py -f ./test/vbs.txt --show-score --show-count -t 1 -x 20
python3 fnord.py -f ./test/inv-obf.txt --show-score --show-count -t 1 --yara-strings 4 --yara-exact



Der Ordner ./test enthält Skripte, die bösartig sind und von Ihrem lokalen Antivirenscanner erkannt werden können. Sie schaden Ihrem System nicht, solange Sie sie nicht ausführen.
yarGen verwendet einen Whitelisting-Ansatz, um die Zeichenketten zu filtern, die am besten für die Erstellung einer YARA-Regel geeignet sind. yarGen wendet einige reguläre Ausdrücke an, um die Bewertungen von Zeichenketten vor der Erstellung der YARA-Regeln anzupassen. Aber sein Ansatz unterscheidet sich stark von der Methode, die von Fnord verwendet wird, das die Punktzahl der Byte-Sequenzen auf der Grundlage von Statistiken berechnet.
Während yarGen am besten für nicht-obfuskierten Code geeignet ist, ist Fnord ausschließlich für obfuskierten Code gedacht und sollte viel bessere Ergebnisse als yarGen liefern.
Folgen Sie mir auf Twitter für Updates @cyb3rops