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-файл в браузере файлов и нажмите «ОК». Расширение будет установлено, и рядом с именем расширения в окне будет отмечен флажок, сообщающий, что оно установлено и готово.
Интерфейс попросит вас перезапустить Ghidra, чтобы начать использовать расширение. Просто перезапустите, и дополнительные функции Kaiju станут доступны для использования в интерактивном режиме или в сценариях.
Для некоторых функций может потребоваться включение плагинов Kaiju. Для этого откройте браузер кода и перейдите в меню File > Configure
. В появившемся окне нажмите ссылку Configure
под значком категории «CERT Kaiju». Во всплывающем окне будут отображены все доступные публично выпущенные плагины Kaiju. Отметьте все плагины, которые хотите активировать, затем нажмите «ОК». Теперь у вас будет доступ к интерактивным функциям плагина.
Если плагин не отображается сразу после включения, вы можете найти его в меню Window
в браузере кода.
Экспериментальные «альфа-версии» будущих инструментов могут быть доступны в категории «Экспериментальные», если вы захотите их протестировать. Однако эти плагины определенно являются экспериментальными, не поддерживаются и не рекомендуются для промышленного использования. Мы приветствуем раннюю обратную связь!
Расширения Ghidra, такие как Kaiju, также можно установить вручную, разархивировав содержимое расширения в соответствующий каталог вашей установки Ghidra. Для получения дополнительной информации см. Руководство по установке Ghidra.
Вы также можете собрать расширение Kaiju непосредственно из исходного кода. См. файл INSTALL.md
расположенный в верхнем исходном каталоге Kaiju.
Инструменты Kaiju можно использовать либо в интерактивном графическом режиме, либо в «безголовом» режиме, более подходящем для пакетных заданий. Некоторые инструменты могут быть доступны только для графического или автономного использования в зависимости от характера инструмента.
Kaiju создает интерактивный графический интерфейс (GUI) внутри Ghidra, используя Java Swing и архитектуру плагинов Ghidra.
Большинство инструментов Kaiju на самом деле представляют собой плагины анализа, которые запускаются автоматически при выборе опции «Автоанализ» либо при импорте нового исполняемого файла для дизассемблирования, либо при непосредственном выборе Analysis > Auto Analyze...
в окне браузера кода. В инструменте автоматического анализа вы увидите несколько плагинов CERT Analysis, выбранных по умолчанию, но вы можете включить/отключить любой из них по своему усмотрению.
Однако инструменты анализа необходимо запустить до того, как заработают различные инструменты графического пользовательского интерфейса. В некоторых крайних случаях может быть даже полезно запустить автоматический анализ дважды, чтобы убедиться, что все метаданные созданы для создания правильной информации о разделении и дизассемблировании, что, в свою очередь, может повлиять на результаты хеширования.
Анализаторы автоматически запускаются на этапе анализа Ghidra и включают в себя:
Инструменты графического интерфейса включают в себя:
Kaiju > GhiHorn
, чтобы получить доступ к этому инструменту из CodeBrowser Ghidra. Вы также можете запустить плагин, нажав CTRL-G
.Window > CERT Function Hash Viewer
в меню, чтобы начать работу с этим инструментом, если он еще не виден. Появится новое окно с таблицей хэшей и другими данными. Кнопки в верхней части окна позволяют обновить таблицу или экспортировать данные в файл или подпись YARA. Это окно также можно прикрепить к основному браузеру кода Ghidra для более удобного использования вместе с другими плагинами. Более подробную документацию по использованию можно найти в меню Help > Contents
Ghidra при использовании этого инструмента.Kaiju > OOAnalyzer Importer
в меню, чтобы начать работу с этим инструментом. Простое всплывающее диалоговое окно попросит вас найти файл JSON, который вы хотите импортировать. Более подробную документацию по использованию можно найти в меню Help > Contents
Ghidra при использовании этого инструмента.Ghidra также поддерживает «безголовый» режим, позволяющий в некоторых случаях запускать инструменты без использования интерактивного графического интерфейса. Таким образом, эти команды можно использовать для создания сценариев и заданий «пакетного режима» с большим количеством файлов.
Безголовые инструменты во многом полагаются на функциональность GhidraScript Ghidra.
Безголовые инструменты включают в себя:
Простой сценарий запуска оболочки под названием 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 и экспортирует в Ghidra HTML во время процесса сборки. Это упрощает обслуживание (обновление документов только в одном месте, а не в двух) и обеспечивает их синхронизацию.
Всю новую документацию следует добавлять в каталог docs/
.
Это программное обеспечение лицензируется по упрощенной лицензии в стиле BSD Институтом программной инженерии Университета Карнеги-Меллон. Полную информацию об этой лицензии, а также условия лицензирования зависимостей, используемых в этом проекте, можно найти в файле LICENSE.md
в корне этого репозитория.
Логотип CERT Kaiju основан на арте, созданном Кэмероном Спаном и первоначально выпущенном на условиях лицензии Creative Commons Attribution-Share Alike 4.0 International.