Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
yaralyzer — Визуально проверяйте и принудительно декодируйте совпадения YARA и регулярных выражений, найденные как в двоичных, так и в текстовых данных, с цветами. Много цветов. | Kitploit
Инструменты/GitHubGitHub/michelcrypt4d4mus/yaralyzer
Обратная инженерияФорензикаАнализ вредоносных программАнализ Бинарных Файлов
GitHubmichelcrypt4d4mus/yaralyzer

yaralyzer

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

Репозиторий
152156 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

GithubRelease Release Downloads Tests Python Version

THE YARALYZER

YARA match

Визуально проверьте все совпадения регулярных выражений (и их более загадочных родственников — YARA) в двоичных данных и/или тексте. Посмотрите, что происходит, если принудительно применить различные кодировки символов к этим совпавшим байтам. В цвете.

Быстрый старт

root@kitploit:~
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

Что он делает

  1. Показывает фактические байты, с которыми совпали ваши YARA-правила. Больше не нужно копаться, копируя начальные позиции, сообщённые YARA, в ваш любимый hex-редактор. Отображает как байты, найденные YARA, так и настраиваемое количество байтов до и после каждого совпадения в шестнадцатеричном виде и в «сыром» строковом представлении Python.
  2. То же самое для байтовых шаблонов и регулярных выражений без написания YARA-файла. Если вам лень писать YARA-файл, но вы пытаетесь определить, например, есть ли в файле скрытое регулярное выражение, вы можете просканировать его на шаблон '/.+/' и сразу получить окно во все байты файла, которые находятся между косыми чертами. То же самое для кавычек, BOM и т.д. Поддерживаются любые регулярные выражения, которые может обработать YARA, так что возможности безграничны.
  3. Определяет возможные кодировки каждого набора совпавших байтов. chardet — это сложная библиотека для угадывания кодировок символов, и она используется здесь.
  4. Показывает результат принудительного применения различных кодировок символов к совпавшим областям. Несколько кодировок по умолчанию будут принудительно опробованы в области вокруг совпадения. chardet также будет использоваться, чтобы проверить, соответствуют ли байты шаблону любой известной кодировки. Если chardet достаточно уверен (настраиваемый порог), будет показана попытка декодирования байтов с использованием этой кодировки.
  5. Экспортирует совпавшие области/декодирования в SVG, HTML и цветные текстовые файлы. Похвастайтесь своим ASCII-артом.

Зачем он это делает

Функциональность Yaralyzer была извлечена из The Pdfalyzer, когда стало очевидно, что визуализация и декодирование совпадений шаблонов в бинарниках имеют больше пользы, чем просто в инструменте анализа PDF.

YARA, для тех, кто не в курсе1, позиционируется как инструмент анализа/оповещения о вредоносном ПО, но на самом деле это и гораздо больше, и гораздо меньше. Один из способов думать об этом — YARA — это движок сопоставления регулярных выражений на стероидах. Он может находить совпадения regex в бинарниках, как любой другой движок, но также может делать гораздо более безумные вещи, такие как объединение regex в логические группы, сравнение regex со всеми 256 XOR-версиями бинарника, проверка на base64 и другие кодировки шаблона и многое другое. Возможно, самое важное — YARA предоставляет стандартный текстовый формат для обмена «прокачанными» regex с миром. Все эти функции особенно полезны при анализе или реверс-инжиниринге вредоносного ПО, авторы которого обычно вкладывают много усилий в то, чтобы усложнить поиск.

