Соревнования CTF (Capture the Flag) в GeekBrains и в мире

Подкаст «Выхожу с понедельника» — выпуск № 3
17 минут9706

Привет! В третьем выпуске подкаста GeekBrains «Выхожу с понедельника» мы подняли захватывающую тему — соревнования по кибербезопасности в формате Capture the Flag (CTF), которые популярны во всём мире, а также проводятся и у нас в GeekBrains, на факультете информационной безопасности GeekUniversity и курсах информационной безопасности в GeekSchool.

Гость подкаста — Виктор Чаплыгин, преподаватель курсов и факультета ИБ по предметам «Безопасность проводных и беспроводных сетей», «Linux. Рабочая станция», а также администратор нашего стенда Capture the Flag.

Послушать этот и все будущие выпуски вы сможете на любой удобной платформе:

В этом посте — текстовая версия. Краткое содержание: 

 

Что такое CTF

— Привет, Виктор! Вообще я знаю о кибербезопасности в основном из сериалов. Недавно смотрел «Мистер Робот», и это всё выглядело очень круто, романтично. Но на самом деле все, наверное, немножко не так, поэтому сегодня будет много вопросов. Начнём с аббревиатуры CTF - Capture the Flag. Что это такое?

Насчёт «Мистера Робота» и других сериалов, связанных с кибербезопасностью. «Мистер Робот», на мой взгляд, один из самых правдоподобных, и многие приводят его в пример, потому что сейчас в киберпространстве много что происходит. Ещё один сериал, который я могу посоветовать — «Чёрное зеркало». Там, конечно, не про хакеров, но про реалии мира кибербезопасности, кибермира, где мы сейчас с вами живём и где очень важно защищать свои данные.

Что касается CTF, то можно сравнить CTF с игрой в «зарницу». Играть в неё может кто угодно: и школьники, и студенты, и вполне взрослые люди. Участие в таких играх позволяет закрепить и улучшить свои навыки по кибербезопасности, представить себя хакером, поиграть с командой. Можно играть и самостоятельно, без команды, но, конечно, интереснее, когда это командная игра. У нас на курсах «Кибербезопасность для школьников» мы используем данный подход, так как он себя зарекомендовал. Формирование CTF-сообщества началось на Западе, с такой конференции как DEFCON, возможно, о ней многие слышали.

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

Да, оно заимствовано из фильма «Wargames» в начале 90-х. Изначально это было просто собрание друзей-хакеров, потом оно переросло в масштабное международное комьюнити и серьёзную конференцию. Если говорить о DEFCON, то это не только CTF. Если проводить аналогию с DEFCON, в России есть замечательная, серьёзная и крутая конференция Positive Hack Days (PHDays), на которой тоже много активностей. Всем, кто интересуется кибербезопасностью я рекомендую обратить на неё внимание, как минимум посетить её, а как максимум — поучаствовать. 

Как работает CTF

— Давай вернёмся к CTF. Расскажи в общих чертах, как это работает, что надо делать, из чего всё состоит.

Обычно игра в CTF проводится на сайте, где участники игры регистрируются. После регистрации они получают доступ заданиям. Задания бывают разные: связанные с криптографией, с уязвимостями в web-приложениях, сетевой безопасностью, стеганографией, анализом вредоносного ПО — в общем, с любым направлением информационной безопасности, которое может пригодится специалисту в реальной жизни.

— Можешь рассказать, что такое стеганография? Никогда раньше не встречал этот термин.

Стеганография — это когда, например, в картинку зашиваются какие-то данные. Для человеческого глаза это обычная картинка, обычный рисунок, а если загрузить её в специальное ПО или посмотреть в метаданные, то там может передаваться сообщение.

Это достаточно древний способ передачи данных. Один из исторических примеров — это когда римляне или представители какого-то другого народа набивали татуировку на лысой голове, ждали, когда волосы отрастут, и человека отправляли в другой город, чтобы он так доставил сообщение. Никто не думал, что под волосами у человека может содержаться сообщение.

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

CTF в сравнении с классическими олимпиадами. Attack-defence.

— То есть CTF — это как олимпиада? Задаются задачки, и ты их решаешь.

Да, это похоже на олимпиаду, но здесь, на мой взгляд, повыше соревновательный дух и нет академического акцента: всё более реалистично, похоже на настоящие кейсы, на то, с чем можно в жизни столкнуться. Плюс ко всему, если это игра в CTF, а не просто решение задачек на каком-то внешнем сервисе, то есть некоторая целостная картина, организация, которую ты представляешь от начала до конца — как её пентестить, найти максимум уязвимостей, максимум флагов. Под флагами может подразумеваться любая информация, может быть просто какой-то набор символов, он так и будет подписан «This is flag». Ты сдаёшь этот набор данных на платформе. Если он принимается, то команде начисляются очки. В результате формируется топ игроков, команд, которые получают призы, почёт и уважение.

