Timeweb в CTF: разбор заданий

Что есть CTF?

Это соревнования в форме игры, но не в Counter-Strike, Quake или даже WoT. Всё проще и в то же время сложнее. Разговор наш пойдет о соперничестве команд в области информационной безопасности. Но не абы где, а в России.

Timeweb в CTF: разбор заданий

А теперь разберём подробнее, для непосвященных.

CTF в ИБ или Сapture the Flag — это соревнования, как правило, командные, проходящие в игровой форме, где основная задача, это захватить «флаг» у соперника, причем условия, насколько это возможно, приближены к реальным. Нечто похожее, касательно формата, есть в других играх: в пейнтболе, страйкболе и у ролевиков. Но мы говорим об ИБ, где главная цель — обеспечить стабильную работоспособность своих серверов, решать те или иные прикладные задачи, защитить информацию (флаги) и захватить её, но уже у соперника. Далее участникам конкурса отправляется флаг на специальную площадку и получается подтверждение того, что задача правильно решена. Далее участникам конкурса отправляется флаг на специальную площадку и получается подтверждение того, что задача правильно решена. Если нет, то стоит попробовать дать ответ ещё раз. И так до победного. У каждой команды свой сервер, а на сервере — сервисы. Они обычно пишутся на 5-9 языках программирования. На этих сервисах разработчиками введены уязвимости, естественно намерено, дабы соревнования проходили веселее, с задором. По итогу, жюри всё это дело проверяет, насколько всё работает корректно и стабильно. Всё игровое действо длится в среднем 7-8 часов.

Игра может проходить как очно, так и удалённо, через интернет.

В компьютерных играх это обычно так
В компьютерных играх это обычно так

Виды и особенности cоревнований СTF

С годами игра, построенная по правилам классики Capture the Flag, достаточно сильно изменилась. В настоящее время ИБ означает не только соревнования, связанное с захватом флага. Эксперименты с механиками правил проведения CTF привели к возникновению множества их видов, типов и разновидностей, с теми или иными нюансами.

Но мы остановимся на двух основных форматах. Первый — так называемый Task-Based. В данном формате участники получают набор задач. К ним нужно найти ответ и отправить. Сам ответ — это флаг, который обычно состоит из набора символов и фраз производных форм. Верно выполняешь таск — получаешь очки. За сложные задания дают больше. Задания в CTF-играх, как правило, делятся на следующие категории: найти веб-уязвимость в приложении, исследование программ и инцидентов, криптография, администрирование, поиск инфы из открытых источников, стенография и misc – разнообразные развлекательные задачи. Как видите, набор квестов, выпадающих на плечи участников-хакеров достаточно обширен.

А в жизни обычно так
А в жизни обычно так

Второй вид формата проведения соревнования — классический или Attack-Defense. В этой игре команды получают в свои руки серверы, как правило, идентичные друг другу с рядом наборов уязвимостей. Жюри время от времени подкидывают приватную инфу — флаги. Перед командами встает задача найти и устранить уязвимость на сервере, которая, как правило, не одна. И что интереснее, необходимо найти уязвимости у соперника, воспользоваться ими и увести флаг. Классика CTF проводится реже Task-Based, потому что организация сервисов несколько труднее, чем написать таски.

Также есть CTF, объединяющие в себе обе структуры. Их называют миксами. Здесь команды должны не только защитить свой сервис, попутно атакуя сервис соперников, но и решать задачи. В данном случае все ограничивается только фантазией организатора, поскольку правила и механики могут любые.

Не лишним будет упомянуть другой формат соревнований — «Царь горы» (King of the hill), где основная цель, это взломать систему, закрепиться там и не позволить соперникам скинуть вас с горы, перехватив управление. В этом вся соль. Особенность режима ещё и в том, что по истечению какого-то промежутка времени, система полностью откатывается и борьба за первенство на «горе», тобишь доступа, начинается по новому кругу.

Наше участие в СTF

