Мероприятие прошло при содействии Самарского государственного университета, департамента информационных технологий и связи Самарской области, а также компаний «Компьютерные технологии» и «Ростелеком Солар». В отборочном онлайн-этапе участвовали 504 команды со всего мира, а в финале сразились 15 российских и восемь иностранных команд — каждая из них представляла тот или иной вуз. От Университета ИТМО поехали четыре команды — три из них заняли места в первой десятке, а команда «More Smoked Leet Chicken» одержала победу с двукратным преимуществом.
Корреспондент ITMO.NEWS поговорил с капитаном команды MSLC Владом Росковым — наставником сообщества SPbCTF и сотрудником Лаборатории Касперского, — и двумя участниками команды: Анатолием Корнильцевым и Ильей Глебовым о том, насколько сложными были задания, какая тактика помогла им выиграть и насколько в таких соревнованиях важна удача.
Про организацию и уровень соперников
В VolgaCTF мы участвуем второй раз, в прошлом году мы также стали победителями — тогда мы выступали под названием LC↯BC. Так как это фактически университетское мероприятие, все команды должны были иметь в составе студентов того или иного вуза — но это не значит, что команды были на 100% студенческие. Наша команда формировалась так: мы взяли людей из основного состава MSLC, а на студенческие места пригласили участников сообщества SPbCTF — тех, которые уже сами стали наставниками и тренируют следующее поколение новичков. При этом две другие участвовавшие команды, представлявшие факультет безопасности информационных технологий ИТМО, — «Kappa» и «fargate» — тоже выросли из SPbCTF.
Несмотря на то, что это было студенческое соревнование, противостояние было на уровне. Наши соперники «Bushwhackers» из МГУ, «Corrupted Lights» из Московского физико-технического института — одни из сильнейших игроков, стандартно занимающие призовые места на российских и международных соревнованиях. VolgaCTF собрал команды со всего мира: из Германии, Италии, Австрии, Тайваня и так далее. Провести очное международное соревнование мало кто из организаторов может себе позволить, особенно если они не связаны с крупными компаниями или отраслевыми конференциями.
Согласно рейтингу агрегатора соревнований CTFtime.org, на международном уровне вес этого соревнования средний. Но учитывая, что за весь 2020 это пока что была наша единственная поездка — по понятным причинам, VolgaCTF — лучшее выездное соревнование в году :)
Про необычные задания, тактическую хитрость и долю везения
Финал VolgaCTF проходил по правилам Attack-Defense: участники должны были искать уязвимости в специально подготовленных сетевых сервисах и пользоваться ими для проникновения на серверы соперников, одновременно защищаясь от чужих атак.
В некоторых сервисах использовался необычный стек технологий: например, один из сервисов был написан на Node.js, а внутри него использовался компонент в виде бинарника WebAssembly — это достаточно свежая технология, которая позволяет из кода, написанного на JavaScript, вызывать оптимизированный и быстрый скомпилированный модуль. Однако для WebAssembly еще не разработаны удобные инструменты для реверсинга и отладки — поэтому искать уязвимости в таком модуле было сложно, интересно, и было весьма необычно встретить сервис на WASM в CTF.
Мы потратили очень много времени на этот сервис — и сделали его частью нашей тактики. Обычно команды находят какую-то уязвимость — она присутствует на серверах всех команд — и начинают через нее атаковать всех соперников.
Понятно, что когда оппоненты видят, как именно их атакуют, они быстро находят брешь и закрывают ее. Заодно они начинают разбираться, как через эту же обнаруженную уязвимость взломать всех остальных. Мы же занялись тем, чтобы эту уязвимость, наоборот, залатать у всех соперников, — чтобы запутать другие команды, но при этом оставить лазейку для себя.
Ход был весьма рискованным, потому что за то время, пока мы готовили эту хитрость, кто-то другой мог найти и начать использовать ту же уязвимость. Собственно, постфактум нам рассказали, что мы успели закрыть уязвимость буквально за минуту до того, как другая команда начала атаку на нее. Нам очень повезло — но формат Attack-Defense в принципе предполагает большую долю везения.
Про команду
Команда у нас большая — в общем чате More Smoked Leet Chicken, к примеру, состоит 65 человек, но собираются, чтобы поиграть, наверное, в среднем человек восемь на игру. Влад начинал играть в команде «Leet More» в ИТМО в 2009 году (когда она и возникла), а уже в 2010 ребята стали одной из лучших команд России. В 2011 мы объединились с ребятами из Челябинска — «Smoked Chicken» — и стали выступать под нынешним названием «More Smoked Leet Chicken». В 2012 году заняли первую строчку по итогам года уже в мировом рейтинге.
Позже, в 2016 году, когда стартовал проект SPbCTF, нас пригласили тренировать новое поколение ребят. К нам стали добавляться новые люди, которым было интересно сыграть в составе крутой и мощной команды.
В 2016 мы объединились с командой МИФИ «BalalaikaCr3w» — так мы стали LC↯BC — и под этим названием выступали до нынешнего года.
Помимо Ильи и Анатолия, в Самару с нами ездили участники из основного состава команды: Егор Зайцев — один из наставников сообщества SPbCTF, специалист по реверс-инжинирингу и бинарным уязвимостям — и Павел Топорков — он специалист по уязвимостям сайтов и раньше работал в Лаборатории Касперского.
Про то, зачем ездить на CTF-соревнования
Вряд ли соревнования могут надоесть — это же азарт, драйв, адреналин, как и в любом спорте. Задания никогда не повторяются, ведь отрасль кибербезопасности очень обширная и охватывает множество нестандартных подходов в любых областях IT. Организаторы всегда придумывают что-то такое, чего еще никогда нигде не было, что интересно разгадать, решить, понять. К тому же, IT стремительно развивается, постоянно появляются новые технологии — и сложность задач тоже растет.
CTF тем и хорош, что это тренировка именно на тех атаках, которые «в моде» сейчас. Говорят, что эти соревнования нужны только студентам, — и это большое заблуждение. На самом деле, работая безопасником, постоянно находишься лишь в одной узкой сфере и как будто закостеневаешь в рамках своих повседневных задач. Скиллы, которые не используются непосредственно на работе, начинают ослабевать, а ты сам становишься менее ценным как специалист. А соревнования заставляют держать руку на пульсе, быть в курсе всего, что происходит в сфере и поддерживать актуальность своих навыков.
Дальнейшие планы
Планировать что-то сложно, учитывая ситуацию с пандемией. Например, RuCTF — то, во что обычно играют русские студенческие команды, — в этом году отменили. В прошлые выходные мы участвовали в соревновании 0CTF/TCTF — их организует крупная китайская IT-корпорация Tencent. Заняли первое место, выиграли 20 тысяч долларов и снова стали лучшими в мировом рейтинге, обогнав по количеству баллов американцев «perfect blue».
В воскресенье, 4 октября запускаем новый сезон наших тренировок в SPbCTF на площадке факультета БИТ, он будет посвящен бинарным уязвимостям и написанию эксплоитов. Эта категория заданий считается самой сложной, элитной и почетной в CTF. Чтобы в ней преуспеть, нужно глубоко разбираться в том, как работает скомпилированный код, как устроена память процессов, выполняющихся на компьютере, и уметь филигранно манипулировать данными в этой памяти, чтобы захватить процесс. Плоды этого направления безопасности вы используете, когда джейлбрейкаете свой iPhone или рутаете Android — или когда вас заражает вирусом, просто потому что вы открыли вредоносный документ.
Мы постараемся сделать так, чтобы новички тоже могли освоить азы бинарных уязвимостей, и чтобы эта область перестала быть неприступной крепостью для начинающих специалистов.