
Визуально осматривайте все совпадения корпорации (и их более сексуальные, больше кузенов плаща и кинжала, сопоставления Yara), найденные в бинарных данных и/или в тексте. Посмотрите, что происходит, когда вы заставляете различные кодирования персонажа на этих подходящих байтах. С цветами.
pipx install yaralyzer
# Scan against YARA definitions in a file:
yaralyze --yara-rules /secret/vault/sigmunds_malware_rules.yara lacan_buys_the_dip.pdf
# Scan against an arbitrary regular expression:
yaralyze --regex-pattern ' good and evil.*ofs+w+byte ' the_crypto_archipelago.exe
# Scan against an arbitrary YARA hex pattern
yaralyze --hex-pattern ' d0 93 d0 a3 d0 [-] 9b d0 90 d0 93 ' one_day_in_the_life_of_ivan_cryptosovich.bin'/.+/' , и сразу же получить окно во все байты в файле, которые живут между передними чертами. Та же история для цитат, боссов и т. Д. Любое регулярное выборочное управление, так что небо является пределом.chardet - это сложная библиотека для угадывания кодировки персонажа, и она используется здесь.chardet также будет использоваться, чтобы увидеть, соответствуют ли байты рисунку любого известного кодирования. Если chardet достаточно уверен (настраивается) попытка декодирования байтов с использованием этого кодирования будет отображаться.Функциональность Yaralyzer была извлечена из PDFalyzer, когда стало очевидно, что визуализация и декодирование матчей в двоичных файлах имела больше полезности, чем просто в инструменте анализа PDF.
Яра, для тех, кто не знает 1 , является маркировкой как инструмент для анализа вредоносных программ/оповещение, но на самом деле это намного больше и намного меньше, чем это. Один из способов подумать об этом - это то, что Яра - это регулярный двигатель, соответствующий выражению на стероидах. Он может определить местонахождение матчей режима в двоичных файлах, таких как любой двигатель режима, но он также может делать гораздо более дикие вещи, такие как комбинированные регуляторы в логических группах, сравнивать регуляторы со всеми 256 версиями бинарного значения, проверки на base64 и другие кокторы шаблона и многое другое. Возможно, самое главное из всех Yara предоставляет стандартный текстовый формат для людей, чтобы поделиться своими «шутливыми режимами с миром». Все эти функции особенно полезны при анализе или обратной инженерной вредоносной программе, авторы которого, как правило, много времени уделяют тому, чтобы сделать вещи трудно найти.
Но ... это тоже все, что делает Яра. Все остальное зависит от пользователя. Яра - это всего лишь двигатель, и если вы не знаете, что соответствовать (или даже какому кодирующему персонажу, в котором вы можете соответствовать), он только даст вас так далеко. Я оказался немного разочарованным, пытаясь использовать Яру, чтобы посмотреть на все совпадения нескольких критических узоров:
".+" И '.+' )/.+/ ). Передние черты разграничивают регулярное выражение во многих реализациях, и я пытался увидеть, не были ли какие -либо байта, соответствующие этим шаблону, фактически повторения.Яра просто рассказывает вам позицию байта и соответствующую строку, но не может сказать вам, являются ли эти байты UTF-8, UTF-16, латинский 1 и т. Д. И т. Д. (Или ни один из вышеперечисленных). Я также обнаружил, что хочу понять, что происходит в регионе подходящих байтов, а не только в подходящих байтах. Другими словами, я хотел охватить байты непосредственно до и после того, что соответствовало.
Войдите в Yaralyzer , который позволяет быстро сканировать регионы вокруг совпадений, а также показывать вам, как будут выглядеть эти регионы, если бы они были вынуждены в различных кодировках персонажа.
Важно отметить, что Yaralyzer не является полным инструментом реверсирования вредоносных программ. Он не может делать все, что делает инструмент, подобный Cyberchef, и не пытается. Он более предназначен, чтобы дать вам быстрый визуальный обзор подозреваемых регионов в двоичном каркасе, чтобы вы могли оттачивать области, которые вы можете осмотреть с помощью более серьезных инструментов, такого как Cyberchef.
Установите его с pipx или pip3 . pipx - это незначительно лучшее решение, поскольку оно гарантирует, что любые установленные пакеты будут изолированы от остальной части вашей местной среды Python. Конечно, если у вас нет местной среды Python, это спорный момент, и вы можете установить с помощью pip / pip3 .
pipx install yaralyzer
Запустите yaralyze -h , чтобы увидеть параметры командной строки (скриншот ниже).

Информацию об экспорте изображений SVG, HTML и т. Д. См. Пример вывода.
Если вы разместите файл, называемый .yaralyzer в свой домашний каталог или текущий рабочий каталог, то переменные среды, указанные в этом .yaralyzer Это обеспечивает механизм для постоянной настройки различных параметров командной строки, чтобы вы могли избежать печати их снова и снова. См. Пример файла .yaralyzer.example , чтобы увидеть, какие параметры можно настроить таким образом.
Только один файл .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 () Yaralyzer может экспортировать визуализации в HTML, цветной текст ANSI и векторные изображения SVG, используя функциональность экспорта файла, которая поставляется с богатыми. SVG можно превратить в изображения формата png с таким инструментом, как чертаж или cairosvg . По нашему опыту, они оба работают, хотя мы видели некоторую глюка с cairosvg .
Пользователи PYPI: Если вы читаете этот документ на PYPI, помните, что он делает намного лучше на GitHub. Красивые картинки, сноски, которые работают и т. Д.


chardet.detect() думает о вероятности ваших байтов в данном кодировании/языке: 
rich двигателем рендеринга. На данный момент вывод консоли - это «более правильный», так что все в порядке. См. issue_with_output_to_console_correct vs. issue_with_output_to_txt_file_incorrect.pngchardet SКак я был до недавнего времени. ↩