- PVSM.RU - https://www.pvsm.ru -
C 1 по 10 марта прошёл online-этап соревнования по кибербезопасности NeoQUEST-2017 [1]. Пришло время подвести итоги, поделиться любопытной статистикой прохождения, а также вкратце рассказать про сами задания.
В этом году мы решили отправить участников соревнования в бескрайний космос и придумали для них галактику из 9 планет-заданий [2], каждая из которых была уникальна.
Все 9 «планет» пройти не удалось никому, но, тем не менее, у нас не осталось ни одного непройденного задания! Победителю AV1ct0r покорились 7 заданий, и его 1025 баллов стали лучшим результатом в online-этапе соревнования! Серебряный призёр, Ilja, полностью прошел 4 задания и получил по одному ключу еще в двух, его результат — 817 баллов. «Бронзу» получил VampiRUS [3], на его счету 4 полностью пройденных задания и одно — наполовину решенное, количество набранных баллов составило 731.
Тройку призёров ждут отличные подарки, а всех, кто получил хотя бы один ключ — памятные сувениры! Теперь перейдем к тематике и «изюминкам» заданий NeoQUEST-2017!
Зелёная планета, зелёные роботы с рожками, большими ртами и ручками-ножками-палочками? Да это ж Android! Название планеты, кстати, тоже намекало именно на эту мобильную операционную систему.
А когда участники скачали apk-файл, все их сомнения по поводу тематики задания должны были развеяться! Для «починки» вождя зелёных роботов участникам нужно было подвергнуть apk-файл reverse engineering, расшифровать хранящийся там зашифрованный байт-код, дизассемблировать нативную библиотеку и найти коллизию к хэш-функции CRC32. Write-up по этому заданию уже опубликовал [4]в своем блоге победитель online-этапа AV1ct0r и описал в хабрастатье GH0st3rs [5] (читать тут [6]!)
В данном задании участники получили архив с изображениями, но изображения были необычными: некоторые из них содержали просто цветовой шум, а в остальных компоненты R, G и B каждого пикселя оказались равны друг другу (градации серого). Также каждое изображение включало дополнительную мета-информацию, в частности, гео-теги.
Участникам требовалось отфильтровать шум и отметить географические координаты оставшихся изображений на карте мира. В результате из полученных точек создавалось изображение символов, являющихся ключом к заданию (а также, как упоминалось в легенде, места на Земле, в которых удалось побывать инопланетянам). Такая вот забавная стеганография! Write-up на это задание тоже уже опубликован, читаем [7]!
В этом задании участники столкнулись с технологией блокчейн [8]. Им предстояло разобраться с принципами работы умных контрактов Ethereum [9]и провести на один из них две атаки. Первая напоминала известную рекурсивную атаку [10] на The DAO, в ходе которой злоумышленник чуть не похитил криптовалюту на сумму 60 миллионов долларов! Для проведения второй атаки нужно было использовать ошибку работы с памятью и подменить владельца контракта собой.
В легенде к этому заданию настойчиво упоминались разных размеров яблоки-носители информации? Намёк ясен! Вот оно — анонсированное задание на iOS! Участники получали архив, в котором было 780 файлов с непонятными именами.
На первый взгляд было абсолютно непонятно, что с ними делать. Наилучшим вариантом была их сортировка по типу: сразу обнаруживались 4 файла с расширениями, позволяющими понять, что эти файлы — ни что иное, как бэкап iOS-устройства. Затем участники либо бродили по файлам и следовали подсказкам, которые оставил для них разработчик, либо осуществляли поиск IP из нашей подсети (так делали самые хитрые!). Результатом поиска был zip-архив, имя которого – первый ключ задания.
Но у задания была еще и вторая часть! Содержимое архива — iOS приложение в непривычном виде (папка с форматом .app). Яблокоманы могли попробовать запустить его на iOS симуляторе, но мы решили сделать равные условия для всех и заставить участников реверсить! Приложение вытаскивало из NSUserDefaults логин и зашифрованный пароль, расшифровывало его и отправляло на сервер, а в случае корректности пароля получало ключ.
Восстановив пароль, участники столкнулись с еще одной проблемой: сервер постоянно отвечал им «Incorrect App». А хитрость была в том, что надо было подменить User-Agent на тот, который используется в приложении! Получить второй ключ удалось немногим, и даже наш победитель испробовал порядка 200 различных вариантов и только потом нашел верный (почитать write-up можно тут [11]!).
В этом задании мы решили заставить участников погулять по различным социальным сетям и осуществить OSINT [12] или, в некотором роде, «шпионаж» (именно от слова espionage и было образовано название планеты!).
Участникам выдавался архив с большим количеством фотографий и предлагалось заполнить анкету «участника космической экспедиции». Анкета была условно разделена на три блока и, как оказалось позже, для ее заполнения требовалось посетить 5 социальных сетей.
Самым сложным был первый шаг: как перейти от фотографий к профилю пользователя в социальной сети? Оказывается, если присмотреться к фотографиям, некоторые из них были сделаны около вполне себе космического места: NASA Tourist Space Center. Одна из близких по номеру фотографий (да-да, только одна!) хранила в своем EXIF географические координаты. Использовав их при поиске в популярной синей социальной сети (это Питер, детка!) можно было выйти на профиль пользователя, а затем, увидев, что он продаёт шикарный розовый скафандр, сообразить, куда двигаться дальше! Кстати, hackzard [13] написал отличный (и, что очень ценно, весёлый!) write-up [14] к этому заданию.
В качестве исходных данных участникам предоставлялся IP-адрес и намеки на использование «приоритетов». На указанном адресе располагался веб-сервер, функционирующий с использованием протокола HTTP/2 [15].
Изучив протокол HTTP/2 и его особенности, участники могли обнаружить технологию приоритезации HTTP/2-потоков. Генерируя свои запросы с различными приоритетами, сервер присылал различные ответы. После перебора 256 значений приоритетов, участники получали первый ключ и обнаруживали «проход» ко второму ключу — форму входа с полями для логина и пароля. Тут участникам предоставлялась возможность разработать собственный способ проведения boolean-based blind SQL-injection over HTTP/2 для получения второго ключа.
А здесь участникам в качестве исходных данных предоставлялся скомпилированный под Linux бинарник QEMU, при этом, во время компиляции было добавлено новое виртуальное PCI-устройство, что существенно затрудняло задачу поиска ключа.
Участникам также требовалось поломать голову над головоломкой судоку: ключом к заданию являлось сообщение, записанное с помощью ASCI графики, которое хранилось в массиве размером 16x256. Изначально данный массив был зашифрован, а решение головоломки судоку 16x16 и было ключом для шифрования.
Технология Intel и ее особенности — частая тема в докладах NeoQUEST (например, этого [16]и этого [17]!)!
Мы не сомневаемся, что многие наши участники практически «с пелёнок» умеют изучать дизассемблер машинного кода под архитектуру Intel и даже в уме вычислять, сколько памяти необходимо, чтобы замапить 16Гб адресного пространства в long-mode c PML4 по 2Мб. Но не одним Intel'ом прекрасен и разнообразен мир! Мы решили немного поностальгировать и вспомнили времена, когда небо было голубее, деревья больше, а макбуки были на PowerPC [18].
Участникам давалось 2 файла — образ PCI-Expansion ROM для QEMU и файл c бинарником PowerPC для IDA Pro. Наш PCI ROM всего-то запрашивал пароль… JNE на NOP и ВЖУУУУХ! Все готово! Пора с помощью веб-сайта пробовать загрузить свой пропатченный PCI ROM. Однако самые внимательные подмечали, что ROM проверяется на целостность, причем не стандартной 8-битной чексуммой, а неоквестовским алгоритмом контроля целостности! Тут уже приходилось браться за коварный и непонятный PowerPC и пытаться выяснить, как обойти контроль целостности и заполучить заветный ключ!
На «райской» планете в качестве отправной точки участникам давался адрес Web-сайта, на котором была размещена информация о четырёх учёных. По легенде, участникам требовалось получить информацию об учёном, отсутствующем на сайте, путем проведения SQL-инъекции.
Задача усложнялась наличием WAF [19], который блокировал опасные запросы. Участники были вынуждены формировать нетривиальные SQL запросы для обхода логики работы WAF. Фантазию участников мало что ограничивало, кто-то углубился в эксплуатацию BBbSQLi, а кому-то хватило и трюков с комментариями в запросе, чтобы повергнуть WAF на лопатки. Как с этим заданием справился hackzard [13], можно прочитать здесь [20].
Сайт с заданиями [2] будет доступен до апреля, так что время разобраться в них еще есть!
В соревновании приняли участие 1352 человека, хотя бы один ключ получили 80 участников. Как и в прошлом году, мы собрали изменения в нашей турнирной таблице в симпатичную гифку (на которую, конечно, не поместились все участники)
Также мы собрали статистику по сложности заданий и по тому, в какие дни участники NeoQUEST-2017 были наиболее активны!
Самым простым оказалось задание №5 планеты Espion, под кодовым названием «Мультипаспорт!» — хотя бы один из трех ключей, имевшихся в задании, получили 48 участников.
Самым сложным оказалось задание №7 планеты E-mu с мозговыносящим названием «Затерянные в додекаэдре»: его прошло всего 2 участника. В качестве второго по сложности идет задание №3 планеты Etheris «Граждане, храните деньги в криптовалюте!» — тут хотя бы один из двух ключей удалось добыть всего троим.
Теперь посмотрим, добыть какие ключи в «многоключных» заданиях оказалось тяжелее всего.
Проще всего для 48 участников оказалось получить первый ключ к заданию №5, однако чуть менее половины (20) тех, кто получил первый ключ, остальные ключи раздобыть не смогли.
Самыми непростыми ключами оказались вторые ключи к заданиям №3 и №4, при этом, если разница по числу получивших ключ для задания №3 оказалась невелика, то разница между теми, кто получил первый и второй ключи в задании №4, впечатляет: только двоим из 29 удалось получить оба ключа!
Всего за 10 дней соревнования было получено 212 ключей, и тут нам стало интересно: а в какие дни наши участники были наиболее активны?
Внезапно оказалось, что выходные дни прошли не особенно продуктивно, а наибольшее число ключей получено в понедельник и вторник (6 и 7 марта соответственно).
Online-этап соревнования окончен, и мы начинаем подготовку к летней «Очной ставке», которая состоится 29 июня в Питере! Посетить ее смогут абсолютно ВСЕ, даже те, кто не участвовал в online-этапе. Вход свободный!
Лучших участников online-этапа мы пригласим в качестве участников финальной восьмичасовой битвы за поездку на одну из международных конференций.
А в качестве гостей мы ждём всех-всех, кто интересуется информационной безопасностью! Берите друзей, коллег, и приходите/приезжайте/прилетайте. Мы гарантируем: круто, интересно, познавательно и весело будет АБСОЛЮТНО ВСЕМ! Доклады, конкурсы, real-time демонстрации атак, Twitter-викторина, крутые призы и общение, подведение окончательных итогов hackquest — всё это 29 июня в Санкт-Петербурге!
Автор: НеоБИТ
Источник [21]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/249865
Ссылки в тексте:
[1] NeoQUEST-2017: http://neoquest.ru
[2] планет-заданий: https://2017.neoquest.ru/
[3] VampiRUS: https://habrahabr.ru/users/vampirus/
[4] опубликовал : http://nightsite.biz/blog/19706-neoquest-2017-quals-1-greenoid-pochini-vozhdya.html
[5] GH0st3rs: https://habrahabr.ru/users/gh0st3rs/
[6] тут: https://habrahabr.ru/post/323656/
[7] читаем: http://nightsite.biz/blog/19707-neoquest-2017-quals-2-photonis-fotomaniya.html
[8] блокчейн: https://ru.wikipedia.org/wiki/%D0%A6%D0%B5%D0%BF%D0%BE%D1%87%D0%BA%D0%B0_%D0%B1%D0%BB%D0%BE%D0%BA%D0%BE%D0%B2_%D1%82%D1%80%D0%B0%D0%BD%D0%B7%D0%B0%D0%BA%D1%86%D0%B8%D0%B9
[9] Ethereum : https://ru.wikipedia.org/wiki/Ethereum
[10] рекурсивную атаку: https://geektimes.ru/post/277476
[11] тут: http://nightsite.biz/blog/19705-neoquest-2017-quals-4-ifetus-zapretnyy-plod.html
[12] OSINT : https://ru.wikipedia.org/wiki/OSINT
[13] hackzard: https://habrahabr.ru/users/hackzard/
[14] write-up: https://habrahabr.ru/post/323830/
[15] HTTP/2: https://ru.wikipedia.org/wiki/HTTP/2
[16] этого : https://www.youtube.com/watch?v=R4PcYiNwlHI&feature=youtu.be
[17] этого: https://www.youtube.com/watch?v=FlpL7W5axl0&feature=youtu.be
[18] PowerPC: https://ru.wikipedia.org/wiki/PowerPC
[19] WAF: https://www.owasp.org/index.php/Web_Application_Firewall
[20] здесь: https://habrahabr.ru/post/323778/
[21] Источник: https://habrahabr.ru/post/323838/
Нажмите здесь для печати.