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

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

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

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

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

Категории

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

obfuscation_detection

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

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

Популярное

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

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

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

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

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

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

Автор: Tim Blazytko

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

Описание:

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

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

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

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

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

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

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

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

Установка

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

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

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:

$ python3 scripts/detect_obfuscation.py <binary>

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

$ python3 scripts/detect_obfuscation.py --json <binary>

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

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

$ python3 scripts/detect_state_machine.py [--json] <binary>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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