• Начинающий хакер, спасибо что зашёл к нам! Для полного удобства рекомендуем Вам сразу же зарегистрироваться. Помните, необходимо придумать сложный пароль к своему логину, в котором будут присутствовать цифры, а так же символы. После регистрации вы сможете пользоваться чатом. Так же не забудьте активировать аккаунт через письмо, высланное вам на почту ! Администрация заботится о каждом из Вас...
  • Для просмотра разделов из категории Private Informations & Programms необходимо купить

Краткий обзор и введение в применение GHIDRA.

Gidroponika

Ваши вопросы в Telegram: @milliontri22
Топовый

Gidroponika

Ваши вопросы в Telegram: @milliontri22
Топовый
Регистрация
28 Янв 2017
Сообщения
730
Реакции
834
Репутация
0
Баллы
5
В данном посте мы рассмотрим такой инструмент, как GHIDRA. Многие про него уже наверное слышали. Разберём процесс установки, первичной настройки, посмотрим как загружать проекты и прочее.

Сразу скажу, что я не считаю себя экспертом по данному инструменту и не ждите от данного поста срыва покровов и прочего. Мы кратко пробежимся по основным достоинствам инструмента и посмотрим на его недостатки.

Делать из этого рубрику - не хочется, в силу того, что рассказывать особо нечего, мало кому интересно за что какая кнопка отвечает и прочее. Если вам нужен курс по GHIDRA, можете посмотреть на ютубе, вроде бы само АНБ сделало некоторый шорт-гайд для данного инструмента.

Что такое GHIDRA?
Это платформа для обратной разработки от АНБ. Включается в себя дизассмеблер под разные архитектуры, а также декомплиятор (что радует, потому что в IDA декомпилятор есть не под всё). Совсем недавно данный инструмент стал доступен широкой аудитории.

По сути это очередной дизассмеблер со своими фичами и багами, но его делали за деньги (скорей всего), поэтому качество всё же получше, чем у полностью open-source решений.

Подробную информация можно почитать на официальном сайте проекта (с русских IP не пускает, используйте VPN или прокси) - ссылка.

Там же его можно и скачать, что мы и сделаем.

Установка.
Разработан данный инструмент на JAVA, поэтому требует установки дополнительный компонентов в лице "JDK 11". Данный компонент можно скачать вот отсюда и установить на свою систему - ссылка.

Устанавливать GHIDRA по сути не надо, просто распакуйте архив в любую удобную для вас директорию.
3984ef2013394756d3c10.png

Запуск.
Если вы всё сделали верно, то для запуска вам нужно всего лишь запустить файл "ghidraRun.bat". После этого вы увидите следующее.

5c507c673e46760cf52ae.png

Это меню загрузки, просто подождём немного и оно поменяется на вот это

b5efdd9640dc8c4c2f0a3.png


Здесь вы видите небольшой ежедневный совет (их можно отключить, просто убрав галочку в чек-боксе), и лаунчер с проектами.

Одна из приятных фич это то, что можно создать проект и в данном проекте создать папки под каждый бинарный файл, таким образом удобно ориентироваться между небольшими бинарями. Это может быть полезно при исследований какого-то семейства связанных файлов (проишвка, большое приложение и др.)

Создание проекта.
Давайте попробуем создать новый проект.

В верхнем меню выбираем "File->New Project". После появится окно выбора типа проекта, он может быть локальный или удалённый (базироваться на каком-то сервере). Тоже стоит отметить данную фичу. Если вы работаете над проектом группой реверс-инженеров это крайне удобно.

Мы создадим локальный проект, то есть нам надо выбрать "Non-Shared Project".

3c6d7e540db16e28d0238.png

Далее нам надо выбрать где будет хранится проект и его имя.

c871fe378e51daaa2c453.png

Здесь комментировать особо нечего. После ввода имени и нажатия кнопки "Next>>" создаётся новый проект и ваше меню теперь будет выглядит примерно так.


61d4936ed3348ebe120af.png

Отлично проект создан, но сейчас он пустой. Чтобы добавить какой-нибудь бинарник на исследование его можно просто перетащить в данное окно.

Для примера возьмём один из тасков категории "Reverse" с недавно прошедшего UTCTF'a.

9e139fc5ea1e227d386d0.png


Видим, что при загрузке бинаря были определены следующие параметры:

  • Формат
  • Язык (хотя пишется название микропроцессорной архитектуры)
  • Папка назначения в проекте
  • Имя бинарника
Нажимаем "OK" и данный файл добавляется в наш проект. После успешного импорта файла будет выведен небольшой отчёт по импорту в таком формате.

34f2e0cdc0b881800efa6.png

Здесь приведена расширенная общая информация и информация импорта.

Теперь наш проект выглядит так.


375011314c569ffb452fa.png



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


0068550de7afef96dac4d.png

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

bdfd4a59951b83c146c69.png


После нажимаем "Analyze" и ждём окончание анализа. Наблюдать за процессом анализа можно в правом нижнем углу экране, где есть панель текущего состояние того или иного процесса.

c08adf5efeb81600d82b4.png

Отлично, теперь перед нам проанализированный бинарник и можно начинать работы по его исследованию.

Теперь, когда мы разобрались с загрузкой бинарника и его авто-анализом рассмотрим настройку самого CodeBrowser'a в котором и осуществляется большая часть работы.

Настройка CodeBrowser'a.
Для настройки используйте меню "Edit->Tool options". Там вы найдете следующее крупное меню.

6c7ad36c254b778b2fd91.png

Первоначально рекомендую настроить шрифты и цвета, т.к. стандартные не очень приятные глазу (хотя каждому своё). Но это настройки только для обычного обозревателя. Для декомпилятора есть отдельные настройки, которые можно найти здесь.

8b6933fd25c11c235f1b5.png

Стоит отметить, что в GHIRDA не так много хот-кеев по умолчания, а те которые есть не на совсем привычных местах (если вы долго использовали IDA, то это будет больно). Для решения это проблемы вы можете сделать ребиндинг с помощью соответственного меню в настройках.

fba8cd5e1dcbe8258fcd5.png

Здесь уже нужно будет покопаться и настроить всё под себя (в принципе это нужно делать всегда, вы ведь настраиваете для личного удобства в использовании).

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

Рассмотрим некоторые команды.

Базовые команды.
Для вызова различных отображений той или иной информации, содержащейся в файле вы можете использовать опцию "Windows".

713fd7d4c641b4a1bca65.png


Например окно "Defined Strings", будет содержать все строки, которые были найдены автоматически в бинарнике.


3020e52b25aa3babdbd3d.png


Не очень привычное отображения, конечно.

В окне "Script Manager" вы можете найти более 200 встроенных скриптов для различных задач, это достаточно интересное решение, сразу встраивать скрипты, которые по сути должен создавать пользователь под свои задачи.

8b1e34d6a3f2e85fb0c1f.png

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

Стоит ещё отметить наличие меню с выбором различных анализов над файлом.


1111111.png


Это может быть удобно при анализе прошивки, т.к. их загрузка обычно происходит не совсем просто.

Подводя итоги.
Если говорить в целом, на первый взгляд, по функционалу с IDA различий не особо много (если не вдаваться в детали), для большей части задач подойдёт. Но есть один нюанс, в том что различий нет с платной версией IDA, которую не все могут себе позволить. А GHIDRA полностью бесплатная.

Есть неудобства связанные с привычкой работы в другом инструменте, но в целом задачи свои GHIDRA выполняет.

Особенно радует декомпилятор под редкие архитектуры.

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