Итоги online-этапа NeoQUEST-2020: выживали как могли



    NeoQUEST-2020 подошел к концу, и сейчас самое время рассказать про эти насыщенные две недели: раскроем суть заданий (но не всех, некоторые выйдут отдельными врайт-апами), покажем статистику их прохождения и объявим победителей!

    Внимание! Статья содержит спойлеры для тех, кто еще не проходил задания, но честно собирается (а такая возможность есть – сайт online этапа продолжает работать!).

    Не будем томить долгим вступлением. В этом году стали победителями стали:

    1. hellow0rld666, 1221 балл
    2. KARASIQUE, 1221 балл
    3. ch1sh1rsk1, 1085 баллов

    Трехкратное «ура» этим ребятам! Борьба за первое место развернулась нешуточная — лидер менялся чуть ли не каждый день. Также стоит отметить, что hellow0rld666 и KARASIQUE стали участниками, которые прошли ВСЕ наши задания! Мы не поверили своим глазам, но бывает и такое.

    Забавный факт: все задания, которые вызвали бурный интерес в первый день соревнования, были разработаны девушками :)

    Поясните по заданиям!


    На протяжении двух недель наш почтовый ящик support@neoquest.ru не переставал подавать сигналы о приеме входящих сообщений! Но мы этому только рады — это значит, что наши задания проходят и интересуют участников!

    Итак, что же у нас было в заданиях.

    Задание №1 — «Против взлома нет приема»

    Участникам была дана ссылка, переходя по которой они попадали на страничку с единственной надписью «Привет, мир!». Что мы делаем с самого начала в подобных случаях? Конечно же, лезем в исходный код страницы:



    to solve this Case use full power of GIT — так, вроде GIT — название известное. Но зачем же выделена еще одна буква? А если мы соединим их?.. CGIT?.. Точно, что-то такое слышал!

    CGIT — веб-интерфейс репозитория.

    Так, с этим разобрались. Переходим по ссылке 213.170.100.213/cgit, где ковыряемся во всех папочках, пытаемся найти ключ, но спустя энное количество часов времени понимаем, что дело тут в другом.

    А теперь люди делятся на две категории: на тех, кто слышал о громкой уязвимости cgit, и тех, кто не слышал.

    В любом случае, придется гуглить и найти CVE-2018-14912. Далее только ловкость рук и никакого мошенничества:

    213.170.100.213/cgit/cgit.cgi/my_repo.git/objects/?path=../../../../../../../etc/passwd
    Получаем файл с паролями, затем из него получаем первую часть ключа:
    NQ2020Gka2rFseNPexB4JsnP9k9RKulFVQDCcXwYy1aPKI+see more…

    Осталось найти вторую часть. Тут несложно: репозиторий содержит не так уж много файлов, путем перебора понимаем, что в них ничего нет. Но мы же находимся в репозитории Git, а это значит, что можно посмотреть все изменения, которые в нем были! Там же информация явно будет полнее…

    Заходим в diff, либо по указателю «see more», либо вручную находим «see more = e9a3c19a544e6589825fd643f4e6d5c1c4e9», конкатенируем с первой частью и получаем наш ключ!

    Задание №2 — «Разбери робота или у тебя л_apk_и?»

    Участникам дается apk-приложение, которое является файловым клиентом. Он связывается с сервером и получает зашифрованный файл по указанному имени. Необходимо разобраться с сертификатами и токенами доступа для того, чтобы получить ключ.

    Подробный разбор задания выйдет отдельной статьей!

    Задание №3 — «Sамый Qлёвый Lюк»

    В задании предлагается скачать архив, который содержит бинарный файл размером 1 Гб с говорящим названием memdump.bin, исходя из чего можно предположить, что это дамп оперативной памяти…

    Заинтриговали? Скоро выложим этот врайт-ап отдельной статьей, потому как наших участников это задание интересовало на протяжении всего NeoQUEST!

    Задание №4 — «Трудности частописания»

    «Изюминка» NeoQUEST-2020, задание, собравшее рекордное число восторженных отзывов на саппорте! Суть заключается в том, что звук из wav файла — ни что иное, как звук печатания по клавишам. Необходимо дискретизировать этот звук и провести частотный анализ!
    Более подробное объяснение задания будет опубликовано в ближайшее время.

    Задание №5 — «Эпилептические кривые»

    Условие задания:

    A = 119008536160574978629781290147818127606791827844670246888266509216288777541932
    B = 125173392763487646441684374997817715298134647755542804722568603162177610612799
    char_field = 137503105969312982065490544697816890680820287577287920391172791053955276754533
    P = (24588378651043317545653993517686345205594551142728198236546389666483449174897, 64035697994960793657311999090254655816706285115803662919872675661618460099464)
    Q = (70440277554855197417972068200756767916691677649413431083023577625869629031919, 72025841911476301630338043296901014469577623652063349003687337089744015808109)

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

    Дальше — дело техники: пишем код атаки, подставляем данные из задания, находим дискретный логарифм и радуемся полученному ключу!

    Задание №6 — «Скрытые телеграммы»

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

    Задание №7 — «Уравняй меня, если сможешь»

    Дана картинка:



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

    Метаданные картинки

    char_field = 2733425503484079885916437054066624513727898092580736050087
    base_point = (2003799601518383430823233516441563713038362096795740845531,2732921640345227083457754907818649009295467132857674744044)
    open_key = (1259834880846103046383661778550941435260068858903099332507,1686622613601304663126341188899964094370838010363453830341)
    secret < 4351098091135498422 ---> y^2 = x^3+Ax^2+Bx

    опять же намекают на эллиптические кривые, но как же они связаны с данным уравнением? Оказывается, связь есть! Найдя коэффициенты A и B кривой, мы сталкиваемся с новой трудностью: точки из метаданных картинки не принадлежат данной кривой. Что же делать? В надежде найти подсказку перечитываем легенду и видим упоминание «Twisted Sister». Эврика! А вдруг точки принадлежат скрученной кривой? Теперь дело за малым — осталось найти такую кривую, содержащую точки из метаданных. После перехода к правильной скрученной кривой применяем атаку Полига-Хеллмана и наслаждаемся своей проницательностью!

    Задание №8 — «Можно Ваш автограф?»

    По статистике NeoQUEST-2020, это задание является самым сложным, поэтому мы решили посвятить ему отдельную статью. Если вкратце, то необходимо выяснить, как на сайт загрузить неподписанный pdf документ. Для этого участникам нужно будет проэксплуатировать интересную уязвимость :)

    Задание №9 — «Посвяти себя программированию»

    «Не доверяй глазам своим» — такой девиз мы бы дали этому заданию. При скачивании файла с исходным кодом на языке Си кажется, что внутри находится лишь код, осуществляющий шифрование/расшифрование по алгоритму AES, но «не тут-то было» — скажем мы вам. Необходимо обратить внимание на наличие ошибок в коде, а также подозрительные пробелы и отступы. Мы же обещали эзотерику? Получите и распишитесь!

    Дело в том, что в данном файле помимо кода на языке Си находится также код на эзотерических языках программирования — Whitespace и Spoon! Код на языке Whitespace даст нам ключ, код на языке Spoon даст нам шифртекст. Теперь мы исправим допущенные ошибки в коде, запустим его с полученными данными и получим ключ!

    Задание №10 — «Being Human»

    OSINT в этом году старается не отступать от современных веяний! Мы создали образ робота, который хочет стать человеком и поэтому изучает человеческие повадки, и пустили участников по всем соцсетям, в которых данный робот засветился.

    Итак, участникам дается следующий текст:

    cHVibGljMTAxMTAxMTAwMTAxMDExMDAxMDAwMDAxMDAwMeKArA==. Два знака "=" буквально кричат: «да-да, я base64, раскодируй меня полностью!». Мы внимаем этому зову и получаем public1011011001010110010000010001. Далее превращаем бинарный код в десятичный, получаем public191194129. Очень что-то напоминает, верно?

    Находим Вконтакте группу, в которой робот собирает статистику и ответы людей. Вопросы на стене достаточно занимательные, однако нас интересует ссылка на ask.fm. Там также достаточно занимательные ответы на вопросы, но интересует нас ссылка на YouTube-канал . Тут мы узнаем, что наш робот пытается стать не только человеком, но еще и блогером! Осталось совсем чуть-чуть: проследить за подсказками на видео.

    Вид пароля подсматриваем в ежедневнике:



    Город мечты понятен из заставки рабочего стола — Париж. Имя питомца тоже не остается незамеченным — Rose. Любимую песню видим в одной из вкладок в браузере, а идентификатор написан на стаканчике с кофе.

    Ответ — Paris.Rose.Starlight.S3574mT

    Мини-задание №1

    В данном задании необходимо просто посмотреть в исходный код страницы, где находится фраза «People are making apocalypse jokes like there's no tomorrow. Who said that?». Ответ на этот вопрос находим в гугле — «Ellie».

    Мини-задание №2

    Скачиваем архив с записями текста, произнесенными ботом. Да только бот не просто читает книгу Стивена Кинга «Бесплодные земли», а читает с ошибками. Выписав пропущенные буквы, получим фразу «книга о распространении вируса». Однако это еще не ответ! Нам нужно найти какую-то книгу о распространении вируса. Но в задании уже есть подсказка, что автор у нас все тот же небезызвестный мистер С. Кинг! Правильный ответ — Противостояние (The Stand).

    Мини-задание №3

    Дан исполняемый файл. Необходимо получить из него хоть что-нибудь, желательно, конечно, ключ. Если его запускать, то ничего в ответ не выведется. Есть много вариантов развития событий, но правильный один — нужно извлечь строки из данного файла, которые сложатся в читаемый текст. Ответом на данном задание является название книги, откуда данный фрагмент извлечен — the hitchhiker's guide to the galaxy.

    Мини-задание №4

    Это задание представляет собой современную хакерскую интерпретацию логической задачи Эйнштейна. В ее решении нет ничего сложного, проще всего построить таблицу и посмотреть, как будут выполняться условия. Правильный ответ — RREKPA.#AC+P.EDWKU.LKPGM.MASLHAC — закодирован согласно условию.

    Мини-задание №5

    Задание Шредингера, одновременно простое и сложное. Простота здесь в получении ответа — всего лишь нужно отправить POST-запрос с параметром flag к серверу, который выдаст правильный ответ. Сложность заключается в том, что до этого нужно додуматься :) Но многие наши участники доблестно с этим справились, ура!

    Минуточка статистики


    Статистика этого года получилась следующей:

    • Количество зарегистрированных участников — 1266 чел.
    • Количество пройденных заданий — 10/10
    • Количество участников, прошедших хотя бы одно задание полностью – 110 чел.

    Распределение участников, нашедших хотя бы один ключ:



    А это график активности наших участников по дням соревнования:



    Закончим раздел статистики нашей традиционной гифкой:



    Поговорим о днях грядущих


    На данный момент мы планируем провести «Очную ставку» NeoQUEST-2020 в конце июня в Петербурге, но в сложившейся в стране ситуации возможны рокировки. Главное — не переживайте, мы обязательно встретимся с вами в этом году!

    Мы оставим самое крутое и любимое: доклады, воркшопы и демонстрации атак, и добавим новенького! Как и в прошлом году, NeoQUEST пройдет вместе с научно-технической конференцией «Методы и технические средства обеспечения безопасности информации»! Гости NeoQUEST-2020 узнают много нового о взаимосвязи науки и практики кибербезопасности, о важности научного research для специалиста по защите информации и о том, как с научной точки зрения работают современные механизмы защиты информации!

    Желающие смогут принять участие не только в NeoQUEST, но и в научных секциях конференции! Чтобы узнать подробнее про участие с докладом или воркшопом на NeoQUEST, пишите на на support@neoquest.ru, а подробнее про конференцию «Методы и технические средства обеспечения безопасности информации» узнавайте на объединенном сайте, по всем вопросам обращайтесь на mitsobi@neobit.ru.

    Впереди — write-up'ы нескольких заданий и активная подготовка к «Очной ставке»! Кстати, участники, прошедшие целиком хотя бы одно задание, — проверяйте почту, в скором времени начнем рассылку!
    НеоБИТ
    Компания

    Комментарии 2

      0

      Спасибо за весьма интересный квест. Немного моих комментариев.


      А если мы соединим их?

      Можно было просто wfuzz с правильным словарём взять ;)


      Но мы же находимся в репозитории Git, а это значит, что можно посмотреть все изменения, которые в нем были!

      Я использовал базу locatedb и вручную просмотрел файлы в домашней директории.


      Найдя коэффициенты A и B кривой, мы сталкиваемся с новой трудностью: точки из метаданных картинки не принадлежат данной кривой

      А это как? Я находил A и B через 2 точки кривой (базовая и открытый ключ). Простая система линейных уравнений.


      код на языке Spoon даст нам шифртекст

      О, а я реверсил байткод брейнфака. Не знал, что есть такой язык как Spoon :)

        0
        Можно было просто wfuzz с правильным словарём взять ;)

        Я использовал базу locatedb и вручную просмотрел файлы в домашней директории.

        Отличный вариант решения! Фантазия и предприимчивость наших участников всегда нас радовали :)

        А это как? Я находил A и B через 2 точки кривой (базовая и открытый ключ). Простая система линейных уравнений.

        Между кривой и уравнением из картинки есть связь (подробности в документе ami.uni-eszterhazy.hu/uploads/papers/finalpdf/AMI_43_from29to41.pdf). Зная N (в нашем случае это 7), кривая может быть задана уравнением:: y^2 = x^3 + (4N^2 + 12N − 3)x^2 + 32(N + 3)x.
        Вы правы, для решения этой задачи можно пойти и путем решения линейных уравнений — так даже быстрее получается :)

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

      Самое читаемое