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

Как мы организовали хакспейс PHDays Everywhere и соревнование CTF в этом году

Cicada OmskCTF PHDays 4Эта история про то как несколько людей организовало PHDays \V Everywhere in Omsk и OmskCTF в этом году.

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

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

Мы уже третий год организовываем PHDays Everywhere в Омске, и в отличие от предыдущих лет решили устроить “нулевой день” — OmskCTF.

Подготовка

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

Начинаем разгребать список задач из Trello.

Trello, PHDays 4

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

Первым делом необходимо было достать IP-Камеры, их мы планировали использовать в паре заданий CTF. И так удачно сложились обстоятельства, что нам одолжили несколько резервных камер, используемых в университете, фирмы ***.

В этих заданиях предполагалось, что участникам предстоит взломать камеры для получения изображения с них (логин/пасс участником не был известен). Благо большинство оригинальных прошивок IP-Камер уязвимы (-1-, -2-, -3-, -4-), и прошивки полученных камер не стали исключением. Все полученные камеры были одной модели, поэтому мы решили, что достаточно найти уязвимости только у одной из них (как выяснилось позже, зря мы так думали). Поиск уязвимостей продлился недолго, спустя ~30 минут у нас в арсенале уже было несколько уязвимостей (спасибо китайцам за комментарии к коду — они не понадобились), которые помогут участникам соревнования получить картинку с камеры не имея логин/пасс. На самом деле, даже была обнаружена уязвимость, превращающая камеру в высокотехнологичный кирпич, и мы стали опасаться, что кто-нибудь из участников ей воспользуется.

Уже близился момент развешивания камер по местам, и мы взялись за настройку/проверку остальных камер. Наше удивление не имело границ, когда эксплойт заработал только на части оставшихся камер. Часть камер (напомню, что модель одна и та же) не была уязвима. Через некоторое время мы заметили, что web-интерфейс “неуязвимых” камер более глючный, и в нем отсутствуют некоторые функции, которые есть в уязвимых камерах. И в этот момент мы решили проверить версию прошивки “неуязвимых”. Наши догадки подтвердились, “неуязвимые” имели старую прошивку, а уязвимые — последнюю. Это было странно, и мы погрузились в Интернет, в поисках информации о этих прошивках. В итоге выяснилось, что уязвимости в последней прошивке давно известны, и производитель о них уведомлен, но закрывать их не спешит.

Интересно то, что уязвимости касаются именно новых функций, появившихся в последней прошивке. Это напоминает картину:

hz hz - new frimware

Мы решили не обновлять прошивку до финальной (банально не хватало времени, и кнопка “выбрать файл прошивки для обновления” не работала ни в одном из используемых браузерах), а для участников придумали другой способ получения логин/пасс.

Остаток недели прошел менее интересно, в переговорах, планировании, тестировании связи с Москвой для проведения викторины и телемоста, …, пока не пришла часть заданий на CTF от Positive Technologies. Мы, так же как и в прошлом году, ожидали получить список заданий и ответы на них. В прошлом году, для автоматического зачитывания баллов за флаги, мы использовали простую схему, основанную на Google Формах и Таблицах. В этом году мы хотели применить нашу квестовую систему, в которой ссылка на очередное задание квеста зашифрована ключом, ключ — это найденный флаг от предыдущего задания квеста. Именно поэтому нам важно было получить как сами задания, так и ответы на них (для самостоятельного поиска ответов поджимало время). В этом году пришли только задания + ссылка на сайт для проверки флагов… Это несколько выбило нас из графика, однако просьба выслать нам ответы (флаги) была поддержана организаторами PHDays, и мы получили флаги некоторое время спустя.

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

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

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

  • Флаг записывается в QR-код, и вешается на стенку в коридоре, на него направляется IP-Камера.
  • Участники получают координаты конкретного места + диапазон IP-адресов, в котором находятся камеры.
  • Участник может получить флаг двумя способами: прогуляться до места, либо найти нужную IP-Камеру.
  • Доступ к камерам можно получить только из одного места (подключившись к конкретной WiFi точке доступа).

