Новости Поездка на RuCTF 2009

Progressor
, 01 May 2009

Ура, состоялся RuCTF 2009 !!

Далее многобуквенный рассказ от первого лица - Progressor из команды NanoBears.

Бонус - "скриншот" скорборда в последние секунды игры (кликабельно):

.

День 0. Тайга.

В среду 22 апреля из Тайги уезжал наш поезд. Задача добраться из Томска до Тайги - не очень и тривиальная. То есть, есть у нее легкое решение - электричка. Быстро, дешево, удобно. Но сильно рано. Пришлось бы ждать на вокзале в Тайге несколько часов, вялиться. Был другой вариант - заказать автобус. Правда, прямой дороги до Тайги нету, и автобус идет по солидному кругу - через Анжеро-Судженск, несколько часов. Однако выигрыш во времени все равно был. 

Итак, в час сбор на вокзале под часами. Все утро я в бешенном темпе собирал вещи, ибо проспал. Вроде, все-что-нужно-и-не-нужно-но-вдруг-пригодится взял, выхожу на вокзал. Там под часами стоит кучка томских хакеров:) в окружении девушек и сумок. Алебастр, админ SiBears, продемонстрировал мне большой такой, уважающий себя бубен. Я подумал, что NanoBears'ам тоже не обойтись без этого девайса, и побежал домой за своим бубном. В итоге в обеих наших командах админы были укомплектованы бубнами (забегая вперед, скажу, что, видимо, это секрет успеха:)). 

Подъехал наш автобусик. Микроавтобус с прицепом:)) В прицеп мы скинули сумки, рюкзаки же с ноутами взяли с собой в салон. Салон представлял собой стек стеков: четыре стека, в каждом по 3 человека (в последнем - четыре), эти стеки загружались в салон тоже по принципу стека. Как-то так. И Славка еще рядом с водителем ехал. 

Разместились, поехали. Водитель, похоже, сам не знал, как до Тайги доехать, поскольку через пару часов поездки задал удивительный вопрос - есть ли у кого из нас gps-навигатор? Такового не оказалось. Доехав с горем пополам до Анжерки, мы начали петлять по незнакомому городу. В итоге, бравые дпс-ники подсказали нам дорогу и мы через несколько минут увидели указатель на Тайгу. 

Доехали до вокзала, выгрузились (last in first out). Отряхнули сумки от пыли - в прицепе ужас что творилось. До отправления поезда около часа. Пошли на перрон - там уже наши земляки, команда KEVA, готовились садиться в свой поезд. Они приехали утром на электричке, поезд у них отправлялся примерно на час раньше нашего. Ну, физкультпривет, пожали руки, пожелали удачи. Они уехали. Мы вошли в здание вокзала, разместились там рядом с толпой то ли дембелей, то ли курсантов. Стали ждать. Некоторые наши пошли гулять по Тайге. 

Подошел наш поезд, благополучно загрузились, тронулись. На Свердловск!

День 1. Прибытие.

Наверно, весь вагон облегченно вздохнул, когда мы вышли в Свердловске. Ибо наша шумная молодая компания из 14 человек скучать не хотела:) Одна только игра в мафию чего стоила. А потом еще голубая корова (или как ее там) и просто (не)здоровый шумный смех и гогот.

Кстати, Марк немного поковырял сервис, который я написал на мастер-класс, и нашел там незапланированную мной серьезную уязвимость (шелл) :). Так приятно:) Кстати, мастер-класс не был еще до конца готов, но мы решили не дописывать его в поезде.

Итак, приехали мы в Екатеринбург. Встречай нас, город, это снова мы! Никто нас, правда, не встречал, потому что мы вроде как уже немножко знаем куда-чего и сами отказались от любезной помощи организаторов соревнований. Пришлось, однако, прибегнуть к любезной помощи горожан, на каком-то трамвае доехать до УрГУ, а оттуда уже на родном двадцать шестом до все того же "А-класса" =) Ух, как в Екатеринбурге развито трамвайное движение.. В Томске такого нет ниразу. 

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

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

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

