Две истории о том, как проходили мероприятия по программированию в Екатеринбурге

jgvkrvbgfz6fd7_vtedlzquucny.jpeg

Немного разбавим зимние холодные дни теплыми воспоминаниями о том, как в Екатеринбурге проходили: финал RuCTF 2012 (соревнования по защите информации) и финал 38-ого чемпионата мира по программированию «The 2014 ACM ICPC World Finals».

Много фото внутри.
Все фото и текст автора.

«Virtual IT Robbery Event» или как проходил финал RuCTF 2012

C 19 по 22 апреля 2012 года в УрФУ (г. Екатеринбург) проходил финал всероссийского межвузовского соревнования по защите информации RuCTF 2012.

RuCTF — это всероссийские межвузовские соревнования по защите информации, которые проводятся c 2008 года по принципам игры в CTF: в начале игры команды получают идентичные серверы с предустановленным набором уязвимых сервисов, а задача участников — найти уязвимости, закрыть их у себя и воспользоваться ими для получения приватной информации (флагов) у соперников.

7xej64hvt4lmzduopdxuww47xoq.jpeg


Организаторами RuCTF выступают Институт математики и компьютерных наук Уральского федерального университета имени первого Президента России Б.Н. Ельцина, Региональный учебно-научный центр «Интеллектуальные системы и информационная безопасность», межрегиональная общественная организация «Ассоциация руководителей служб информационной безопасности» и фонд поддержки информационно-коммуникационных технологий.

Соревнования RuCTF 2012 проводились в два этапа.

Отборочный этап (RuCTF 2012 Quals) проходил в сети Интернет с 16 по 18 марта на протяжении 48 часов без перерыва.

Правила отборочного этапа RuCTF 2012 Quals тут.

На отборочном этапе RuCTF 2012 Quals командам предлагалось решить задания (таски), объединенные по тематическим категориям. За успешное решение тасков команды получали баллы. Уровень сложности таска был прямо связан с его стоимостью.

Помимо этого отборочного этапа, команды могли попасть в финал RuCTF 2012, показав отличные результаты на других CTF-соревнованиях.

Сам же финал RuCTF 2012 состоялся с 19 по 22 апреля в городе Екатеринбурге.

Программа финала состояла из нескольких частей:

19.04.2012 — регистрация участников, церемония открытия RuCTF 2012, технические доклады и мастер-классы.
20.04.2012 — круглый стол с организаторами финала, доклад по робототехнике, встреча со спонсорами финала и обсуждение вопросов с жюри.
21.04.2012 — финал RuCTF 2012 (с 9–00 до 20–00).
22.04.2012 — Разбор с жюри заданий и награждение участников.

Большая часть данных для участников была доступна тут — на рассылке RuCTF.

Регистрация на финал RuCTF 2012 и об организации этого мероприятия.

Мероприятие финал RuCTF 2012 проводилось в рамках фестиваля «Весна УПИ в Уральском федеральном», поэтому организаторами были предоставлены для участников такие площадки УрГУ, как:

  • Актовый зал УрГУ (ул. Ленина, 51, 3 этаж)
  • Конференц зал, УрГУ, ул. Тургенева, 4, 3 этаж
  • Ауд. 611, УрГУ, ул. Тургенева, 4, 6 этаж
  • Паркет, второй этаж главного учебного корпуса УрГУ, ул. Мира 19.


И места хватило всем, а ведь было много участников, наблюдателей и приглашенных товарищей.

На регистрации каждому участнику команды выдали бейджик, комплект ручек и блокнотов для записей, кружку, футболку и море позитива!

k9bziel83aafpbccedr_a_2b0is.jpeg

К сожалению, не все команды смогли приехать на мероприятие в полном составе или вообще приехать на него. Но общий состав в итоге команд внушал уважение.

Перечень команд, наблюдателей и состав гостевой команды можно посмотреть тут.

Команды-участники:

  • Bushwhackers Московский государственный университет имени М.В. Ломоносова;
  • bitmap Оренбургский государственный университет;
  • [Censored] Балтийский федеральный университет имени И. Канта ;
  • Leet More Национальный исследовательский университет информационных технологий, механики и оптики;
  • PeterPEN Санкт-Петербургский государственный университет;
  • SiBears Томский государственный университет;
  • WildRide Челябинский государственный университет;
  • HackerMayCry Уральский федеральный университет;
  • l0rd Уральский федеральный университет;
  • Koibasta Самарский государственный аэрокосмический университет имени академика С.П. Королёва;
  • Magic Hat Самарский государственный технический университет.