— Это чисто атакующая активность? Ты всегда в роли хакера?

Нет, есть разные варианты. Классический — task based, основанный на задачках. Там может играть и один человек, и команда. Как раз этот формат у нас сейчас реализован на CTF для студентов GeekBrains. Это разрозненные задачи, на разные тематики, которые я уже перечислял. А есть вариант, который называется attack defence. Как можно догадаться из названия, есть команда атакующих и есть команды защищающихся. Это необязательно формат «команда на команду».

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

— А как создаётся защищаемая структура? Это какие-то виртуальные машины?

Если представлять в крупном масштабе, то да. Берутся виртуальные сервера, формируется близкая к настоящей инфраструктуре. Может доходить до того, что устанавливаются настоящие контроллеры, потому что виртуализировать их довольно проблематично. Они подключаются к общей сетке, ставятся межсетевые экраны, средства защиты и обнаружения вторжения, система анализа логов и инцидентов информационной безопасности (SIEM). В общем, всё актуальное на рынке защиты информации. Всё настраивается так, что где-то выставлены настройки более слабые, где-то по умолчанию.

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

— То есть сама инфраструктура открывается одновременно и защитникам, и атакующим?

Как правило да. Если это масштабные соревнования, то есть пару дней на подготовку. Участники изучают, какое оборудование у них есть, что они с ним могут сделать. Оборудование может быть физическое, настоящее, а могут быть виртуальные машины. Участники разбираются, что у них есть, и после старта моделируют реальную жизнь: настраивают правила на межсетевых экранах, детектируют атаки со стороны команды хакеров, пытаются их пресечь, предпринимают превентивные меры, размещают  honeypot — средства для приманки хакеров, чтобы те зашли в них, посмотрели, оставили свои следы и потом по этим следам их можно бфло обнаружить и заблокировать.

Зона соревнований на конференции DEFCON в 2018 году.

Платформа CTF в GeekBrains

— Давай теперь подробнее поговорим про нашу систему CTF, как она устроена?

Что касается нашей платформы CTF в GeekBrains, необходимость в ней назрела давно. Для студентов важно на практике применять те знания, которые они получают. До этого у нас были локальные стенды, каждый студент разворачивал их у себя на компьютере, не всегда хватало мощности, возникали вопросы настройки и другие проблемы. Поэтому решили создать CTF-платформу, классическую task based, основанную на задачах. Платформу мы создали за несколько месяцев.

— Расскажи подробнее о технической части.

В качестве фронтенд-части, формы сдачи задач, было выбрано уже готовое open-source решение. Решали между Faceebook CTF и CTFd. Это движок, который автоматизирует принятие флагов, где есть карточки задач, которые может прочитать студент, и указывается ссылка на уязвимые сервера. Уязвимые сервера, чтобы ими было удобно управлять и не тратить много ресурсов, было решено сделать на базе Kubernetes. Это оркестратор средств контейнеризации.

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

— Получается, сейчас есть готовая система задач, используемая во время обучения, которая разработана тобой и твоими коллегами с факультета безопасности и ребятами с факультетов веба и бэкенда?

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

Откуда берутся и как составляются задачи для CTF в GeekBrains

— А можешь рассказать, как вы это делаете? Я понимаю, что есть учебная программа и её нужно проиллюстрировать примерами и задачами. Откуда вы берёте кейсы? Из вашего опыта или находите какие-то варианты в интернете? 

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

— А задачи разных уровней? Есть какой-то постепенный трек для прохождения во время обучения?

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

Это всё разбивается по уровням, как в классическом CTF — easy, middle и hard для самых трудных задач, которые требуют не только знания о том, что есть такая уязвимость, но и о том, как её эксплуатировать. Когда речь идёт об уровне hard, самом сложном уровне прохождения, мы планируем сделать ещё и средства защиты типа фаервола или межсетевого экрана, и это, конечно, усложнит задачу. То есть сперва нужно найти способ, как обойти фаервол, а затем уже посмотреть, есть ли действительно там уязвимость, проэксплуатировать её и получить флаг.

— Это как-то привязано к аттестации студентов на факультете?

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

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

— Что-то вроде онлайн буткэмпа?

Именно. Это даёт возможность, получив свои первые знания, продолжать развиваться на внешних площадках, участвовать в межшкольных, а потом и в межвузовских соревнованиях. В России школа CTF достаточно сильно развита и всегда есть соревнования, в которых можно поучаствовать.

CTF-соревнования и их важность для резюме

— Насколько полезно участие в соревнованиях после окончания курсов GeekBrains с точки зрения профессионального и карьерного развития как безопасника? Насколько это котируется в комьюнити?