День 2. Мастер-класс.

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

Ура - УрГУ!! Эх, целый год прошел с прошлого нашего визита. А там в УрГУ так прикольно ^^. Такая везде атмосфера. Студенты снуют туда-сюда. Плакаты всякие висят. Прям в коридорах репетируют танцы... А мы пошли в актовый зал.

Перед входом зарегистрировались, получили пакетики от спонсоров. Вошли в зал. Там с минуты на минуту должно было состояться открытие вторых открытых межвузовских соревнований по защите информации RuCTF 2009 ! Мы даже выданные футболки надели:)

Однако, вечером этого же дня был запланирован не готовый еще наш мастер-класс. Поэтому, как ни жаль, но мы втроем - Дима, Леша и я - ушли с открытия допиливать жюрейку. Мы спросили у организаторов, где бы нам усесться, чтобы еще розетка была. Нам сказали пошариться по корпусу матмеха (кстати, в ТГУ мехмат, а в УрГУ - матмех) - и обязательно найдется свободная аудитория, где спокойно можно будет разместиться. Наверно, у них это в порядке вещей, но мы люди непривычные и после непродолжительных блужданий по корпусам (кстати, мы там сначала заблудились)) решили осесть в переходе: там был замечательный уголок со столом, лавочкой и двумя розетками. Это было рядом с концертным(?) залом, и прямо перед нами несколько девушек репетировало танец ^^. Однако, нам было не до высокого и прекрасного, нам бы допилить жюрейку. 

Много копий обломал Дима о нерушимую твердь проблемы. Мы думали, что косячит мой чекер. Долго и безрезультатно изучали мы взаимодействие жюрейки с чекером. Время неумолимо истекало, и уже нависла реальная угроза исключения моего сервиса из образа, как вдруг на Диму снизошло озарение. Оказалось, что проблема крылась все-таки внутри жюрейки. Локализовав проблему, мы сравнительно быстро подправили жюрейку и чекер - и все заработало!

Пока мы сидели в этом прекрасном уголке в переходе, мимо нас в корпус матмеха прошли организаторы, заметили нас, удивились, прикольнулись. Потом еще вернулись, спросили - мож нам интернет нужен. Но мы зачем-то отказались:)

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

После обеда было немного свободного времени, мы решили погулять по городу.

Подошло время вводного семинара, все ввалились в аудиторию. Она хоть и большая и с компами, но явно не была рассчитана на такое количество народа. Дима и Вовка, наши капитаны, провели теоретическую часть семинара, рассказали что да как, на фоне в это время крутились наши фотки с RuCTF 2008. Затем началось самое веселое - все поделились на команды, скачали образ и началась тренировочная игра. 

Мне было реально приятно видеть, что мой сервис был в состоянии running у большинства команд (спасибо Диме=)). Время от времени от команд приходили эдвайзори, авторы сервисов их проверяли и начисляли баллы. Короче, мне тренировка понравилась :)

А после тренировки был банкет. И банкет, к слову, удался - атмосфера способствовала, встретились старые друзья, завязались новые знакомства. Шампанское, вино, фрукты. Мы сами стали путать, кто из нас сибирский медведь, а кто - нано... =)

День 3. Экскурсия.

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

После легкого завтрака - сразу в автобус - экскурсия. Мы проехали по городу, постояли в пробках, выехали из города к обелиску символической границы Европа-Азия. Там долго фотались. С мокрого неба валил мокрый снег. Я выкинул всю мелочь из карманов из Азии в Европу. Европа не показала виду, но мы-то знаем, что только нашей мелочи там не хватало.