Финал проходил в главном учебном корпусе УрФУ:

459ylclr0aa_c8gpb6xeqlppowo.jpeg


Но с изюминкой — организаторы предложили новый формат проведение для участников — на паркете, что кардинально поменяло драйв и увеличило интенсивность действия участников команд.

Ранее такие мероприятия проводились в отдельных аудиториях для каждой команды, а теперь большое пространство, за спинами сидят другие команды, отделенные легкими перегородками и все видят друг друга, ощущая накал и пыл борьбы.

Правила проведения финала

Во время игры команды могут:

  • использовать любое количество компьютеров и сетевого оборудования не выше второго уровня стека ISO OSI;
  • вносить любые изменения в предоставленные им серверы, если это прямо не запрещено жюри;
  • менять топологию своего сегмента сети.


Во время игры командам запрещается:

  • проводить атаки на компьютеры жюри;
  • осуществлять фильтрацию трафика команд-соперниц от трафика жюри (например, по ip-адресам);
  • генерировать неоправданно большой объем трафика (флуд);
  • проводить деструктивные атаки на серверы команд-соперниц (например, rm –rf /);
  • осуществлять указанные выше действия от имени команд-соперниц.


Легенда финала RuCTF 2012
RuCTF 2012. Легенда финала
Текст для команд, 14 апреля 2012

Современный мир — это мир денег. Деньги пропитывают все сферы жизни общества. Каждый человек думает о деньгах, ежедневно, ежечасно. Каждый человек может в мгновение обогатиться, а может переступить грань нищеты. Деньги повсюду — мы покупаем еду для выживания, мы берем кредиты для удовлетворения прихотей, мы делаем вклады в надежде сохранить возможности.

Деньги стали настолько естественны, что никто уже не понимает, что это такое — деньги. Но все же в мире есть те, кто разбирается в деньгах лучше других. Они знают, как заработать и преумножить состояние, они непринужденно совершают многомиллионные сделки, они не замечают многомиллионных убытков. Это корпорации. За день они зарабатывают столько денег, сколько обычный человек зарабатывает за всю жизнь. Временами кажется, что они просто играют с деньгами.

В этом году с деньгами будем играть мы. Команды теперь — это финансовые гиганты, крупные холдинги, которые борются между собой в гонке за обогащением. Флагов больше нет. Теперь все, что у вас есть, — это деньги, и ваша задача — заработать еще больше денег. Любой ценой.

Но не переживайте, RuCTF — это все-таки соревнование по компьютерной безопасности, и у каждой команды будет привычный сервер с предустановленными сервисами, каждый из которых будет зарабатывать деньги. Например, один из сервисов будет выдавать кредиты, а еще один — принимать вклады. Под проценты, и на определенный срок — все по-настоящему. Эти два сервиса позволят командам оставаться на плаву, даже если они потеряют абсолютно все деньги — к ним будут регулярно приходить клиенты, оставлять вклады и брать кредиты.

Очки

Мир денег шаток. Сегодня вы можете быть рублевым миллионером, а завтра случится дефолт. В мире денег нужна твердая валюта, и этой валютой являются очки организаторов. Никого не волнует, сколько миллионов рупий лежит у вас в сейфе или в карманах. Чтобы подняться в глазах соперников, вы должны обменивать ваши деньги на очки. Вы можете делать это в любой момент, но помните, что курсы обмена не стоят на месте. Вы вольны выбирать, что лучше — поменять сейчас тугрики, через 5 минут йентики или, быть может, через 20 минут фантики.

Деньги

С технической точки зрения деньги, участвующие в игре, — это набор купюр, выпущенных ЦентроБанком. Каждая купюра представляется текстовой строкой в формате CSV и выглядит примерно так:

82154800–8337–11E1–8736–16514824019B,1000, TUG,10,2012–04–21T11:00:00, AD87…BOI==, Money-money

Купюра состоит из следующих полей:

1. уникальный идентификатор купюры (UUID);
2. достоинство купюры (в данном случае 1000);
3. валюта (в данном случае «тугрики»);
4. уникальный идентификатор владельца купюры (натуральное число);
5. дата и время создания купюры в sortable-формате;
6. Base64 от электронной подписи, сделанной с помощью закрытого ключа ЦентроБанка;
7. опциональный комментарий, не влияющий на значение подписи.

По любой купюре можно легко проверить, является ли она настоящей — открытый ключ ЦентроБанка будет доступен всем участникам.

Транзакции

Транзакции денег, вне зависимости от того, какие стороны в ней участвуют, проводятся через ЦентроБанк, принадлежащий организаторам. Перед проведением транзакции одна из сторон инициирует передачу денег, обращаясь ко второй стороне. Они договариваются о сумме, валюте и идентификаторе транзакции.

После этого обе стороны обращаются по протоколу HTTP к API ЦентроБанка для того, чтобы он произвел транзакцию. ЦентроБанк накладывает ограничение на разницу во времени между подключениями сторон — если один из участников замешкается, транзакция может не состояться.

После подключения передающая сторона в теле POST-запроса построчно передает купюры. ЦентроБанк выбирает из них все действующие, проверяет, что они все нужной валюты, сортирует их по возрастанию номинала и берет по одной купюре с начала до тех пор, пока не набирает сумму, достаточную для проведения транзакции. Размен купюр и выдача сдачи не производится, однако, все неиспользованные действующие купюры будут возвращены отправителю в теле ответа в случае успешного проведения транзакции.

Технически, при проведении транзакции ЦентроБанк отзывает старые купюры отправителя, а получателю выдает новые. Команды смогут проверить, отозвана ли купюра, с помощью специального сервиса организаторов.

Хранилище

Сердцем инфраструктуры каждой команды является сервис Хранилище, который держит в безопасности все деньги, принадлежащие команде. Все остальные сервисы команды получают и складывают деньги именно в Хранилище. Хранилище, кроме того, что принимает, хранит и выдает купюры, имеет и своеобразное представление об экономии — если сервис начинает просить слишком много денег за слишком короткий промежуток времени, и при этом слишком мало денег помещает обратно — велика вероятность, что Хранилищу это не понравится, и денег оно не даст.

Подпись

Другой вспомогательный сервис — сервис Подпись. Он умеет принимать на вход данные и подписывать их закрытым ключом вашей команды. Подпись используется для проверки подлинности запросов, сделанных сервисами команды.

Взаимодействие команд

Как всегда, вы можете взаимодействовать с другими командами в рамках правил. Например, вы можете взять кредит у более богатого конкурента, или сделать вклад в банк другой команды. При этом мы, конечно, не можем гарантировать, что сервис другой команды обойдется с вами честно. Точно так же и вы можете пытаться обмануть чужие сервисы. Кроме одного случая.

Кредиты

Во избежание кредитных махинаций организаторы вынуждены контролировать процессы выдачи кредитов. Поэтому все транзакции, связанные с кредитами, совершаются не просто через ЦентроБанк, а через специальное Доверенное Лицо. За исключением некоторых деталей этот сервис работает идентично ЦентроБанку. В частности, перед взятием кредита, клиент и сервис должны договориться об идентификаторе транзакции.

Сторона, взявшая кредит, может в любое время вплоть до истечения срока прийти к Доверенному Лицу и вернуть деньги по кредиту. Заметим, что для этого заемщик должен помнить идентификатор транзакции, в рамках которой была совершена сделка по получению кредита.

После наступления срока возврата кредита, выдавшая его сторона имеет право прийти к Доверенному Лицу и потребовать свой кредит с процентами обратно. Вне зависимости от того, вернул ли к этому моменту заемщик деньги, Доверенное Лицо отдает кредитору деньги, то есть оно реализует систему страхования кредитов.

Казалось бы, можно брать кредиты и не возвращать — прямой путь к богатству. Но у каждой команды существует Карма.

Карма