Насчёт обучения в формате CTF можно сказать, что оно высоко ценится и порой является маркером при выборе HR-ами кандидатов. Многие вакансии, особенно связанные с offensive security — так называемая нападательная тактика, когда ищут тестировщиков на проникновение, которые внутри компании будут искать уязвимости в системах — сейчас содержат такие требования. Ну и в принципе если посмотреть на тот же hh.ru и другие площадки, где размещаются вакансии, всё, что связано с практической информационной безопасностью, где нужно искать уязвимости, тестировать анализ защищённости систем, требует участие в CTF. Если это не обязательно, то везде отмечается, что это будет плюсом, потому что это говорит о том, что на уровне школьной или студенческой скамьи ребята уже пробовали искать уязвимости, нестандартно мыслить — ведь на реальных соревнованиях иногда задачи очень хитро сформулированы.

Это отличает реальные соревнования от учебных, где мы объясняем так, чтобы участники научились, что и как нужно делать. Описание задач на платформе довольно развёрнутое. Если мы посмотрим на какие-нибудь площадки для самостоятельной тренировки либо на реальные соревнования, там, например, может быть дан сохраненный трафик и не более двух строчек описания. То есть там нет подробного описания, нужно подумать и догадаться, что можно найти в этом трафике, перебрать варианты и попробовать решить эту задачу. Так что это ещё один тренируемый навык — сила воли, когда нужно найти любым способом, не сдаваться. Ну и также закрепляются знания. Ведь приходится ещё разбираться в других темах, развивать навыки. И это всё в сжатые сроки, иногда в стрессовой ситуации — в соревновании команд важно быть первым. Всё приближено к реальной жизни. Ведь если ты будешь сидеть сложа руки и думать, что волшебный файрвол из коробки тебя защитит, то рано или поздно тебя сломают.

Другие CTF-платформы

— Ну да, в реальной жизни тебе никто не даст описание того, что нужно искать. Будет минимум информации и все остальное нужно искать самому. А можешь рассказать об остальных CTF-платформах, которые можно использовать? С задачами или чемпионатами attack-defence. 

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

Там же, на этих площадках. можно найти список ресурсов, где можно зарегистрироваться и дальше тренироваться. Наверное один из самых известных и хардкорных ресурсов, где можно потренироваться взламывать разные приближённые к реальным виртуальные машины, называется Hack the Box. Есть ещё root-me.org, из российских вроде оживает сообщество «Хакердом», с которого начала развиваться школа CTF на Урале. Там много ребят, которые ничуть не уступают московским специалистам, но остаются, работают там, и продолжают готовить других специалистов. Это такая местная инициатива.

— То есть можно влиться в это комьюнити и самому помогать организовывать такие соревнования?

Да, комьюнити CTF достаточно открытое. Ещё я могу посоветовать посмотреть сайт Ассоциации руководителей служб информационной безопасности, АРСИБ. Развитие CTF  на Урале и в принципе в России осуществляется при поддержке этой организации. На этом сайте тоже размещается информация о предстоящих соревнованиях. Те, кто уже понимает, разбирается и хочет принять посильное участие в развитии сообщества, могут написать на общий почтовый ящик с предложением своей помощи. Например, сейчас будет проходить летняя школа CTF.

Профессиональный уровень для CTF-соревнований

— На каком уровне есть смысл стучаться в большие соревнования. После окончания взрослого факультета в GeekBrains уже можно туда идти или надо ещё поучиться?

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

Могу привести пример. У меня на факультете информационной безопасности, где мы обучаем взрослую аудиторию, было несколько выделяющихся студентов. Один из студентов пришёл из системного администрирования, и ему было около 56 лет. Он никогда до этого не занимался информационной безопасностью, вообще в эту сторону не смотрел, просто администрировал Linux. Нашей платформы CTF тогда ещё не существовало и я советовал студентам «Хакердом», чтобы они решали задачи там. И этот студент настолько втянулся, что написал мне через год и похвастался, что на том же «Хакердоме» начал приближаться к топовым позициям и в принципе очень много нового для себя узнал в процессе решения этих задач. Поэтому даже если познаний вообще не было, то всегда можно начать. Начать у нас и продолжить где-то ещё. Я думаю, что со временем мы будем использовать нашу платформу ещё для всяких хакатонов и собственных соревнований, в которых смогут участвовать и наши выпускники.

Пример результатов CTF-соревнований на платформе CTFd

Онлайн и офлайн-форматы соревнований CTF

— Я слышал, что CTF по есть не только онлайн-соревнования, но и офлайн. Как это сочетается?

Смотря что подразумевается под офлайн. 

— В сериале «Мистер Робот», откуда я в основном почерпнул знания по этой теме, есть сцена, где в маленький подвальный клуб приходит главный герой. Он садится рядом с другими чуваками и они хакают систему организации главного врага. И, кто быстрее, тот получает почёт и уважение.

