22 August 2014

DEF CON CTF 22 Final

Information SecurityCTF
С 7 по 10 августа в Лас-Вегасе (США) прошла крупнейшая конференция по информационной безопасности — DEF CON. Мероприятие проходит уже 22 год. Мы принимали участие в финальном этапе DEF CON CTF. На самой конференции народу очень много. Сначала я слышал что-то про 6 тысяч человек, потом — про 15. Переходы между залами для докладов днем были похожи на переходы в московском метро. Но обо всем по порядку.


Коридор за час до начала конференции

DEF CON CTF


Традиционно во время конференции проводятся командные соревнования по информационной безопасности DEF CON CTF. Вообще данный CTF состоит из 2 этапов: В Лас-Вегасе проходит финал, а перед ним проводится отборочный онлайн-тур, по итогам которого отбирается 12 лучших команд. Победитель прошлого года автоматически получает место в финале, а также на финал можно попасть, выиграв один из 7-ми других престижных CTF в течении года. Так, наша команда попала на финал, заняв третье место на Positive Hack Days CTF в мае этого года (победитель PHDays CTF к тому времени уже прошел на финал за счет другого CTF, а команда int3pids, занявшая второе место, отказалась от приглашения).

Команда, которая проводит DEF CON CTF, меняется раз в 3 года. В этом году свой второй дефкон проводит команда Legitimate Business Syndicate.

Вот такие бэйджи получают все посетители конференции и участники CTF:



Про саму конференцию могу сказать лишь, что было:
  • много докладов
  • много мастер классов
  • Social Engineering Village
  • Lockpick Village
  • Hardware Hacking Village
  • Wireless Village
  • Packet Hacking Village (с традиционной Wall Of Sheep)
  • многое другое


В зале для вендоров стоял электрокар Tesla, который даже можно было попробовать хакнуть:


На фото d0znpp, взято у SadieSv

Но ни на доклады, ни к Тесле, мы, к сожалению, не попали. так как…

Capture The Flag


Финал DEF CON CTF проходит в формате Attack/Defense (он же Service-based). Команды получают одинаковые сервера с набором предустановленных сервисов. В сервисах заложена определенная функциональность, которая постоянно проверяется ботами организаторов. Также в сервисы заложены уязвимости, которые нужно найти и желательно устранить. Эксплуатируя уязвимости в сервисах на серверах других команд, нужно получать так называемые «флаги». Флаги — это, как правило, какая-то секретная информация в контексте сервиса. Допустим, сервис — почтовый сервер. Флаги лежат в почтовых ящиках, созданных ботами организаторов. Если вы научились читать чужие письма, то можете искать флаги и сдавать их.

Флаги обновляются каждый раунд. Раунд длится 5 минут. Флаги имеют ограниченное время жизни (обычно 1-2 раунда). То есть, если вы в конце игры прочитаете все флаги с сервера соперника, то результативно сдадите только 1-2 из них. За остальные очков начислено не будет.

Когда с уязвимого сервиса получен флаг, команды, сдавшие этот флаг, получают 19 очков, которые распределяются поровну в зависимости от числа таких команд. Пострадавшая команда, соответственно, теряет 19 очков. В начале игры все команды имеют по 2500 очков.

Если ваш сервис выключен или заложенная в него функциональность нарушена, сервис оказывается в статусе Offline, и у команды падает показатель SLA. SLA — доля игрового времени, в течение которого сервис корректно работал. Обычно этот показатель умножается на количество очков, чтобы сформировать окончательный счет. Честно говоря, как именно считался окончательный рейтинг на финале DEF CON CTF мы так и не поняли. Четкого набора правил с формулами организаторы командам не давали. Полагаю, что это одна из фишек дефкона, т.к. на финале PHDays CTF, к примеру, все правила были четко прописаны и предоставлены командам за несколько дней до соревнований. Даже была excel-таблица, в которой продемонстрирован подсчет очков для разных сценариев развития событий.

Команда




Наша команда называется BalalaikaCr3w. Большая часть наших участников — студенты и выпускники МИФИ, часть — МГТУ им. Баумана, один выпускник МФТИ и один выпускник БГТУ (Брянск). На фото не все участники, а только те, кто поехал на DEF CON. Образовалась команда чуть более полутора лет назад. Как образовалась и как развивалась — это отдельная история, когда-нибудь напишу отдельную статью об этом, если такая информация может быть интересна.

На финале DEF CON CTF максимальное число участников одной команды составляет 8 человек. Нас на финале оказалось всего 7, т.к. в силу финансовых проблем или проблем с получением визы несколько человек не смогли поехать.

Виза


