АНБ опубликовало Ghidra, инструментарий для обратного инжиниринга

Агентство национальной безопасности США во время проведения конференции RSA объявило об открытии доступа к инструментарию для проведения обратного инжиниринга Ghidra, который включает интерактивный дизассемблер с поддержкой декомпиляции в код на языке Си и предоставляет мощные средства для анализа исполняемых файлов. Код написан на языке Java и и в ближайшее время будет открыт под свободной лицензией Apache 2.0 (уже началось размещение кода на GitHub). Продукт доступен для загрузки с сайта ghidra-sre.org (сайт недоступен из российских подсетей).

Проект развивается на протяжении почти 20 лет и активно применяется спецслужбами США для выявления закладок, анализа вредоносного кода, изучения различных исполняемых файлов и разбора скпомпилированного кода. По своим возможностям продукт сопоставим с расширенной версии проприетарного пакета IDA Pro, но рассчитан исключительно на анализ кода и не включает в себя отладчик. С другой стороны, в Ghidra имеется поддержка декомпиляции в псевдокод, напоминающий язык Си (в IDA данная возможность доступна через сторонние плагины), а также более мощные средства для совместного анализа исполняемый файлов.

Основные особенности:

  • Поддержка различных наборов процессорных инструкций и форматов исполняемых файлов;
  • Поддержка анализа исполняемых файлов для платформ Linux, Windows и macOS;
  • В состав входят дизассемблер, ассемблер, декомпилятор, генератор графа хода выполнения программы, модуль для выполнения скриптов и большой набор вспомогательных инструментов;
  • Возможность выполнения в интерактивном и автоматическом режимах;
  • Поддержка плагинов с реализацией новых компонентов;
  • Поддержка автоматизации действий и расширения существующей функциональности через подключения скриптов на языках Java и Python;
  • Наличие средств для совместной работы групп исследователей и координации работы при обратном инжиниринге очень крупных проектов.

Интересно, что через несколько часов после публикации Ghidra в пакете нашли уязвимость в реализации отладочного режима (отключен по умолчанию), в котором открывается сетевой порт 18001 для удалённой отладки приложения по протоколу JDWP (Java Debug Wire Protocol). По умолчанию сетевые соединения принимались на всех доступных сетевых интерфейсах, а не на 127.0.0.1, что позволяло подключиться к Ghidra с других систем и выполнить любой код в контексте приложения. Например, можно подключиться отладчиком, прервать выполнение через установку точки останова и подставить для дальнейшего исполнения свой код при помощи команды "print new", например, "print new java.lang.Runtime().exec('/bin/mkdir /tmp/dir')".

Дополнительно можно отметить публикацию почти полностью переработанного выпуска открытого интерактивного дизассемблера REDasm 2.0. Программа отличается расширяемой архитектурой, позволяющей подключать обработчики дополнительных наборов инструкций и форматов файлов в форме модулей. Код проекта написан на языке С++ (интерфейс на базе Qt) и распространяется под лицензией GPLv3. Поддерживается работа в Windows и Linux.

В базовой поставке поддерживаются форматы PE, ELF, DEX (Android Dalvik), форматы прошивок Sony Playstation, XBox, GameBoy и Nintendo64. Из наборов инструкций поддерживаются x86, x86_64, MIPS, ARMv7, Dalvik и CHIP-8. Из возможностей можно отметить поддержку интерактивного просмотра в стиле IDA, анализ многопоточных приложений, построение наглядного графа хода исполнения, движок обработки цифровых подписей (работа с файлами SDB) и средства для ведения проекта.

Источник: OpenNET