Наша компания Timeweb принимает участие в этих соревнованиях впервые. Так что, так сказать, создаём практику участия и надеемся выступать на регулярной основе. От нашей компании впервые официально выступила команда (с одноименным названием компании), сформированная из сотрудников с разных отделов. Основная цель участия на данных мероприятиях, это прежде всего получения новых навыков (и отточки уже имеющихся) и бесценного опыта для членов команды CTF Timeweb, а также демонстрация всех преимуществ и особенностей нашей компании клиентам, поддержки и развития безопасности хостинга.

Мы также продвигаем свой бренд Timeweb в соревнованиях CTF и планируем найти новые контакты, не только на местном уровне внутренних соревнований в России но и на международных.

Первое официальное соревнование CTF нашей команды: TMU CTF 2021. Оно проходило с 08.09.2021 по 10.09.2021.

Организатором соревнования стал университет Тарбиат Модарес (TMU), который находится в Иране. Результатом наших состязаний стало 71 место из 496.

Вот такие интересные задания

Шифрование помогает сохранить данные в тайне, но при этом приводит к лишнему вниманию. Если файл не открывается так просто, то наверняка там что-то ценно. Таким образом, важно скрывать и сам факт наличия секретных сведений. Лучше всего это делать, растворяя конфиденциальную информацию в каком-то безобидном файле. Скажем, картинке или нескольких. Так мы обращаемся к визуальной криптографии и стенографии.

Визуальная криптография (изобретенная Мони Наором и Ади Шамиром в 1994 году на EUROCRYPT) — это особый метод безопасного шифрования сообщений таким образом, чтобы получателю для их расшифровки не требовались специальные знания, высокопроизводительные вычисления или даже целый компьютер. Достаточно лишь нашей человеческой зрительной системы и немного аналитического мышления. Ведь расшифрованная информация отображается в виде визуального изображения.

Timeweb в CTF: разбор заданий

Наор и Шамир продемонстрировали свою идею с помощью прозрачных пленок, которые и являются слоями оригинального изображения. Каждый слой изображения печатается на прозрачной пленке. Для расшифровки полного изображения происходит накладывание всех слоев на одну поверхность. Аналогичным способом можно использовать визуальную криптографию и в компьютерных системах. В данном случае слои изображения накладываются друг на друга с помощью графических программ.

В общем, упрощая это и говоря по факту, мы складываем два изображения в одно. Сами они представляют собою, по сути, «шум» из пикселей. Наложение по пикселям этих двух картинок выводит общее расшифрованное изображение, в котором заложен скрытый текст. Тут стоит отметить, что если слоёв много и не хватает одного, расшифровать сообщение не выйдет даже самым решительным злоумышленникам.

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

Со всем этим связано следующее задание…

Timeweb в CTF: разбор заданий

Разбор заданий:

Hello#Warmup

Описание:

  • Для решения используется утилита Visual cryptography tool
  • В папке с картинками используем команду: python visual_crypto.py -vvv --message chiped_message.png --secret secret.png
  • Получаем флаг.

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

A fun visual cryptography tool will amaze your kids!

Note: Remember the flag format is TMUCTF{...}.

Решение:

Misc#Spy Agent

Описание:

Think like a spy!

Решение:

  • 1.1 Переходим на страницу “/about.html” сайта “http://194.5.207.57”
  • 1.2 Открываем просмотр кода страницы. И видим в коде страницы строку с содержанием base64
Timeweb в CTF: разбор заданий

Декодируем этот текст и получаем ссылку на сайт загрузчик.

echo

"aHR0cHM6Ly9tZWdhLm56L2ZpbGUvUTVaR1dMNWEjcW04Y20tV2ZVVVZMbGUyaTA2ZVJITkc0eFRwNjlRY0tJV0JaUmtGSFktVQ==" | base64 --decode

https://mega.nz/file/Q5ZGWL5a#qm8cm-WfUUVLle2i06eRHNG4xTp69QcKIWBZRkFHY-U

Скачиваем картинку.

Далее проверяем картинку на содержание других файлов утилитой binwalkbinwalk --dd='.*' imitation-game.jpg

