Обзор программы 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 можно выбрать архитектуру, разрядность и адрес



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



