В марте 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

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

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

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

Подпишись на «Хакер» по выгодной цене!

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

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

Google будет блокировать попытки логина через встроенные браузерные фреймворки для защиты от MitM-атак

Инженеры Google намерены запретить вход в учетную запись с помощью Chromium Embedded Frame…