Девятый бит: Блог кафедры АСОИУ ОмГТУ

Как мы организовали хакспейс PHDays V Everywhere и соревнование OmskCTF

OmskCTF PHDays 5

Это уже второе описание истории про то как несколько людей организовывало PHDays Everywhere in Omsk и OmskCTF.

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

Несколько ссылок: пресс-релиз мероприятия, событие в G+, VK, Фотки (если их смотреть в режиме слайд-шоу и читать подписи, то получится небольшая история; не забывайте нажимать на зум/лупу на верхней панели — фото загрузится в оригинальном качестве).

Мы уже четвертый год организовываем PHDays Everywhere в Омске, и в отличие от предыдущих лет решили провести мероприятие на более высоком уровне — арендовали большой зал на два дня, увеличили количество Geo‑квестов. У самих же квестов в этом году появилась история — они рассказывают про секреты нано-государства Brizzland

Подготовка

За полтора месяца до часа X

Начинаем накидывать задачи в Trello.

Trello, PHDays 5

Как выглядит Trello сейчас.

Одна из первых задач звучала примерно так: “Разнообразить квесты DarkNet’ом”, с описанием “Перенести часть описаний задач в DarkNet”. Предполагалось, что участники вначале задания получат адрес сервиса в DarkNet’е, а затем, открыв этот сервис, получат само описание задания.

Среди кандидатов на “роль DarkNet” были (не все из них истинные DarkNet):

  1. .onion (Tor)
  2. i2p
  3. Bitmessage
  4. Project Maelstrom
  5. BTSync
  6. Synthingc
  7. ZeroNet
  8. Perfect Dark

Сеть должна была удовлетворять нескольким требованиям:

  1. обход NAT (при работе по IPv4) — отсеялись Project Maelstrom, ZeroNet, и Perfect Dark;
  2. односторонняя авторизация — отсеялся Synthingc.

В итоге остались:

  1. .onion (Tor)
  2. i2p
  3. Bitmessage
  4. BTSync

Теперь нужно было дать ответ на вопрос “Как участники поймут, что сервис нужно искать в особой сети?”.

С “.onion” и “.i2p” проблем не было — сеть можно определить по домену.

С Bitmessage было труднее — намеком на Bitmessage могло служить только начало идентификатора пользователя “BM-”.

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

BTSync

В некоторых старых версиях BTSync, при создании сервиса под старой Windows (NT5.*), возникал баг — генерировался секрет невалидный для других ОС. В новых версиях этот баг устранили, и все клиенты начали корректно воспринимать невалидный секрет.

Для воспроизведения этого бага в задании, участники получали “(не)валидный” секрет + старую версию BTSync, в которой был баг. Если просто воспользоваться полученным секретом и клиентом BTSync, то он покажет сообщение “This secret is invalid. Please generate a new secret or enter a secret generated at another computer”.

Быстро обойти баг можно было двумя способами:

  • [простой] скачать новую версию BTSync
  • [сложнее] запустить BTSync на аналогичной старой Windows

Bitmessage

В Bitmessage также было несколько уловок.

Если оба участника переписки расположены за разными NAT, то сообщения в Bitmessage распространяются очень медленно. Поэтому участники получали не обычный идентификатор пользователя, а идентификатор (и имя) chain’а.

Одним из участников chain’а был бот, с которым участникам нужно было сыграть в игру, чтобы получить описание задания. При этом вся переписка chain’а доступна всем командам, подключившимся к этому chain’у. Первая команда, которая “выбьет” из бота описание задания откроет его также и для всех остальных команд.

Чуть позже от игры с ботом пришлось отказаться — слишком долго приходят сообщения. Сам бот стал выполнять роль простого Custom Message эхо-сервиса.

Игра с “заклинившим ботом”

И все же, от идеи “игры с ботом” отказываться не хотелось, поэтому игра с “заклинившим ботом” встречала участников в .onion сети.

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

Cookie | URI

Cookie | URI

Cookie | URI double2

Cookie | URI double2

I want a cookie. Give me a cookie, NOW!

NOW!

Protection

По завершению экспериментов, каждый DarkNet сервис расположился в своем контейнере / виртуальной машине. А созданные снапшоты давали возможность быстро вернуть сервис в строй, например, после его взлома одной из команд.

