Чем соревнование T-Bank СTF пригодится разработчику
Со школьных времен я участвовал в соревнованиях по кибербезопасности в формате СTF — Capture the Flag.
Они очень помогли мне в карьере. Сейчас я работаю в Т-Банке — пришел сюда два года назад на позицию Site Reliability Engineer. Это направление обеспечивает бесперебойную работу высоконагруженных сервисов. Мы помогаем прорабатывать архитектуру, участвуем в разрешении и анализе инцидентов, улучшаем мониторинг.
В статье через призму своего опыта расскажу о CTF и чем они полезны школьникам, студентам и действующим ИТ-специалистам.
Что такое CTF
CTF, Capture the Flag, — это соревнование, где участники занимаются этичным хакингом. Цель команды — захватить «флаг».
Под флагом в CTF подразумевают строку определенного формата, например tctf{71nKoFF_c7F}. Она имитирует секретную информацию, которую мог бы украсть злоумышленник. Получив флаг, команда сдает его на проверку — и в случае успеха получает очки.
Турниры делятся на два основных формата: attack-defense, или же classic, и task-based — он же jeopardy.
В случае с attack-defense участникам дают одинаковые наборы сервисов с уязвимостями. Команде нужно устранить их на своем сервере и, пользуясь полученной информацией, взломать противника. При этом инфраструктура соревнований следит за тем, чтобы сервисы находились в рабочем состоянии, так что принцип «вы не взломаете мой сервис, потому что его нет» не сработает.
Конкретные формулы начисления очков варьируются от турнира к турниру, но основная идея одна: сданные флаги и работающие сервисы помогают вашей команде набирать очки, закрытые уязвимости мешают набирать очки соперникам.
В task-based соревнованиях командам посылают набор заданий, или тасков, — они проверяют разные навыки, например поиск веб-уязвимостей или реверс-инжиниринг. Формат задач может быть каким угодно: сервис, картинка, аудиофайл, строка или образ виртуальной машины — зависит от фантазии организаторов.
В каждом задании — один флаг, количество очков или фиксированное, или вычисляется на основе того, сколько команд сдало флаг. Чаще всего к таскам прилагают легенду. Она подсказывает игроку направление расследования.
Мой опыт участия в соревнованиях
Впервые о CTF я услышал в 2013 году, когда учился в школе. К тому времени я уже участвовал в олимпиадах, программировал для себя, учился в профильном классе. Кто-то из одноклассников поделился ссылкой на UFO CTF 2013, который проводила команда UFOlogists. Для начального уровня задачи были достаточно сложными, и коллективным разумом мы осилили штук пять.
В 2014 и 2015 годах та же команда проводила олимпиады для школьников — UFO CTF School 2014 и UFO CTF School 2015. Это были просто отличные соревнования для новичков: много разных заданий, начиная от расшифровки строки в методе кодирования Base32 и заканчивая сложными задачами на поиск уязвимостей.
Я так втянулся в движение CTF, что теперь не сосчитаю число ивентов, в которых поучаствовал на сегодня. В 2014 году, поступив в НГТУ на направление «Прикладная математика и информатика», стал участвовать буквально во всем, что проводили: играл в нескольких командах одновременно, иногда соревновался в одиночку.
На другом факультете университета сложилась своя группа инициативных студентов, которые тоже активно участвовали в CTF. Мы собрали команду и соревновались вместе до конца учебы, а потом менторили новичков: проводили неформальные лекции и тренировки с мемами и пиццей.
CTF для меня — это эмоции и заинтересованное сообщество. Турниры проходят очень тепло. Мне кажется, это связано с тем, что соперники на CTF — в первую очередь таски, а уже затем другие команды. Когда видишь, как кто-то пытается справиться с заданием, над которым ты просидел несколько часов, всегда хочется помочь, даже сопернику.
Как только соревнование заканчивается, чаты взрываются: все делятся решениями, рассказывают истории и обсуждают, где регистрироваться на следующий турнир.
Изначально я никак не готовился к CTF, а просто пробовал силы в кибербезопасности. Прелесть в том, что ты никогда не знаешь, что получишь, до того как откроешь задания. Возможно, в ближайшие несколько часов или дней участникам придется писать на языке, о котором они прежде не слышали. А может, придется разобраться в спецификации формата PNG или отыскать на «Гугл-картах» локацию с фотографии.
Тем не менее есть стандартный набор площадок для CTF. Среди них picoGym — соревнование для начинающих с банком заданий прошлых лет. Еще две классные площадки — TryHackMe и OverTheWire.
На мой взгляд, большее внимание стоит уделять психологической подготовке — команды часто игнорировали этот момент. Любые CTF, особенно многодневные, — большая эмоциональная нагрузка. Если вы пришли за победой, должны быть уверены, что каждый член команды выдаст максимум и не опустит руки до конца. Разумеется, один только правильный эмоциональный настрой не поможет выиграть, но упаднические настроения точно приведут к поражению.
Эффект был хорошо заметен в формате attack-defense. Бывает, игроки держат высокие позиции, но в какой-то момент все начинает идти не так: флаги не сдаются, сервисы постоянно падают, и команда опускается в рейтинге. Некоторые из-за стресса забывают про еду и сон — это тоже не выход.
В таких ситуациях можно пожертвовать частью времени и дать себе перезагрузиться — выйти прогуляться вместе или собраться с мыслями поодиночке. Мы, например, каждый день выходили в укромное место, вставали в круг и каждый по очереди высказывал все, что его бесит прямо сейчас. Эти «пятиминутки ненависти» помогали выпустить пар и найти силы решать таски дальше.
После окончания университета в 2020 году я обнаружил, что большая часть соревнований рассчитана на школьников и студентов, а моя команда разъехалась по всему миру. На год-полтора я выпал из активной CTF-жизни, периодически тренируясь на HackTheBox.
В последние 2—3 года стало появляться все больше соревнований, которые готовы принять всех желающих, в том числе зрелых сотрудников. Моя текущая команда состоит из коллег, с которыми я познакомился случайно: внутри компании проводили внутренний CTF, и я писал одиночкам, которые искали соратников.
На сегодня мы отыграли вместе четыре CTF, заняли первые и вторые места в двух. Надеюсь, это не конец. Я и дальше планирую участвовать в соревнованиях, потому что этот формат профессионального развития мне подходит больше, чем конференции. Особенно хочется поучаствовать в соревновании по ускоренной разработке компьютерных игр Ludum Dare.
Зачем ИТ-специалистам участвовать в CTF
Традиционно победители получают мерч от партнеров вроде футболок и реже — денежные призы. Но для меня соревнования — это в первую очередь интересный способ узнать новое, поскольку я верю в T-shape-специалистов. Так называют людей, которые эксперты как минимум в одной области, но при этом разбираются во многих других.
CTF прокачали меня в этом направлении, я погрузился в разные области. За время работы мне приходилось заниматься бэкендом, править код приложений для Андроида и даже писать небольшие фронтенд-приложения на фреймворке Vue. Умение быстро адаптироваться к различным технологиям, полученное на CTF, очень помогло мне в работе.
К примеру, на состязаниях я сталкивался с сотнями языков вроде Brainfuck и Piet — они нужны не для работы, а скорее в исследовании возможностей программирования как такового.
Ошибочно думать, что CTF пригодятся только специалистам по безопасности.
Думаю, в жизни каждого разработчика наступает момент, когда в голове появляется мысль: а не создаст ли мой код дыру в безопасности приложения? Такой подход помогает закрывать рабочие задачи и с точки зрения безопасности.
Еще отмечу, что на CTF учишься быстро понимать чужой код. Если задание предполагает открытый исходный код, обычно я прикидываю, как бы написал подобный сервис сам, — и начинаю вчитываться, если код отличается.
Наконец, софт-скиллы, полученные на соревнованиях, останутся с вами: чаще всего CTF подразумевает работу в команде.
Как устроен T-Bank CTF
Как участвовать — онлайн и офлайн. По умолчанию состязание проходит в онлайне, но в 16 городах, включая Алма-Ату и Минск — полный список на странице регистрации, можно прийти на офлайн-площадку и поработать оттуда. Чтобы попасть туда, укажите в анкете, что вы из города в перечне. Помимо основной программы кандидатов ждут нетворкинг, конкурсы и знакомство с офисами Т-Банка.
Участники. Ждут разработчиков, SRE- и QA-инженеров, аналитиков и других ИТ-специалистов уровня мидл и сеньор. Джуниорам соревнование не подойдет.
В команде — от 1 до 3 человек, единомышленников можно найти через телеграм-бот. Участников ждут задания на веб-безопасность, безопасность приложений, инфраструктуры, мобильных приложений, криптографию, а также задачи на смекалку и логику.
Лиги. Компания предложила две лиги — для новичков и для опытных участников. Так состязание будет комфортным всех. При этом если команда успешно решает задачи в лиге новичков, она может перейти в лигу продвинутых, сохранив баллы за часть общих заданий.
Награды. Группы, набравшие максимальные баллы, получат денежные призы. Для лиги новичков:
- За третье место — 150 000 ₽.
- За второе — 180 000 ₽.
- За первое — 210 000 ₽.
Для лиги опытных участников призы выше — 240 000 ₽, 300 000 ₽ и 420 000 ₽ соответственно. Призы делят на команду.
Как готовиться. Можно прочитать разбор одного задания на «Хабре» и порешать тестовые варианты, доступные после регистрации.
Регистрация. Мероприятие пройдет с 20 по 21 апреля 2024, зарегистрироваться можно до 19 апреля включительно.
Новости из мира образования, советы по карьере и учебе, вдохновляющие истории — в нашем телеграм-канале: @t_obrazovanie