LINUX.ORG.RU
ФорумTalks

NSA опубликовала инструмент для реверс-инжинринга Ghidra

 ,


3

3

Агентство национальной безопасности США обещало, что опубликует в марте свой инструмент для реверс-инжинринга. Собственно обещание они выполнили:

https://ghidra-sre.org/

(Российские подсети заблочены, заходить с любого VPN)

Исходники сказали подвезут на GitHub чуть попозже. Ссылка для мониторинга: https://github.com/NationalSecurityAgency/ghidra

Новость на Opennet’е: http://www.opennet.ru/opennews/art.shtml?num=50260

Для тех, кто в танке, это может стать отличной альтернативой IDA Pro. Так как там из коробки есть возможность декомпилировать самые разные бинари в псевдо-код аля C, то есть, чем в IDA Pro занимается плагин Hex-Rays Decompiler.


Как и ожидалось, для запуска Ghidra потребовалась Java, JDK версии 11+; для сравнения – в IDA Pro используется (в настоящее время) библиотека Qt 5.

В Ghidra скорее всего используется SWT, но не ковырялся сильно. Возможно тупо AWT+Swing на стероидах. Внутри релиза от АНБ полно ошмётков от различных Eclipse-проектов. Главное окно программы, в котором можно создавать одиночные и совместные проекты, выглядит следующим образом:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_main.png

Из интересного – широкие возможности совместной работы над дизассемблированием файлов. Так сказать, можно звать товарищей на помощь и медитировать на выхлопы местного дизассебмлера холодными зимними вечерами вместе с ними. Список поддерживаемых процессорных архитектур:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_cpu.png

Самый вкусный инструмент это, конечно же, «CodeBrowser». В отличие от IDA Pro, тут всё довольно инуитивно и кнопочек с окошечками гораздо меньше. Просто импортируешь файл, открываешь его в «CodeBrowser», соглашаешься на его анализирование и через некоторое время (как закончится анализ) уже можно смотреть псевдокод тех или иных функций:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_codebrowser1.png

Непонятно для чего они захардкодили стиль виджетов «Solaris» от ныне почившего Sun Microsystems, с ужаснейшими половинчатыми скроллбарами. При анализе бинарника разработчики Gidra даже сделали весёлую анимацию, где красный дракончик кушает бинарный код вида 00010001010. Сотрудники АНБ не лишены чувства юмора. Так что ждём в ближайшем апдейте миниатюрных лошадей и миленьких глазастых девочек. Больше скринов:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_codebrowser2.png
http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_codebrowser3.png

Кроме того, стоит отметить, что из коробки в Ghidra имеется полезный дизассемблерский инструмент, который называется «Version Tracking». Суть этого инструмента в том, чтобы реверс-инженеру было удобно переносить уже проделанную работу на новые версии программы. Отслеживать все изменения, которые сделали разработчики по паттернам, сдвигам и т. д.

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_versiontracking.png

Я попробовал разобрать бинарь ARMv7, либу ARMv8 из APK и dex’ированные Android’овские Java-классы. На всех вариантах показался более-менее осязаемый псевдокод. Кому интересно, можете сравнить с той же IDA Pro:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_vs_idapro.png

Я ранее использовал IDA Pro для разбора бинарного файла ARMv7, который работал с камерой телефона. Проанализировав псевдокод я узнал правильный порядок инициализации и подсмотрел как работали с нужными мне проприетарными классами, на которых нет ни документации, ни заголовочных файлов. Я думаю, воспользовавшись Ghidra’ой, я бы тоже справился с этой работой.

Так что в полку интересных и полезных инструментов прибыло.


Update. Посмотрел внимательнее на структуру релиза и оказалось что там уже лежат архивы с исходным кодом на Java для большинства компонентов этой программы. Поковырялся в них и нашёл небольшой GUI-фреймворк базирующийся на AWT+Swing, по типу того, как оно сделано у платформы IntelliJ IDEA. Корней SWT не нашёл. Декомпиляторы выполнены в виде нативных исполнительных (соответственно платформозависимых) файлов; их исходников в этом релизе я не обнаружил.