Вернулись в теплый автобус, въехали в город, встали в пробке. Ох уж эти пробки! Они там везде. И даже те же трамваи стоят в пробках, ибо у них не выделенная линия, а общая с машинами. Следующим пунктом экскурсии был Храм На Крови и вскоре мы до него таки добрались. Вышли, погуляли... Первая экскурсия закончилась, нас подкинули до УрГУ.

Появилось свободное время, а мы голодные. В кафе! Несколько медведей отпочковались от общего потока и пошли в кафе недалеко от УрГУ. Там мы неспеша подкрепились - и опоздали на начало второй экскурсии. Пока шарились и искали своих - встретили Дашу. Общими усилиями нашли универ, в котором проходила экскурсия, там нас встретил Илья Зеленчук - замечательный такой товарищ и по совместительству директор соревнований =). Присоединились к экскурсии, послушали интересные слова про камни и каменный бизнес в Екатеринбурге), посмотрели сувенирчики. Один сувенир - три гномика на одной подставке - мне приглянулся и стал моим.

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

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

День 4. Игра.

И вот он, главный день. Игра! Воскресенье. Душ, завтрак. Внизу уже стоит автобус, приветствует участников соревнований, так сказать. Мы вышли из гостиницы - и организовали построение))) "Равняйсь! Смирно! Здравствуйте, товарищи медведи! Здравия желаем, товарищ главный медведь!" Дима толкнул речь, дал установку обеим командам на победу. Со стороны наверно это все смотрелось забавно:)

И вооооот мыыыыы поеееехали.

По пути завезли одну команду в другой корпус - они играли отдельно.

Приехали в УрГУ, стали расходиться по аудиториям. Я был свидетелем, как команда SiBears входила в свою аудиторию))) Картина маслом: стоит шеренга медведей в красно-белых футболках, медитативно мычит, перед дверью танцует с бубном Алебастр - освящает вход. Пассы проделаны, мычание пропето, админ дергает за ручку двери и... закрыто:) Дикий хохот прокатился по пустынным воскресным коридорам университета.

SiBears играли на третьем этаже, NanoBears - на пятом. Мы уже подумали, что будем играть в той же аудитории, что и год назад, но жребий пал иначе и нам досталась соседняя аудитория. Зашли - уютный такой "дисплейный класс". Компы стоят буквой П, есть доска и проектор. Роутер и несколько компов подготовлены для игры. На одном столе мы устроили кухню, на другом - гардероб, на остальные поставили ноуты. Кстати, играли преимущественно с ноутов. 

Начало игры отложили на полтора часа. Были какие-то проблемы с размещением нескольких команд. Все это время мы маялись, настраивались и настраивали. Настроили.

Начало игры! Дан ключ к образу. Расшифровали, запустили. Вылезли в ирц и в джаббер, чтобы быть в курсе новостей. Еще до публикования ключа к образу открылись таски. Видимо, это и послужило причиной того, что многие команды, как выяснилось на разборе, кинулись сначала на решение тасков, а не на изучение образа. Мы такой ошибки не допустили, приоритетом у нас был образ. И потом уже, для освежения мозгов возвращались к таскам. 

Кстати, таски. Отмечу один из категории joy: "Мы знаем лицо, вы знаете имя" и портрет. Лицо всем смутно знакомое, все его где-то видели, но вот никак не вспомнить где. Попробовали Шеннона, Тьюринга, Кхиргхоффса - все не то. Тут Алекс в шутку говорит - да блин, Демидович какой-то чтоли. Оппа, он родимый:) На обложке незабвенного задачника - вот где все его видели. Кроме joy100 мы решили еще несколько тасков - и вообще по таскам на момент окончания игры мы лидировали.

