
CERT Kaiju — это расширение фреймворка для бинарного анализа для пакета обратной инженерии Ghidra. Этот репозиторий является «зеркалом» — пожалуйста, оформляйте заявки, сообщения об ошибках или запросы на слияние в основном репозитории @CERTCC: https://github.com/certcc/kaiju
CERT Kaiju — это набор инструментов бинарного анализа для Ghidra.
Это реализация на Ghidra/Java некоторых возможностей фреймворка CERT Pharos Binary Analysis Framework, особенно инструментов хеширования функций и анализа вредоносного ПО, но со временем ожидается появление новых инструментов и возможностей.
Поскольку это новая разработка, данная реализация пока не обладает полной функциональной совместимостью с исходной реализацией на C++ на базе ROSE; однако переход на Java и Ghidra позволил реализовать некоторые новые возможности, недоступные в оригинальном фреймворке — в частности, улучшенную обработку архитектур, отличных от x86. Поскольку происходит существенная перестройка фреймворка и инструментов, а переход на Java и Ghidra открывает иные возможности, чем реализация на C++, было принято решение использовать новый бренд, чтобы уменьшить путаницу между реализациями при обсуждении различных инструментов и возможностей.
В ближайшем будущем мы планируем поддерживать как оригинальный фреймворк Pharos, так и Kaiju, параллельно, поскольку оба могут предоставлять уникальные функции и возможности.
ПРЕДУПРЕЖДЕНИЕ: как прототип, данный плагин может вызывать множество проблем при оценке хешей функций. Например, в отличие от реализации Pharos, модуль хеширования функций Kaiju создаёт хеши для очень маленьких функций (например, содержащих одну инструкцию, такую как RET), что приводит к гораздо большему количеству случайных коллизий. Поэтому аналитические результаты могут различаться между этим плагином и Pharos fn2hash.
Готовые пакеты Kaiju доступны. Просто скачайте ZIP-файл, соответствующий вашей версии Ghidra, и установите согласно инструкциям ниже. Рекомендуется установка через графический интерфейс Ghidra, но также можно вручную распаковать в соответствующую директорию.
CERT Kaiju требует следующие зависимости времени выполнения:
Z3 поставляется предварительно скомпилированным в составе готовых пакетов, либо вы можете собрать Z3 самостоятельно или использовать пакет из вашего дистрибутива Linux.
Запустите Ghidra, в стартовом окне выберите в меню:
File > Install Extension. Нажмите на знак плюса в верхней части окна
расширений, найдите и выберите .zip-файл в проводнике и нажмите OK.
Расширение будет установлено, а рядом с его именем в окне появится
флажок, подтверждающий установку.
Интерфейс предложит перезапустить Ghidra для начала использования расширения. Просто перезапустите, после чего дополнительные функции Kaiju станут доступны для интерактивного использования или в скриптах.
Для работы некоторых функций может потребоваться включение плагинов Kaiju.
Для этого откройте Code Browser, затем перейдите в меню File > Configure.
В появившемся окне нажмите ссылку Configure под иконкой категории
"CERT Kaiju". Во всплывающем окне отобразятся все доступные публичные
плагины Kaiju. Отметьте нужные плагины и нажмите OK. После этого вы
получите доступ к интерактивным функциям плагинов.
Если плагин после включения не стал сразу видимым, его можно найти в меню
Window в Code Browser.
Экспериментальные "альфа" версии будущих инструментов могут быть доступны в категории "Experimental", если вы хотите их протестировать. Однако эти плагины являются экспериментальными, не поддерживаются и не рекомендуются для использования в производственной среде. Мы приветствуем ранние отзывы!
Расширения Ghidra, такие как Kaiju, также могут быть установлены вручную путём распаковки содержимого расширения в соответствующую директорию вашей установки Ghidra. Для получения дополнительной информации см. Руководство по установке Ghidra.
Вы также можете собрать расширение Kaiju напрямую из исходного кода.
См. файл INSTALL.md в корневом каталоге исходников Kaiju.
Инструменты Kaiju могут использоваться как в интерактивном графическом режиме, так и в "безголовом" режиме, более подходящем для пакетной обработки. Некоторые инструменты могут быть доступны только для графического или только для безголового использования, в зависимости от их природы.
Kaiju создаёт интерактивный графический интерфейс (GUI) внутри Ghidra, используя Java Swing и архитектуру плагинов Ghidra.
Большинство инструментов Kaiju на самом деле являются плагинами анализа,
которые запускаются автоматически при выборе опции "Auto Analysis" —
либо при импорте нового исполняемого файла для дизассемблирования, либо
при прямом выборе Analysis > Auto Analyze... в окне Code Browser.
В окне Auto Analyze по умолчанию выбрано несколько плагинов анализа CERT,
но вы можете включать/отключать любые по желанию.
Однако инструменты анализа должны быть запущены до того, как заработают различные GUI-инструменты. В некоторых пограничных случаях может быть полезно запустить Auto Analysis дважды, чтобы убедиться, что все метаданные созданы для корректного разбиения и информации о дизассемблировании, что, в свою очередь, может повлиять на результаты хеширования.
Анализаторы автоматически запускаются во время фазы анализа Ghidra и включают:
Инструменты GUI включают:
Kaiju > GhiHorn для доступа к этому инструменту
из CodeBrowser Ghidra. Также можно запустить плагин нажатием CTRL-G.Window > CERT Kaiju Function Hash Viewer в меню,
чтобы начать работу с этим инструментом, если он ещё не видим.
Появится новое окно с таблицей хешей и другими данными. Кнопки
в верхней части окна позволяют обновить таблицу или экспортировать
данные в файл или YARA-сигнатуру. Это окно также можно пристыковать
к основному CodeBrowser Ghidra для удобства совместного
использования с другими плагинами. Более подробная документация
по использованию доступна в меню Ghidra Help > Contents
при работе с инструментом.Kaiju > OOAnalyzer Importer в меню, чтобы начать
работу с этим инструментом. Простое диалоговое окно попросит вас
указать JSON-файл для импорта. Более подробная документация
по использованию доступна в меню Ghidra Help > Contents
при работе с инструментом.Ghidra также поддерживает "безголовый" режим, позволяющий запускать инструменты в некоторых случаях без использования интерактивного GUI. Эти команды можно использовать для написания скриптов и пакетной обработки большого количества файлов.
Инструменты безголового режима в значительной степени полагаются на функциональность GhidraScript.
Инструменты безголового режима включают:
В комплект входит простой скрипт запуска оболочки с именем kaijuRun,
предназначенный для выполнения этих безголовых команд в простых
сценариях, например, для вывода хешей функций каждой функции
в одном исполняемом файле. Предполагая, что переменная
GHIDRA_INSTALL_DIR установлена, можно, например, запустить
скрипт для одного исполняемого файла следующим образом:
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun fn2hash example.exe
Эта команда выведет результаты в автоматически именованный файл
example.exe.Hashes.csv.
Краткая справка по скрипту kaijuRun доступна при запуске:
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun --help
Дополнительную информацию об использовании этого режима и скрипта
запуска kaijuRun см. в файле docs/HeadlessKaiju.md в репозитории.
Более полная документация и справка доступны в одном из двух форматов.
См. каталог docs/ для документации в формате Markdown
и справки по всем инструментам и компонентам Kaiju. Эти документы
легко поддерживать, редактировать и читать даже из командной строки.
Кроме того, ту же документацию можно найти во встроенной справочной
системе Ghidra. Чтобы получить доступ к этим справочным документам,
в меню Ghidra выберите Help > Contents,
а затем выберите CERT Kaiju в дереве навигации слева
в окне справки.
Обратите внимание, что справочная документация Ghidra — это
точно то же содержимое, что и файлы Markdown в каталоге docs/;
благодаря встроенному плагину gradle, gradle автоматически
парсит Markdown и экспортирует в HTML Ghidra во время сборки.
Это позволяет упростить сопровождение (обновление документации
только в одном месте) и поддерживает их синхронизацию.
Вся новая документация должна добавляться в каталог docs/.
Данное программное обеспечение лицензировано по упрощённой
лицензии BSD-стиля Институтом программной инженерии
Университета Карнеги-Меллон. Полные условия этой лицензии,
а также условия лицензирования зависимостей, используемых
в этом проекте, приведены в файле LICENSE.md в корне
этого репозитория.
Логотип CERT Kaiju основан на изображении, созданном Cameron Spahn, первоначально выпущенном на условиях лицензии Creative Commons Attribution-Share Alike 4.0 International.