В конце апреля российская команда хакеров LC↯BC заняла первое место в финале международного турнира по компьютерной безопасности 0CTF в Шанхае. Журналистка «Медузы» Екатерина Кронгауз поговорила с участником команды Максимом Морозом о том, что это за соревнования, законны ли они — и какие задачи приходится решать соперничающим хакерам.
— Расскажите, что это вообще за соревнования?
— Они называются Capture the Flag — гонка за флагом, и смысл соревнований — в решении задач. Ответ к каждой задаче — это какая-то строка заданного формата, в ней только цифры и несколько букв. Собственно, этот ответ и есть «флаг».
Есть два формата проведения соревнований. Первый: все команды получают одинаковый набор заданий, это похоже на олимпиаду. У этих заданий есть один ответ, иногда его можно получить несколькими способами. Такой формат называется Jeopardy, это как «Своя игра».
Второй формат — Attack-Defense, где каждая команда получает сервер или несколько серверов в свое пользование, на которые установлены какие-то сервисы — веб-сайты, почта, какие-то другие сервисы, не самые понятные для обычного человека. Задача каждой команды — исследовать сервисы, находить в них уязвимости, исправлять их на своем сервисе и атаковать через них сервера соперников. За каждую успешную атаку команды получают секретную информацию, которая опять же является «флагом».
В Jeopardy все просто соревнуются за общий счет — кто больше нарешает, а в Attack-Defense — это война: нужно себя защищать, других атаковать; кто это делает быстрее, грамотнее, тот в итоге получает больше очков.
— Почему конкурс называется 0CTF?
— Этот конкретный 0CTF организован китайской командой 0ops — она так называется, начиная с нолика, поэтому, видимо, они решили включить нолик туда. Может быть, там и другой смысл: в мире информационной безопасности есть такое понятие, как 0-day — это уязвимость, которая еще никому неизвестна. Есть готовый продукт, все им пользуются, и тут раз — кто-то находит уязвимость. Она называется 0-day.
— Кто организует эти соревнования?
— Обычно самые крупные соревнования проходят в рамках конференций по безопасности — соответственно, финансирование идет за счет конференций. У конференций есть спонсоры, они билеты продают посетителям — часть из этих денег идет на организацию соревнований. Иногда крупные команды организуют. В таком случае они, как правило, ищут спонсоров, чтобы арендовать сервера и как-то вообще вложиться в подготовку. Или они могут быть командой какой-то компании, института, университета. Тогда при поддержке учреждения тоже могут быть организованы соревнования.
— Сколько команд участвуют?
— В отборочных турах — 874. Это Jeopardy, и в нем все участвуют из своих стран; Attack-Defense обычно используется на финалах, уже на очных, потому что его труднее готовить, нужна инфраструктура, общая сеть.
— Сколько было в финале команд?
— В финале — 12.
— Откуда они берутся, кто вы такие?
— Команды, как правило, как-то появляются в интернете. Я думаю, что большинство людей внутри команды находят друг друга в реальной жизни — с кем-то учатся вместе, работают, просто общаются.
— А кто вы?
— Я по образованию инженер по информационной безопасности, у меня специальность по защите информации. Я работаю в Google, в Германии сейчас. То есть я с института этой темой интересовался, знал, что такие соревнования есть — и, собственно, я уговорил ребят, которые со мной учились, и несколько человек с работы [участвовать в соревнованиях]. Так у нас появилась команда BalalaikaCr3w. А потом мы объединились со старой известной командой More Smoked Leet Chicken и получилось LC↯BC.
Российская команда LC↯BC
— На соревнования приезжают хантеры крупных IT-компаний?
— Хантеры приезжают. Часто после соревнований подходят люди и дают какие-то визитки или просят оставить им свои контакты. Конечно, никого не берут на работу только за его успехи в соревнованиях, это решается на собеседованиях, но обратить на себя внимание или добавить пару строчек в резюме соревнования, безусловно, помогают.
На тему того, насколько сами по себе соревнования связаны с реальной работой, много спорят. Я бы сказал, что соревнования однозначно идут на пользу. Во-первых, они в любом случае развивают кругозор и помогают улучшать различные технические навыки — программирования, анализа программ, знания криптографии. А во-вторых, такие соревнования — это всегда очень интенсивный процесс, в ходе которого приходится узнавать много нового. Плюс ко всему, от участников требуется высокая скорость реакции и обучения, что, в общем-то, тоже оказывает положительное влияние на работу и другие умственные активности.
— Как физически выглядят отборочные туры?
— Как правило, они длятся 48 часов, иногда бывает меньше, редко больше.
— Вы сидите за компьютером и быстро стучите по клавиатуре?
— Ну, если посмотреть со стороны, то как-то так оно и выглядит. Правда, по клавиатуре стучат не всегда — большую часть времени мы молча смотрим в монитор и анализируем информацию, которую там видим, а потом уже стучим по клавиатуре, чтобы написать программу для решения.
— А финал сколько идет?
— Финал обычно длится два дня.
— То есть вы не спите?
— Мы приходим утром в первый день, нам дают оборудование, полчаса или час на настройку, чтобы мы разобрались и подключились, открывается сеть между командами — и мы начинаем наше мочилово. Это длится часов десять, потом сеть закрывают, заставляют всех остановиться, пойти поужинать и отдохнуть в отеле. И из отеля мы как бы не можем ломать другие команды. Но мы можем взять эти сервисы с собой и ночью продолжить в них искать и исправлять уязвимости. Собственно, так это и происходит.
— А оборудование — это что?
— Ну, оборудование чаще всего — это просто сетевой провод или сетевые платы, чтобы подключиться. Но иногда дают какие-то устройства на новых архитектурах, которые используются не в настольных компьютерах, — схожие с тем, что в мобильных телефонах. Там другие процессоры, там немножко все по-другому работает, и это усложняет задание. Потому что для настольных компьютеров очень много инструментов, и это знания, доступные более широкому кругу специалистов, а когда что-то новенькое дают, это всегда интересно. Но трудно.
— То есть иногда вы даже в первый раз сталкиваетесь с каким-то устройством?
— Да. Вот, например, в 2014 году в финале DEF CON CTF всем командам раздали на второй день бейджи — не бумажные бейджи, а на плате. На них есть экранчик с парой кнопок — то есть это такие портативные маленькие компьютеры. Прикол в том, что они с радиодатчиками и между собой пересылают сигнал другим командам плюс компьютеру организаторов. И получается, что вместо обычной сети, как мы привыкли, вся информация ходит по воздуху, по радиоканалу. Это уже совсем другой уровень задачи — нужно понять, какая архитектура в самом этом устройстве, какой там протокол, как мы можем исправить ход его мыслей или можно просто по воздуху какими-то другими устройствами этот сигнал перехватывать, перекодировать.
Открытие турнира по компьютерной безопасности CTF на DEF CON в Лас-Вегасе
Фото: Nate Grigg / Flickr (CC BY 2.0)
— Какие задания были на финале в этом году?
— На финале 0CTF было всего 6 сервисов: на операционной системе Linux, один был на Windows, еще один — на архитектуре CGC. Это расшифровывается как CyberGrandChallenge — архитектура, придуманная специально для соревнований, автоматизированных систем по поиску и устранению уязвимостей. Американское агентство DARPA проводит уже не первый год конкурс — он, собственно, и называется CyberGrandChallenge. Его участники должны разработать системы, которые делают все это автоматически. То, что мы приезжаем и делаем руками, они делают автоматически, но в упрощенной среде — она как раз называется CGC-архитектура. Это такой очень урезанный Linux. Там мы не должны были напрямую ломать соперников, каждой команде нужно было написать свою программу, потом в компьютере организаторов их одновременно загружают в память — и там уже нужно было бороться друг с другом. То есть цель каждой из команд — остаться единственной работающей программой в памяти.
— Что делает программа?
— В прикладном смысле — она не делает ничего, а ее основная задача — искать другие программы в памяти и каким-то образом их ломать, чтобы они прекратили свою работу.
— То есть вы не знаете, что делают они, но ваша задача сделать нечто, что победит всех остальных?
— В общем, да. У нас одинаковые условия, у нас 500 килобайт памяти на всех. Чем больше наша программа, тем ее легче найти, чем она меньше, тем ее труднее найти. Грубо я бы назвал это войной вирусов и антивирусов.
— То есть ваша программа в итоге сломала всех?
— Там были раунды, но да, наша была успешной. Мы самыми первыми смогли, так сказать, уничтожить [остальные программы] и на протяжении следующих раундов чаще других в этом сервисе выигрывали.
— Это законно вообще?
— Да, это законно. Мы не делаем ничего плохого, поэтому я и говорю, что прикладного смысла тут нет никакого. Это все-таки интеллектуальное соревнование, а не битва преступников.
— А среди тех, кто участвует в этих соревнованиях, есть люди, которые занимаются чем-то незаконным?
— Я думаю, что нет, потому что все-таки им приходится ездить в разные страны. Тем более, что там собираются люди, которых знают в кругах информационной безопасности. Если там появится кто-то, кто знаменит плохими делами, для него это не очень хорошо кончится. Таких персонажей я не встречал вживую, не думаю, что они будут приезжать.
— Что вы получаете как победители?
— В данном случае мы получили денежный приз в размере 40 тысяч юаней — это чуть больше 6 тысяч долларов. Мы вышли в самый престижный финал, который называется DEF CON CTF, — он пройдет в августе в Лас-Вегасе. На него команды отбираются в течение года. Если сравнивать со спортом, то мы выиграли такой этап Кубка мира, а в августе — Лига чемпионов.
— Вы можете взломать все, что угодно? Вы проверяете любой сайт, на который заходите?
— Нет. Во-первых, это незаконно, а во-вторых, чаще всего неинтересно.