Спустя некоторое время задания трансформировались:

  • Теперь участник получает IP конкретной камеры, и список мест, где могут находится камеры.
  • QR-коды размещаются в каждом таком месте, но теперь QR-код не попадает в поле зрения камеры.
  • Задание представляет собой монолит (все задания с камерами объединились в одно), а в QR-кодах записан IP следующей камеры.
  • Участники теперь должны работать в команде:
    1. один участник сидит, и наблюдает за камерой;
    2. другие проходят по местам и “машут в камеру”, пока их не заметит первый участник команды, затем они считывают нужный QR-код.

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

Окончательный вариант выглядел следующем образом:

  • Использовались только 2 камеры.
  • Участник получает IP первой камеры.
  • После получения доступа к изображению с камеры, он также получает список мест (overlay текст на изображении с камеры).
  • Далее начинается командная работа “в поисках QR”, аналогичная “трансформированному” варианту.
  • Теперь во всех QR-кодах записаны валидные (начинающиеся с ключевого слова) флаги.
  • Первое задание завершается по нахождению QR-кода рядом с заданной камерой.
  • Во втором задании надо также получить доступ к камере, однако теперь overlay содержит не список мест, а Diff (2D графический xor двух QR-кодов).
  • Участники, используя список мест, полученный на первом задании, также должны найти нужный QR-код, и, используя Diff, восстановить исходный QR-код, в котором и будет флаг.

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

Вкратце можно описать как: “Фигаро тут, Фигаро там”:

  1. Именно на этот день была назначена встреча с администраторами по завершению конфигурировании сети для проведения CTF: отдельный vlan, несколько SSID на точке доступа с разными приоритетами (для организаторов > для участников > для всех остальных).
  2. Также в этот день пришли призы-сувениры (блокноты и ручки) от Positive Technologies.
  3. В этот день нужно было настроить систему (установить Flash-плагин к браузеру) для трансляции докладов с PHDays.
  4. Встретить студентов, которые согласились за 2 дня подготовить (прибраться и сделать небольшую перепланировку) 2 аудитории к трансляции PHDays.
  5. Передать списки участников охранникам.
  6. Подготовить квесты для всех участников (разложить по директориям, подключить систему “сбора достижений”).
  7. Проверить QR-Коды (наши коменданты любят их отклеивать).
  8. Чат-совещание организаторов в 22:00.
  9. И еще что-то.

Стоит сказать, что мало что из этого списка прошло гладко (лучше всего прошло получение призов-сувениров от курьера).

В остальном, администраторам пришлось переконфигурировать сеть для поддержки 70 устройств (8 команд x 4 человека x 2 устройства + 6 дополнительных устройств), это не прошло гладко (были проблемы с ACL, маршрутами, IPv6, …). Из-за этого сменились IP у камер, и пришлось перегенерировать связанный с ними квест, что не прошло бесследно (к чему это привело описано ниже). Про несколько SSID и приоритеты пришлось забыть. У студентов возникли “срочные дела”. К началу дня не все из участников успели зарегистрироваться, поэтому список охранникам пришлось отправлять в 23:00, и только с этого момента начать “распределять” квесты (процесс распределения продлился до 3:00).

К счастью все QR-коды остались на месте.

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

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

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

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

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

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

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

Вспоминая статью “3 дня без сна или как создать крупнейший киберспортивный турнир за Уралом”. Так, как нам выделили помещение-коридор, рядом с которым всё это время шел ремонт, то всё “оснащение” помещения пришлось производить в самый последний момент.

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

