Привет! Меня зовут Анна Шабалина, и я работаю в Swordfish Security. Этой статьей я открываю нашу новую рубрику #досугбезопасника.
Мы частенько организовываем, наблюдаем или обсуждаем CTF, и каждый раз находим для себя что‑то новое, интересное, полезное. Решили собрать в одной статье опыт крутейших экспертов, участников и организаторов CTF. Наверняка будет полезно не только начинающим свой путь в практической безопасности, но и «бойцам» со стажем.
Статья длинная, заготовьте чашечку кофе.
![](https://habrastorage.org/getpro/habr/upload_files/9ec/b78/54a/9ecb7854acada42e8db774e5d75ffdf0.jpg)
Интро
Если вы читаете эту статью, значит, уже хотя бы немного знакомы с понятиями “white hat” и “black hat”, которые описывают нестандартных, эрудированных, умелых и достаточно азартных людей, способных найти уязвимости в коде или артефактах цифровых сервисов и использовать их. «Черные шляпы», или хакеры, могут продавать их или создавать на их основе эксплойты. Как и пираты XV–XVII веков, они используют свои открытия для обогащения себя, своих команд или своих нанимателей, совершая киберпреступления против персональной информации и финансовых активов своих жертв. «Белые шляпы», которых обычно называют этичными хакерами, как корсары или каперы (пираты на службе государства или бизнеса), в свою очередь, сообщают о найденных уязвимостях владельцам ресурсов, получая выгоду в виде наград и премий от своих нанимателей или в рамках открытых программ bug-bounty.
Но прежде, чем стать «шляпой» соответствующего личным ценностям цвета, многие разгоняют навыки на соревнованиях Capture The Flag (CTF). Приняв участие в крупном CTF, можно не только испытать свои скиллы на прочность, но и получить признание среди единомышленников, привлечь внимание солидных работодателей и получить денежную награду.
CTF во дворе или в компьютерном шутере — это командное, редко - индивидуальное соревнование, задача которого — захватить чужой флаг и не дать соперникам взять ваш. В сфере кибербезопасности «флаги» в таком соревновании — это секретная информация, которую организаторы CTF кладут внутрь специально приготовленной системы, и добыть их можно только посредством ее взлома. В ходе таких игр в режиме сжатого времени и в достаточно стрессовых условиях происходит быстрая прокачка навыков.
Существует три базовых формата CTF, которые организаторы могут комбинировать по своему усмотрению: тасковый (Jeopardy), классический (Attack-Defense), царь горы (King of the Hill). В классике команда обеспечивает бесперебойность работы и защиту данных в полученном наборе сетевых сервисов, в Jeopardy– выполняет задачи из разных областей, от криптографии и реверс-инжиниринга до разведки и поиска по открытым источникам. В King of the Hill все команды атакуют одну и ту же систему. Тот, кто первым получит к ней доступ, старается не пустить туда соперников. Те, в свою очередь, ищут уязвимости, которые еще не успел устранить текущий «царь горы».
На сайте CTFtime представлено описание и рейтинг 830 CTF по всему миру. Число площадок растет год от года. В лидерах, разумеется, западные и азиатские площадки.
Ниже я хочу привести выдержки из бесед с четырьмя крутейшими спецами отрасли:
Егор Богомолов – победитель многочисленных CTF и участник bug-bounty, основатель компании Singleton Security, глава обучающего центра CyberED (бывш. «HackerU»)
Омар Ганиев aka Beched, «этичный хакер», специалист по безопасности приложений и тестированию на проникновение, спикер различных конференций (Highload++, PHDays, ZeroNights, OWASP и т. д.), член сильнейшей российской CTF-команды «More Smoked Leet Chicken». Основал компанию DeteAct для разработки продуктов и оказания услуг по ИБ. Преподавал практическую безопасность в РТУ МИРЭА
Влад Росков, капитан команды LC↯BC / More Smoked Leet Chicken, многократный победитель и организатор CTF (с сообществом SPbCTF)
Константин Крючков, многократный участник CTF (команда Keva), организатор образовательных CTF в Swordfish Security
Как и мы, они заинтересованы в популяризации CTF и взращивании культуры безопасной разработки, этичного хакинга, и готовы дать несколько полезных советов начинающим CTF’ерам, специалистам по безопасной разработке, а также экспертам, стремящимся повысить свои навыки и компетенции.
![](https://habrastorage.org/getpro/habr/upload_files/8aa/93d/548/8aa93d548bb194820774e18f9bf20848.jpg)
Выдержки из бесед с небожителями
Как вы решились на свой первый CTF? Как он прошел? Где вы искали информацию?
Егор: Хоть я и учился на направлениях ИБ в университете, узнал о CTF я достаточно поздно, когда перешел работать в «Позитив» (прим. Positive Technologies). Там я познакомился с девушкой-хакером, и она показала мне первые так называемые ever-CTFы. Это такой CTF из разряда вечных. Он висит, ты спокойно заходишь и решаешь задания, тебя никто не торопит.
Влад: Я рубаю в CTF’ки с 2009. Думаю, участвовал в 300+ CTF’ках за это время — в команде «Leet More», потом «More Smoked Leet Chicken», потом «LC↯BC», и снова «MSLC». По итогам 2012-го мы даже стали тимой [командой] №1 в мире по рейтингу CTFtime. Я узнал про CTF’ки, когда пришёл в универ. Прямо в начале учебного года нас собрали старшекурсники. Они только начинали исследовать CTF-сцену, которая в это время зарождалась в мире, и звали «перваков» попробовать вместе с ними. Подняв небольшой внутренний форум в инете, мы начали собираться в универе и пробовать участвовать.
Думаю, один из наших первых CTF был какой-нибудь iCTF 2009 или CIPHER CTF 2009. Мы, естественно, заняли «фиговое» место в нижней части скорборда. Но с каждой следующей CTF’кой мы видели, как быстро росли: сначала получилось решить больше заданий, потом смогли случайно обойти крутую российскую команду SiBears из Томска, на какой-то CTF’ке обошли на тот момент самую мощную российскую команду Hackerdom, потом где-то вошли в тройку на международной CTF’ке, закрепились на первых строчках по стране, начали занимать первые места в мире. У нас этот путь занял несколько лет.
В древние времена [смеется] искать информацию было довольно сложно: безопасность обсуждали на разрозненных форумах (в России - Antichat, RDot), и было несколько конференций, доклады с которых можно было нагуглить. На каких-то направлениях безопасности были хорошие тренировочные площадки-«варгеймы» (SmashTheStack, OverTheWire). Информацию о CTF’ках тогда публиковали в email-рассылках и в твиттере с хештегами #ctf #wargame. Однако в 2012 появился CTFtime.org — сейчас на нём набралась уникальная база знаний о CTF’ках: там публикуют предстоящие соревнования, обсчитывают мировой рейтинг команд, размещают решения интересных заданий. Когда начинали мы, в году было штук 10 CTF, и искать инфу было сложно. Сейчас в год проходит около 200 CTF, и всё, что нужно, чтобы начать быстро копить скиллы в практической безопасности с помощью CTF, — рубать во всё подряд из календаря CTFtime, и читать write-upы.
Омар: В детстве я участвовал в разных hack-квестах, а на первый очный CTF поехал в Санкт-Петербург (он проходил на конференции Chaos Constructions 2011). Главной мотивацией было надрать зад остальным участникам и показать, что я самый крутой хакер. Конечно, мне это не удалось, и в конце первого дня я ушёл с конфы и пошёл гулять по летнему Питеру. Вообще, в то время почти не было соревнований, за год проходили считанные CTF’ы. Но как раз в 2011–2012 годах пошёл рост, и в 2013 году я уже участвовал в соревнованиях каждую неделю весь год.
Константин: У меня давняя история знакомства с форматом CTF. Со времен университета. Мне повезло: в том ВУЗе, где я учился [ТУСУР], была команда Keva. К тому моменту, как я пришел, команда уже была известна, участвовала в RuCTF, RuCTFE и прочих. Основной состав команды уже выпускался, и нам было сложновато – пришлось новую итерацию создавать самим.
У нас была целая каморка на кафедре в универе на подвальных этажах. Это было интересно: мы участвовали в соревнованиях, кто-то сам учился, кто-то лекции читал, кто-то девайсы [точки доступа] притаскивал, кто-то в оффлайне практиковал взлом замков. В какой-то момент дошло до того, что мы организовали Сибирь CTF. Мы позвали несколько соседних регионов на площадку, которая помогала с организацией [универ], и провели соревнование. Мы писали задания, сервисы, пытались придумать легенду, логотип какой-нибудь – тогда мы всем этим занимались сами. Наверно, именно с тех пор меня захватило и не отпускает. Во всех местах, где я учился и работал после, становился промоутером CTF-движения. В основном это были компании, связанные с разработкой. Что интересно: я бы не сказал, что безопасники активно участвуют. А вот разработчиков всегда много, потому что для них это что-то новое, возможность стать ближе к хакингу.
Какой формат CTF вам нравится больше?
Егор: Существует несколько общепринятых форматов CTF. Формат Jeopardy самый распространенный. Представляет собой набор задач, решая которые, команда набирает очки. Он сбалансированный и удобный. Формат Attack-Defense - второй по распространенности, тоже очень сбалансированный. Изначально все участники в одинаковых условиях, но впоследствии они могут меняться. То есть в первом случае [Jeopardy] вообще не можешь ничего поменять – у всех одинаковые задачи, одинаково работают системы, и участники соревнуются в режиме «кто быстрее взломал» в таких, можно сказать, чистых условиях. В Attack-Defense ты уже можешь влиять на соперника: взломать его узел, все порушить у него, все удалить, что угодно сделать, чтобы у него упала работоспособность узла, и это тоже засчитывается как очки. В Attack-Defense считаются очки атаки, очки защиты, очки бесперебойной работы, то есть SLA.
Допустим, у нас 10 команд - обычно это происходит в offline. У всех одинаковые компьютеры или виртуальные машины, в которых предустановлены одинаковые сервисы: сайтики разные, любые сетевые сервисы и так далее. В них есть вложенные уязвимости, флаги, пользователи со своими секретами (боты), которые нужно воровать у других команд. И участник просто ворует у других команд секреты – это первое. Второе – участник может эти уязвимости у себя закрывать. То есть у тебя есть код этих сервисов, они тебе доступны, ты можешь их патчить - ты их меняешь, поэтому отрабатывается роль не просто хакера, но и защитника. Также, большое внимание уделяется тактике. Для примера, есть такая тактика: не атаковать сильных игроков. Обычно я спрашиваю аудиторию - почему? Дам сразу ответ: потому, что когда ты атакуешь сильных игроков, ты отправляешь эксплойт на их машину и реализуешь какую-то уязвимость. Получается, что сильный игрок может этот эксплойт в трафике разобрать, быстро его получить и пользоваться им. То есть ты, по сути, ему даешь готовое решение. Поэтому нужно «фармить» флаги слабых игроков. Есть даже такая роль в команде – спец по анализу трафика. Он ищет эксплойты, которыми атакуют его, которых его команда еще не знает. Разбирается в них и передает команде, чтобы они подготовили их реализацию и раскатали на всю сеть. И там [в турнире] тысячи таких техник интересных. Например, SLA тот же самый.
SLA (Service Level Agreement) значит, что твой сервис должен работать 100% времени. Если его порушили, у тебя падают очки бесперебойности – ты начинаешь проигрывать. То есть ты должен держать его постоянно в работе. Обычно изначально дается сервис в работе. Бывают, конечно, специальные задачи, когда сервис не функционирует – почини его. Но обычно работает изначально. Их [команду] ломают, SLA может падать, могут вообще тебе сервис закриптовать [зашифровать, используя криптографию], тогда вообще все упадет. Что еще важно? Ты должен сохранить весь код сервиса заранее. Если ты его патчишь, и он ломается, нужно иметь возможность его откатить. Без сейва патчить нельзя, иначе ты можешь исправить код и забыть, что исправил. Т.е. не иметь возможности откатиться т.к. изначальной версии кода у тебя больше не будет, можно дальше до конца турнира сидеть со сломанным сервисом.
SLA проверяют боты. Например, обычные пользователи залезают [в сервис], нажимают кнопку регистрации, скачивают картинку, пишут в блокнотик и др. Если все работает, значит, и сервис работает. И наоборот. Они прям механики проверяют. Чтобы боты думали, что все работает, можно пользоваться хитростями. Например, у тебя сервис не работает, а ты можешь взять и перенаправить трафик на другую команду. Боты будут лазить к ней и проверять их работу. И думать, что у тебя вроде как все работает, и не знать, что ты просто трафик перенаправил.
Возвращаясь к теме форматов – есть третий популярный формат Cyber Polygon. Мне кажется, это последняя категория, которая существует. Это формат, когда у тебя абсолютно нет баланса. Даже на начальной стадии. То есть в Attack-Defense все-таки ты в состоянии пользоваться сервисом, все одинаковые, все знают коды, потому что сервис одинаковый, киберполигоне есть живая инфраструктура. Например, я и моя команда True0xA3 являемся многократными участниками PHDays. Мы раз 6 были победителями или призерами. Первые-вторые места ежегодно. Особенности такого формата в том, что вы все начинаете в живой более-менее инфраструктуре, сети большой компании, где есть сотни узлов разных. Дело в том, что ты в каждую секунду времени, взломав машину, можешь сделать так, чтобы ее никто больше не взломал вообще. То есть ты ее захватил и сразу исправил уязвимости – больше туда никто не зайдет, кроме тебя. Или ты ее уронил [обрушил сервис, сделал недоступной] за собой. Или, например, выбрал какой-то секрет, выполнил какой-то риск конкретный – взломал нефтекачку, например, и уничтожил полностью. Такое тоже возможно. В этом плане получается такая максимально реалистичная игра. Никто не даст поблажки, не получится сказать: «Ой, судья, пожалуйста, кто-то там что-то делает». Нужно быть просто самым проворным в «детском саду, где у всех все отбирают». Конечно, есть правила, что нельзя мешать друг другу, но в реальности не все так гладко. И получается, что кто-то случайно что-то сделал или специально. А ты вынужден в этих условиях справляться с уже изменившейся задачей. Из-за этого формат и получается интересным, реалистичным.
Омар: Формат Attack-Defense обычно веселее, особенно на очных соревнованиях, но в Jeopardy могут быть более сложные и глубокие задачи.
Влад, Константин, какой формат CTF вам нравится организовывать больше?
Влад: Мне нравится делать и Jeopardy, и Attack-Defense, ведь у каждого из них свои преимущества. «Жопарди» — это рафинированное соревнование скиллов, оно определяет лучшую команду в той области, на которую организаторы приготовили набор тасков. Вы собираетесь командой и решаете задания, кто в чём хорош, периодически помогая друг другу. Смогли решить — получили очки, продвинули команду вперёд к вершине скорборда, и в итоге победил тот, кто в сумме решил больше более сложных заданий. Jeopardy прокачивает ваши навыки в спокойной обстановке.
Attack-Defense — это соревнование, требующее специальной подготовки и хитрости, в котором огромную роль играет случай. На Attack-Defense вы сталкиваетесь с противниками напрямую, атакуя не автономную систему, а сервер реальных соперников, которые будут следить за вашими атаками и реагировать на них. Чтобы победить, вам помимо обладания сносными скиллами (уязвимости легче, чем в «жопарди») нужно провести большую подготовку: приготовить анализаторы трафика и авто-запускалки эксплоитов, оттренировать чёткое командное взаимодействие в «пылу битвы», придумать заготовки, чтобы обхитрить соперников. Attack-Defense прокачивает умение противостоять людям, а не просто машинам, но позволяет иногда занимать верхние строчки, не имея скиллов: в 2013 году на финале DEFCON CTF (он считался наиболее престижным мировым соревнованием, куда проходили лучшие команды с других CTF) мы приготовили наш первый самописный анализатор трафика, прикрутив к нему тупой репитер атак. На соревновании каждый сервис оказался бинарником на архитектуре ARM — декомпиляторов под неё не было, и у нас мало людей умели даже просто ревёрсить ARM, не то, что писать под него эксплоиты. В итоге всё, что мы делали на том дефконе — смотрели в трафике, как атакуют нас, и реплеили атаки на соперников. Не написав ни одного собственного эксплоита, мы заняли 4 место из 20 на главном мировом евенте того года.
Константин: я знаю две глобальные категории. Attack-Defense и Jeopardy. Вот в последнем мы и участвовали впервые, мне кажется он попроще. Потому что не надо работу сервиса поддерживать, есть набор задач, видишь ссылку на сервис – идешь и пытаешься взломать, об остальном не паришься. Attack-Defense в какой-то степени ближе к концепции «Blue team»/ «Red team» [защитники/атакующие], к реальной инфраструктуре, потому что у тебя есть и сеть, и мониторинг трафика, и написание эксплойтов, и автоматизация, и попытка атаковать другие команды. Здесь «в одного» уже не поучаствуешь точно – нужна команда. И такой опыт есть. Для целей обучения лучше подходит Jeopardy, поскольку здесь не заточено все на соревновании. Ты точно понимаешь масштаб, и, в целом, можешь играть хоть с 10 людьми, хоть со 100. И категории задач могут быть разные. В Attack-Defense, если набирается критическая масса участников, ты часть defense тоже практикуешь, а в Jeopardy – только атака, навыки защиты ты в явном виде не получишь, но поймешь, где было слабое место и догадаешься, как его можно было исправить.
Кроме того, для корпоративного обучения формат [Attack-Defense] реализовать сложнее. Нужно собрать порядка 300 разработчиков, всех объединить в команды, такую активность крутую провести. Мне кажется, в России еще никто такого не делал, хотя это был бы крайне интересный опыт.
Кстати, у нас был опыт в Swordfish Security, когда мы делали CTF для разработчиков и тестировщиков, и один человек решил все задания, чем приятно удивил. Пусть даже мы понимаем, что мы не делали CTF хардкордного уровня, потому что тут все же цель – обучение. В этом и кроется баланс корпоративного обучения: это должно быть фаново, но не легко и, одновременно, не слишком сложно, чтобы не убить всю мотивацию. Занятно было, что мы взяли тот же CTF и провели на OFFZONE. И был только один человек из команды DeteAct, кто решил все. Мы ожидали куда больше таких участников.
Был у нас прикольный случай, когда попытались подкупить организаторов. Было задание «rule-breaker», по сути – «ломатель правил». И участники одной из команд подумали, что нужно использовать социальную инженерию, и пытались что-то с нами провернуть. [Константин Крючков]
Влад, скажите, на какой формат CTF сейчас больший спрос?
Влад: Чтобы играть в Attack-Defense, обычно нужна большая подготовка, поэтому для непрофессиональных CTF‘еров резонно организовывать Jeopardy — их мы проводим больше всего. При этом, мы делаем и Attack-Defense так, чтобы было интересно неподготовленным участникам — корпоративным клиентам или студентам-новичкам. Если смотреть с точки зрения развития скиллов, мне кажется, в мире сейчас хорошая пропорция «жопарди» и «атак-дефенсов», и, если участвовать в обоих, будут органично развиваться и хард-скиллы в конкретных областях безопасности, и софт-скиллы прямого противостояния.
Константин, бывает ли, что компании обращаются к вам, чтобы сделать фокус в CTF на каких-то конкретных тематиках? Сложно ли вообще делать фокус в CTF?
Константин: Обычно такие запросы есть в тренингах с экспертом, в рамках CTF – реже. Но существует такое понятие, как «банк заданий», где есть задачи разного уровня сложности и разных тематик. Какие-то можно применить или не применять. Сложность оценивается экспертно (включая сложность описания уязвимости, длину пути до эксплуатации). Например, берешь один из «пэйлоадов», где можешь хотя бы визуально ошибку получить – это просто. Если действуешь вслепую и находишь цепочку уязвимостей, то, конечно, за задание получаешь максимум. У нас есть задачи-матрешки, когда получаешь часть, а вскрывается сразу несколько. Понятное дело, есть чисто фановые задачи, чтобы переключиться или не уйти демотивированным с нулевым результатом. Например, тот же «ломатель правил», где нужно заглянуть в инструменты разработчика, чтобы увидеть, что оттуда тоже можно подсмотреть какие-то данные. Есть задачи типа recon, разведка. Где нужно найти, например, любимое блюдо организатора CTF. И сразу понятно, что тут не sql-инъекция, а соцсеточки, отметки, гуглить надо с помощью фильтров, архив поиска смотреть. Еще у нас был опыт, когда заказчик делился дампами, тикетами в JIRA, sql-инъекцией, чтобы сделать тренинг. И мы в рамках разборов давали кейсы конкретно по компании. Вообще, это полезная практика - делать открытые обзоры пофиксенных уязвимостей.
Как вы предпочитаете участвовать: в одиночку или в команде? Какие CTF можно назвать топовыми из российских?
Омар: Вначале я много участвовал в индивидуальных CTF, но они обычно достаточно местечковые и не такие масштабные, как командные. В команде участвовать, конечно, гораздо интереснее. В России есть хорошие соревнования RuCTF, VolgaCTF, CTFZone. Других с ходу и не припомню. Зато за рубежом мы много участвовали в высокобюджетных соревнованиях в Китае, Японии, Южной Корее, Европе, ОАЭ. Конечно, ездить на такие очные соревнования со своей командой — самый кайф. Там тебе некуда деваться: ты отключаешься от внешнего мира и 2–3 суток почти без сна решаешь задачи, получается очень интенсивная тренировка.
В 2016-2019 годах мы в таком интенсивном режиме суммарно провели 3-4 месяца в Китае, я ездил туда около 15 раз, кто-то ещё больше. Там проходили очень крутые CTF с сильнейшими командами мира, а крупнейшие призовые нашей команды составили $100k.
Формат при этом бывал разный: и обычные Jeopardy и Attack-Defense, и соревнования между автономными системами взлома (мы программировали ботов, которые должны были сами решать задачи), и Jeopardy с задачами зашкаливающей сложности от самих участников (каждая команда приносила по 2 задачи от себя).
Влад: На CTFtime.org у каждого CTF есть вес — чем оно более топовое, тем вес ближе к 100. Сейчас самые весомые российские соревнования в рейтинге — это RuCTF, CTFzone и VolgaCTF. Самым большим соревнованием от российских организаторов по количеству участников была наша серия CyBRICS, но сейчас мы её не проводим. Я бы рекомендовал избегать чисто российских CTF - нет смысла запечатываться внутри страны на разнообразном и открытом рынке. Рубайте во всё подряд на CTFtime, меряйтесь скиллами с другими международными командами вашего уровня, и, если вам для чего-то понадобится победить на российском соревновании, это придёт само собой.
Егор, как ты относишься к российским CTF в принципе? Есть ли смысл сразу ходить в «зарубежку»? Согласен ли ты с утверждением, что большинство чисто российских CTF - ерундовые?
Егор: В каждой стране, в каждом блоке и на каждом континенте свои форматы и задачи превалируют. У нас, например, больше webчика и, может, реверса. А вот в Азии превалирует «pwn», и есть популярные турниры типа PWN2OWN – это компрометация реальных систем. Дается актуальная винда, дается последняя версия GitLab, или вообще Тесла [в зале ставится машина с возможностью подключения] и говорят: «Взломай». Вот это турнир – взломал/не взломал. Тебе говорят: «Ищи zero-day». И люди находят и сдают. И получают в награду эту Теслу и сотни тысяч долларов. Есть формат Defcon. Понятно, что Defcon - самая крупная конференция, самая старая, самая первая. И там тоже есть свои подходы к CTF. Преобладает «бинарщина», реверс, что-то еще. А вот web’а будет очень мало, в отличие от наших CTF. Лично я там не был, но смотрел на опыт коллег. В т. ч. Влада [Роскова].
В Азии явный уклон в «бинарщину» и поиска уязвимостей «нулевого дня» – они только с этим и работают. И еще важно, что там [в зарубежке] есть спонсорство, у нас – почти нет. Что можно заработать на CTF? Вот на PHDays можно заработать 200–300 тысяч рублей на команду. Это, наверное, в России самые большие призовые. Выше нет. Не супер много, но, в целом, все и участвуют чисто из баловства и из-за престижа. И теперь смотрим на зарубежные CTF: Real World CTF, Defcon, Pwn2Own или что-то еще – сотни тысяч долларов. Это, конечно, другой уровень. Поэтому российские – это, по большей части, студенческие сообщества. Сейчас очень мало команд, которые во взрослом возрасте системно играют. За рубежом, когда мы ездили, сидят дядьки играют в турниры. Их немало. Это показательно.
При выборе CTF имеет смысл обращать внимание на команду-организатора. Поскольку именно от них зависит сложность задач и комфорт проведения CTF.
Егор: Одними из лучших создателей топовых CTF были ребята из команды HackerDom. Это не сильно известная команда (т. е. ее знают только те, кто в «теме»), которая делала раньше игры под white-label для тех же PHDays. У них были хорошие Attack-Defense, сложные форматы. Есть команды – именно турнирные организаторы, - которые вырастили большое число CTF’еров, например SPBCTF, и прямо сейчас уже даже предоставляют свои услуги для других. Они, может быть, не про получение профессиональных навыков, они «бьют в соревновательность»: кто сильнее, кто эрудированнее. Есть Volga, но, мне кажется, в последнее время качество у них упало, задачи все сырее и сырее. Есть команда OFFZONE, но она новая. Предыдущий состав был сильный, какой будет сейчас – не знаю.
Есть организаторы-«антиподы» - мероприятия, которые в турнирном сообществе считаются «лажей». Уровень задач там может быть нормальным, но всех «вымораживает» организация. Это, например, команда АРСИБа (Кубок CTF) - там могут быть таски более-менее, но организация поражает своей абсурдностью: обязаловка - чтобы начать играть, нужно прийти отсидеть «лекции». То есть без них, ты не можешь начать играть. Короче говоря, не полезностью берет реальной, а «мы вас заставим эту пользу почувствовать».
Есть курьезные истории о том, как создаются эти CTF’ы и как вознаграждаются. Т. е. их стоимость может превышать миллион рубелей, а делают их студенты и школьники, которые за свою работу в конце получают бутылку шампанского. Надеюсь, сейчас что-то изменилось, появились ценности какие-то.
Есть команды, которые, как Bad Comedian [популярный саркастичный обозреватель российских фильмов], обозревают мероприятия АРСИБа. Я с удовольствием читаю таких «Bad Comedian»’ов, а сам, к сожалению, в таких соревнования поучаствовать не могу.
Если смотреть глобально на российский рынок, главное – [чтобы продолжалась] популяризация: чтобы появлялись новые команды, новые участники и так далее. Чем больше будет выбор, тем лучше.
Есть ли смысл разобрать задачи прошлых CTF перед тем, как попробовать участвовать? Сохраняются ли тематики прошлых CTF? Повторяются ли задачи?
Егор: Тематики точно сохраняются. Правда, таски PHDays 2014 года сейчас могут появляться на каких-то начальных университетских CTF’ах. В серьезных CTF такого уже не будет, за этим следят. Если отвечать на вопрос, стоит ли по write-up’ам учиться решать CTFы, есть такой подход, но я считаю, что он не стоит того, чтобы им заниматься. Чтобы научиться решать CTF, нужно решать CTF. Чтобы изучить новые таски из новой сферы и впитать их, читать их надо тоннами, во что я не очень верю, если ты не вундеркинд. Что касается навыков, то мы уже участвуем в CTF именно из фана, не из-за заработка. Получаемые навыки, хоть и касаются профессиональных, но пересекаются с ними процентов на 20. Все остальное – это техническая эрудиция, которая, да, полезна, но может никогда не пригодиться. Если хочешь стать профессионалом, то надо садиться решать профессиональные задачи.
Константин: Мне кажется, что это в целом крутая особенность именно формата CTF, что команды и иногда организаторы публикуют write-up’ы. Не знаю, насколько это полезно для новичков, но когда ты уже прошел CTF, у тебя что-то не получилось, и ты с этим застрял, то вот потом полезно найти такой write-up и разобраться. С точки зрения обучения – полезно. Есть такой ресурс у питерских ребят SPbCTF, они проводят обучающие мероприятия, видео выкладывают, для себя игры проводят. У HackerDom с Урала есть своя мини-академия, свой ресурс. Там можно почитать какую-то базовую информацию.
Для примера можно посмотреть задания CTF Positive Technologies 2014 года c разбором и ответами, данный CTF считается сложным и старым. Если хочется полегче и более актуальные темы, Егор Богомолов советует посмотреть разбор CTFов 2022 года на CTFtime.org.
![](https://habrastorage.org/getpro/habr/upload_files/742/aad/7db/742aad7db91ae25daea6376cb478e215.jpg)
В том же разборе задач PHDays 2014 года по ходу чтения понимаешь, что для решения нужно знать, например, дискретную математику или другие далеко не базовые концепции, или приходится экстренно гуглить. Насколько широкий кругозор необходим? К примеру, есть разработчик, обладающий базовыми навыками для своей работы – вряд ли там есть дискретная математика. Доступно ли для него участие в CTF? Или все решается скоростью поиска?
Егор: Подготовка 100% решает. Знаешь, в чем фишка? Когда мы говорим про какие-то сильные когнитивные способности людей, играющих в CTF (Омар Beched, Эмиль Лернер, Павел Топорков, Иннокентий Сенновский), мы понимаем, что это - крутые ребята, которые играют в CTF и решают свои задачи мощно. Это выдающиеся спецы российские. Они все – люди, которые заканчивали математические университеты. Beched учился на матфаке НИУ ВШЭ, где занимался только математикой. Или Эмиль, у которого отец – математик, и он – тоже, МГУшник. То есть это все люди, у которых очень высокий «проходной балл». Уже отсеянные, они доросли, закончили серьезное учебное заведение, получили серьезное фундаментальное образование, они, конечно же, переприменяют его.
То есть в попытке решить задачу или построить алгоритм решения это 100% помогает. Сильные CTF’еры 100% хороши в фундаментальных областях. Но есть и обратные ситуации, их немало. Когда очень крутые webеры очень далеки от математики. Люди с хорошим фундаментальным образованием часто хороши в CTFпотому, что они просто умные люди, у них сильные когнитивные способности. Но это не обязательное правило. Просто некоторая корреляция. Но мы говорим о чем? О том, чтобы побежать в CTF’ах в мире или просто наслаждаться CTF’ом? Если мы говорим о том, чтобы наслаждаться и учиться, какие-то навыки приобретать, то можно решать хоть школьные или детские CTF. То есть вопрос - в скорости относительно тебя самого, а не относительно других команд.
Константин: Я бы сказал, что для участия нужны базовые знания уязвимостей и смежный опыт может быть полезен. Необязательно быть безопасником, чтобы поучаствовать первый раз. Достаточно быть разработчиком, который интересуется безопасностью, чтобы с первого раза что-то получилось. Опять же, если речь идет о начальном уровне CTF. Если это какой-нибудь хардкор, то вряд ли. Потому, что ты не понимаешь, что искать. Тот же флаг – изначально нечто непонятное. Мы в работе даем задания на синтетическом приложении, не на живом, настоящем. И, когда обучающиеся слышат, что надо найти какую-то строку, для них она выглядит необычно. В самом CTF – это уже классика жанра. Плюс, есть разные категории. Например, ты можешь заняться web’ом, можешь заняться мобилками, криптой, сетевым дампом, трафиком, у тебя может быть блютус, клавиатура, с которых можно снять дамп, извлечь пароль, так и получается матрешка. Заходишь по этим данным куда-то, находишь там еще уязвимость и так далее.
Если вы рассматриваете CTF в качестве инструмента заработка, то лучше посмотрите на зарубежные bug-bounty программы.
В рамках CTF бывают всевозможные награды. Какие прикольные награды тебе попадались, что «зашло»?
Егор: У меня не то чтобы супер-много побед, но прикольные вещи – это, как правильно, технические вещи, которые пригождаются. Была такая волна, когда дарили пентестерские Hack-toolы, HackRF, Альфы. Я выиграл Oculus. Дня три побаловался, потом отложил – лежат пылятся. Есть всякие футболки, рюкзаки, и люди внутри комьюнити их занашивают потому, что прикольно, что есть отметка о прохождении или о победе в таком-то турнире. Исключительность. Эти шильдики вкуснее всего. История. Если бы в том же PHDays были залы славы участников или именной/не именной мерч, то такое вызывало бы еще больше радости у людей. Вот пример, раздают рюкзаки с мерчем. Все борются не за мерч внутри них, а за рюкзаки. Поэтому на все крутых индустриальных турнирах все люди хотят рюкзак с шильдиком. Думаю, у каждого есть связка бейджиков с конференций, висит пылится, но она есть.
Константин: Мы за наш CTF дарили массажеры для глаз, клевые нашивки и прочий меч. Обычно за топовые места получаешь всякие девайсы, а вот на одном из CTF я выиграл носки - греют теперь душу и ноги. Чтобы получить денежный выигрыш, нужно попасть в топ, а значит, нужна команда и время. В целом, достаточно шильдиков.
Влад: В 2019 году мы выиграли CTF с пока что самым большим призом в мире (Real World CTF 2019) — получили $100 000 на команду.
Были ли такие моменты, что вы хотели «завязать» с CTF? Почему? Насколько вяжется участие в CTFс наличием личной жизни?
Омар: Нет, скорее вынужденно участвую гораздо меньше, чем раньше, потому что мало времени, но никогда не было, чтоб мне перестало нравиться участвовать в CTF.
Влад: Когда я устроился на постоянную работу, я заметил, что на рубание в CTF не остаётся сил. Это опасно: работа прокачивает в одной области, а скиллы в остальных областях атрофируются и устаревают. К счастью, у меня тогда получилось наладить «Work–CTF balance» и продолжать участвовать с командой в международных CTF’ках. В этом году большую часть моего времени занимает организация соревнований, поэтому сил на то, чтобы рубать, снова мало. Надеюсь, когда-нибудь получится сбалансировать и это, я очень скучаю по драйвовым выездным зарубам бок о бок с нашими крутанами.
Егор: Так, чтобы завязать из-за какого-то события, не было. Обычно все уходят в свои дела, в работу. Так сказать, AFK. Но хотя бы раз в год к этому возвращаться крайне вдохновляюще. Особенно весело, если делать это в хорошей компании.
Насколько сложно вернуться в игру, когда делаешь перерыв?
Егор: Если мы говорим про турнирный серьезный соревновательный опыт, то шанс, конечно, мал. Если хотим первое место получить. А если просто решить что-нибудь - вообще не проблема. Есть много разных соревнований с разным уровнем задач. Я тоже грежу тем, что вот скоро что-то делегирую, и у меня будет свободное время, выходные, и я буду решать какие-то баловские задачки и наращивать навык, потому что это как хобби - бывает интереснее работы. Думаю, все понимают: если хочешь наслаждаться делом – не превращай его в работу. У нас были такие предложения, думаю, и у Омара тоже, вроде: «Давайте вы будете играть в CTF за деньги. Мы будем платить вам зарплату, а вы будете играть». Для блогов, PR. И в таких ситуациях удовольствие ты уже получать не будешь.
Расскажите о бизнесе, чем вы занимаетесь сейчас?
Омар: У меня две компании: DeteAct, которая оказывает услуги по редтиму [Red teaming], пентесту, аппсеку, работает на рынках России, Европы, США, и вторая, которая основана в ОАЭ и работает на глобальном рынке web3-безопасности: мы делаем аудиты смарт-контрактов и децентрализованных приложений.
Влад: Когда у нас накопилось много лет организации крутых соревнований и митапов, компании начали звать наше сообщество SPbCTF проводить внутренние CTF’ы для сотрудников. В таких CTF’ках удачно переплетаются три достоинства. Во-первых, это образовательный евент, где можно подтолкнуть разработчиков посмотреть на код под углом безопасности и возможного ущерба от дефектов, показать конкретные примеры и дать им это потрогать самим на практике. Во-вторых, это небольшой «хайринг-евент», который помогает компании выделить самых склонных к инфосеку коллег, чтобы попытаться вырастить из них секьюрити-чемпионов или позвать в отдел безопасности. В-третьих, это фан и тимбилдинг: сотрудники попадают в дружеское соревнование, где можно драйвово посидеть с командой коллег над сложными и непривычными задачами, укрепив взаимодействие друг с другом, и перенести полученный опыт в работу. Мы любим делать такие евенты.
Егор: Сейчас я - совладелец двух молодых компаний из сферы кибербезопасности: CyberEd и Singleton Security. В них же я работаю генеральным директором. Т. е. отвечаю и за стратегию, и за операционную деятельность, и за команду, и за продукты. Радует то, что команда растёт, и постепенно я делаю только самое полезное от себя. Ну и сейчас не может не радовать всплеск интереса к нашей отрасли. Глобальная переоценка важности инвестиций в кибербезопасность. Singleton Security оказывает услуги и предлагает решения из сферы кибербезопасности: оценка защищённости, безопасная разработка, криминалистика, мониторинг угроз. CyberEd -образовательная компания из той же сферы. Там мы готовим профессионалов, будущих участников и лидеров рынка кибербеза: хакеров, криминалистов, appsec'ов.
![](https://habrastorage.org/getpro/habr/upload_files/e30/12c/e3b/e3012ce3bdab06f572f1813d7b6b5858.jpg)
Что бы вы посоветовали специалисту, который только начал свой путь «белой шляпы», обожает сложные задачи и головоломки, но безумно боится ошибиться?
Влад: Не знаю, существует ли такая проблема в реальности, но можно пофантазировать. Если такой человек боится, что у него что-то не получится, стоит помнить две вещи: во-первых, всем наплевать, никто не будет вас оценивать, каждый думает о своём прогрессе, а не о вашем. Во-вторых, регулярно рубая в CTF, вы будете замечать, как растёте над собой и получаете новые навыки, а ваше положение в скорбордах потихоньку двигается вверх — это вы становитесь более ценным на рынке.
Если же человек боится, что потратит время, выбрав именно CTF, то стоит примериться к чужому опыту. На мой взгляд, CTF’ки — это самый эффективный и быстрый способ вырасти в крайне многостороннего безопасника с навыками креативного решения задач. Если же человек выбрал для себя прокачиваться в каком-то одном направлении безопасности, CTF не будет самым эффективным методом, лучше как можно скорее найти работу в выбранной области.
У нас есть подборка наших и чужих материалов для тех, кто начинает свой путь в инфосеке и подумывает рубать в CTF’ки: https://vk.com/@spbctf-ctf-for-beginners — она поможет целенаправленно получить базовые навыки, чтобы потом с ними начать играть во всё подряд на CTFtime и прокачиваться в крутого специалиста.
Омар: Думаю, что правильно найти подходящие по уровню соревнования, где удастся как минимум что-нибудь решить, а как максимум — войти в топ или выиграть. Найдите команду энтузиастов-единомышленников, с которыми будете неустанно качаться и участвовать в как можно большем количестве соревнований. Конечно, всё, что не 1-е место — это поражение, но это не означает, что нужно бояться. Успехи в соревнованиях для новичков позволят обрести уверенность и положительную обратную связь, чтобы не переживать по поводу поражений в более взрослых CTF. Ну и, в конце концов, CTF — это лишь игра, которая не должна быть самоцелью. Целью является совершенствование навыков и конвертация их в успехи в работе и в исследованиях. CTF - это просто очень интересный и захватывающий способ это сделать, заодно проявив себя.
Егор: Я бы посоветовал искать вдохновляющее окружение. Людей, с кем можно разделить и подпитать интерес. Но, возможно даже в первую очередь, рекомендовал бы искать как можно больше сложных задач, не сдаваться и постоянно практиковаться.
Константин: Все зависит от ситуации. Если это разработчик в компании, которая пилит» свой софт, то он может в работе практиковаться – то, что разрабатывает, автоматически проверять на уязвимости. У него больше возможностей, так как он имеет дело не с классическим «black box», который доступен внешним исследователям (на Bug Bounty или пентесте), а знает код, знает архитектуру приложения и может комбинировать подходящие практики. У него получается «grey box». В целом именно это делает Appsec в любой компании. В некоторых компаниях, например, Тинькофф, есть внутренняя Bug Bounty со своими правилами и залом славы, разумеется. С точки зрения удовлетворения начального интереса, я бы порекомендовал сходить на какую-нибудь конфу: ZeroNights, либо OFFZONE, может быть, и на PHDays, где есть StandOff’ы, и можно не только поучаствовать, но и с интересом понаблюдать за тем, как ребята рубятся. И найти единомышленников и качать свои скиллы.
Для супер новичков советую picoCTF - 2-х дневная игру, где у тебя есть персонаж и им нужно передвигаться от точки к точке, от задания к заданию, CSAW - интересный американский CTF, задания классные, asisCTF – иранский CTF. Если «хардкор», то Hack.lu. Из Attack-Defense – RuCTFE. Там есть возможность поучаствовать участнику любого уровня. И HacktheBox. [Константин Крючков]
Попробовать свои силы можно на платформе Root Me. Это ресурс, где вы можете потестировать свои навыки индивидуально без участия в соревнованиях (для тех, кто избегает публичности). Еще можно пройти Курс молодого бойца – довольно полезный ресурс для начинающего CTF’ера.
Стоить добавить, что CTF бывают выдуманные, синтетические, головоломки ради головоломки, а есть и кейсы по реальным событиям. Последние, разумеется, куда более ценные.
Краткая справка по топ-5 CTF по рейтингу CTFTime
CTF | Рейтинг | Формат | Особенности и комменты от команд хакеров | Ссылка на write-up 2022 | Даты 2023 |
100,00 | Jeopardy | Организаторы - представители одноименной команды, которая побеждала на Def Con. | Нет данных. | 14 Апрель, 21:00 UTC — 16 Апрель 2023, 21:00 UTC | |
100,00 | Jeopardy | Организуется с 2016 года. CTF состоялся в марте, и мы ждем волны write-up'ов от участников. Мероприятие ежегодное и высоко ценится в индустрии. | 10 Март, 16:00 UTC — 12 Март 2023, 16:00 UTC | ||
99,74 | Jeopardy | Уклон в реверс-инжиниринг, memory corruption, криптографию, web, и пр. | Нет данных. | 23 Июнь, 18:00 UTC — 25 Июнь 2023, 18:00 UTC | |
96,33 | Attack-Defense | Самый старый CTF, берет свое начало в 1996г. Для участия необходимо пройти Def Con Qualifiers, который состоится 28–29 мая 2023. Участники DEFCON CTF сражаются не за сертификаты или материальные призы, а за уважение и признание сообщества. Попасть в финал – самая большая награда для специалиста по информационной безопасности. На отборочных соревнованиях командам предлагается решить 25–30 заданий из различных областей IТ, и только десятка лучших команд проходит в финал. Уклон в "бинарщину". | https://github.com/nobodyisnobody/write-ups/tree/main/DEFCON.CTF.30.Finals.2022/binaries/ | Qualifier: 27 Май, 00:00 UTC — 29 Май 2023, 00:00 UTC | |
94,73 | Jeopardy | К сожалению, в сети на данный момент очень мало информации об особенностях CTF 2023. В прошлые годы по записям участников были задания на уязвимости аутентификации, бинарщину. Само соревнование проводит немецкая команда организаторов. | Нет данных. | 13 Окт., 18:00 UTC — 15 Окт. 2023, 18:00 UTC |
С полным списком CTF с указанием рейтингов по методологии CTF Time вы можете ознакомиться тут: CTF list consolidated by Swordfish Security
Заключение
CTF – это вызов, это игра и формат, который затягивает, и при участии в подобных мероприятиях, как и при занятии спортом, через некоторое время человеческий мозг запускает выработку серотонина, что только стимулирует развитие навыков и, как следствие, компетенции участвующих «белых шляп». Они прокачиваются не только в области поиска и эксплуатации уязвимостей, но и в навыках работы в команде, организации процессов, управлении ресурсами, тайм-менеджменте, приобретают полезные связи, расширяют кругозор, смотрят на проблему «сверху», отчего она становится обыкновенной задачей. Многие регулярные участники CTF смогли применить полученные навыки в жизни, открыв себе новые пути и начали собственное дело. Можно даже бизнес организовать на этих соревнованиях, предлагая участникам реальные кейсы из практики и обучая. По нашему опыту скажем, что это один из лучших форматов для комфортного вовлечения разработчиков в культуру DevSecOps.
Ну что, уже ищете дату ближайшего CTF?
![](https://habrastorage.org/getpro/habr/upload_files/190/07c/2b3/19007c2b341657f19fe278a5d04152e1.jpg)