Карма отражает уровень доверия клиентов к холдингу. Если команда не обижает своих клиентов, её карма постепенно растет до максимума. Однако, когда команда ведет себя нехорошо, ее карма начинает падать. Это может происходить в следующих случаях:

  • К сервису пришел клиент, но не смог получить услугу. Возможно, сервис вообще не был доступен.
  • Сервис команды поступил с клиентом нечестно. Например, принял вклад, но не захотел возвращать его с процентами через нужное время.
  • Команда взяла кредит у другой команды, однако, не вернула его в срок.

Чем ниже у команды карма, тем реже к ней будут обращаться клиенты, и тем меньше денег будет проходить через ее сервисы.

Резюме

  1. На протяжении всей игры команды оперируют деньгами. Они могут зарабатывать их легальным способом, а также красть у других команд.
  2. В любой момент времени команды могут поменять известные им купюры на очки по текущему курсу, при этом обратный обмен не возможен. Оставшиеся на конец игры деньги сгорают.
  3. Деньги хранятся централизованно и могут свободно циркулировать между сервисами команды, однако, доступ к большой сумме разом ни из какого сервиса получить нельзя.
  4. За неработоспособность или мошенничество сервисов команды штрафуются падением их кармы. Чем меньше у команды карма — тем меньше денег проходит через ее сервисы.
  5. Никаких адвайзори. Нельзя терять концентрацию, ведь цель — зарабатывать деньги.


API сервисов RuCTF 2012 Final

Реальное расположение оборудование на паркете и схема ЛВС были такие (там видны ниточки-витой пары):

a-7iw2ibeawjrs7ixa5vireijp0.jpeg


v3-d74usymllq0m09snys9ll48e.jpeg


Где маршрутизатор команды — это VMware-образ с предустановленной ОС (со всеми доступными обновлениями). Маршрутизатор был заранее настроен командой разработчиков финала. Команды могут менять его настройки на свой страх и риск.

На одном из ноутбуков, предоставленных команде, был установлен тестовый образ для проверки сети. Он должен быть запущен во время тестирования сети, во время игры его можно будет остановить. Однако, в случае возникновения проблем с сетью, команда должна будет запустить его по просьбе жюри. Тестовый образ и уязвимый образ должны располагаться на одной и той же физической машине.

Начальный комплект аппаратуры, подготовленный организаторами для каждой команды: коммутатор, два ноутбука или десктопа, кому не хватило, патч-корды и сетевой удлинитель.

nwbnca8bhyap1zxuhano-uxpybw.jpeg


А как в реальности получилось с размещением на паркете, просто прелесть:

j9brgkwkiwkszchcvmsb5cdrviu.jpeg


0osaeouw0pxy_wofq02zxctbdve.jpeg


g28u2prqhjec3aufncp1ijmkcmk.jpeg


Опасения, что будет «мало места» или «не удобно будет», полностью пропали у всех участников, когда каждая команда развернула свои базы на рабочих местах и приступила к изучению материалов, выданных жюри и прогонке своих тестовых конфигураций оборудования.

Главный и переходящий приз этих соревнований ждал на среднем столе своего нового обладателя:

gwfwqkogvx3ma-5n2yfnxzl5zum.jpeg


Ну, а еще один сюрприз организаторы подготовили командам такой — общий рабочий образ системы был…. виндовый.

Сколько радостных слов было сказано в адрес жюри, когда каждый участник команды понимал сложность и нетривиальность этого финала, ведь были подготовлены ко всему, кроме такой неожиданности. Тем не менее, кто был больше подготовлен в этой стезе, тот больше получил преимущества и первым сорвал достаточно хорошие очки. Но позже все подтянулись также по этой тематике.

Занятно было смотреть, как у многих участников команд на экранах ноутбуков в поисковых запросах было много вопросов, начинающихся с «как в windows» или т.п.… Но это так — лишь затравка, ибо не образ был главное, а сервисы и правила их предоставления, а также возможность найти в них уязвимости и получить заветные очки за свои правильные действия.

Кратко: команды теперь — это финансовые гиганты, крупные холдинги, которые борются между собой в гонке за обогащением. Флагов больше нет. Теперь все, что у вас есть, — это деньги, и ваша задача — заработать еще больше денег. Любой ценой.

У каждой команды есть сервер с предустановленными сервисами, каждый из которых будет зарабатывать деньги (один из сервисов будет выдавать кредиты, а еще один — принимать вклады). Эти деньги меняются на очки у организаторов, которые и отображаются на табло.