Приняв приглашение для участия в финале, первой проблемой стало получение визы в США. Людям нашей профессии получить американскую визу не совсем просто, особенно в сжатые по времени сроки. Приглашение на финал DEF CON CTF мы получили в конце июня, лететь в США нужно было в начале августа, а у нас еще и поездка в Корею на финал SECUINSIDE CTF в июле. Итог по визам следующий: из 10 попыток было получено 6 виз. При этом одна виза получена со второй попытки, а еще одна только после дополнительной проверки. Один из наших участников со второй попытки попал на дополнительную проверку и не успел ее пройти, а кому-то просто отказали. У одного из участников команды уже была действующая виза, но и она была получена ранее только после дополнительной проверки.

В чем подвох? Как только офицер в посольстве понимает, что ваша деятельность (и/или образование) связана с информационной безопасностью (ровно как и с некоторыми другими критически важными для государства областями науки и техники), он отправлет вас на дополнительную проверку. Проверка может длиться до одного года. Ну и помимо проверок офицер может просто сказать вам «отказано» по итогам собеседования, выдать какую-то разъяснительную бумажку и попрощаться с вами без объяснения причин.

Обеспечение


Организаторы DEF CON CTF предоставляют участникам 2 номера на 3 ночи в отеле Rio All-Suite Hotel & Casino, в котором и проходит DEF CON. В каждом номере 2 большие кровати и диван. За 30 баксов в день можно заказать дополнительную кровать вроде раскладушки (хотя она кстати комфортнее дивана). Все остальные расходы команды оплачивают самостоятельно: перелет, дорога, питание (даже во время CTF), оборудование и т.д.


Вот так выглядит CTF зона

Получается, что участие в финале DEF CON CTF является самым дорогостоящим среди всех финалов для российских команд. К примеру, бюджеты поездок на финал Facebook CTF в Барселону или SECUINSIDE CTF в Сеул колеблются в диапазоне от 100 до 200 тысяч рублей. Для поездки на DEF CON только на билеты нужно порядка 450-500 тысяч. Посему вопрос привлечения денежных средств встал довольно остро для нашей команды — все-таки поездок за год немало, а большая часть из нас только что закончили ВУЗ.

Спонсорство


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

Забавно, что в Германии все наоборот. Volkswagen выделил немецкой CTF-команде StratumAuhuur 20 тысяч долларов для поездки на финал DEF CON CTF. Вот уж действительно, что русскому хорошо, то немцу смерть.

Однако, стоит поблагодарить за посильную поддержку некоторых участников нашей команды их работодателями: компанией «Актив» и ФГУП «ГлавНИВЦ». Спасибо!
Если у кого-то есть желание и возможность сотрудничать с нашей командой, то, милости просим, пишите на info (at) ctfcrew.org, мы в долгу не останемся.

Основной процесс




Финал DEF CON CTF разбит на 3 дня. Каждой комаде выделено:
  • несколько столов, составленных прямоугольником, чтобы можно было сесть рядом. Честно говоря, было тесновато. Мы видели как тем, кто приехал в полном составе, приходилось раздвигать столы, чтобы можно было сидеть никого не задевая
  • один Ethernet кабель с доступом к игровой сети (у каждой команды своя подсеть 10.5.N.0/24) и сети Интернет
  • одна розетка для подключения к электрической сети (переходники на европейские вилки и удлинители тоже надо было везти с собой)

Расписание:

  • 9:00 — команды запускают в CTF зону, начинается setup
  • 9:30 — команды получают доступ к своим серверам
  • 10:00 — открывается сеть между сегментами команд. Можно подключаться к чужим серверам и атаковать их
  • 20:00 — сеть закрывается. Команды должны собрать вещи и покинуть CTF зону. В третий день сеть закрылась в 14:00 и CTF зону можно было не покидать, т.к было afterparty

Каждый новый день команды сажают за разные столы в разных частях CTF зоны.

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

Вообще факапов со стороны организаторов было немало. На второй день, например, один парень с эксцентричной красной прической тупо вырубил наш сервер. Или не тупо. Но когда мы жаловались, что сервер уже 15 минут недоступен, товарищ извинялся и говорил, что это его вина, он случайно так сделал. В общем, я за 3 дня раз 10 слышал, что SLA будет исправлен, а рейтинг — пересчитан.

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

Задания


В качестве серверов использовались ODROID-U3+. Хотя после соревнований мы видели, что внешне наш сервер отличался от других (его ведь меняли в первый день после того, как сгорела карта памяти), так что не исключено, что у других команд была другая железка.

Сервера были установлены у организаторов. Команды получали доступ по ssh. При этом рутового доступа не было, что является очередной фишкой дефкона. То есть, трафик слушать возможности нет. Раз в 5 минут на sftp организаторы выкладывают для каждой команды дамп трафика с сервера команды. Задержка между моментом, когда игра началась, и, когда доступен первый дамп, составляет 15 минут. Все IP адреса в дампе рандомизированы, кроме адресов из подсети команды. Определить по адресам, с кем конкретно было установлено то или иное соединение (одна из команд или бот организаторов), невозможно.