Под Windows выглядит эта Ghidra более-менее цивильно. Видимо под неё и затачивалась. А вот под macOS, просто ужас:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_win.png
http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_macos.png

Даже хуже, чем на Linux c Solaris-темой.

★★★★★

Последнее исправление: EXL (всего исправлений: 5)

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

sehellion ★★★★★
()
Ответ на: комментарий от dormeur86

(Российские подсети заблочены, заходить с любого VPN)

EXL ★★★★★
() автор топика
Ответ на: комментарий от dormeur86

3b65d29024b9decdbb1148b12fe87bcb7f3a6a56ff38475f5dc9dd1cfc7fd6b2 ghidra_9.0_PUBLIC_20190228.zip

imul ★★★★★
()
Ответ на: комментарий от sehellion

Опеннет та ещё помойка (в плане комментаторов).

Нужно здесь это на главной как новость разместить, посмотреть, что будет

Если у тебя есть время на составление новости, я буду только рад. Лично мне лень, я пойду лучше тыкать и смотреть что они там релизнули :)

EXL ★★★★★
() автор топика

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

Задумалось, погрозило пальчиком и сказало шоб комменты про Трампа не писал, а то мало ли...

Deleted
()

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

Shulman
()

Интересно, IDA теперь менее «ылитной» станет? Для тех кто не в курсе: IDA мало того, что проприетарная, так еще и не всем ее продают, какой-то фильтр есть.

praseodim ★★★★★
()
Ответ на: комментарий от praseodim

Интересно, IDA теперь менее «ылитной» станет?

Судя по всему, да. P.S. IDA ещё и стоит довольно дорого.

EXL ★★★★★
() автор топика
Ответ на: комментарий от Deleted

На варезниках довольно-таки старые версии.

EXL ★★★★★
() автор топика
Ответ на: комментарий от Deleted

Проблема, там далеко не все версии и плагины есть.

praseodim ★★★★★
()
Ответ на: комментарий от theNamelessOne

подписаться и ждать. Там есть ишшуя «где исходники?!»

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 1)

Добавил в стартовый пост небольшой и поверхностный обзорчик. Жаль пока не на чем эту Гидру протестить в «боевых» условиях. Работы по реверсу чего-либо пока не подвалило.

EXL ★★★★★
() автор топика
Ответ на: комментарий от EXL

Работы по реверсу чего-либо пока не подвалило.

только что же тут кто-то ныл что ему реверс надо.

совмести :)

Rastafarra ★★★★
()
Ответ на: комментарий от EXL

Можно отреверсить проприетарный рудимент в драйвере AMD, который они немогут освободить из-за патентных ограничений.

torvn77 ★★★★★
()
Последнее исправление: torvn77 (всего исправлений: 1)
Ответ на: комментарий от Deleted

Задумалось, погрозило пальчиком и сказало шоб комменты про Трампа не писал, а то мало ли...

Это у вас там так. В свободной и гордой США половина госорганов спрашивает, почему обидных комментариев про Трампа не пишешь? Не патриот, штоль?

mv ★★★★★
()
Ответ на: комментарий от mv

Блин, но в реальности же через Опера-телепорт даже не скачалось :-(
Опера реально испортилась на больших файлах.

Deleted
()

Примечательно, спустя всего несколько минут после публикации инструментария, эксперты обнаружили уязвимость в реализации серверного компонента . Проблема заключается в том, что Ghidra открывает сетевой порт 18001 для удаленной отладки приложения по протоколу JDWP (Java Debug Wire Protocol). По умолчанию сетевые соединения принимались на всех доступных сетевых интерфейсах, а не на 127.0.0.1, что предоставляло возможность подключиться к Ghidra с других систем и выполнить любой код в контексте приложения. Как отмечается, проблему легко исправить – для этого потребуется всего лишь изменить строку кода.

Deleted
()
Ответ на: комментарий от mv

Вырвеглазненько. Слава богам, что в детстве ассемблер выучил.

Под виндой более-менее норм выглядит:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_win.png

Как старые-добрые программы для Windows 98 :)