Всего сервисов было пять — Credits, Deposits, MMM, SafeDepositB и Cloud. На каждый заходили боты (их активность и работу контролировало жюри), которые клали деньги или делали операции с этими сервисами у каждой команды. В зависимости от их удовлетворённости и доверия операциями у каждой команде была карма, чем она выше, тем больше и чаще боты будут приходить к ней за услугами.

Командам предстояло набрать больше всех очков путем перевода в них заработанных, украденных (у ботов или других команд) или созданных с помощью дыр в сервисах денег. Причем были ситуации, когда можно было очень серьезно вредить другой команде на уровне сервисов так, что другая команда не догадывалась, что она работает на противника.

В общем, было нетривиально сложно и очень интересно решить эти головоломки каждой команде.

В составе каждой из команд были как и достаточно хорошие программисты, как универсалы, так и быстро обучаемые товарищи, так и специалисты по юникс и виндовс системам. И помогали все друг дружке очень плотно и серьезно, устраивая мозговые штурмы.

О командах подробнее.

Команда [Censored] — Балтийский федеральный университет имени И. Канта, г. Калининград.
Состав: Александр Голубков, Артём Воробьёв, Максим Скуратов, Михаил Юдин, Александр Назаров, Евгений Васильев, Сергей Чесноков, Сергей Валов, Степан Бойченко, капитан — Александр Пузаков.

Очень интересная и дружелюбная команда, которая первой переломила ситуацию в очках на табло и вызвала немалый ажиотаж у остальных участников, а также первая набрала 1 миллион очков в финале.

qmuhjnlybx38foqv7r219xiwmym.jpeg


Команда bitmap — Оренбургский государственный университет, г. Оренбург.
Состав: Кирилл Ляшков, Дмитрий Баранов, Артур Чернов, Алексей Ледовский,
Павел Комиссаров, Владимир Мац, Дарья Герусова, Илья Орлов, Константин Шпинев, капитан — Сергей Волков.

byvg3elyzhvd6yqejkcgrmy2hni.jpeg


Команда Bushwhackers — Московский государственный университет имени М.В. Ломоносова, г. Москва.

Состав: Виталий Антоненко, Кирилл Самосадный, Александр Раздобаров, Максим Самойлов, Фёдор Сахаров, Георгий Носеевич, Андрей Петухов, Иван Зотов, Карим Валиев, капитан — Евгений Наградов.

7a-ukk9lxz0a4nw3qiohqjym0nu.jpeg


Команда HackerMayCry — Уральский федеральный университет, г. Екатеринбург.

Состав: Сергей Краснов, Ирина Бурдова, Лена Петрова, Максим Музафаров, Георгий Кошелев, Павел Блинов, Егор Колмогорцев, капитан — Сергей Азовсков.

Одна из немногих команд, в составе которой были девушки. Очень интересно было за ними наблюдать, как и что делают в процессе выполнения заданий финала.

hpgtdlygiqlnk-uzn_tfd42r_os.jpeg


Команда Koibasta — Самарский государственный аэрокосмичекий университет имени академика С.П. Королёва, г. Самара.

Состав: Артём Солонщиков, Андрей Атапин, Сергей Бобров, Андрей Иванов, Анатолий Кат, Игорь Меркульев, Роман Кивалин, Алексей Гришин, капитан — Михаил Воронов.

Одна из самых спокойных и ушедших в себя на финале команда, сидели немного отделано от остальных (помимо ширмы их еще отделяло панно с планом развития инфраструктуры УрГУ), но были в своих фирменных футболках. Организаторы мероприятия VSFI (соревнование по организации нормального функционирования информационной структуры предприятия) в рамках одного из дней финала RuCTF 2012.

mbiobzpdldjdsdagqwz1nxqngsi.jpeg


Команда l0rd — Уральский федеральный университет, г. Екатеринбург.

Состав: Александр Сорокин, Андрей Иванов, Иван Комаров, Руслан Нигматуллин, Илья Пацкалев, Дмитрий Косолобов, Павел Климов, Евгений Шмаков, Григорий Назаров, капитан — Михаил Рубинчик.

