Capture the Flag (СTF) — соревнования по компьютерной безопасности. Участники делятся на команды и соревнуются в выполнении разнообразных задач. Их цели зависят от формата соревнования. Один из традиционных форматов Attack-Defense: команды получают идентичные серверы с набором уязвимых сервисов, на которые жюри периодически посылает приватную информацию — флаги. Задача каждой команды заключается в том, чтобы найти уязвимости, устранить их на своем сервере и воспользоваться ими для получения флагов соперников. Корректная работа своего сервера и украденная информация с серверов соперников приносит участникам баллы, необходимые для победы. 

Соревнования Yauza CTF-2019
Соревнования Yauza CTF-2019

YauzaCTF

Межвузовские международные соревнования YauzaCTF в этом году впервые организовала команда CTF МГТУ им. Баумана, там же проходил финальный этап состязания, на который приехали 16 российских студенческих команд из 300 команд отборочного этапа.

От Университета ИТМО в состязаниях участвовали четыре команды — Kappa (Максим Прокопович, Никита Сычев, Михаил Дрягунов, Полина Смирнова, Никита Крыжов, Сергей Борисов, Роман Опякин, Владислав Акимов (Состав команд меняется в зависимости от соревнования — прим.ред.), Fargate (Илья Шилов, Сергей Кияшко, Артем Павлов, Даниил Бельтюков, Александр Муравлев, Дмитрий Шестобоев, Артемий Колодин, Евгений Проценко, Дмитрий Татаров (Состав команд меняется в зависимости от соревнования — прим.ред.), CTD Elite и GOST in the shell. По итогам соревнований таблицу победителей возглавили команды Университета ИТМО — золото досталось команде Kappa, серебро команде Fargate, а бронзу взяла команда CTD Elite.

Участники команды Fargate
Участники команды Fargate

«К соревнованиям мы готовились на собраниях сообщества SPbCTF одного из сильнейших CTF сообществ в стране. Почти год команды разных университетов учились играть в Attack-Defense, а кроме того, в течение нескольких последних лет проводились сезоны, посвященные разным категориям заданий. Участники команд играют в CTF в среднем пару лет. Команды сформировались в начале этого учебного года во время тренировок в SPbCTF. Начав играть в Attack-Defense год назад, мы уже можем навязывать борьбу достаточно сильным командам. Так, в апреле на состязаниях RuCTF 2019 мы вошли в ТОП-10 команд, это серьезный результат», рассказал участник команды Fargate Илья Шилов.

Организаторы использовали традиционный формат CTF-соревнований — Task-based. В рамках этого формата участникам выдаются задания на разные категории из практической информационной безопасности: Reverse Engineering, Web, Pwn, Криптография, Стеганография, Форензика и некоторые другие. Однако, по словам участников, были и новые задания, например, задания на эксплуатацию ядра, аппаратное обеспечение и платформу Arduino.

Соревнования Yauza CTF-2019
Соревнования Yauza CTF-2019

«В задании на эксплуатацию ядра дается машина, которая заведомо уязвима, и к ней можно найти в Сети программы-эксплоиты, которые помогают ее взломать, но они по какой-то причине не подходят. Наша задача исследовать машину и узнать, как модифицировать программу, чтобы взлом все-таки произошел. Перед началом соревнований был доклад на эту тему, так как многие были с ней не знакомы. Такие задания обычно встречаются на более сложных соревнованиях, где играют профессионалы. На отборочном этапе было задание из такой категории, но его решили две-три команды. Можно сказать, что организаторы привнесли новый элемент в российские CTF-состязания», рассказал участник команды Fargate Даниил Бельтюков.

Слева направо: Никита Сычев, Максим Прокопович, Сергей Кияшко, Даниил Бельтюков, Артем Павлов, Илья Шилов
Слева направо: Никита Сычев, Максим Прокопович, Сергей Кияшко, Даниил Бельтюков, Артем Павлов, Илья Шилов

«В задании с Arduino нам нужно было вытащить информацию из платы, извлечь программу, которая зашита внутри, и с помощью специального программного обеспечения в ней необходимо разобраться за это ты получаешь флаг. Это задача была непростой, потому что программа была скомпилирована в машинный код, и в нем надо было разобраться», объяснил участник команды Fargate Артем Павлов.

На решение всех заданий участникам дали восемь часов. Традиционно в каждом задании есть флаги, за которые борются команды. Чем больше флагов, тем ближе команда к победе. Также многое зависит от системы подсчета баллов. Так, на YauzaCTF организаторы использовали динамический скоринг — изначально за решенное задание ты получаешь 1000 баллов, однако чем больше команд решат это задание, тем меньше оно стоит в итоге. По словам участников, такая система позволяет не угадывать организаторам, насколько придуманные задачи были слишком сложными или слишком легкими, и обеспечивает справедливую оценку.

Соревнования Yauza CTF-2019
Соревнования Yauza CTF-2019

Real CTF

Через неделю после YauzaCTF прошли соревнования Real CTF, которые организовала московская команда ВШЭ Lunary. Эти состязания включили не только задания типа task-based, второй раунд был посвящен заданиям формата Attack-Defense. Соревнования проводились в два этапа: в первый день обычный CTF с задачами, во второй — Attack-Defense.

При формате Attack-Defense команды участников получают одинаковые уязвимые сервисы, которые нужно исправить на своей машине, при этом также нужно написать программы, атакующие сервисы других команд. На Real CTF по итогу двух дней соревнований первое место заняла команда Уральского федерального университета VoidHack, второе и третье места достались командам Университета ИТМО — Kappa получила второе место, Fargate — третье.

«Среди заданий формата task-based были несколько интересных. Например, в одном из заданий требовалось исследовать образы (копии жестких дисков), зараженные вирусами, а потом исследовать сами вирусы. Нам надо было определить вектор заражения компьютера, исследовать его файловую систему, проанализировать обнаруженные следы, которые оставили вирусы, обнаружить саму вирусную программу, распаковать ее, и в распакованном виде найти интересные данные авторов вируса, например, ссылки на сайты, и дальше по этим данным провести небольшое расследование», прокомментировал Сергей Кияшко.

Соревнования RealCTF
Соревнования RealCTF

«Было необычное фановое задание, за которое можно было тоже получить баллы. Нам предложили в 3D игре найти запрятанные объекты. К этой игре можно было прийти, решив другие задания на поиск информации. Вообще, организаторы использовали систему, когда задания идут в цепочке, то есть к следующему заданию ты можешь перейти, только решив предыдущее. Правда, таких цепочек было несколько», рассказал Максим Прокопович.

Максим Прокопович
Максим Прокопович

«Была еще и категория АСУ-ТП заданий (автоматизированная система управления технологическими процессами). Нам была дана имитация системы электроснабжения ветряная мельница, которая управлялась удаленно, и надо было разобраться, как работает физическая система, чтобы взломать ее заставить крутиться мельницу в обратную сторону. Это задание решила всего одна команда», рассказал участник команды Kappa Никита Сычев.

Во второй день состязания участники решали задания Attack-Defense. Для каждого состязания организаторы придумывают новые задания — пишут специальные программы, которые похожи на те, что часто используются в реальной жизни, например, мессенджеры, интернет-магазины, социальные сети. На состязании Real CTF участники одновременно взаимодействовали с тремя сервисами. В сервисах есть уязвимости, которые нужно найти, написать программы, которые будут использовать эти уязвимости и красть флаги у других команд.

Соревнования RealCTF
Соревнования RealCTF

FaustCTF

В минувшую субботу, 25 мая, прошли крупные международные online соревнования FaustCTF в формате Attack-Defense с призовым фондом. Соревнования организовала команда Faust. В этом состязании участие приняла объединенная команда SPbCTF. По итогам соревнований участники заняли второе место, первой стала команда Bushwhackers из МГУ, на третьем месте оказалась команда Saarsec из Саарского университета, Германия.

Сергей Кияшко
Сергей Кияшко

«Задания были весьма необычными, например, одним из сервисов была реализация протокола HTTP, в котором все служебные слова и заголовки пишутся наоборот, например PTTH вместо HTTP, или TEG вместо GET. Еще одним необычным сервисом было задание, в котором использовался язык PostScript, применяющийся в издательских системах и системах печати. В этом задании надо было обнаружить уязвимость, позволяющую исполнять произвольный код на целевой системе, и таким образом получить доступ к базе данных с флагами», — рассказал участник команды Сергей Кияшко.

Илья Шилов
Илья Шилов

По словам Ильи Шилова, CTF — прекрасный способ прокачать навыки практической информационной безопасности, а также просто узнать для себя много нового.

«Как при решении, так и при организации соревнований можно попробовать на практике множество современных (или наоборот давно устаревших, но интересных) технологий, с которыми в работе и учебе можно никогда не столкнуться. К тому же простой теории часто бывает недостаточно, а иной способ получить практику представить себе сложно. Есть, конечно, пентест или программы bug bounty (поиск уязвимостей в реальных проектах за деньги), но обычно пентестом занимаются компании, в которые еще нужно попасть, а bug bounty не дает никаких гарантий успеха: все-таки в CTF хотя бы один способ решения в задание заложен изначально», говорит он.