За месяц до часа X

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

Мы уже стали волноваться, т.к. письмо-анкета до сих пор не пришла, и нас не было в списке хакспейсов. Связаться получилось только 5-го мая, и информация о хакспейсе была успешно отправлена (правда на сайте мы появились только перед самим началом PHDays — после 16 мая).

В этом году мы решили провести PHDays Everywhere в большом зале новой библиотеки ОмГТУ, которая чем то напоминает коворкинг. Так как это была библиотека, то мы не могли упустить шанс, и сделали Old School geo-квест с участием книг (о нем дальше). А вот делать geo-квесты с IP-камерами мы изначально не планировали, но вскоре это изменилось…

За две недели до часа X

Для OmskCTF, как и в прошлом году, мы хотели взять задания от PT, добавить свои задания, и объединить это все в квесты. Наши планы изменило письмо:

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

Онлайновый конкурс: площадки могут участвовать в экономической жизни созданного для PHDays государства United States of Soviet Unions (USSU)…

В этот момент стало понятно, что квесты с IP-камерами все же нужны. Как и в прошлом году, нам одолжили несколько резервных камер, используемых в университете, фирмы ***. В этих квестах предполагалось, что участникам предстоит взломать камеры для получения изображения с них (логин/пасс участником не был известен). Камеры были той же фирмы, что и год назад, но с более новой версией прошивки. За 30 минут поиска уязвимостей мы нашли 0 новых уязвимостей, а старые дыры были залатаны.

Так как, в этот раз, лежащие на поверхности уязвимости отсутствовали, то можно назвать производителя камер — это был Hikvision, а модель камер в этом году — DS-2CD2032-I.

Раз простые уязвимости “от производителя” отсутствуют, то добавим свои :) Время поджимало, поэтому просто сделали аналог прошлогодней уязвимости с возможностью анонимного входа в web-интерфейс камеры.

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

Для начала, мы подключились к камере по telnet/ssh, и осмотрелись. Вскоре поняли, что постоянное хранилище примонтировано в “/dav/”. В директории “/dav/” располагался скрипт “initrun.sh”, который инициализировал систему, и распаковывал файлы из лежащих рядом архивов.

Теперь нужно было понять какой из архивов содержит файлы web-интерфейса. После беглого осмотра инициализирующего скрипта, архив был найден, им оказался “IEfile.tar.gz”. Название архива буквально намекало, что web-интерфейс создавался специально под Internet Explorer, а под остальными браузерами ждите глюков.

Архив уже нашли, осталось найти способ выгрузить его из камеры, а затем (после правки) загрузить обратно. На одном из форумов использовали для этого комады/бинарники ftpput и ftpget, присутствующие в прошивке 5.1.2. Однако, на DS-2CD2032-I была более новая версия прошивки, в которой ftpput и ftpget отсутствовали. На помощь пришел “/bin/rz” - ZMODEM (под win наиболее стабильный клиент — Tera Term), при помощи которого можно будет залить измененный “IEfile.tar.gz”. А для выгрузки использовался работающий http сервер — нужно было всего-лишь выполнить команду:

cp /dav/IEfile.tar.gz /home/doc/

и загрузить “http://192.0.0.64/doc/IEfile.tar.gz”.

В этот момент планы претерпели изменения. Вместо замены оригинального “IEfile.tar.gz” — сделали следующее:

echo cp -Rf /dav/IEfile_patch/\* /home/ >> /dav/initrun.sh

Теперь достаточно записать отдельный измененный файл в “/dav/IEfile_patch/”, сохранив при этом относительные пути (из “IEfile.tar.gz”). При включении камеры все пропатченные файлы из “/dav/IEfile_patch/” заменят собой оригинальные файлы из “IEfile.tar.gz”.

Чтобы вернуть все назад (а это придется сделать по завершению PHDays) достаточно будет очистить директорию “/dav/IEfile_patch/”.

Немного про задания с камерами

Всего было два задания с камерами: First Eye и Second Eye. В обоих заданиях камеры были спрятаны внутри шкафчика для вещей. Сами шкафчики расположены у входа в библиотеку.

Second Eye