9wnepqenibffoumagre1r781iyo.jpeg


Команда Leet More — Национальный исследовательский университет информационных технологий, механики и оптики, г. Санкт-Петербург.

Состав: Александр Миноженко, Константин Пилин, Леонид Афанасьев, Григорий Саблин, Вадим Бардаков, Екатерина Бессонова, Иван Тимшин, Игорь Агиевич, Влад Росков, капитан — Алексей Удовенко.

xts4a7eoqodaibh0pa06ss6ryjs.jpeg


Команда Magic Hat — Самарский государственный технический университет, г. Самара.

Состав: Александр Моханов, Александр Суслов, Евгений Ермаков, Алексей Фонда, Денис Тихонов, Екатерина Фролова, Сергей Ларченко, Артем Писканов, Михаил Токаренко, капитан — Александр Тляпов.

Одна из самых эпатажных команд, некоторые участники свои фирменные шапки не снимали все время, пока шел финал, также были оснащены фирменными шарфиками с названием команды.

dkmhsfaokagsyxoqwsauqvdxufi.jpeg


Команда PeterPEN — Санкт-Петербургский государственный университет, г. Санкт-Петербург.
Состав: Артур Ханов, Дмитрий Репин, Вадим Евард, Александр Щербаков, Сергей Серебряков, Алексей Малыгин, Павел Свидерский, Сергей Романов, капитан — Антон Овчинников.

amsdh1zqxx7xxnclonh_ur4aw-0.jpeg


Команда SiBears — Томский государственный университет, г. Томск.

Состав: Николай Ткаченко, Дмитрий Алимов, Артем Карпов, Георгий Зайцев, Николай Анисеня, Павел Свиридов, Дмитрий Арбузов, капитан — Дмитрий Стефанцов.

SiBears — обладатели переходящего кубка победителя и победители RuCTF 2011, которым предстояло отстоять титул и кубок в этом финале. Т.е., двойная ответственность и нагрузка у ребят была на плечах.

l7xeubkxepbfzs9ai9o7xnugfga.jpeg


Команда WildRide — Челябинский государственный университет, г. Челябинск.

Состав: Илья Пехтелев, Дмитрий Шангин, Антон Нургатин, Андрей Григорьев, Михаил Майоров, Илья Маткин, Владимир Горшенин, капитан — Максим Косенко.

Достаточно сильная и амбициозная команда, которая показала высокий уровень и класс своих участников.

th-t5dd5pcdhgxuygjp4ujwhrby.jpeg


Гостевая команда (Guest Team) — участники от других команд, которые смогли приехать на соревнование. У этой команды был большой стол и самый большой состав — 15 человек, в числе который были представители команд SlashDotDash, ufologists, Hack Club, BitOn, Honeypot, GIRAV.

nenpvmwyx7b7rvjfc4hxzzjukqo.jpeg


Интересно бы было посмотреть на команду, состоящую только из девушек, но такой не было, зато во многих командах были девушки, которые были очень увлечены игровым заданием.

hkcdbm40lcgjwdscjln-bbnxgre.jpeg


А вот самая главная команда — это команда оргкомитета и жюри мероприятия в составе: Богдан Мельник, Андрей Хозов, Андрей Гейн, Александр Берсенёв, Константин Плотников, Виктор Самунь, Николай Журавлев, Евгений Крохалев, Илья Зеленчук, Сергей Ионов, Иван Ильин, Александр Цидаев, Дмитрий Корнев, Андрей Малец, Виктор Самунь.

qbqjqsola-mgtltvz0rk-wxxyia.jpeg


Замечательные и очень упертые ребята, которые с пятницы до утра субботы готовили паркет для команд, а до этого все придумали, написали, проверили и провели на пятерку такое удивительное мероприятие.

А вот еще одна команда, которая в игре непосредственно не принимала участие, но была самой большой (более тридцати человек) и самой заинтересованной в удачном и справедливом проведении финала — это команда наблюдателей:

yjdrtcztacplu-oy0d3cvvihegg.jpeg


Участники этой команды болели за своих и за лидеров, делились новостями по твиттеру и соц.сетям, обсуждали происходящие события внимательно и помогали организаторам.

Оборудование

Продолжим знакомство с командами с другой стороны — с технической.

