
Визуально проверяйте и принудительно декодируйте совпадения YARA и регулярных выражений, найденные как в двоичных, так и в текстовых данных, с цветами. Много цветов.

Визуально проверьте все совпадения регулярных выражений (и их более загадочных родственников — YARA) в двоичных данных и/или тексте. Посмотрите, что происходит, если принудительно применить различные кодировки символов к этим совпавшим байтам. В цвете.
pipx install yaralyzer
# Сканирование с YARA-правилами из файла:
yaralyze --yara-rules /secret/vault/sigmunds_malware_rules.yara lacan_buys_the_dip.pdf
# Сканирование с произвольным регулярным выражением:
yaralyze --regex-pattern 'good and evil.*of\s+\w+byte' --regex-modifier wide the_crypto_archipelago.exe
# Сканирование с произвольным YARA-шестнадцатеричным шаблоном:
yaralyze --hex-pattern 'd0 93 d0 a3 d0 [-] 9b d0 90 d0 93' one_day_in_the_life_of_ivan_cryptosovich.bin
'/.+/' и сразу получить окно во все байты файла, которые находятся между косыми чертами. То же самое для кавычек, BOM и т.д. Поддерживаются любые регулярные выражения, которые может обработать YARA, так что возможности безграничны.chardet — это сложная библиотека для угадывания кодировок символов, и она используется здесь.chardet также будет использоваться, чтобы проверить, соответствуют ли байты шаблону любой известной кодировки. Если chardet достаточно уверен (настраиваемый порог), будет показана попытка декодирования байтов с использованием этой кодировки.Функциональность Yaralyzer была извлечена из The Pdfalyzer, когда стало очевидно, что визуализация и декодирование совпадений шаблонов в бинарниках имеют больше пользы, чем просто в инструменте анализа PDF.
YARA, для тех, кто не в курсе1, позиционируется как инструмент анализа/оповещения о вредоносном ПО, но на самом деле это и гораздо больше, и гораздо меньше. Один из способов думать об этом — YARA — это движок сопоставления регулярных выражений на стероидах. Он может находить совпадения regex в бинарниках, как любой другой движок, но также может делать гораздо более безумные вещи, такие как объединение regex в логические группы, сравнение regex со всеми 256 XOR-версиями бинарника, проверка на base64 и другие кодировки шаблона и многое другое. Возможно, самое важное — YARA предоставляет стандартный текстовый формат для обмена «прокачанными» regex с миром. Все эти функции особенно полезны при анализе или реверс-инжиниринге вредоносного ПО, авторы которого обычно вкладывают много усилий в то, чтобы усложнить поиск.
Но... это всё, что делает YARA. Всё остальное — на усмотрение пользователя. YARA — это только движок сопоставления, и если вы не знаете, что искать (или даже какую кодировку символов можно использовать), он не сильно помогает. Я немного разочаровался, пытаясь использовать YARA для просмотра всех совпадений нескольких критических шаблонов:
\".+\" и \'.+\')/.+/). Косые черты во многих реализациях ограничивают регулярное выражение, и я пытался выяснить, являются ли какие-либо байты, соответствующие этому шаблону, на самом деле регулярными выражениями.YARA просто сообщает позицию байта и совпавшую строку, но не может сказать, являются ли эти байты UTF-8, UTF-16, Latin-1 и т.д. (или ничем из перечисленного). Я также хотел понять, что происходит в области совпавших байтов, а не только внутри совпавших байтов. Другими словами, я хотел видеть байты непосредственно до и после совпадения.
Вот тут появляется The Yaralyzer, который позволяет быстро сканировать области вокруг совпадений, а также показывает, как эти области выглядели бы, если бы их принудительно декодировать в различные кодировки символов.
The Yaralyzer — это не инструмент реверс-инжиниринга вредоносного ПО. Он не делает того, что делает, например, CyberChef, и не пытается. Он скорее предназначен для быстрого визуального обзора подозрительных областей в бинарнике, чтобы вы могли сосредоточиться на областях, которые, возможно, захотите изучить более серьёзным инструментом.
Установите с помощью pipx или pip3. pipx — немного лучшее решение, поскольку гарантирует, что любые установленные с его помощью пакеты будут изолированы от остального локального окружения Python. Конечно, если у вас нет локального окружения Python, это не имеет значения, и вы можете спокойно устанавливать с помощью pip/pip3.
pipx install yaralyzer
Запустите yaralyze -h, чтобы увидеть параметры командной строки (скриншот ниже).

Информацию об экспорте SVG-изображений, HTML и т.д. см. в разделе Пример вывода.
Если вы поместите файл с именем .yaralyzer в ваш домашний каталог или текущий рабочий каталог, переменные окружения, указанные в этом файле .yaralyzer, будут добавляться в окружение каждый раз при запуске yaralyzer. Это обеспечивает механизм постоянной настройки различных параметров командной строки, чтобы вам не приходилось вводить их снова и снова. Подробнее см. комментарии в примере файла .yaralyzer.example.
Будет загружен только один файл .yaralyzer, и .yaralyzer из рабочего каталога имеет приоритет над .yaralyzer из домашнего каталога.
Yaralyzer — это основной класс. Автоматически сгенерированная документация для различных классов и методов Yaralyzer доступна здесь. Он имеет множество альтернативных конструкторов, поддерживающих:
.yara в каталогеbytesЕсли вы хотите перебрать объекты BytesMatch (по аналогии с объектом re.Match для совпадения YARA) и BytesDecoder (отслеживает статистику попыток декодирования), используемые Yaralyzer, вы можете сделать это следующим образом:
from yaralyzer.yaralyzer import Yaralyzer
yaralyzer = Yaralyzer.for_rules_files(['/secret/rule.yara'], 'lacan_buys_the_dip.pdf')
for bytes_match, bytes_decoder in yaralyzer.match_iterator():
do_stuff()
Если вы получите yara.Error с числовым кодом ошибки, вы можете проверить, что может означать этот код, здесь.
Yaralyzer может экспортировать визуализации в HTML, ANSI-цветной текст, а также в векторные изображения PNG и SVG, используя функционал экспорта файлов, поставляемый с Rich, а также в (несколько ограниченный) формат простого текстового JSON.
Если вы хотите экспортировать изображения .png, подобные приведённым ниже, непосредственно из Yaralyzer, вам нужно сделать одно из следующего:
brew install --cask inkscape).img при установке Yaralyzer, которое установит cairosvg: pipx install yaralyzer[img]. Вам также придётся вручную установить исполняемый файл CairoSVG разными способами в зависимости от вашей операционной системы; подробности см. в документации CairoSVG.По нашему опыту, работают и Inkscape, и CairoSVG, хотя мы замечали некоторые глюки в визуализированном выводе при использовании CairoSVG для SVG, созданных Yaralyzer, поэтому Inkscape — рекомендуемый вариант.


chardet.detect() думает о вероятности того, что ваши байты находятся в данной кодировке/языке:
Вклад приветствуется; подробности о настройке окружения, запуске тестов и т.д. см. в CONTRIBUTING.md. Там же есть TODO-список работы, которую необходимо выполнить.
Каким был и я до недавнего времени. ↩