Далее была быстрая проверка работы WiFi, IP-Камер, Интернета. Всё работает, но это продлилось недолго. Через некоторое время пытаемся подключить оставшиеся ноутбуки к WiFi — не подключаются. Пытаемся подключиться со смартфонов — аналогичная картина. Однако все устройства спокойно подключаются к публичному SSID. Ok (думаем мы), Интернет у нас есть, но для доступа к IP-Камерам нужно подключение к ново-созданному SSID. В этот момент приходит администратор, и… Ну, в общем, ничего кардинально не изменилось. Мы сменили пароль на более простой, разблокировали TKIP, и смартфоны смогли подключится, однако доступа к сети не было…

WiFi OmskCTF 2014

WiFi pass

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

OmskCTF — Час X

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

1/3

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

we need to go deeper

7zipJpeg

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

В течение первых двух часов были даны еще несколько подсказок (подсказки получали одновременно все команды). За 15 минут до окончания первого этапа, команда “CAT_IN_THE_DARK_WOOD” взяла все флаги первого квеста, и устроила себе кофе-брейк.OmskCTF fin 1/3

2/3

Первые задачи второго квеста требовали подключения к IP-Камерам, и, следовательно, подключения к другому SSID. Нам повезло, во всех командах нашелся хотя бы 1 человек, оборудование которого смогло успешно подключится к необходимому SSID. Однако и здесь без происшествий не обошлось, crazy-DHCP сервер стал раздавать разным клиентам один и тот же IP!

IP-Camera OmskCTF

IP-Camera

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

Quiet! OmskCTF

Quiet!

Go-Go-Go! OmskCTF

Go-Go-Go!

Спустя еще некоторое время случилось то, о чем упоминалось в “За день до часа X” — перегенерация не прошла бесследно — флаг на первое задание был случайно изменен на “чистый” флаг от второго задания. Тем не менее, для участников, этот “баг” лишь упростил задание — теперь флаг располагался в ближайшем “возможном месте” от места проведения CTF. И большинство команд, увидев, что первый флаг “подходит”, не стали “махать в камеру”.

QR-Code Snapshot OmskCTF

Snapshot

QR-Code Snapshot of paradise OmskCTF

Snapshot of paradise

QR-Code Cicada OmskCTF

Cicada QR-Code

Часто, в подобных соревнованиях, эти “баги” делают процесс решения задачи только интереснее. Главное, чтобы от этих “багов” задачи не становились невыполнимыми.

Первой командой, которая получила второй флаг второго квеста, была “hackup”. Через некоторое время к ним присоединились “rm -rf”.

Как можно было решить второе задание с камерами

Самый быстрый способ — это взять библиотеку для считывания QR-кода, и добавить в Diff опорные точки (position, alignment, and timing patterns):

QR-Code Structure

Структура QR-Кода

Далее необходимо немного подправить библиотеку: открываем одновременно 2 изображения (снимок QR-кода и измененный Diff), …, при чтении данных — читаем их одновременно с двух изображений и делаем xor, … На выходе получаем искомый флаг.

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

QR-Code Diff OmskCTF

Diff

Самый медленный способ — используем графический редактор для совмещения кодов. После обработки “указанным способом”, убираем образовавшиеся “границы”:

QR-Code Try to merge OmskCTF

Try to merge

Затем считываем код, и получаем искомый флаг.

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

Некоторые решили сделать все “вручную”:

QR-Code Binarization OmskCTF

Binarization

Прошли 2 часа второго квеста. В этот раз ни одна из команд не достала все флаги за 2 часа. OmskCTF fin 2/3

3/3

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

Третий этап длится 3 часа (которые были увеличены на 5 минут, т.к. первый этап длился на 5 мин. меньше из-за вводной части).

В общем, эти 3 часа прошли спокойно. Самое интересное началось за 10 минут до окончания соревнования.

00:01Вначале этих 10 минут в лидеры вырвалась команда “rm -rf”, и буквально за минуту до окончания соревнования первенство перешло к команде “brizz” (участники которой, решили сохранить анонимность).

The Winners is brizz OmskCTF

The Winners is brizz

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

All world in our hands OmskCTF

All world in our hands

