Решение задания с pwnable.kr 04 — flag. Упакованные исполяемые файлы

image

В данной статье разберем: как и для чего применяется упаковка исполняемых файлов, как их обнаружить и распаковать, и решим 4-е задание с сайта pwnable.kr.

Организационная информация
Специально для тех, кто хочет узнавать что-то новое и развиваться в любой из сфер информационной и компьютерной безопасности, я буду писать и рассказывать о следующих категориях:
  • PWN;
  • криптография (Crypto);
  • cетевые технологии (Network);
  • реверс (Reverse Engineering);
  • стеганография (Stegano);
  • поиск и эксплуатация WEB-уязвимостей.

Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.

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


Упаковка исполняемых файлов


Упакованные файлы — это файлы, которые скрывают свой исходный код с помощью сжатия или шифрования. По мере выполнения, такой файл расшифровывает свой исходный код и копирует в другую секцию. Упаковщики обычно изменяют таблицу адресов импорта (IAT — Import Address Table) или таблицу просмотра импорта (ILUT — Import LookUp Table), а также заголовок.

image

Упаковка применяется по следующим причинам:

  • упакованный файл занимает меньше места;
  • для предотвращения обратной разработки программы;
  • упаковка с шифрованием может использоваться и злонамеренно при создании вирусов, чтобы зашифровать и видоизменить код вируса для затруднения его обнаружения системами, основанными на сигнатурах.


image

Проводить анализ, упакована программа или нет, можно при помощи PEid или DetectItEasy. Для распаковки используются соответствующие программы или универсальные распаковщики, к примеру, Quick Unpack.

image

image

Известные упаковщики:


Решение задания flag


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

image

Нам не дают исходный ход. Для анализа программы я буду использовать Cutter. Откроем Cutter, укажем путь к исполняемому файлу.

image

Наблюдаем очень странный граф программы и отсутствие функции main.

image

Проверим программу в DetectItEasy, который говорит, что наш файл упакован UPX.

image

Распакуем программу следующей командой.

upx -d flag


image

Теперь, если закинуть программу в Cutter, можно наблюдать функцию main и распакованные строки.

image

Видим строку с UPX. Найдем ее в списке строк.

image

Это и есть ответ. Как результат, получаем свои очки.

image

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

© Habrahabr.ru