В марте 2019 года Агентство национальной безопасности США (NSA) опубликовало инструментарий для реверс-инжиниринга под названием Ghidra. Пару лет назад я уже слышал это название из утечек на сайте WikiLeaks и был весьма заинтересован, чем же пользуются в NSA для реверса. Настала пора удовлетворить любопытство и посмотреть, хороша ли бесплатная «Гидра» в сравнении с зарекомендовавшими себя инструментами.

Проблема доверия

АНБ в рамках программы Technology Transfer Program уже открыло исходные коды 32 проектов (полный список можно посмотреть на GitHub). Конечно, не обходится без шуточек о том, что АНБ будет использовать эти средства для слежения за пользователями. С одной стороны, конечно, код продуктов открыт, а их пользователи достаточно хардкорны, чтобы не полениться провести аудит. С другой — первый же косяк нашелся сразу после релиза Ghidra.

Британский ИБ-эксперт и глава Hacker House Мэттью Хики (Matthew Hickey) заметил, что в отладочном режиме инструмент Ghidra открывает и слушает порт 18001. Это позволяет подключиться к Ghidra удаленно, через JDWP, — разумеется, с целью все той же отладки. Хики отмечает, что исправить проблему совсем несложно — достаточно поменять строку 150 в файле support/launch.sh со звездочки на 127.0.0.1.

Постепенно всплывают и другие баги. Например, была найдена возможность эксплуатировать XXE при условии, что пользователь Ghidra откроет специально сформированный проект. Так что будь начеку!

Скачать Ghidra можно с официального сайта ghidra-sre.org, но есть небольшая проблема: сайт недоступен из российских сетей (и, по некоторым данным, из канадских). Но я думаю, что это не препятствие для читателей «Хакера». Можно воспользоваться любым VPN или на крайний случай Tor.

Архив Ghidra в распакованном виде
Архив Ghidra в распакованном виде

Итак, ты скачал архив ghidra_9.0_PUBLIC_20190228 и распаковал его. Давай немного пробежимся по основным папкам и посмотрим, что в них.

Настоятельно рекомендую заглянуть в папку docs — там много информации о самой Ghidra, о разработке плагинов для нее и обзор основных возможностей в виде слайдов и документов PDF. Вся информация, естественно, на английском.

Далее идут папки с лицензиями — в них ничего интересного. В папке server есть инструментарий для запуска сервера удаленной отладки. В папке support собраны вспомогательные инструменты, без которых программа работать не будет.

В папке Ghidra уже интереснее: в Processors можно ознакомиться со всеми поддерживаемыми архитектурами. Вот их полный список: 6502, 68000, 6805, 8051, 8085, AARCH64, ARM, Atmel, CR16, DATA, JVM, MIPS, PA-RISC, PIC, PowerPC, Sparc, TI_MSP430, Toy, x86, Z80.

Папки с инструкциями для разных архитектур
Папки с инструкциями для разных архитектур

Настало время смотреть само приложение! Чтобы открыть Ghidra в Windows, запускаем ghidraRun.bat, в Linux — ghidraRun.sh. Проект написан в основном на Java, поэтому качай и ставь Java Runtime, если у тебя его нет.

Окно создания проекта
Окно создания проекта

Первым делом нам предлагают создать проект, в который мы добавим нужные бинарные файлы для исследования. После этого становится активной иконка с зеленым драконом, которая и откроет для нас CodeBrowser — основную среду для работы.

Основное окно CodeBrowser
Основное окно CodeBrowser

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

CodeBrowser
CodeBrowser

И вот мы оказываемся в заголовке нашего файла. Перед нами структура IMAGE_DOS_HEADER, а не точка входа. Интересно! Надо сказать, что все поля отображены корректно, да и выглядит все более-менее сносно и информативно.

INFO

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

Справа располагается окно декомпилятора, к нему мы еще вернемся. Там же есть вкладка Functions. Давай нажмем на нее.

Вкладка Functions
Вкладка Functions

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

Продолжение доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи один материал

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


7 комментариев

  1. Аватар

    0ri0n

    20.03.2019 at 19:12

    Я Вас презираю!
    Где была эта статья когда я пытался разобраться с данной ПО. Разбирая статьи с китайского языка 🙂

    Спасибо!

  2. Аватар

    0ri0n

    20.03.2019 at 19:18

    Кстати. Интересный момент про бета версия или нет.
    Их офф сайт не отвечает уже недели 2. 🙂

    Качаем откуда только можно.

    • Андрей Письменный

      Андрей Письменный

      20.03.2019 at 20:03

      Сайт прекрасно работает и не переставал это делать, но для России сделано исключение. Мне кажется, гораздо лучше и проще обойти его, чем качать «откуда угодно».

      • Аватар

        0ri0n

        20.03.2019 at 20:15

        ха.. а что же так, для России сделали исключение…
        Спс за инфу буду знать))

        • Андрей Письменный

          Андрей Письменный

          20.03.2019 at 22:22

          Смею предположить, что у американских спецслужб могут быть некоторые предубеждения против того, чтобы раздавать программы русским хакерам. Но, учитывая простоту обхода, немного несолидно смотрится, конечно.

          • Аватар

            faberge

            21.03.2019 at 15:22

            Возможно, это бессмысленное, но категоричное требование каких-нибудь американских политиков, которому спецслужбы вынуждены подчиняться. Ох, я оправдываю АНБ 😉

  3. Аватар

    s00mbre

    02.04.2019 at 03:14

    Сейчас уже можно не лазить по VPN, чтобы скачать дистрибутив. Есть открытые зеркала, например вот на этом известном софт-портале: https://www.majorgeeks.com/files/details/ghidra.html

Оставить мнение

Check Also

Миллионы серверов Exim находятся под атаками из-за свежей уязвимости

Более половины всех почтовых серверов в интернете находятся под угрозой: злоумышленники уж…