Финальная турнирная таблица (вкладка Snapshot).

PHDays 4 — Час Y

За 2 часа до часа Y

Так как в “За день до часа X” встреча со студентами, которые согласились помочь с уборкой помещений, не состоялась, то в этот день решили прийти пораньше. Когда пришли, мы увидели то, что ожидали увидеть: никто без нас не прибрался в помещениях. Поэтому первый час прошел примерно так: тряпку в руки, швабру в ноги, и мыть.

Welcome to PHDays 4

Welcome to PHDays

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

За 15 минут до часа Y

Уже стали приходить первые гости, и настала пора подключится к трансляции PHDays \V.

The door opens PHDays 4

The door opens

Здесь нас ждал очередной сюрприз.

Для трансляции PHDays нужен только браузер+Flash. Изначально в системе, подключенной к проектору отсутствует Flash-плагин (система используется как аналог AIRTAME), поэтому в “За день до часа X” этот плагин был установлен.

Однако, только что открывшаяся страница трансляции, встретила нас предложением установить Flash-плагин. Это могло означать, что в определенный момент, после установки Flash-плагина, пропало питание.

Все дело в том, что эта система “заморожена”, и после перезагрузки/выключения возвращается в исходное состояние.

Через 5 минут плагин был установлен, и мы опять попытались открыть страницу трансляции.

Браузер — IE10

Теперь нас ждал очередной сюрприз, но уже от фильтра SmartScreen, который заблокировал Flash-плеер на странице. Спустя некоторое время “понижения безопасности браузера” Flash-плеер успешно загрузился, и началась трансляция с залов.

Mmmmm... PHDays 4

Mmmmm...

В одном из помещений началась трансляция зала “Конференц-зал”, а в другом — “Зала-трансформер”.

Спустя несколько минут просмотра в HD разрешении, мы поняли, что Intel Atom D525 “не тянет” такой поток (его ядро было полностью загружено), и переключили на SD. Странно, то, что год назад декодирование видео ускорялось на NVIDIA ION 2 GT218, а в этом году — нет. Новый Flash-плеер, или Flash-плагин перестали поддерживать ускорение? Вероятно это так.

По окончании доклада “Специализированные решения — панацея? Поговорим о MDM, BYOD и проч.” мы показали, как выглядит MDM (Mobile Device Management), встроенный в Google Apps, для его администратора. Затем переключились на зал “Пресс-центр”.

С этого момента начался HackQuest. К сожалению, большинство участников OmskCTF (включая победителей) решило участвовать в нем “из дома”, что по нашему мнению было ошибкой — мы не смогли им помочь.

Затем мы переключились на доклад “Отдай мне свои данные!” (мы думаем, что это один из тех докладов, которые интереснее смотреть в переводе — диктор был отличным!). К сожалению (или к счастью) при просмотре трансляции было несколько разрывов связи.

В момент разрыва Дейв показывал снимки кредитных карт, которые пользователи выложили в сеть. Мы решили самостоятельно продолжить его рассказ, и рассказали о произошедших случаях, с наши знакомыми. Случаи были похожими: в смартфоне (Android, iOS) хранились фото кредиток, и в определенный момент их пользователи решили подключить на них свой Google аккаунт. При этом включилась автозагрузка фото в Google+. На этом моменте все нормально — загруженные фото остаются приватными (их не видят остальные пользователи G+), однако через некоторое время наш пользователь заходит в свой G+ профиль, и, увидев там новые фото, решает написать другу “зацени мои фото”. Тот естественно ничего не видит, т.к. прав нет, и наш пользователь, пытаясь все-таки показать свои шедевры другу, открывает всем пользователям G+ доступ ко всему альбому автозагрузки. Вы же помните, что там были фото кредитки? А вот наш пользователь, похоже, об этом забыл… Причем в G+ существует такая особенность, что если сохранить ссылку на пред-просмотр фотографии, то даже если автор уберет права на её просмотр, эту фотографию можно будет открыть по сохраненной ссылке.

