Как стать автором
Обновить
2074.36

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

Время на прочтение8 мин
Количество просмотров12K

Что есть CTF?


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

image

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

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

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

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

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



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

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

image
А в жизни обычно так. Фото команды SPbCTF

Второй вид формата проведения соревнования — классический или 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) — это особый метод безопасного шифрования сообщений таким образом, чтобы получателю для их расшифровки не требовались специальные знания, высокопроизводительные вычисления или даже целый компьютер. Достаточно лишь нашей человеческой зрительной системы и немного аналитического мышления. Ведь расшифрованная информация отображается в виде визуального изображения.

image

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

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

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

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

image
Закодированное сообщение и секретный ключ

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

Hello#Warmup

Описание:

A fun visual cryptography tool will amaze your kids!
Note: Remember the flag format is TMUCTF{...}.

Решение:

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

Задания MICS содержат в себе различные категории заданий CTF. В нашем задании были категории WEB, CRYPTO и STEGO.

Web — это одна из категорий тасков CTF, включающая в себя анализ получаемых и передаваемых вэб-приложению данных, поиск, эксплуатирование уязвимостей и защита от них различных вэб-приложений, разнообразный взлом, вэб-подмену информации, использование ошибок проектирования в настройке сервера. Например, внедрение SQL-инъекций, XSS-инъекций, PHP-инъекций, проведение «Man-in-the-middle», «Meet-in-the-middle_attack», «Man_in_the_Browser» атак и многого другого. Довольно обширная категория, которая включает в себя разнообразный взлом, подмену информации, использование дырок в настройке сервера — и всё это через сетевое подключение.

AgentMisc#Spy Agent (Web+Crypto+Stego)

Think like a spy!

194.5.207.57

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

Решение:

  1. Переходим на страницу “/about.html” сайта “http://194.5.207.57”
  2. Открываем просмотр кода страницы. И видим в коде страницы строку с содержанием base64


image

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

echo "aHR0cHM6Ly9tZWdhLm56L2ZpbGUvUTVaR1dMNWEjcW04Y20tV2ZVVVZMbGUyaTA2ZVJITkc0eFRwNjlRY0tJV0JaUmtGSFktVQ==" | base64 --decode
https://mega.nz/file/Q5ZGWL5a#qm8cm-WfUUVLle2i06eRHNG4xTp69QcKIWBZRkFHY-U

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

Далее проверяем картинку на содержание других файлов утилитой binwalk

binwalk --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
pdfcandy.com
В архиве находим картинки.

image

Они представляют из себя шифр Хексахэ.
questhint.ru/hexahue
Дешифруем и получаем пароль от файлов “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!}

Exploiting или Pwn («бинарная эксплуатация», «эксплойтинг», «пвн») — это категория задач, в которых, как правило, нужно искать и эксплуатировать уязвимости в скомпилированных приложениях. Чаще всего это уязвимости повреждения памяти (memory corruption).

В этом задании мы используем 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

Решение:

1. Используем утилиту ghidra для декомпиляции кода и анализируем предоставленный код. Анализ показывает 3 функции.

2. Видим, что в функции main происходит вызов приветствия при условии переполнения локальной переменной.

int main(void) {
  char name [28];
  int local_c;
  
  setbuf(stdout,(char *)0x0);
  setbuf(stderr,(char *)0x0);
  setbuf(stdin,(char *)0x0);
  tmulogo();
  local_c = 0;
  puts("Hi, Please enter your name: ");
  gets(name);
  if (local_c == 0xcafe) {
    helloUser(name);
  }
  return 0;
}

В этой же функции находим уязвимый gets со своим ret(адрес возврата).

3. Переходим в функцию wow, которая не вызывается нигде, но читает флаг.

void helloUser(undefined8 param_1) {
  char local_88 [128];
  
  printf("Nice to meet you %s!\n",param_1);
  puts("Tell me about yourself ;;)");
  gets(local_88);
  puts("It was a pleasure meeting you.");
  return;
}

4. Переполняем буфер приветствия и не забываем, что до адреса возврата есть еще rbp,
5. Пишем в ret(адрес возврата) адрес wow.
6. ret дергает со стека этот адрес и пишет его в rip

OSINT (Open Source Intelligence) — сбор и анализ информации из публично доступных источников. В нынешних реалиях речь идет, в основном, про интернет-источники. От русскоязычных экспертов можно услышать термин «интернет-разведка», что по смыслу приравнивается к OSINT.

Osint#The Zodiac Dessert

Описание:

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

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

Решение:

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

image

image

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

image

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

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

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

image

Итоги


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

Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 9: ↑8 и ↓1+7
Комментарии0

Публикации

Информация

Сайт
timeweb.cloud
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия
Представитель
Timeweb Cloud