
Extractor de Patrones para Código Ofuscado
Fnord es un extractor de patrones para código ofuscado
Fnord tiene dos funciones principales:
Fnord procesa el archivo con una ventana deslizante de tamaño variable para extraer todas las secuencias con una longitud mínima -m X (por defecto: 4) hasta una longitud máxima -x X (por defecto: 40). Para cada longitud, Fnord presentará las secuencias más frecuentes -t X (por defecto: 3) en una tabla.
Cada línea de la tabla contiene:
Fnord también genera una regla YARA experimental. Durante la creación de la regla YARA calculará una puntuación basada en la longitud de la secuencia y el número de ocurrencias (longitud * ocurrencias). Luego procesará cada secuencia eliminando todos los caracteres no alfabéticos y comparándolas con una lista de palabras clave (sin distinción de mayúsculas/minúsculas) para detectar secuencias que son más interesantes que otras. Antes de escribir cada cadena en la regla, Fnord calcula la distancia de Levenshtein y omite secuencias que son demasiado similares a las que ya se han integrado en la regla.
[Experimental] Fnord fue creado hace unos días y lo he probado con un puñado de muestras. Supongo que ajustaré los valores por defecto en las próximas semanas y añadiré más palabras clave, filtros y opciones de puntuación.
Si has encontrado código ofuscado en una muestra, usa un editor hexadecimal para extraer la sección ofuscada de la muestra y guárdala en un nuevo archivo. Usa ese nuevo archivo para el análisis.
Juega con las banderas -s, -k, -r, --yara-strings, -my-e`.
Por favor, envíame muestras que produzcan reglas YARA débiles que podrían ser mejores.
____ __
/ __/__ ___ _______/ /
/ _// _ \/ _ \/ __/ _ /
/_/ /_//_/\___/_/ \_,_/ 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 y 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



La carpeta ./test contiene scripts que son maliciosos y pueden ser detectados por su escáner antivirus local. No dañan su sistema siempre que no los ejecute.
yarGen utiliza un enfoque de listas blancas para filtrar las cadenas que son mejores para la creación de una regla YARA. yarGen aplica algunas expresiones regulares para ajustar las puntuaciones de las cadenas antes de crear las reglas YARA. Pero su enfoque es muy diferente al método utilizado por Fnord, que calcula la puntuación de las secuencias de bytes basándose en estadísticas.
Mientras que yarGen es mejor para código no ofuscado, Fnord es solo para código ofuscado y debería producir resultados mucho mejores que yarGen.
Sígueme en Twitter para novedades @cyb3rops