Вернемся к образу. Я метался от сервиса к сервису - мне бы что-нибудь скриптовое, а если оно еще "имеет один большой минус - написано на руби"(с), то вообще здорово. Но руби я не нашел, нашел перл. Маленький такой сервис - один исходник, правда код форматирован в виде картинки. Ну не знал я про утилиты типа tidy-perl, я вручную привел скрипт в читаемый вид:) Спустя некоторое время обнаружил там подозрительную строку - генерируется случайное значение и если оно больше константы - выполняется действие. Оппа, это сразу наводит на нехорошие мысли. В общем, выяснилось, что это и есть уязвимость в этом сервисе. Забегая вперед скажу, что больше я там до конца игры так ничего и не нашел. Быстренько написав эдвайзори, я стал ждать, что мне ответит жюри. Ответ "верно" вдохновил меня и я объявил всем наномедведям, что могу тянуть флаги! Здорово, начал накидывать скриптик. У моего скриптика "был один большой минус - он был написан на руби" ^^. В процессе отладки я вручную запостил флаг - честно не помню с какой команды, но наш Илюха после игры утверждал, что именно с SiBears =)). В мирке появилась греющая душу строчка:

|16:27:12| <[jury]jackrabbit> NanoBears - first attack!

Отлично! Вскоре скрипт был готов, и полились флаги. Однако, с автоматизацией у меня не совсем заладилось - таймауты жюрейки портили мне жизнь, поэтому до конца игры флаги текли в полуавтоматическом режиме. I, robot. Я, бот-полуавтомат.

Еще перед этим Слава обнаружил интересную багу в каком-то другом сервисе. Имелась дырявая либа, которая при некорректных запросах отъедала память у веб-сервера здоровенными кусками - приходилось перезапускать апач. Эдвайзори, эксплойт - и вот эксплойт - ну уж он-то полностью автоматом - бегает по всем командам (и по SiBears ^^) и убивает апач. Правилами это запрещено не было, ибо генерации трафика не было - летали одиночные пакеты. Кстати, Стас и Илюха в SiBears очень быстро обнаружили и устранили причину падения апача. А вскоре я сам вырубил эксплойт.

Админил у нас Леха, и делал это хорошо, ибо за защиту у нас было даже больше баллов, чем у SiBears. Периодически падал или корраптился сервис, с которого мы тянули флаги - в экстренном порядке его поднимали. Еще Леха копал сервис про Бендера - периодически на него ругался и потом сообщил, что его (Лехи) мозг вынесен начисто.

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

Вовка реверсил. Сдал один таск на реверс. Потом занялся сервисом Slonik, с помощью wireshark'а раскопал его логику, написал эдвайзори, но флаги что-то снова не вкатили.. :(

Костя сдал таск на 500 баллов ^^. Написал кликалку по кнопочкам на делфи. Потом тоже стал копать checkroom, который копал я.

Довольно долго NanoBears лидировали. Потом стала набирать обороты SiBears - и вот они нас обогнали и ушли вперед с отрывом. Молодцы ^^.

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

И вот, полчаса до конца - уже устали. Но тут сюрприз преподнесла Just4Fun. Они так стремительно начали набирать баллы, что мы всерьез забеспокоились за свое второе место. Почему мы тогда не поснифали трафик и не узнали, откуда утекают флаги - ну устали мы, протупили. А флаги тянулись с очень простой уязвимости, запрятанной в очень большом сервисе. Две минуты до конца, минута - игра окончена! Мы остались на второй строчке, Just4Fun не догнали нас всего на 4%. Однако, после окончания игры могли остаться непроверенные эдвайзори и положение команд в скорборде теоретически могло измениться. Поэтому не спешили мы поздравлять друг друга со вторым местом, а поздравляли пока просто с замечательной игрой:) Игра и правда была отличная, азарт, флаги, гонка - ух! А еще с таким результатом - ммм)

После игры мы свернулись и пошли на общий сбор. Там объявили, что окончательные результаты будут оглашены на следующий день на награждении. А пока - в клуб Луна 2000 "снимать стресс". Еще нас обрадовали, что выбраны три команды для проведения турнира по боулингу - NanoBears вошла в их число:) Еще мы взяли в команду Дашу, назвались "Даша и медведи" и поиграли в боулинг. Правда, усталость дала о себе знать, и в турнире мы тоже заняли второе место.

