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

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

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

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

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

Категории

Все категории
Loading categories
obfuscation_detection — Плагин для Binary Ninja для обнаружения обфусцированного кода и других интересных конструкций кода | Kitploit
Инструменты/GitHubGitHub/mrphrazer/obfuscation_detection
Статический анализОбратная инженерияАнализ вредоносных программАнализ Бинарных ФайловАнализ Прошивок
GitHubmrphrazer/obfuscation_detection

obfuscation_detection

Плагин для Binary Ninja для обнаружения обфусцированного кода и других интересных конструкций кода

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

Популярное

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

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

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

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

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

Обнаружение обфускации (v2.4)

Автор: Tim Blazytko

Автоматическое обнаружение обфусцированного кода и других интересных конструкций

Описание:

Обнаружение обфускации — это плагин для Binary Ninja, предназначенный для обнаружения обфусцированного кода и интересных конструкций (например, конечных автоматов) в бинарных файлах. Плагин облегчает анализ, выявляя места в коде, которые могут заслуживать более пристального внимания при реверс-инжиниринге.

Основываясь на различных эвристиках, плагин выявляет функции, содержащие сложные или необычные конструкции. Такие конструкции могут реализовывать:

  • обфусцированный код
  • конечные автоматы и протоколы
  • связь с C&C-сервером
  • процедуры расшифровки строк
  • криптографические алгоритмы

Следующие статьи в блоге содержат дополнительную информацию о лежащих в основе эвристиках и демонстрируют их применение:

  • Автоматическое обнаружение выравнивания потока управления
  • Автоматическое обнаружение обфусцированного кода
  • Статистический анализ для обнаружения необычного кода
  • Идентификация API-функций в бинарных файлах

Некоторые примеры использования можно найти в examples. Кроме того, выступление на REcon «Раскрытие секретов в бинарных файлах с помощью стратегий обнаружения кода» демонстрирует ряд вариантов использования. Слайды доступны здесь; запись доступна здесь.

Основные возможности

  • выявляет интересные конструкции в больших бинарных файлах
  • подсвечивает невыровненные инструкции в графовом представлении Binary Ninja
  • эффективная и архитектурно-независимая реализация
  • выполняется как фоновая задача
  • автоматически помечает идентифицированные функции соответствующей эвристикой или утилитой
  • может использоваться в режиме пользовательского интерфейса и в безголовом режиме

Установка

Инструмент можно установить через менеджер плагинов Binary Ninja.

Для безголовой версии выполните следующие шаги:

root@kitploit:~
git clone https://github.com/mrphrazer/obfuscation_detection.git
cd obfuscation_detection

# install obfuscation_detection
pip install .

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

Плагин можно использовать в пользовательском интерфейсе и в безголовом режиме.

Пользовательский интерфейс

Выберите Plugins -> Obfuscation Detection для запуска отдельных эвристик или Plugins -> Obfuscation Detection -> Utils для запуска отдельных утилит. Команда Plugins -> Obfuscation Detection -> All запускает все эвристики и все утилиты вместе.

Plugin Menu

Результаты отображаются в окне Log:

Binary Ninja Log

При нажатии на адреса идентифицированных функций Binary Ninja переходит к выбранной функции.

Безголовый режим

Для использования плагина в безголовом режиме выполните scripts/detect_obfuscation.py:

root@kitploit:~
$ python3 scripts/detect_obfuscation.py <binary>

Это запускает все эвристики и все утилиты. Для машиночитаемого вывода используйте --json:

root@kitploit:~
$ python3 scripts/detect_obfuscation.py --json <binary>

JSON-нагрузка содержит все результаты под ключом detections. Каждое обнаружение имеет стабильный id для автоматизации и человекочитаемый name. Каждый результат с тегом функции включает тип тега и описание, используемые плагином Binary Ninja.

Для запуска только эвристики конечного автомата в безголовом режиме используйте scripts/detect_state_machine.py:

root@kitploit:~
$ python3 scripts/detect_state_machine.py [--json] <binary>

Эвристики обнаружения

Плагин реализует различные эвристики обнаружения для выявления разных конструкций кода. Ниже кратко описаны отдельные эвристики и объясняется их применение.

Большой базовый блок

Эвристика большого базового блока идентифицирует 10% функций с наибольшим средним числом инструкций на базовый блок. Она позволяет обнаружить:

  • развернутый код
  • криптографические реализации
  • инициализирующие процедуры
  • арифметическую обфускацию / смешанную булево-арифметику

Сложная функция

Эвристика сложной функции идентифицирует 10% функций с наиболее сложными графами потока управления (на основе цикломатической сложности). Она позволяет выявить:

  • сложные диспетчерские процедуры и протоколы
  • конечные автоматы
  • функции, обфусцированные с помощью непрозрачных предикатов

Конечный автомат

