
Экстрактор шаблонов для обфусцированного кода
Fnord — это извлекатель шаблонов для обфусцированного кода
У Fnord две основные функции:
Fnord обрабатывает файл с помощью скользящего окна переменного размера, чтобы извлечь все последовательности с минимальной длиной -m X (по умолчанию: 4) и максимальной длиной -x X (по умолчанию: 40). Для каждой длины Fnord выводит наиболее часто встречающиеся последовательности -t X (по умолчанию: 3) в виде таблицы.
Каждая строка таблицы содержит:
Fnord также генерирует экспериментальное YARA-правило. При создании YARA-правила он вычисляет оценку на основе длины последовательности и количества вхождений (длина * количество вхождений). Затем он обрабатывает каждую последовательность, удаляя все символы, не являющиеся буквами, и сравнивает их со списком ключевых слов (без учёта регистра), чтобы обнаружить последовательности, которые более интересны, чем другие. Перед записью каждой строки в правило Fnord вычисляет расстояние Левенштейна и пропускает последовательности, слишком похожие на уже включённые в правило.
[Экспериментальный] Fnord был создан несколько дней назад, и я протестировал его на нескольких образцах. Полагаю, что в ближайшие недели я отрегулирую значения по умолчанию и добавлю ещё несколько ключевых слов, фильтров и опций оценки.
Если вы нашли обфусцированный код в образце, используйте hex-редактор, чтобы извлечь обфусцированный участок образца и сохранить его в новый файл. Используйте этот новый файл для анализа.
Поиграйте с флагами -s, -k, -r, --yara-strings, -m и -e.
Пожалуйста, присылайте мне образцы, для которых YARA-правила получаются слабыми и могли бы быть лучше.
____ __
/ __/__ ___ _______/ /
/ _// _ \/ _ \/ __/ _ /
/_/ /_//_/\___/_/ \_,_/ Извлекатель шаблонов для обфусцированного кода
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 - Извлекатель шаблонов для обфусцированного кода
опциональные аргументы:
-h, --help показать это справочное сообщение и выйти
-f file Файл для обработки
-m min Минимальная длина последовательности
-x max Максимальная длина последовательности
-t top Количество элементов в списке Top x
-n min-occ Минимальное количество вхождений для отображения
-e min-entropy Минимальная энтропия
--strings Показывать только строки
--include-padding Включать 0x00 и 0x20 в извлечённые строки
--debug Отладочный вывод
Создание YARA-правила:
--noyara Не генерировать экспериментальное YARA-правило
-s similarity Допустимая схожесть (используйте значения от 0.1=низкая до
10=высокая, по умолчанию=1.5)
-k keywords-multiplier
Множитель ключевых слов (умножает оценку последовательностей, если
найдено ключевое слово) (лучше использовать значения от 1 до 5,
по умолчанию=2.0)
-r structure-multiplier
Множитель структуры (умножает оценку последовательностей, если
она определена как структура кода, а не полезная нагрузка)
(лучше использовать значения от 1 до 5, по умолчанию=2.0)
-c count-limiter Ограничитель количества (ограничивает влияние количества путём
установки верхнего предела) (лучше использовать значения
от 5 до 100, по умолчанию=20)
--yara-exact Добавить ограничения по магическому заголовку и магическому завершению в
правило
--yara-strings max Максимальная длина последовательности
--show-score Показывать оценку в комментариях YARA-правил
--show-count Показывать количество в образце в комментариях YARA-правил
--author author Автор YARA-правила
git clone https://github.com/Neo23x0/Fnord.git и 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



Папка ./test содержит скрипты, которые являются вредоносными и могут быть обнаружены вашим локальным антивирусным сканером. Они не навредят вашей системе, пока вы их не запускаете.
yarGen использует подход с белым списком для фильтрации строк, наилучшим образом подходящих для создания YARA-правила. yarGen применяет некоторые регулярные выражения для корректировки оценок строк перед созданием YARA-правил. Но его подход сильно отличается от метода, используемого Fnord, который вычисляет оценку байтовых последовательностей на основе статистики.
В то время как yarGen лучше всего подходит для необфусцированного кода, Fnord предназначен только для обфусцированного кода и должен давать гораздо лучшие результаты, чем yarGen.
Следите за мной в Twitter для получения обновлений @cyb3rops