После клуба взяли такси - кстати, удивительно дешево - и до гостиницы. А там - с чистой совестью спать) День прошел великолепно.

День 5. Награждение.

Утром, сладко потягиваясь, предвкушая хороший день, мы стали собираться в УрГУ. Снова много шума в автобусе. Снова пробки. Даже позвонил Илья, спросил, где мы ваще, награждать надо. А мы в проообке. Ну мы утешали себя мыслью, что без нас не начнут награждение ^^. Ехали мы уже с сумками, ибо вечером уже на вокзал. Доехали, скинули сумки в актовом зале, расселись по местам. Все еще в напряжении - второе ли место у NanoBears ? Наконец объявляют результаты - третье место - команда Just4Fun! Мы им очень громко апплодировали, поскольку всё стало понятно:). Как и в прошлом году, призерам вручили Касперского. Но в этот раз еще и кубок в форме звездочки:) Потом объявили нас - команда NanoBears - второе место! Вручили кубок. Серебряный =). Президент УрГУ, пожимая нам руки, сказал, чтоб мы передали ректору ТГУ - его старому другу - чтобы тот нам повысил стипендии в пять раз! Хех, жалко он это в письменной форме не подтвердил). И вот объявили первое место - команда SiBears! Ай, молодцы! Эти две звездочки - золотая и серебряная - будут отлично смотреться вместе. Потом над нами Илья Зеленчук еще прикалывался: встаньте, говорит, кто в прошлом году был в составе SiBears - вот эти ребята в прошлом году заняли предпоследнее место, а нынче первые два. Вот, типа, какой прогресс:) Даа, мы тоже рады такому прогрессу ^^.

После награждения тройки победителей капитаны и просто желающие держали ответное слово. Все благодарили организаторов за отличные соревнования, рассказывали, как проходила игра. Кстати, многие команды отмечали, что кинулись сначала на таски. Нам тоже сказали несколько спасиб за проведенную тренировку ^^. А завершилась официальная часть концертом, где номера объявляла Даша:)

После концерта отнесли сумки в Хогвартс - это в УрГУ несколько аудиторий в подвальчике - сердце всей CTF-ной деятельности УрГУ=). И пошли гулять. Зашли в Уральские Пельмени - прям от души там наеееелись за всю фигню) и пошли затариваться едой на дорогу. В пять намечался разбор игры, мы успели прослушать разбор двух здоровенных сервисов. "Я из тех людей, которые что ни пишут - всё получается операционная система" =). А потом...

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

Пробки, туды их растуды. Спустя некоторое время ожидания на остановке приняли решение прорываться на вокзал пешком. С сумками. Ускоренным темпом. Хорошая такая зарядка получилась:) В итоге все хорошо, на поезд успели. До новых встреч, Екатеринбург!

День 6. Томск.

Снова в поезде, снова толпой. Снова локальный дестрой в отдельно взятом вагоне. Ехали мы до Новосиба, откуда намеревались автобусом добраться до Томска. Снова купили рыбки в незабвенном Барабинске (эх, где же та продавщица...). За окном часто был виден снег.

Без происшествий добрались до Новосиба. Сели в автобус, чтоб доехать до вокзала и тут хлынул дождь. Ливень! Ощутили его на себе, пока бежали от остановки до автовокзала.

Внутри вокзала к нам все приставал мужичок с газелью до Томска. Но мудрый наш Дмитрисимус сделал правильный выбор (послав того мужичка нафиг). В итоге подождали около часа и в полупустом большом удобном автобусе поехали домой. По дороге крутили фильм - мне понравилось).

И наконец, в двенадцатом часу вечера, мы вернулись домой. Здравствуй, Томск! А вот и мы, с победой! На этом RuCTF 2009 завершился.

Спасибо всем медведям - мы молодцы :)

И спасибо ХакерДому и всему УрГУ - вы молодцы!