Изначально задание было простым:

  • Флаг записывается в QR-код, и наклеивается на стенку одного из шкафчиков.
  • Камера через дырочки в дверце шкафчика “видит” окружающую обстановку.
  • Участник получает IP камеры, и ключи от нескольких шкафчиков. Изначально каждый ключ имеет брелок с номером шкафчика. В этом задании брелки с ключей были сняты.
  • Для “захвата флага” участнику нужно было:
    1. по изображению с камеры (и полученным ключам) понять где она находится;
    2. прогуляться до шкафчиков;
    3. наблюдая за собой на изображении с камеры, найти конкретный шкафчик; перебирая ключи открыть шкафчик;
    4. считать QR-код.

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

Во время изучения камер, мы заметили, что, при включении ИК-подсветки, с изображения камеры пропадают все надписи на бумаге, сделанные обычной ручкой. При этом камера продолжает “видеть” текст, распечатанный на лазерном принтере черным тонером.

В этот момент родился новый сценарий задания:

  • Участник получает IP:port камеры и подсказку “if you only look where you can’t go, you will miss the riches below”.
  • Получив доступ к изображению с камеры, участник наблюдают окружающую обстановку через отверстие в шкафчике:
IP Cam See

IP Cam See

  • Также на OSD камеры выводится подсказка: “librarians have a keys for the secret place — barter appropriate”.
  • Участники обменивают что-нибудь на коробку с ключами:
Box + Keys + Secret

Box + Keys

  • Находят шкафчик.
  • Перебирает ключи (всего 9 ключей).
  • Открывают шкафчик, а внутри — печенья с предсказанием.
  • Разламывают печеньку — там конец флага: “_now_you_see_me”:
_now_you_see_me

End Of Flag

  • Вспомнив ранее полученные подсказки, и “повертев” коробку от ключей, участник подносит коробку к камере (“козырьком вверх”, чтобы закрыть свет) и получает вторую часть флага:
Malevich's black square + Eye

In Box — Malevich’s black square || Bottom Box — Eye

True

True

Позже сценарий еще раз изменился. ИК-подсветка засвечивала дверцу, и через отверстие в дверце камера ничего не видела (отверстие превращалось в черную точку). Попытка соединить, при помощи цилиндра, объектив камеры и дверцу, чтобы изолировать свечение ИК-подсветки, не увенчалась успехом. Поэтому для участников была добавлена еще одна подсказка: “find red eyes in black holes”. И теперь участникам, для обнаружения местоположения камеры, нужно было заглянуть в шкафчик через отверстия, и увидеть красный свет от ИК-светодиодов.

First Eye

Флаг также записывается в QR-код, и печатается на специальной конструкции, которая закрепляется на дверце шкафчика:

QR Code

Cam See

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

Участник получает IP камеры.

Для получения флага участник должен, по изображению с камеры (внутренностям шкафчика), понять где она находится; затем подойти к шкафчикам и перебрать лески; если потянуть за леску у нужного шкафчика, то поднимется QR-код:

Outside

Outside

Malevich's black square

Malevich’s? Again?

За неделю до часа X

19 мая о нашем хакспейсе упомянули на habrahabr (Хакатоны и около того), что было приятно видеть, т.к. в разделе PHDays Everywhere нас все еще не было.

Началась подготовка к Old School geo-квесту. Для квеста нам понадобились:

  1. старый сканер (для которого отсутствует 64bit драйвер для Win, но который работает под *nix — GNU/Linux, OS X);
  2. местоположение (адресацию) 8 случайных книг в библиотеке;
  3. 1 книга на английском языке.

Со старым сканером, который мы планировали использовать, возникли проблемы — куда-то пропал его блок питания. На следующий день нашлась ему замена — старый сканер для которого отсутствовал официальный Win 64bit драйвер. Однако у замены был недостаток — официальный драйвер отсутствовал, но можно было установить 64bit драйвер другой модели, и сканер “заведется”, что могло подпортить Old School’ность квеста.

Чуть позже собрали задание с участием git и (не)удаленного коммита. Остаток дня провели создавая задание “Master of hash collisions”.

В “Master of hash collisions” мы хотели познакомить участников с внутренностями созданной системы квестов, в которой ссылка на очередное задание квеста открывается после получения флага на текущее задание квеста. Это, примерно, выглядит так:

URLi+1=AES(message: pre_defined_msg_in_Base64i+1, key: SHA3(flagi))