Если под офлайном мы подразумеваем формат, в котором люди сидят в одном помещении и всё равно ломают что-то удалённо — потому что делать такие вещи полностью офлайн невозможно — то это отлично сочетается с CTF. В России в пример можно привести Standoff, противостояние от Positive Hack Days. Если вы планируете развиваться в этой теме, то вы можете создать свою команду и принять в нём участие. Сейчас это одна из престижнейших площадок, где можно посоревноваться в формате CTF, но там требуется серьёзно подготовиться и ограничено количество участников, туда проходит отбор. 

Это мероприятие можно назвать офлайн, потому что раньше оно проводилось параллельно с конференцией Positive Hack Days, на которой нон-стоп в течение двух-трёх дней, и днем, и ночью шло противостояние. Там тренируются не только навыки, нет такого, что если ты захотел есть или спать, то ты уходишь домой и продолжаешь на следующий день, нет. Это три дня нон-стоп, не выходя из помещения. Вы можете договориться делать всё посменно, но защита идёт и ночью, и днём. 

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

Я могу сказать, что если вам удастся пройти отбор и занять какие-то места, да даже просто поучаствовать, это очень большой плюс. А включать в резюме можно уже сам факт того, что у вас был опыт решения реальных задач хоть на нашей платформе, CTF GeekBrains, хоть на сторонних ресурсах. То есть, если ты в принципе интересуешься CTF и решаешь задачи, то это можно включить. И когда на собеседовании тебя попросят подробнее об этом рассказать, то объяснить, в каком формате это было.

Вас спросят, какие вы нашли уязвимости. И если ты сможешь рассказать, какие задачи ты решил, что взломал в CTF и как ты это сделал, объяснишь, как работает эта уязвимость и почему ее удалось найти, то это и есть плюс участия в CTF. Потому что это возможность на практике изучить, как работают уязвимости, найти подход к взлому системы. Если ты можешь найти в системах уязвимости, для работодателя это значит, что ты можешь их ликвидировать, поставить заплатки и сделать систему и компанию в целом более защищённой.

Поэтому я не скажу, что нужно добиваться именно призовых мест на Standoff в России или на DEFCON за рубежом, и только это указывать, это не так. Если ты реально умеешь решать задачи CTF, это тоже уже большой плюс. Даже если это какая-то небольшая локальная площадка, даже если это вузовское соревнование в твоем родном городе или вообще в школе. Опыт копится.

— Было бы здорово, если бы в школах было что-то подобное.

В школах это есть. Летняя школа CTF.

— Это дополнительное образование?

— Нет, это возможность для школьников участвовать в соревнованиях, которые устраивает ассоциация руководителей служб ИБ (АРСИБ). Они занимаются организационными вопросами, а ребятам нужно только создать команду, зарегистрироваться и попробовать себя, пройти отборочные туры у себя в регионе и приехать на российские соревнования. Это больше похоже на олимпиаду, но с практическим уклоном. Там недостаточно будет просто знать что-то.

То, что есть такие школы CTF, — большой плюс. Есть Moscow CTF-школа в Москве, есть в регионах. Из того, что я знаю, в Воронеже при поддержке АРСИБа сделана площадка, связанная с CTF, именно для школьников и для вузов.

— Есть в этой CTF-концепции какая-то романтика. Можешь напоследок дать пару советов тем, кто участвует в соревнованиях? Понятно что нужны какие-то хард-скилы, но я скорее по софт-скилам хотел бы что-то услышать.

Софт-скилы — это тоже маст-хэв сейчас при трудоустройстве, даже если ты хардкорный инженер, администратор или программист. Соответственно нужно активно участвовать, если вы пришли к нам учиться, пробовать работать в команде, активно участвовать в жизни своей команды, предлагать какие-то действия. Плюс попробовать у себя что-то организовать, узнать на уровне школы, что уже есть, какие-то команды или активности. Может быть до этого кто-то уже участвовал в CTF на уровне региона или даже на уровне России.

Больше общения. Обязательно нужно развивать и тренировать свою настойчивость, не сдаваться, если у вас что-то не получается при решении задачи CTF, то всегда можно найти отклик в сообществе, у себя в команде, пообщаться, получить обратную связь. Кроме любознательности и настойчивости, естественно, нужно быть готовым к постоянному обучению.

— Справедливые постулаты для IT-сферы.

Да, что-то новое можно узнавать до самой старости.

Подписывайтесь на обновления нашего подкаста по ссылкам в начале статьи! Впереди — увлекательный рассказ программиста, пережившего кучу релокаций, беседы о продуктовом дизайне, аналитике и вообще много интересного! :)

программированиеsecurity
Нашли ошибку в тексте? Напишите нам.
Спасибо,
что читаете наш блог!