Давно не видел столько много ноутбуков, нетбуков, коммутаторов и периферийных устройств в закрытом ограниченном пространстве. Можно назвать только примерное число — порядка 140–150 штук разных компьютерных девайсов (может даже больше), которые стояли на столах в ряд, по периметру, друг на дружке, на кубиках и т.д.

asr41umf-rnyjsgcdfx6dpqltt4.jpeg


И каждое устройство не зависимо от размера или названия (кстати, большинство были известных брендов) обретали в умелых руках участников команд завидный функционал для победы, будь то поиск описания в гугле, компиляцию кода или поддержку сервисов для получения заветных победных очков.

Кстати, многие девайсы были с наклейками или гравировками с разных хакерских соревнований.

А обычное рабочее место участника команды выглядело вот так, зато все под рукой:

vttyscef_1a8_qyr7dy3x_zqs0k.jpeg


И только один маленький нетбук скучал на полу на третьем этаже, создавая музыкальный фон всего действа.

sdldxa73vcda9-bzu3_k1cgqzm4.jpeg


Кстати, дружелюбность участников команд и их открытость для общения были просто подспорьем в редком общении за перекусом в угловой части помещения финала (а там был организован целый шведско-печенько-конфетно-чайный стол!) или, когда они были не за терминалом, а у больших экранов, главное не мешать за столом было.

Скорборд, экраны, окончание битвы

Скорборд — таблица с текущими результатами по-русски. А вот что она содержала и какую информацию давала командам и наблюдателям разберем ниже. Данные с базы жюри поступали в приложение, которое обрабатывало текущие значения элементов игры по командам и выдавало на большие ТВ- экраны три слайда с переключение в несколько секунд между каждым слайдом:

  • в виде графика курс валют (доллар, рубль и евро) — чем больше воруют одну валюту, тем меньше был ее курс;
  • таблицу очков, кармы и работоспособности сервисов каждой команды;
  • общее игровое время.


Внешний вид скорборда с таблицей очков:

9cexxzcskcck14mlbf16yw498-0.jpeg


Тут указана позиция команды, количество очков, ее карма, и сервисы, работоспособность которых была в трех категориях — UP (все нормально, работает), MUMBLE (работает, но не стабильно и не штатно), DOWN (не работает).

Участники команд часто пользовались данными именно с экранов больших мониторов, хотя можно было зайти на страничку игры и в браузере смотреть ту же информацию. Но реально было удобно смотреть на стороннем мониторе отображение игрового процесса.

Тем более, можно было поймать взгляд и эмоции участников других команд, попытаться их проанализировать и действовать в более правильном направлении.

Также на скорборде работал чат — можно было послать смс на телефон одного из членов жюри, а он набирал этот текст в видимой области экрана. Но это была такая хулиганская опция больше для наблюдателей.

Под конец соревнований за 30 минут до окончания игрового времени скорборд заморозили и данные о текущих очках и т.п. стали недоступны. А время тикало уже…. Главное было успеть обналичить все деньги и перевести их в очки.

8qgfi8oq7blkq2mus9jlxgequwi.jpeg


Страсти накалились до предела — максимум сосредоточенности и отдачи. Каждое неверное движение или неправильных выбор действий был бы просто фатален в этот момент. Но многие команды справились, а финальная таблица с итогами оказалась не похожа на замороженную по многим позициям!

Но вот таймер дотикал до нулей и все вздохнули с облегчением, ведь столько сразу тяжести упало с плеч участников. Многие были вымотаны до предела ведь такой сложной игрой с сильными и коварными соперниками.

Организаторы тут тоже подготовили сюрприз — объявление итогов будет только на следующий день — в воскресенье. Вот так — еще одна бессонная ночь для многих то. Но она стоила этого.

Разбор полетов

После трудного и изматывающего финального раунда не все смогли к 11 утра приехать на заключающее мероприятие финала RuCTF 2012, а ведь организаторы приготовили много грамот, подарков, сувениров — ни кто из участников команд не ушел с пустыми руками из зала.

А вот какую награду предстояло получить победителю финала от организаторов уже фестиваля «Весна УПИ в Уральском федеральном».

4a8kwdtohe-ileimu7o8n00scvw.jpeg