Изначально мы хотели заменить SHA3 на MD4, и сгенерировать для участников коллизию — 2 флага. Один “псевдо флаг” записывался в комментарий к коду квестовой системы, второй “истинный флаг” — участники должны найти. Также участникам давалось время начала генерации коллизии, и намек на код, генерировавший коллизию.

В оригинальном варианте код, генерирующий коллизии, использовать было нельзя — генерировались непечатные символы. Поэтому мы засекли 30 минут — если за этот период мы сможем сделать код, генерирующий коллизии, состоящие только из печатных символов (8bit), и сможем решить задачу (восстановить второе сообщение-флаг) то заданию в текущем виде — быть, иначе его нужно менять.

В итоге задание пришлось изменить — не получилось избавится от трех непечатных символов в “флагах”:

‘ХЈњЙЎ¶B'РРыљ‘;пd5‚Jџ__][__Y__г_Лb_џ-__c_a[_________Я_______
‘ХЈњЙЎ¶В'РРkљ‘;пd5‚Jџ__][__Y__г_Лb_џ-__c_a[_________Я_______

В новой версии задания использовался CRC32. В коде также был закомментирован хеш, и появилась проверка на условие “if(flag.len > 9 && flag.len < 14 )”. В коде турнирной таблицы прописалось более точное условие “if(flag.len == 12)”. А новая подсказка намекала на код для обращения CRC32.

Остаток недели прошел менее интересно, и более напряженно. В этом году в последний момент появилось много новых помощников, не знакомых с *trello, и на координацию работы уходило много сил, т.к. единственным способ связи/координации с новичками был телефон. В общем было несколько Scrum-митингов, тестирование связи с Москвой для проведения викторины и телемоста, …, пока не пришла часть заданий на CTF от Positive Technologies.

К этому моменту мы уже поняли как объединить глобальную историю про USSU (соревнование между площадками) и локальный OmskCTF. Для локального OmskCTF сделали следующую легенду:

Вы – житель омского нано-государства.

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

Ваша задача — раскрыть все тайны вашего государства.

Поэтому в заданиях на локальный CTF от Positive Technologies важно было содержимое флага, чтобы сам флаг раскрывал какой-нибудь секрет о нано-государствах. Либо чтобы была возможность быстро заменить оригинальный флаг задания на свой флаг. Так оно и вышло.

В итоге мы получили 5 заданий категории web (исходники, в основном PHP и Python). В этих заданиях предполагалось, что участник будет взаимодействовать с удаленным сервером. Чтобы не поднимать свой web-сервер, Positive Technologies развернули эти задания на своем сервере, и прислали ссылки. Единственным условием использования сервера PT было — запретить участникам устраивать DoS атаку на него.

А флаги… Флаги были в виде случайной Base64 строки. Благодаря тому, что у нас на руках были исходники всех заданий, то заменить флаг было легко, единственное это потребовало бы поднятия своего web-сервера, его тюнинга, закрытия дыр, не предусмотренных заданием, … В общем мы всегда любили PaaS, и этот случай не стал исключением. Все PHP и Python скрипты были адаптированы для запуска на Google App Engine.

При адаптации скриптов возникли трудности с одним заданием. Для этого задания требовалось развернуть на сервере Selenium, что уже выходило за рамки PaaS. Было несколько вариантов решения этой проблемы, одним из которых было написание небольшого proxy до сервера PT с уже развернутым Selenium. На этом варианте и остановились.

Затем начался процесс стилизации заданий под единый формат, и генерация квестов.

Немного про Old School квест