Но... это всё, что делает YARA. Всё остальное — на усмотрение пользователя. YARA — это только движок сопоставления, и если вы не знаете, что искать (или даже какую кодировку символов можно использовать), он не сильно помогает. Я немного разочаровался, пытаясь использовать YARA для просмотра всех совпадений нескольких критических шаблонов:

  1. Байты между экранированными кавычками (\".+\" и \'.+\')
  2. Байты между косыми чертами (/.+/). Косые черты во многих реализациях ограничивают регулярное выражение, и я пытался выяснить, являются ли какие-либо байты, соответствующие этому шаблону, на самом деле регулярными выражениями.

YARA просто сообщает позицию байта и совпавшую строку, но не может сказать, являются ли эти байты UTF-8, UTF-16, Latin-1 и т.д. (или ничем из перечисленного). Я также хотел понять, что происходит в области совпавших байтов, а не только внутри совпавших байтов. Другими словами, я хотел видеть байты непосредственно до и после совпадения.

Вот тут появляется The Yaralyzer, который позволяет быстро сканировать области вокруг совпадений, а также показывает, как эти области выглядели бы, если бы их принудительно декодировать в различные кодировки символов.

The Yaralyzer — это не инструмент реверс-инжиниринга вредоносного ПО. Он не делает того, что делает, например, CyberChef, и не пытается. Он скорее предназначен для быстрого визуального обзора подозрительных областей в бинарнике, чтобы вы могли сосредоточиться на областях, которые, возможно, захотите изучить более серьёзным инструментом.

Установка

Установите с помощью pipx или pip3. pipx — немного лучшее решение, поскольку гарантирует, что любые установленные с его помощью пакеты будут изолированы от остального локального окружения Python. Конечно, если у вас нет локального окружения Python, это не имеет значения, и вы можете спокойно устанавливать с помощью pip/pip3.

root@kitploit:~
pipx install yaralyzer

Использование

Запустите yaralyze -h, чтобы увидеть параметры командной строки (скриншот ниже).

Информацию об экспорте SVG-изображений, HTML и т.д. см. в разделе Пример вывода.

Конфигурация

Если вы поместите файл с именем .yaralyzer в ваш домашний каталог или текущий рабочий каталог, переменные окружения, указанные в этом файле .yaralyzer, будут добавляться в окружение каждый раз при запуске yaralyzer. Это обеспечивает механизм постоянной настройки различных параметров командной строки, чтобы вам не приходилось вводить их снова и снова. Подробнее см. комментарии в примере файла .yaralyzer.example.

Будет загружен только один файл .yaralyzer, и .yaralyzer из рабочего каталога имеет приоритет над .yaralyzer из домашнего каталога.

Как библиотека

Yaralyzer — это основной класс. Автоматически сгенерированная документация для различных классов и методов Yaralyzer доступна здесь. Он имеет множество альтернативных конструкторов, поддерживающих:

  1. Предварительно скомпилированные YARA-правила
  2. Создание YARA-правила из строки
  3. Загрузка YARA-правил из файлов
  4. Загрузка всех YARA-правил из файлов .yara в каталоге
  5. Сканирование bytes
  6. Сканирование файла

Если вы хотите перебрать объекты BytesMatch (по аналогии с объектом re.Match для совпадения YARA) и BytesDecoder (отслеживает статистику попыток декодирования), используемые Yaralyzer, вы можете сделать это следующим образом:

root@kitploit:~
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, вам нужно сделать одно из следующего:

  1. Установить Inkscape (пользователи homebrew могут установить его с помощью brew install --cask inkscape).
  2. Запросить дополнение img при установке Yaralyzer, которое установит cairosvg: pipx install yaralyzer[img]. Вам также придётся вручную установить исполняемый файл CairoSVG разными способами в зависимости от вашей операционной системы; подробности см. в документации CairoSVG.

По нашему опыту, работают и Inkscape, и CairoSVG, хотя мы замечали некоторые глюки в визуализированном выводе при использовании CairoSVG для SVG, созданных Yaralyzer, поэтому Inkscape — рекомендуемый вариант.

Результат совпадения YARA в сыром виде:

Отображение hex, сырой строки Python и различных попыток декодирования как самого совпадения, так и байтов до и после совпадения (настраиваемое количество):

Бонус: посмотрите, что chardet.detect() думает о вероятности того, что ваши байты находятся в данной кодировке/языке:

Вклад в проект

Вклад приветствуется; подробности о настройке окружения, запуске тестов и т.д. см. в CONTRIBUTING.md. Там же есть TODO-список работы, которую необходимо выполнить.

Footnotes

  1. Каким был и я до недавнего времени. ↩

Скачать инструмент