Но прежде чем начать церемонию награждения, команда жюри финала RuCTF 2012 отчиталась о проделанном работе. Ребята рассказали о том, кто и какие сервисы программировал, и какие дыры или баги в них были изначально реализованы с примерами их активации и использования.

o7vh5bswe1u1sy-6pt7qcabx-ri.jpeg


Как оказалось, в каждом из пяти сервисов, с которыми оперировали команды, были специально умышленно оставлены лазейки, найдя которые команды могли преумножать свои деньги (путем выдачи кредитов под отрицательные проценты, например), красть деньги ботов из депозитных ячеек (подобрав пин-коды к этим ячейкам путем перебора этих кодов), вредить другим командам, создавая им помехи в работе сервисов или вообще получить в одном из сервисов админский доступ на изменение его характеристик.

В общем, каждый из сервисов имел от 2 до 5 пасхальных яйца, но команды могли искать другие способы отработать соперников и ботов. И некоторые даже в этом преуспели!

А реагировали они вот так, когда получалось сделать интересный виртуальный финт, например:

nxvej9gto4ymvirjc7mwg3-bxvy.jpeg


Помимо необходимости ломать сервисы, каждая команда могла удвоить свой начальный капитал, путем вскрытия зашифрованного файла из образа, который получала в начале игры. Но тут была промашка небольшая — в жюри забыли активировать вспомогательный сервис, с помощью анализа которого можно было бы выйти на пароль от архива. Так что этот орешек остался не расколот, как и некоторые из первоначальных «дыр» сервисов, догадаться до использования которых не смогла ни одна команда.

В общем, самые внимательные, прозорливые, умеющие писать оригинальные и сложные скрипты и быстро адаптироваться в любой операционной системе с мгновенным пониманием новых для себя языков программирования, как Erlang, владеющие навыками работы в PyCharm и т.д. и т.п. — это лишь толика описательных характеристик каждого участника этого мероприятия.

Подведение итогов и награждение победителей

Вот и подошло время огласить тех, кто смог выстоять под натиском кибератак и набрать больше всех очков по окончанию времени игры.

Итоговая таблица получилась такая:

n4atden2vcrdy9jfx6gan-xrhpw.jpeg


Первое место — команда [Censored], Балтийский федеральный университет имени И. Канта.

2i9bwnqohk6qyomzwf-vitulau4.jpeg


Второе место — команда SiBears, Томский государственный университет.

xt3xgsye7a1aqwfcgzi5ts8b90c.jpeg


Третье место — команда WildRide, Челябинский государственный университет.

qkjpwtffvaldcwgpgyzqszza_-e.jpeg


Таким образом, тройка призеров финала RuCTF 2012 получила свои кубки:

vmbjhs5aw3b9cryme4h3wdz349i.jpeg


А организаторы развернули целых подарочный магазин!

Ведь все оказалось просто — заработанные очки переконвертировали в настоящие деньги, а на них можно было сразу же не сходя со сцены выбрать нужные каждому участнику команды подарки! На каждом подарке был свой ценник.

Раскладывание подарков:

iwjgsoc_7omdmjcjxivps5m_3fs.jpeg


И каждая команда по очереди (начиная с первого места) подходила к этой мега куча девайсов и выбирала себе необходимые гаджеты.

v8qun-yk4ijq34du8fo_vzdango.jpeg


Если у команды [Censored] был большой выбор, то у SiBears было поменьше вариантов подарков:

f7993jo84zdbnbosizklivhkwpw.jpeg


А команде WildRide осталось совсем немного в выборном ассортименте.

xvhixzuboxjz9wloz8x-oka1n30.jpeg


Но в итоге все были довольны!

И под финал финала свершился переход главного приза RuCTF от команды победительницы RuCTF 2011 к новому победителю и обладателю этого трофея!

hcfrpzvtx-vckuwxj7nzu56wpcy.jpeg

Далее были поздравления и теплые слова от всех капитанов команд и конечно же обещание следующий финал провести еще интереснее и сложнее!

Приятно, когда проходят такие соревнования, ведь видишь, сколько реально упертых, собранных и широкоформатных личностей командно борются за обладание звание самой продвинутой, подкова

© Habrahabr.ru