Сценариев квеста было несколько. Финальный вариант сценария выглядел так:

  • Участник получает подсказку — список книг (8 существующих книг + 1 несуществующая книга — подсказка).
  • Начинает искать книги (без помощи библиотекарей, они только могут пояснить адресацию).
  • Находит книгу, забирает закладку с 2D Barcode на одной стороне, и подсказкой на другой стороне.
  • По содержимому закладки, становится ясно — чтобы прочитать содержимое — надо воспользоваться сканером библиотекарей.
  • Открывает сканет — видит, что там уже наклеено 2 бумажки (Dead Zone — вверху и еще один код с текстом — внизу).
  • Кладет свою бумажку-закладку посередине.
  • Замечает наклеенный на крышку сканера QR-код (с подписью Driver), и устанавливает драйвер.
  • Драйвер не ставится — нужна старая Windows.
  • Запускает виртуалку, ставит драйвер, прокидывает USB внутрь виртуалки.
  • Сканирует.
  • По тексту на “нижнем коде” — гуглит, и понимает, что нужно скачать PaperBak.
  • Считывает информацию в PaperBak.
  • PaperBak декодирует только первый (верхний) блок 2D Barcode с бумажки-закладки, нижний блок (приклеенный листок с еще одним 2D Barcode и с текстом) помечается как не декодированный.
  • В графическом редакторе вырезается нижний 2D Barcode, и PaperBak успешно его декодирует.
  • Следуя считанным указаниям (нижний 2D Barcode) — просит у библиотекарей “спец-заказ”.
  • Книга “спец-заказ” дается на 3 минуты.
  • Пользуясь “книжным шифром” (2D Barcode с бумажки-закладки) — начинает расшифровку сообщения.
  • За 1 минуту библиотекарь дает подсказку: “Отсканируйте, потом продолжите. И отсканируйте то, что уже просчитали — вдруг ошиблись”.
  • В итоге получается строка чем-то похожая на флаг.
  • По подсказке в списке книг, и по подсказке считанной PaperBak информации (нижний 2D Barcode) — понимает, что это шифр Цезаря.
  • Пользуясь, например, онлайн дешифраторами, определяет, что используется ROT7, и получает флаг.

За день до часа X

Планы на этот день были грандиозные:

  1. Небольшая перепланировка библиотеки :)
  2. Разворачивание оборудования для трансляции докладов, и вывода турнирной таблицы участников OmskCTF на отдельный TV.
  3. Монтаж устройств для geo-квестов.
  4. Рассказ библиотекарям про их роль.
  5. Проверка сетевых настроек для WiFi (был отдельный VLAN и SSID для трансляции докладов, и отдельный VLAN и SSID для участников CTF).
  6. Ожидание звонка от курьера, который должен был привести призы-сувениры.
  7. Интеграция с Google Spreadsheet задания “Master of hash collisions”.
  8. Подготовка квестов для всех участников (разложить по директориям, подключить систему “сбора достижений”).
  9. Возможно было что-то еще…

Можно сказать, что этот день прошел “плавно”. Суета отсутствовала, т.к. 1/3 времени просто были заняты поисками рабочего HDMI кабеля :)

Смонтировать geo-квесты успели только частично (библиотека начала закрываться). Рассказать библиотекарям про их роль не вышло, т.к. сегодня они взяли выходной. Курьер так и не позвонил…

А вот тест WiFi прошел отлично. По сравнению с прошлым годом — все работало.

Этот день закончился где-то в 02:00 — когда мы завершили “распределять” квесты по директориям команд-участников. Это был прогресс — год назад этот же день продлился до 03:00.

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

WiFi работает :) (с этой мыслью мы заснули).

Немного про формат проведения CTF

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

Квесты состоят из заданий следующих категорий: misc, crypto, stego, web, pwn и geo.

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

Участники должны для каждого из заданий найти “тайну” / “потайное место” (CTF-флаг), имеющий формат “PHD_flag_*”. В случае если ключ верный, команде начисляется 1 балл.

Про то, как мы определяли победителя написано здесь.

Это мало отличалось от того, что было в прошлом году. Основное отличие было в количестве двухчасовых квкстов. В этом году заданий было меньше, из-за этого квестов было всего два. Однако был еще PHD Stock Market.

Общий Timeline выглядел так:

  1. старт соревнования – игроки со статусом PHD Stock Market получают первые инструкции от “капитана нано-государства”, остальным участникам команд открывается доступ к первому квесту CTF
  2. :)
  3. окончание CTF, игроки PHD Stock Market вводят в курс дела остальных участников своей команды
  4. конец первого дня – награждение победителей CTF
  5. второй день – продолжение PHD Stock Market, и укрепление позиции своего нано-государства
  6. “Государство, заработавшее больше всего публей, становится победителем, и получает призы от Positive Technologies”

За два часа до часа X