Еще одна фишка — все сервисы даются в бинарном виде. Никаких исходников, никаких скриптов. Только binary, только hardcore. Может быть, когда-то и бывали исключения, но не в этот раз.

Архитектура процессора заранее не анонсируется. Можно было по прошлому году предположить, что будет ARM (в том году он был на DEF CON впервые), но достоверно это стало известно только в 9:30 первого дня.

Всего было заявлено 7 сервисов, но организаторы по ходу соревнований выложили только 5.
В начале первого дня на серверах команд было по 2 сервиса:
  • eliza: изначально ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, not stripped. Запускался на машине на ARM по-наркомански через qemu-i386-aslr. Затем организаторы все-таки решили пересобрать и залили: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, not stripped.
  • wdub: изначально ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.6.32, stripped. Позже ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped. Сервис представлял из себя веб-сервер.

Через несколько часов появился третий:
  • imap: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped. Сервис представлял из себя почтовый IMAP-сервер.


CTF зона под конец первого дня

Начальные уязвимости были достаточно простые. Например, для сервиса wdub можно было прочитать флаг запросом вроде этого:
GET /../../../home/wdub/flag HTTP/1.0\r\n\r\n

А в imap было достаточно хотя бы на один байт переполнить параметр команды SELECT. Тогда команда LIST отрабатывала на директорию выше, чем должна, и можно было увидеть все ящики (LIST "" *) и сообщения (LIST "" */*), а затем прочитать их с помощью FETCH.

Затем каждая команда получила вот такой бэйдж:

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

Цель, как и во всех других сервисах: найти уязвимость, закрыть ее у себя, проэксплуатировать на чужих бэйджах, прочитать флаги и сдать их. Если бэйдж выключен или в режиме отладки, то сервис считается в дауне, и SLA падает. К концу второго дня/началу третьего большинство команд забили на бэйдж, но команда Routards добила его до конца. Жаль, что они научились тащить флаги только к последнему раунду. Это реально круто.
upd: команда PPP на второй день написала эксплоит для бэйджа, но из-за ошибки организаторов получить очков с помощью него им не удалось:
We would like to apologize to the two-year champions, PPP. An off-by-one error in our badger backend code made it impossible for team id 0 (PPP) to score correctly. They had a working exploit before the end of day 2, but were unable to score any points because of this.

Во второй день появился еще один сервис:
  • justify: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped.


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

Атмосфера


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

На центральном экране сначала показывали scoreboard, а затем простенькую визуализацию атак команд друг на друга.
В общем, время пролетало незаметно.

Небольшое видео, снятое в последние минуты CTF:


Результаты


Place Team Score
1 Plaid Parliament of Pwning 11263
2 HITCON 7833
3 Dragon Sector 4421
4 Reckless Abandon 4020
5 blue-lotus 3233
6 (Mostly) Men in Black Hats 2594
7 raon_ASRT 2281
8 StratumAuhuur 1529
9 [CBA]9447 1519
10 KAIST GoN 1334
11 Routards 1262
12 More Smoked Leet Chicken 1248
13 Binja 1153
14 CodeRed 997
15 w3stormz 987
16 [SEWorks]penthackon 979
17 BalalaikaCr3w 937
18 Gallopsled 921
19 shellphish 899
20 HackingForChiMac 546

Мы закончили на 17-ом месте. Это, конечно, слабый результат, но пусть он станет отправной точкой для наших следующих финалов DEF CON CTF. Сделано много выводов, какие из наших внутренних инструментов нужно допилить, и каких инструментов нам не хватает.

Наши более опытные соотечественники More Smoked Leet Chicken (MSLC) заняли 12 место. Полагаю, что ребята собой тоже не очень довольны, ведь в том году они финишировали на четвертом.

Выигрывают второй год подряд американцы из команды Plaid Parliament of Pwning (PPP), которые традиционно для DEF CON выступают вместе с известным хакером Джорджем Хотцом (geohot), который знаменит своим опытом взлома iPhone (автор первых jailbreak'ов и unlock'ов) и судебными разбирательствами с Sony за jailbreak приставки PlayStation. Кому как не ему тащить на CTF, где все задания, кроме одного, на бинарную эксплуатацию под ARM. Хотя в июле он в составе своей комады tomcr00se выиграл финал SECUINSIDE CTF в Сеуле. Справедливости ради стоит подчеркнуть, что команда tomcr00se состоит из одного человека.

Впечатления


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



Было приятно увидеть старых знакомых и пообщаться с новыми.

За информацией по поводу следующего DEF CON CTF рекомендую следить на сайте LegitBS.
Информация о предстоящих CTF и вообще обо всех событиях в CTF мире — на главном ресурсе всех команд CTF TIME.
Tags:CTFcapture the flagDEF CONDEFCONhackхакерыBalalaikaCr3wMSLCInformation Security
Hubs: Information Security CTF
+28
12.9k 41
Comments 12