А вот под macOS слабонервным лучше не запускать:

http://esxi.z-lab.me:666/~exl_lab/screens/ghidra_macos.png

Бгг.

EXL ★★★★★
() автор топика

псевдо-код аля C, то есть, чем в IDA Pro занимается плагин Hex-Rays Decompiler.

Он сразу в C++ умеет, вроде.

olegd ★★★
()
Ответ на: комментарий от Harald

А почему бы и нет? Т.к это ява, можно обойтись даже контейнером наверно

mittorn ★★★★★
()

Декомпиляторы выполнены в виде нативных исполнительных (соответственно платформозависимых) файлов; их исходников в этом релизе я не обнаружил.

Декомпиляция каких форматов доступна? MS-DOS Executable и Linear Executable есть?

question4 ★★★★★
()
Ответ на: комментарий от question4

MS-DOS Executable от DOOM распознал как Old-style DOS Executable (MZ), но что-то декомпилировать не захотел. Может с опциями надо поиграться.

Linear Executable у меня никаких нет, протестировать нечем.

EXL ★★★★★
() автор топика

Хорошая программа. И интерфейс красивый.

turtle_bazon ★★★★★
()
Ответ на: комментарий от EXL

MS-DOS Executable от DOOM распознал как Old-style DOS Executable (MZ), но что-то декомпилировать не захотел.

А что на него говорит file (который с libmagic)? На DOOM.EXE от 1 февраля 1995 года с https://www.old-games.ru/game/download/4788.html file говорит «MS-DOS executable, LE for MS-DOS, DOS4GW DOS extender (embedded)» (что подтверждается визуально).

Похоже, формат по нынешним временам слишком экзотичен :(

P.S. Как пример заведомо старого EXE: https://www.old-games.ru/game/download/3788.html

question4 ★★★★★
()
Последнее исправление: question4 (всего исправлений: 1)
Ответ на: комментарий от question4
$ file DOOM.EXE 
DOOM.EXE: MS-DOS executable, MZ for MS-DOS

Я это пробовал. https://www.old-games.ru/game/download/4788.html

Предрелизная версия

513.96 KB (добавлено: 17.11.2017)

Раритетная альфаверсия 0.3, датированная 28.02.93. Отличается наличием ранних вариантов уровней, не встречающихся в других версиях, и низкой стабильностью работы.


P.S. Как пример заведомо старого EXE: https://www.old-games.ru/game/download/3788.html

$ file AV.EXE 
AV.EXE: MS-DOS executable

А вот этот файл Ghidra прожевала и декомпилировала. Интересно.

EXL ★★★★★
() автор топика
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от kodx

Там декомпиляция вроде как на начальном уровне только:

Релиз открытого дизассемблера Cutter 1.7.4 (комментарий)

Но надеюсь выход Ghidra будет толчком к более активному развитию как Radare2, так и IDA Pro. Как в своё время выход Clang/LLVM дал толчок GCC.

EXL ★★★★★
() автор топика
Ответ на: комментарий от EXL

Для андроида есть еще вот такая утилита https://ibotpeaches.github.io/Apktool/

Radare2 отличается тем, что это открытая разработка и не нужно заморачиваться с лицензией как у IDA Pro. По поводу Гидры не уверен, что приобретёт большую популярность, если её не будут поддерживать.

В любом случае хорошо, что инструменты появляются, когда-то вообще один только SoftICE был.

kodx
()

Повесили морковку, сейчас подтянутся ослики, пока нет исходников не нужно, пока не будет проведён массовый аудит кода ненужно. А вот когда всё это будет, будет нужно, ну там драйвера для устройств отреверсить для которых нет спек и всё такое

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.