Вспомнив, что в прошлом году в это время мы вспомнили про статью “3 дня без сна или как создать крупнейший киберспортивный турнир за Уралом”, и войдя в рекурсию, у нас включился режим “Фигаро” (вспоминая как кто-то вспомнил как прошел “день до часа X” год назад; кто именно вспомнил, мы уже забыли) :)

“Вспомнив все” нас, на входе в библиотеку уже ждали студенты-помощники — они помогли с монтажом оборудования для geo-квестов. С этого момента мы разделились:

  • одни пошли донастраивать оборудование для трансляции докладов,
  • другие — подстройкой DSLR под условия освещения,
  • третьи — рассказывать библиотекарям про их роль с помещением закладок в книги (для Old School квеста),
  • четвертые — разносить список участников охранникам,
  • пятые — рассказывали изумленным посетителям библиотеки про PHDays,
  • шестые — остались монтировать гаджеты для geo-квестов.
All Ready

All Ready

в реальности нас было примерно 3 человека — на тот момент мы еще не определились с точным числом

И “секунда в секунду”, как все работы были завершены, пришли первые посетители нашего хакспейса.

Good

Good

OmskCTF — Час X

После небольшой вступительной речи проректора по информатизации и организаторов. В личные директории участников не был загружен первый квест. Участников от ОмГТУ так и не было, и нас попросили начать CTF вместе с началом PHD Stock Market.

Настало время “раздать WiFi”:

Wi-Fi Zone QR-Code

Wi-Fi

Через час пришли несколько студентов. Сессия их потрепала, поэтому мы дали им VIP-место — на баблах.

OmSTU Team

OmSTU Team on Bubbles

Час X (дубль 2)

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

1/2

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

we need to go deeper

7zipJpeg

Мы опять планировали тем командам, которые в течение первых 30 минут не распознают формат, дать подсказку. В этот раз все команды затратили на первую задачу менее 30 минут, однако не все из них поняли, что остальные задачи имеют аналогичный формат.

Параллельно со стартом локального CTF включились игроки со статусом PHD Stock Market.

PHD Stock Market Man

PHD Stock Market Man

Спустя некоторое время команды добрались до первого geo-квеста с камерами.

First Eye Code

First Eye Code

В этот момент стало ясно, что с web у участников дела обстоят не очень, и всем командам была дана подсказка.

In Box

Stage 1 — In Box

Try

Stage 2 — Try

Be Happy

Stage 3 — Be Happy

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

I Watching To You

Thanks To You ;)

Поэтому “первопроходцам”, нужно было все делать быстро, чтобы остальные команды не успели среагировать, и сфотографировать QR-код.

Настало время Old School квеста.

Bookmark

Scanner guarded by librarians

Scanner

Old Scanner

PaperBak

Old OS

К окончанию первого этапа вперед вырвалась команда “Занято”.OmskCTF fin 1/2

2/2

ADSL vs GPON

ADSL vs GPON, or …

После постижения таинств работы Git’а и сравнения скорости ADSL vs GPON, команда “Занято” добралась до второго квеста с камерами.

Black Dot

I See Black Singularity

Linux

Where Is My Red Eyes?

Fortune cookie

Fortune cookie

Печенья с предсказанием оказались настолько вкусные, что некоторые команды не удержались и взяли сразу несколько печенек.

Two Cookie

We Need Two Cookie

За 30 минут до окончания CTF, участники дошли до задания “Master of hash collisions”. В этом задании была одна лазейка: можно было расшифровать ссылку на следующее задание при помощи хеша, спрятанного в коде. Система не засчитала бы текущее задание (на “сервере” были добавлены дополнительные проверки), однако команда смогла бы начать выполнять 2 задания одновременно.

Internet Disconnection

Internet Disconnection

За 10 минут до окончания, кто-то решил еще раз отметить Час Земли, и закрыл выход в Интернет через WiFi. Однако, команды не растерялись и сами подняли AP на своих смартфонах.

Спустя 10 минут, сохранив лидерство, команда “Занято” заняла первое место в PHD OmskCTF 2015.

The-Winners-is

The Winners is Занято

День второй

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

Hacker Quiz и завершение PHDays Everywhere V in Omsk

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

Hacker Quiz

Hacker Quiz

Кто победил? Смотрите в записи.

На этом PHDays Everywhere in Omsk завершил свою работу.

You must be logged in to post a comment.