Обзор программы J0llyTr0LLz

Обзор программы J0llyTr0LLz

https://t.me/ap_security


У большинства исследователей программного обеспечения первые шаги одинаковые. Речь идет о первичном анализе бинарного файла. Каждый раз повторяется один и тот же алгоритм:

1. Узнать что за файл

2. Узнать какой у него хеш

3. Какие защиты стоят (Canary, PIE, NX, RELRO)

В данной статье будет рассмотрена утилита для реверс-инжиниринга и бинарной эксплуатации бинарного файла под названием J0llyTroLLz.


Дисклеймер: Все данные, представленные в данной статье, взяты из открытых источников, не призывают к действию и являются только лишь данными для ознакомления, и изучения механизмов используемых технологий.


Запуск

После скачивания программы необходимо запустить файл setuptools.sh:

./setuptools.sh

После этого начнется установка всех необходимых библиотек и пакетов.

Когда успешная установка пакетов пройдена, в директории font нужно утсановить шрифт MODES___.TTF и запускать

python3 main.py


Обзор

Называется так программа не случайно. Она включает в себя целый комплекс утилит:

1. Информация о бинарном файле ( readelf )

2. Общая информация ( file )

3. Представление файла в шестнадцатиричном представлении и ASCII

4. Информация о разрядности и типе файла

5. Защиты программы ( checksec )

6. Детектор UPX и избавление от него

7. Поиск ROP-гаджетов

8. Строки программы ( strings )

9. Справочная таблица о системных вызовах (x86, x86_64, arm32, arm64)

10. Определение защит для шеллкодов ( seccomp-tools )

11. Дизассемблер шеллкодов для различных архитектур и разрядности

12. Простой сканнер потенциально уязвимых функций и подходящих гаджетов, например, для попадания в стек

13. Дизассемблер программы и представление его в виде графа

Сначала перейдем на главный экран и откроем программу для анализа нажав комбинацию Ctrl+O



Здесь можно увидеть поле, в котором будет отображен полный путь до программы, тип файла(исполняемый, скрипт и т.д), его размер, порядок следования байт, архитектура, разрядность и тип(ELF, PE, Mach-O).


Ниже два окна с представлением в шестнадцатиричном виде и его переводе в ASCII. После этого набор хешей программы:

1. MD5

2. SHA1

3. SHA256

4. SHA512

5. CRC32


После поле, в котором информация аналогичная readelf, ниже поле с функционалом программы file. В окне, находящемся в правом нижем углу, можно будет увидеть защиты программы, аналогично checksec, детектор и уничтожитель упаковщика UPX.


Самое большое поле - это отображение ROP-гаджетов с выводом колличества гаджетов и поиском.


Поиск осуществляется очень просто:

1. Попробуем найти гаджеты jmp rax. Набираем и нажимает Enter


2. Для возврата всех гаджетов удаляем строку и жмем Enter


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

На верхней панели можно увидеть:

1. File - открыть файл


2. Tools - набор утилит


3. Help - содержится информация о файле и справка по системным вызовам


Дальше в обзоре идет окно About, в которое можно попасть нажав комбинацию Ctrl+H


Здесь общая информация о разработчике и функционале программы.


После узнаем, что хранится в справочной информации о системмных вызовах - F1


Посмотрим какие строки нашла программа. Для этого нужно нажать на комбинацию клавиш Ctrl+S


В данном окне отображаются все строки, которые находятся в бинарном файле и присутсвет аналогичная строка поиска.

Посмотрим, какие защиты от шеллкода в программе, комбинацией Ctrl+T. Будет высвечено сообщение, что необходимо перейти в терминал и ввести какие-нибудь данные, чтобы программа смогла определить защиту



Результат выполнения будет отображено в отдельном окне


Дальше идет сканнер потенциально уязвимых функций и поиск подходящих гаджетов для попадания в стек - Ctrl+A. В первой вкладке набор уязвимых функций


Во второй гаджеты

Теперь главное - J0llyDBG. В этом окне полный дизассемблер программы, список функций и графы к ним. Для попадания в него нажимаем F9

Вкладка All хранит всю программу со всеми секциями и кодом


Вкладка Graph - отображение функции в виде графа. По умолчанию - функция main()


Вкладка function содержит все функции, которые есть в программе


Чтобы посмотреть ее в виде графа, нужно нажать дважды по функции. Посмотрим граф функции sym.__do_global_dtors_aux. Два раза нажимаем на него и попадаем в граф


Вкладка strings аналогична той, которая была ранее.

Последнее, что осталось - дизассемблер шеллкода. Очень удобная штука для анализа шеллкода. Больше подойдет для людей, которые занимаются форензикой. Для создания шеллкода, у AP Security есть программа KillerQueen.

Чтобы запустить, нужно нажать Ctrl+D


Для теста откроем классический шеллкод - вызов командной оболочки. Открыть файл - Ctrl+O


В первом окне дизассемблер, потом идет предствление в шестнадцатиричном виде и ASCII.

Вкладка config можно выбрать архитектуру, разрядность и адрес




При изменении адреса, меняется адрес и в дизассемблере






Report Page