Артём, как давно ты занимаешься информационной безопасностью?
Чуть больше полугода. До этого я активно занимался в школе информатикой. По сути, это и дало толчок к тому, чтобы дальше углубиться в тему кибербезопасности и средств защиты. Кроме того, образ хакера очень популярен: есть много фильмов или сериалов, где показывают хакеров. Я подозревал, что в большинстве случаев все не так, как подается на экране, интересно было понять, как все устроено на самом деле.
И наконец, еще одна причина, почему я увлекся инфобезом, а не, скажем, программированием: большинство олимпиад по программированию ориентированы на заучивание алгоритмов. Это, по сути, сплошная математика, а самого искусства кода там нет. Кибербезопасность, в свою очередь, дает возможность думать нестандартно, потому что готовых решений для любого таска не существует. Ты должен самостоятельно проанализировать ситуацию и только тогда сможешь достичь результата.
Юра, сейчас ты в седьмом классе. Когда ты впервые услышал об инфобезе и почему тебя привлекла именно эта сфера?
Уже не помню, когда я первый раз узнал о хакерах. Кажется, в шесть лет. В семь я захотел стать программистом и только в девять начал программировать. Затем я также заинтересовался информационной безопасностью, а в 12 начал заниматься ей уже намного активнее. Не стал бы противопоставлять эти две сферы: в информационной безопасности ведь тоже нужно заниматься программированием.
На первых порах занимались самостоятельно или кто-то помогал?
Артем: Изначально я нигде не занимался, все изучал с нуля самостоятельно. Сначала в группе Балтийского инженерного конкурса наткнулся на NordSchoolCTF, а затем готовился на CTF News, нашел там теоретический материал, потом попробовал решать таски и потихоньку начал нарабатывать опыт. Фактически все происходило в Интернете. А потом случайно узнал о сообществе SPbCTF, где занимаюсь сейчас.
Юра: Я тоже учился полностью в Интернете: искал уроки на YouTube, на разных форумах. Делал все сам, если было что-то непонятно, задавал вопросы на форумах.
В начале октября вы одержали победу на соревнованиях «spb School CTF-2018», которые проходили в Университете ИТМО. До этого на каких соревнованиях успели побывать?
Юра: По сути, моя первая «ситиэфка» — это School CTF, соревнования проходили в ноябре прошлого года. Как раз тогда я начал заниматься CTF и на том турнире ничего не решил. Постепенно с получением опыта (а я участвовал сразу в нескольких соревнованиях за год) стало что-то получаться, я начал занимать призовые места. Но не все сразу. Я участвовал не только в соревнованиях в Петербурге, много было турниров онлайн, были также соревнования в Москве.
Артем: Активно участвовать в соревнованиях и олимпиадах я начал в десятом классе, а сейчас я также принимаю участие в конкурсе НТИ. Благодаря этому я начал ездить по хакатонам, например, был на хакатоне в «МИСиС». Задача этого конкурса — автономные транспортные системы, на хакатоне необходимо было запрограммировать робота, который двигается по линии. Также я был на хакатоне в «Сколково», там нужно было собрать робота на базе Arduino.
Также я участвовал два раза подряд в командных соревнованиях по программированию от Университета ИТМО, два раза в олимпиаде «Архимед», которая проводится тоже на базе этого вуза. Если говорить об информационной безопасности, то это примерно тот же список: NordschoolCTF, онлайн-этапы, QCTF School, на которых мы заняли второе место на площадке и 23 в России. В Москве был Cup MISiS Case (не CTF), потом был «Кибервызов» и недавно, собственно, spb School CTF-2018.
Где и как вы познакомились? Почему решили объединиться в команду?
Юра: Мы познакомились на NordschoolCTF. Потом пересеклись на семинарах сообщества SPbCTF.
Артём: Я часто таскаю своих друзей на соревнования, приглашал их и на CTF, но им это не особо зашло. А у меня как раз не было команды на «spb School CTF-2018», поэтому я решил написать Юре и предложил поучаствовать. Можно сказать, что эти соревнования были дебютом нашего состава.
Как проходила подготовка к соревнования?
Артём: Каждое воскресенье в сообществе SPbCTF, базирующемся в Университете ИТМО, у нас проходят встречи. Мы собираемся в аудиториях и решаем различные задания. Это, как правило, занимает четыре-пять часов.
Юра: Это сейчас, а раньше было и больше: с 13:30 и примерно до семи. На занятиях мы отдельно разбираем каждую категорию: раньше у нас был task-based CTF, а сейчас классический. Чем они различаются? Attack-defence более приближен к реальной жизни, там есть две команды: у каждой из них есть свой сервер, на этом сервере запущены какие-то сервисы. Например, онлайн-магазин. Задача — проанализировать этот сервис, найти уязвимости, залатать их у себя и проэксплуатировать уязвимости другой команды. В task-based нужно решать определенные задания, он намного легче, чем attack-defence. Это тоже практические задания, как в целом все на CTF. На соревнованиях, кстати, вообще могут быть задания и не по инфобезу. Например, есть такая категория CTF Misc. Допустим, нужно сфоткать команду и выложить фото с хэштегом в твиттер. Но я не делаю такое, потому что это не весело.
А что весело?
Юра: Задания на веб-уязвимости. В task-based CTF дается ссылка на сам сайт, иногда дается исходный код. Это специальные сайты, написанные для соревнований, они обычно очень маленькие. Обычно на task-based CTF понятно, что это за уязвимость. Вся задача в том, чтобы ее проэксплуатировать. А на attack-defence надо тщательно анализировать задачу.
Артем: Attack-defence объединяет в себе все возможные направления в task-based. Например, у вас может быть веб-сервис, на котором с помощью криптографии зашифрован токен, по нему передается информация. К примеру, кто ты, сколько тебе лет. И ты должен использовать различные направления, чтобы проанализировать задачу и иметь преимущество над соперниками. В task-based ты решаешь задачу в одном направлении: это может быть криптография, стеганография, реверс, форензика и веб. Я начинал с криптографии и стеганографии, поэтому пока сейчас это для меня легче всего. Сейчас изучаю, как решать таски именно на веб.
Почему вы решили выступать вдвоем, небольшим составом?
Юра: Много человек не так интересно: допустим, я беру решать какие-то задания, а в это время куча ребят уже их решили. Круче решить как можно больше заданий самому. Во-вторых, обычно школьники плохо шарят, и мы просто не нашли других участников. Но, по-моему, двух человек вполне достаточно.
Как устроена работа в вашей команде?
Spb School CTF проходил в формате task-based. Когда человек решает задания, он получает строчку и флаг и надо сдать эту строчку. Мы просто берем, смотрим задания и решаем. Если у кого-то возникают проблемы, он может обратиться к своей команде. Вот и весь процесс. У каждого участника есть компьютеры, поэтому каждый решает задания, а потом мы все вместе проверяем. При этом есть разные соревнования: есть турниры, которые длятся два дня, иногда бывают соревнования, при которых необходимо решать задачи восемь часов.
Как выдержать такой темп?
Артём: У меня есть опыт командного олимпиадного программирования. На таких соревнованиях мы с ребятами, как правило, берем много еды и не отвлекаемся. Когда все же надо отдохнуть и расслабиться, просто смотрим по сторонам, чтобы отдохнули глаза. А потом решаем снова и проверяем, что у нас получилось.
Юра: После того, как я научился программировать, я могу сидеть за компьютером часами напролет. Плюс ко всему, я мало ем, поэтому голод не отвлекает меня от соревнований.
Как получается совмещать подготовку и соревнования со школой?
Артём: У меня нет выбора, надо успевать, потому что сейчас я готовлюсь к ЕГЭ и поступлению. Для тренировок на неделе нахожу свободный час после того, как сделал все, что надо было сделать, сажусь и решаю. Для этого не нужны какие-то серьезные затраты: просто ноутбук, на который установлены необходимые программы. Плюс в том, что весь материал, который тебе нужен, есть в интернете, поэтому можно сесть с ноутбуком в любом месте и решать. В принципе часа в день, если ты занимаешься каждый регулярно, хватает.
В описании к соревнованиям spb School CTF-2018 было сказано, что турнир «позволяет в игровой форме взглянуть на рядовые задачи «белых» хакеров». В вашем понимании, кто такие белые хакеры, какие рядовые задачи они выполняют и какими качествами должны обладать?
Юра: Белые хакеры — это люди, которые ищут уязвимости в системе, но, когда они их находят, вместо того, чтобы эксплуатировать эту уязвимость и получать с этого деньги, делают отчет о ней и отправляют его, чтобы она была устранена. На мой взгляд, прежде всего хакер должен обладать любознательностью. Например, когда человек видит сайт, ему должно хотеться понять, как он работает. А когда человек детально понимает, как все работает, он сможет его проанализировать и найти уязвимости. Ну и, конечно, умом. Но тут, думаю, понятно.
Артём: Я думаю, не совсем правильно говорить, что хакер — это тот, кто занимается только взломом. Хакер в том числе пытается, например, найти решение, как ускорить запуск операционной системы. Если человек находит такое решение, это значит, что он настолько хорошо владеет кодом, что может улучшить работу компьютера. СМИ, как правило, преподносят хакеров в темном цвете, хотя на самом деле это люди, которые продвигают науку, развивают наш мир в том числе. Можно сказать, что Стив Джобс и Стив Возняк — тоже хакеры, потому что их маленькая «синяя коробочка», хоть и делала противоправные действия, продвигала технологии.
Действительно, для хакера очень важна любознательность, у него должно быть желание творить и, безусловно, знания в своей сфере. Еще очень важна усидчивость, необходимо уметь завершать проекты.
Какие планы на ближайшие годы?
Юра: Пока не знаю, что именно мне ближе — разработка или информационная безопасность. Буду заниматься всем.
Артём: Помимо информационной безопасности сейчас я стараюсь набирать и в других сферах: например, езжу на Case-турниры, где нарабатываю опыт технологического предпринимателя, потому что моя основная цель — развиваться именно в этом направлении. По факту, технологическое предпринимательство — это продажа технологий. Создается какое-либо приложение или сайт, которое должно стать популярным в будущем, а тебе надо придумать стратегию, как ты будешь развивать этот продукт, как будешь настраивать рекламу, кого ты будешь нанимать в команду. Я был на летней школе по технологическому предпринимательству, на которой получил грамоту. Это был еще один толчок к тому, чтобы двигаться дальше в этом направлении.
Моя глобальная цель — создать компанию в области умных городов. Мне очень хочется поработать именно над этой идеей, понять, как осуществляется взаимодействие с умным городом и внутри него. Именно поэтому я стараюсь осваивать близкие направления, чтобы продумать, как можно в будущем решить эти задачи. Думаю, что в Петербурге есть возможности развиваться в этой сфере: нет проблемы заказать какое-то устройство, тебе его привезут. В большом городе можно найти практически все, что тебе нужно.