В ходе своего доклада Дейв также показывал проданные б/у HDD с ценной информацией. К сожалению больше разрывов связи не было, и по окончании его доклада мы принесли “посыпавшийся” HDD (Seagate Barracuda ES.2, который, при наличии мухи CC, проработал 5 лет) умершего сервера. И показали, что с такого HDD информацию удалить сложно (при чтении/записи первого Bad-блока HDD блокируется) не имея электро-магнитного уничтожителя данных, либо не имея шредера.

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

Hacker vs Laptop

Чуть позже на нашей площадке начался конкурс “hacker vs laptop”.

Who can try to hack PHDays 4

Who can try to hack?

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

Our toys PHDays 4

Our toys

В конкурсе были и призы, 3 первых человека, которые справятся с задачей — получат ручку от Positive Technologies. А, если никто не справится, то ручки получат “самые упорные”.

Hack! PHDays 4

Hack!

Конкурс проходил все 2 дня.

Hacker Quiz

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

День второй

Ко второму дню мы подготовили небольшой сюрприз. Это был мастер-класс о том, как даже небольшие ошибки дизайна (имеется в виду логика работы, а не графический интерфейс), при определенном стечении обстоятельств, могут нивелировать все принятые меры защиты информации. А т.к. в этот день должны были выступать представители Mail.RU, то мы решили посветить свой мастер-класс продуктам Mail.RU. И показали, что классические методы защиты пользователей-паранойков (настройка браузера на автоматическую очистку Cookie при выходе, либо использование режима “инкогнито”) могут не только защитить реквизиты пользователя, но и наоборот — стать причиной их утечки.

После мастер-класса оставалось еще много времени до выступления Mail.RU, поэтому вернулись к основной программе трансляций PHDays.

Translation PHDays 4

Телемост с Москвой

Уже третий год телемост проводится с использованием Cisco WebEx.

WebEx — это такая “штука”, для работы которой нужен дырявый плагин Java.

Обычно мы устанавливаем Java и клиент WebEx только на время проведения мероприятия, после этого они удаляются из системы. С WebEx связана еще одна проблема: на планшетных ПК (ASUS Eee Slate EP121, Samsung Series 7 Slate, Microsoft Surface Pro, Samsung ATIV Q, …) под Win8, в которых основными манипуляторами выступает touch-экран и Wacom-перо, невозможно нажать на кнопки в модальных окнах WebEx’а. Поэтому приходится подключать классическую мышку.

Однако в этом году нас ждал еще один сюрприз. Как было написано в “За неделю до часа X”, мы протестировали связь, и она, как и в предыдущие годы, была хорошей. В этом году, после подключения к телемосту, мы поняли, что не все пройдет гладко — голос ведущих был очень плохого качества (внезапные паузы, высокая степень сжатия потока).

tele-brige PHDays 4

<_<

Однако в Москве нас было слышно нормально (запись телемоста). Из-за такой связи нам было трудно понять когда закончится перевод на английский, и иногда возникали наложения… К тому же некоторые из присутствующих были у нас первый год, и забыв про перевод на английский, выступали с “речью”. Впрочем, смотрите запись 8-O

Hacker vs Laptop

В этот день конкурс продолжился. За весь прошлый день ни одному из участников не удалось скомпрометировать систему. В этот день активность участников многократно возросла, было применено множество способов “оставить свой след в системе”, но система осталась неприступной. В итоге самые “упорные” участники получили сувениры. Этими участниками стали “ghostilya” и “Shizoid”.

Последний доклад

Последней трансляцией на нашей площадке стал доклад “Импрессия: не ломай — сделай свой ключ”, в ходе которого было рассказано еще несколько “историй” :-)

Impressioning Attacks PHDays 4

На этом PHDays Everywhere in Omsk завершил свою работу. Всем легкого пентеста! И до новых встреч в следующем году на PHDays V.

You must be logged in to post a comment.