DECIMAL HEXADECIMAL DESCRIPTION

0 0x0 JPEG image data, JFIF standard 1.02

6423339 0x62032B Zip archive data, at least v2.0 to extract, uncompressed size:

212356, name: Movies, Myth, and the National Security State.pdf

6619519 0x65017F End of Zip archive, footer length: 22

Файл pdf содержит несколько файлов.

Мы извлекаем из PDF файла архив через pdfcandy

В архиве находим картинки.

Timeweb в CTF: разбор заданий

Они представляют из себя шифр Хексахэ.

Дешифруем и получаем пароль от файлов “14mp455w0rd”

Глядя на первое изображение, которое было в самом начале, ищем скрытые файлы с помощью утилиты “steghide” и парольной фразы «14mp455w0rd» и обнаруживаем текстовый файл с флагом.

steghide extract -sf imitation-game.jpg

Enter passphrase:

wrote extracted data to "flag.txt".

cat flag.txt

TMUCTF{C41rncr055_15_4_50v137_5py!}

В третьем задании мы используем GHIDRA, которая по сути своей является утилитой для реверс-инжеринга, для изменения и преобразования бинарного кода в текст на языке ассемблера и получения информации о программе, её поведении и работе (функции, параметры, указатели на адреса памяти), когда исходный код недоступен. После анализа, мы, основываясь на полученных данных о работе программы, эксплуатируем уязвимость по сценарию, от которого получаем флаг. Хорошая альтернатива IDAPro, gdb(edb), radar2.

PWN#Baby Pwn

Описание:

Can you get the flag?

nc 194.5.207.56 7010, nc 185.239.107.54 7010

Решение:

  • Используем утилиту ghidra для декомпиляции кода и анализируем предоставленный код. Анализ показывает 3 функции.
  • Видим, что в функции main происходит вызов приветствия при условии переполнения локальной переменной.
  • В этой же функции находим уязвимый gets со своим ret(адрес возврата).
  • Переходим в функцию wow, которая не вызывается нигде, но читает флаг. Переполняем буфер приветствия и не забываем, что до адреса возврата есть еще rbp,
  • Пишем в ret(адрес возврата) адрес wow.
  • ret дергает со стека этот адрес и пишет его в rip
  • Osint#The Zodiac Dessert

Описание:

Убийца Зодиака — это псевдоним американского серийного убийцы, который действовал в Северной Калифорнии в конце 1960-х годов. Неизвестный убийца назвал себя «Зодиак» в серии писем и открыток, отправленных в прессу области залива Сан-Франциско. Эти письма содержали четыре криптограммы. У меня есть одноклассник, который одержим этим убийцей, поэтому мы отправились в путешествие, чтобы посетить места убийств Зодиака. Когда мы были на месте убийства рядом с садом, мы проголодались, поэтому пошли в ближайшее кафе. Я заказал жареные креветки и немного картофеля фри с чесноком. У нее был бутерброд и десерт за 4 доллара. Сможешь узнать, какой десерт она заказала?

Примечание. Название десерта должно содержать подчеркивание вместо пробелов. Не забудьте обернуть его TMUCTF {}. Например, TMUCTF {Full_Name_of_The_Dessert}.

Решение:

Для начала гуглим: murder site near garden zodiac

Открываем первую ссылку и смотрим места убийств. Из четырех убийств подходит, только то, которое расположено рядом с «Золотыми воротами» в Presido (murder Paul Stine).

Timeweb в CTF: разбор заданий

Ищем кафе, в котором есть garlic french fries и grilled shrimp(в GMaps: cafe with garlic french fries and grilled shrimp) конечно в области убийства.

Это должно быть недорогое кафе, в котором есть разные блюда. Из всех кафе наиболее подходит кафе Cafe Bunn Mi, оно находится рядом с убийством.

Открываем меню и листаем до десертов. Видим десерт за 4 бакса и вводим его в флаг.

Timeweb в CTF: разбор заданий

Итоги

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

44
Начать дискуссию