Эвристика конечного автомата использует теоретико-графовые свойства для выявления функций, реализующих конечные автоматы. Обычно такие конечные автоматы можно представить в виде операторов switch, которые диспетчеризуются в цикле. Эвристика позволяет выявить:

  • диспетчеризацию сетевых протоколов
  • логику разбора файлов
  • связь с C&C-сервером / диспетчеризацию команд
  • выравнивание потока управления

Необычная последовательность инструкций

Эвристика необычной последовательности инструкций выполняет статистический анализ для выявления 10% функций, чьи шаблоны кода отклоняются от предварительно вычисленного эталона. Таким образом, эвристика позволяет обнаружить:

  • криптографические реализации
  • интенсивное использование арифметики с плавающей запятой
  • арифметическую обфускацию / смешанную булево-арифметику
  • общие шаблоны обфускации

Перекрывающаяся инструкция

Эвристика перекрывающихся инструкций выявляет функции с невыровненными инструкциями (байты инструкции используются двумя разными инструкциями). Эвристика обнаруживает:

  • нарушенную дизассембляцию (например, данные, помеченные как код)
  • непрозрачные предикаты, которые переходят в другие инструкции

Если эвристика используется в пользовательском интерфейсе Binary Ninja, перекрывающиеся инструкции также подсвечиваются в графовом представлении.

Наиболее часто вызываемая функция

Эвристика наиболее часто вызываемой функции выявляет 10% функций с наибольшим количеством вызовов из разных функций. Таким образом, эвристика может обнаружить:

  • процедуры расшифровки строк
  • библиотечные функции в статически скомпонованных бинарных файлах

Частота циклов

Эвристика выявляет функции с большим количеством циклов. Такие функции могут реализовывать:

  • сложную логику разбора структурированных форматов данных
  • интенсивные алгоритмические вычисления

Эвристика также помогает выявить потенциальные узкие места производительности.

Неприводимый цикл

Эвристика выявляет функции с редкими и сложными структурами циклов, которые обычно указывают на:

  • агрессивные оптимизации компилятора
  • код, написанный вручную на ассемблере
  • использование операторов goto
  • обфусцированный код

Цикл расшифровки XOR

Эвристика выявляет функции, выполняющие операцию XOR с константой внутри цикла. Таким образом, эвристика может обнаружить:

  • процедуры расшифровки строк
  • заглушки расшифровки кода
  • криптографические реализации

Сложное арифметическое выражение

Эвристика выявляет функции, в которых выражения содержат более одной арифметической операции и одновременно одну булеву операцию. Таким образом, эвристика может обнаружить:

  • смешанную булево-арифметическую обфускацию
  • инициализирующую процедуру
  • криптографические реализации

Дублирующийся подграф

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

  • заглушки обфускации, такие как маленькие конечные автоматы или блоки диспетчеров, клонированные несколько раз
  • развернутые или встроенные циклы, введенные оптимизациями компилятора
  • многовариантную логику ветвления, такую как делители диапазонов и деревья решений
  • повторяющиеся криптографические заглушки или заглушки контрольных сумм

Утилиты

Плагин также включает более узкие утилиты для интересных функций и областей кода. Они доступны в подменю Utils; команда All запускает их вместе с более общими эвристиками.

Точка входа

Эта утилита идентифицирует функции без известных вызывающих. Эти функции могут быть:

  • точками входа в бинарный файл
  • целями косвенных переходов, где иерархия вызовов не может быть восстановлена дизассемблером

Листовая функция

Эта утилита идентифицирует функции, которые не вызывают другие функции. Такие функции могут, например, быть:

  • вынесены компилятором для реализации функциональности, используемой в различных местах кода
  • трамплинами к другим функциям
  • частью схем обфускации кода (например, вынесенные вычисления для обфускации потока управления)

Рекурсивная функция

Эта утилита идентифицирует рекурсивные функции — функции, которые прямо или косвенно вызывают сами себя. Рекурсивные функции могут указывать на:

  • алгоритмические реализации, такие как обход деревьев или графов
  • обфусцированный код, предназначенный для усложнения статического анализа
  • реализации математических алгоритмов или сложных процедур разбора
  • потенциальные уязвимости переполнения стека из-за глубокой рекурсии

Энтропия секции

Эта утилита оценивает энтропию каждой секции. Энтропия — это статистическая мера случайности со значениями от 0 до 8. Секции с энтропией, близкой к 8, указывают на высокую степень случайности и могут намекать на:

  • упакованный или сжатый код
  • зашифрованные данные или код
  • случайные данные

RC4

Эта утилита обнаруживает потенциальные реализации алгоритма RC4, используя эвристические маркеры, обычно связанные с алгоритмом планирования ключей (KSA) и алгоритмом генерации псевдослучайных чисел (PRGA) RC4. RC4 широко используется во вредоносном ПО для таких целей, как:

  • расшифровка строк и других полезных данных
  • обфускация связи с командным центром (C&C)

Контакты

Для получения дополнительной информации обратитесь к @mr_phrazer.

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