
Extracteur de motifs pour code obscurci
Fnord est un extracteur de motifs pour code obfusqué
Fnord a deux fonctions principales :
Fnord traite le fichier avec une fenêtre glissante de taille variable pour extraire toutes les séquences d'une longueur minimale -m X (par défaut : 4) jusqu'à une longueur maximale -x X (par défaut : 40). Pour chaque longueur, Fnord présente les séquences les plus fréquentes -t X (par défaut : 3) dans un tableau.
Chaque ligne du tableau contient :
Fnord génère également une règle YARA expérimentale. Lors de la création de la règle YARA, il calcule un score basé sur la longueur de la séquence et le nombre d'occurrences (longueur * occurrences). Il traite ensuite chaque séquence en supprimant tous les caractères non alphabétiques et en les comparant à une liste de mots-clés (insensible à la casse) pour détecter les séquences plus intéressantes que d'autres. Avant d'écrire chaque chaîne dans la règle, Fnord calcule une distance de Levenshtein et ignore les séquences trop similaires à celles déjà intégrées dans la règle.
[Expérimental] Fnord a été créé il y a quelques jours et je l'ai testé avec une poignée d'échantillons. Je pense que je vais ajuster les valeurs par défaut dans les semaines à venir et ajouter davantage de mots-clés, de filtres et d'options de score.
Si vous avez trouvé du code obfusqué dans un échantillon, utilisez un éditeur hexadécimal pour extraire la section obfusquée de l'échantillon et enregistrez-la dans un nouveau fichier. Utilisez ce nouveau fichier pour l'analyse.
Jouez avec les options -s, -k, -r, --yara-strings, -met-e`.
Veuillez m'envoyer des échantillons qui produisent des règles YARA faibles qui pourraient être améliorées.
____ __
/ __/__ ___ _______/ /
/ _// _ \/ _ \/ __/ _ /
/_/ /_//_/\___/_/ \_,_/ 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 et 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



Le dossier ./test contient des scripts malveillants qui peuvent être détectés par votre antivirus local. Ils ne nuisent pas à votre système tant que vous ne les exécutez pas.
yarGen utilise une approche de liste blanche pour filtrer les chaînes les mieux adaptées à la création d'une règle YARA. yarGen applique des expressions régulières pour ajuster les scores des chaînes avant de créer les règles YARA. Mais son approche est très différente de celle de Fnord, qui calcule le score des séquences d'octets à partir de statistiques.
Alors que yarGen est mieux adapté au code non obfusqué, Fnord est destiné uniquement au code obfusqué et devrait produire de bien meilleurs résultats que yarGen.
Suivez-moi sur Twitter pour les mises à jour @cyb3rops