Найти в Дзене
Code Simple

Flare-On 2019. Решение. Задача №1.

Оглавление

В случае заимствования данной информации, указывайте авторство - Telegram-канал   "Убежище Хакера".
В случае заимствования данной информации, указывайте авторство - Telegram-канал "Убежище Хакера".

Извинения за долгое отсутствие.

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

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

Подробнее про Flare-On.

Flare-On - ежегодный конкурс, который проводит компания Fire-eye. Конкурс включает в себя 12 задач на обратную разработку (reverse) и чаще всего в нём принимают участия ревёрс-инженеры/вирусные аналитики/исследователи и все остальные специалисты, кто так или иначе связан с ковырянием в бинарном коде.

Конкурс проводится с 2014 года. В этом году он также проводился (в конце августа-начале сентября). И хотелось бы разобрать задания с данного конкурса поочерёдно. Официальный разбор есть на сайте компании Fire-eye (https://www.fireeye.com/blog/threat-research/2019/09/2019-flare-on-challenge-solutions.html), а также разбор на русском от a1exdandy на хабре (https://habr.com/ru/company/dsec/blog/469393/)

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

Формат разбора.

Мы постараемся рассмотреть каждое задание в отдельном посте с подробными описаниями действий и анализа алгоритмов. Первые задания будут не сложные, поэтому некоторые посты будут довольно короткие, а какие-то задания могут быть разбиты на несколько постов, т.к. будут довольно сложны.

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

Если вы хотите решать самостоятельно и/или повторять действия по решению, то вы можете скачать архив с заданиями от сюда - http://flare-on.com/files/Flare-On6_Challenges.zip

Ну что же, приступим к разбору первого задания.

Задача №1 - Memecat Battlestation

Распаковываем архив и видим два файла (описание + бинарный файл)

-2

Описание:

Welcome to the Sixth Flare-On Challenge!
This is a simple game. Reverse engineer it to figure out what "weapon codes" you need to enter to defeat each of the two enemies and the victory screen will reveal the flag. Enter the flag here on this site to score and move on to the next level.
* This challenge is written in .NET. If you don't already have a favorite .NET reverse engineering tool I recommend dnSpy
** If you already solved the full version of this game at our booth at BlackHat or the subsequent release on twitter, congratulations, enter the flag from the victory screen now to bypass this level.

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

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

-3

Кода не очень много и глаз сразу цепляется за класс "VicotryForm" открыв код этого класса можно увидеть интересный массив, который преобразуется с помощью XOR'а.

-4

Код достаточно простой. Массив байт, расположенный в функции, циклически XORится с некоторыми байтами. Байты, которые являются ключами получаются из параметра "Arsenal". Посмотрим как он инициализируется. Это можно сделать через нажатие ПКМ на имя параметра и далее выбора функции "Анализировать". С помощью данной функции мы получим места в коде где происходит чтение или запись данного поля.

-5

Видим, что арсенал состоит из "WeaponCode" двух объектов. Эти объект представляют собой стадии боя. Под каждую из стадий есть собственный класс. Проанализируем первую стадию.

-6

Видим, что для того, чтобы произвести "огонь" нам надо ввести слово "RAINBOW" и после этого оно будет помещено в поле WeaponCode, то есть это первая часть ключа.

Взглянем на второй класс.

-7

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

Обратим этот код и получим вторую часть ключей.

-8

Теперь попробуем собрав первую и вторую часть расшифровать флаг.

-9

Флаги в данных заданиях всегда в формате почты с доменным именем flare-on.com.

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

Если у вас остались вопросы по задаче или в целом по хакингу, то напишите в бот-ответчик - @hackersanctuary_bot