Привет, Хабровчане! Надеюсь, многие из вас знают и посещают уютные хакерские конференции, форумы и митапы не только ради after-party, но и также для того, чтобы размять ум и смекалку на CTF (Capture The Flag). Организовывая мероприятие, в котором будет совмещено все вышеперечисленное, хотел бы поделиться опытом нашей команды по выбору платформы для СTF и собственно самой разработки.
CTF — соревнования, связанные с поиском уязвимостей и скрытых данных, которые условно разделяются на классические и тасковые. Классические соревнования еще называют Attack-Defence: суть в том, чтобы проанализировать образ системы, найти уязвимости, исправить их и проэксплуатировать на серверах других команд. Речь пойдет о тасковых заданиях.
На Хабрахабре присутствует немало людей, увлеченных CTF играми, поэтому на вопрос: почему существует множество сайтов, с рейтингом команд и участников, scoreboard'ами и аналитическими статьями, уже многие давно нашли ответ. Ведь это чуть ли не единственное занятие, в котором есть дух соперничества и каждый «безопасник» может померятся достоинством, хоть и в искусственных, и лишь в некотором роде приближенных к реальности условиям.
Одно дело участвовать в CTF, совершенно другое, с чем я вас и познакомлю — создавать и организовывать данное мероприятие.
Выбор платформы
Платформы для CTF бывают двух типов: готовые и самописные. Готовые платформы хороши своими «фичами», которые дорабатываются годами и проверены многими соревнованиями. Самописные же фактически гарантируют безопасность сайта т.к. их будут писать люди, которые знают больше о ней, чем среднестатистический программист-верстальщик (чего мы не можем гарантировать в случае с готовыми платформами, тут все зависит от прямых рук). Поэтому лично наш выбор пал на платформу Facebook CTF — интересная система со следующими настройками:
Разные типы тасков:
- Quiz — то же самое, что и обыкновенные вопросы, на которые требуется дать ответ (слово, фразу)
- Flag — тасковое задание (файл, ссылка и тд) ответ на который является флаг в соответствующем формате (наш формат h4ck1t{текст}).
- Bases — аналогия игры «Царь горы», кто первый решает таск, тот получает больше всех баллов (и так по убыванию)
А так же есть подсказки, при открытии которых снимается какое-то количество баллов. Не малый плюс: У Facebook один из самых захватывающих интерфейсов среди платформ.
Платформа Facebook CTF вначале использовалась в таких CTF’ах, как Facebook CTF в Csu San Bernardino и на конференции BruCON 2014. Впоследствии Facebook начал продвигать политику OpenSource ПО. Это также и затронуло их CTF платформу.
И в мае 2016 года они открыли ее исходный код на github. Но, как вы можете догадаться, продукт был недоделанным, но разработчики не спали и к сентябрю сделали уже около 401 правки в их код с момента публикации. Надеемся, что они и дальше будут в таком же темпе апгрейдить их продукт :)
Настройка платформы
И вот мы столкнулись с первыми трудностями: оказалось, что платформа находится только в бета-тестировании и имеет множество недочетов. Перед нами встала задача исправить и подкорректировать некоторые баги. Не буду описывать весь процесс исправления и костылей, скажу лишь, что несколько раз хотели менять платформу, но все же решили, что будем одними из первых покорять Facebook CTF.
Все редактирования мы проводили, основываясь на нашем трехлетнем опыте участия в CTF соревнованиях. Учитывались все недочеты, допущенные другими соревнованиями, такие как отсутствие bugbounty и очков за него, связь с создателями тасков и многое другое! Также на это повлияла платформа ctftime, на которой в том числе и выкладываются множество райтапов с отзывами участников о каком-либо проводимом соревновании.
Создание тасков
А это один из самых интересных этапов в разработке CTF'a! Рассмотрим области, которые мы затронули:
- Admin/Misc — таски приближенные к ежедневным проблемам сисадминов.
- Cryptography — задания, которые основываются на особенностях криптографических алгоритмов.
- PWN — поиск уязвимостей и последующая эксплуатация сервиса, запущенного на каком-то порту.
- Exploit — аналогично PWN, только нам еще предоставляются исходники этого бинарника.
- Forensics — расследование инцидентов, анализирование различных дампов и др.
- Joy — нужно периодически отвлекаться на несерьезные таски:)
- Network — сетевые задания.
- PPC — задания на программирование.
- Reverse — анализирование бинарников с последующим изучением алгоритмов, используемых в программе, для получения флагов
- Steganography — поиск скрытых каналов передачи информации.
- Web — веб-безопасность.
А для тех, кто хочет попробовать себя в создании тасков, мы сделали конкурс тасков.
Конкурс тасков
Далее про конкурс тасков: это для вас реальная возможность потренироваться в создании своих тасков фактически во всех категориях! В случае, если ваш таск проходит на CTF, то вы получаете бесплатный билет на конференцию, уважение почет. Пока прислали мало тасков, поэтому шанс быть выбранным высокий! Заявки принимаются на почту: ctf@hackit-ukraine.com
Оффлайн тур H4ck1t CTF
Помимо 12 подготовленных категорий с интересными тасками, рассчитаных как для новичков, так и для профи в каждой из областях, 10-ку лучших команд ожидает оффлайн-тур с нестандартными и интересными конкурсами, более развлекательного, но все же не без смекалки, жанра (пока секрет какие :) ).
Проведение соревнований
Проводиться онлайн тур будет с 23 сентября по 2 октября. И в каждый день будут открываться несколько тасков из различных категорий. По его итогам лучшие команды будут приглашены на оффлайн тур 7-ого октября на конференцию HackIT-2016. В финале команды будет ожидать тасковый CTF, но уже в реальной жизни с нестандартными конкурсами, блэкджеком и дамами. Наша команда готовит увлекательные квесты в реальности со взломом веб-камер, RFID, замков и многое другое.
Разбор самых интересных заданий для страждущих будет опубликован после проведения мероприятия.
И скидка на само мероприятие для: промокод на 10%, может кому пригодится:
HABR0710
Автор: rewiaca