Чем запомнились Volga CTF 2020

Всем привет! Меня зовут Маша, вместе с командой Jet CSIRT я помогаю крупным компаниям выстраивать защиту от злоумышленников. Помимо работы, учусь в Самарском национальном исследовательском университете им. Королева и помогаю в организации некоторых ИТ-мероприятий в своем городе. Недавно мне выдалась возможность побывать на Volga CTF — одном из крупнейших соревнований в области информационной безопасности, которые ежегодно проводятся в Самаре. В этом году мероприятие проходило с 14 по 18 сентября и отмечало свой 10-летний юбилей. На протяжении нескольких дней участники соревнования сражались за первенство, а представители бизнеса, образовательных учреждений, МИД РФ и ИБ-эксперты проводили для всех желающих семинары по актуальным вопросам и проблемам в сфере кибербезопасности. Под катом вас ждут подробности с мероприятия.

swhwgck4ig62g5q52pxj17se_i4.jpeg
В этом году в финал Volga CTF вышли 23 команды, 10 из которых из-за сложившейся эпидемиологической обстановки участвовали онлайн. Было много иностранных команд, в том числе из Австрии, Португалии, Канады, Тайваня, Туниса, Италии и Германии. Некоторые команды уже не в первый раз участвуют в этих соревнованиях и бывали в России на очном туре.

ub5lem4wrtr_tjzsopgwcpsu6j8.png

В первый день состоялось официальное открытие соревнований, за которым последовали доклады ИБ-экспертов. Владимир Кононович поделился, как путём реверс-инжиниринга ему удалось получить исходный код некогда самого популярного упаковщика данных для домашних компьютеров Amiga — PowerPacker Cruncher. Основной его задачей было получить код на С, конвертировав его из ассемблера. Спикер рассказал о самых сложных кейсах, возникших в ходе работы, рассмотрел нюансы циклов и переименования переменных в С по сравнению с ассемблером, а также подчеркнул сложность реверса без использования Ghidra с ее декомпиляторами.

lwcnmygyjpycc5irkgipkifr9sq.jpeg

skgogzpmu7icrvo0ca1vym5su14.jpeg

Илья Цатуров рассказал, как устроен язык запросов GraphQL, в чем он лучше Rest API, и как его неправильное использование в веб-приложении может создать множество ошибок и уязвимостей. Спикер перечислил варианты специфичных атак, например, Information Disclosure, Broken Access Control, DoS и Batching Attack, и способы их избежать. И если названия первых трех вариантов говорят сами за себя, то о Batching Attack лично я слышала впервые. Как оказалось, это тип атак, связанных с фичей Batching Queries, благодаря которой система может объединить в массив несколько запросов, пришедших за небольшой промежуток времени от одного пользователя, что при определенных обстоятельствах позволяет устроить своего рода брутфорс.

czxvepz2yh8fpnzosnukxyfvamw.jpeg

Николай Анисеня и Максим Костиков поделились опытом анализа защищенности банковских приложений, рассказали, как банки защищают деньги и личные данные пользователей и как злоумышленники могут эту защиту обходить. Из доклада спикеров участники мероприятия также узнали о багах аутентификации. Например, при двухфакторной аутентификации можно перебрать SMS-коды даже при ограничении количества попыток входа с одного IP-адреса, просто подменив его на стороне сервера. Были названы и некоторые логические уязвимости, в том числе неустойчивость к DoS-атакам и race condition (возможность при помощи множества запросов произвести несколько одинаковых транзакций). Спикеры также упомянули атаки на клиентскую часть мобильных приложений (к примеру, обход блокировки PIN-кодом при помощи брутфорса или отключения части интерфейса, что особенно актуально для Android-устройств) и рассказали, почему сливы банковских данных так важны.

53vpfyzxifb_wa_ob0kgmduuvvs.jpeg

p1tobujye8eevc8zyinn-illnmi.jpeg

Далее Никита Ступин в своем докладе подробно разобрал, как можно тестировать IoT-устройства, имея минимальные знания о бинарных приложениях и железе, и применять свои навыки, участвуя в программе Bug Bounty. Также он затронул тему радиохакинга, рассказав, что можно делать с интерфейсами, которые работают через Wi-Fi или Bluetooth. Например, у каждого устройства, предназначенного для продажи в Америке, есть FCC ID, с помощью которого можно узнать, на каких частотах оно работает. Спикер сосредоточился на использовании Bluetooth, так как на рассматриваемом им девайсе в качестве демона, запускавшего Wi-Fi, был опенсорсный hostapd, поиск уязвимостей в котором осложнялся существованием репозитория OSS-Fuzz.

«Я уже все посмотрел — вебку, беспроводные сети… Остались только бинарные приложения. И я хотел пофаззить», — рассказал Никита Ступин.


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

«Все это привело меня к тому, что вместо техники DBI (Dynamic Binary Instrumentation) я посмотрел в сторону Radamsa и начал фаззить, как это делали в 90-е или даже раньше, то есть это был Black Box Fuzzing».


qcs1qzojkuf0jwokcuaxuz8c3le.png
Фрагмент презентации

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

vjcjrvz-hy7wzfcx5o4zh1z3oqs.jpeg

Далее слушатели вместе с Денисом Макрушиным в режиме онлайн размышляли о том, что будет, если сервисы и автоматизированные контроли безопасности окажутся уязвимыми и будут использованы для атаки. Спикер рассказал об использовании GitHub для нахождения обходных путей подключения к коммерческим ИБ-решениям (например, Checkmarx), но не забыл и об опенсорсных проектах. Денис показал, каким образом open source может менять поверхность атаки, и привел примеры уязвимостей, найденных при анализе такого софта. В качестве одного из объектов для исследования он выбрал Flower — опенсорсный дашборд для менеджмента очередей в Python-скриптах. Последние могут хранить в оперативной памяти ценные данные и буферизовать их. При анализе этого инструмента докладчик нашел единственное поле, куда можно было ввести какие-либо данные, и даже оно содержало уязвимость.

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

avxk7cbvop3bhhva6vsf8rsdjdi.jpeg

7pvqnr5siaf4ojkg2r7parkwg6u.png
Фрагмент презентации

Следующим в программе первого дня был Anatol Prisacaru aka shark0der. В формате онлайн спикер рассказал об уязвимостях в смарт-контрактах Ethereum, об арбитражных ботах, атаках с опережением и затронул тему флэш-кредитов.

k-pt-a7th8tmgkqyqyh3p0c1l8i.jpeg

После перерыва Иннокентий Сенновский рассказал, чем современные реализации фаззеров отличаются от ванильного AFL. Слушатели познакомились с терминами AFLFast, MOpt, Entropic и узнали, как они влияют на фаззинг, и чем воспользоваться, если придумали, как улучшить фаззинг, но переписывать AFL не очень хочется.

c-nhe-jruri9syct8xbcio6cecw.jpeg

Завершающим выступлением был доклад Антона Кутепова и Ильяса Очкова. Спикеры рассказали (и немного показали), как с помощью open source проектов можно эффективно выявлять атаки, опираясь на данные из различных файлов логов. Используемый стек — ELK, Sigma rules, Atomic Threat Coverage, Sysmon, auditd. Лично мне как оператору первой линии реагирования на инциденты это доклад был ближе всего по профессиональной тематике.

slf4rft2dk0ihgmcjxn-fazrtu8.jpeg

luxkgqnautbsd4eqaimcyv17ibc.jpeg

На протяжении второго дня продолжался лекционный блок. Сначала спикеры Zen и Tuo рассмотрели актуальные и не очень контроллеры, вкратце описали способы взаимодействия с ними и рассмотрели основные способы их реверса.

jbzlh9t4xkzydmoyagwqzbxuz5a.jpeg

После этого Егор Валов рассказал, о чём часто забывают, когда строят защиту в организации, и чем это оборачивается, а Сергей Белов описал несколько кейсов из жизни форензиков и пентестеров, а также озвучил наиболее часто встречающиеся ошибки и подводные камни при проектировании веб-сервисов:

  • использование JWT (JSON Web Tokens) для сессий авторизации вместо старых добрых cookies;
  • отказ от использования адресов, целенаправленно выделенных под авторизацию;
  • использование библиотеки imagemagick без «песочницы»;
  • отсутствие изоляции доменов для контента пользователей;
  • старт сессий с one-time token (к примеру, приходящего на e-mail);
  • излишнее использование криптографии (например, написание своих алгоритмов);
  • использование соединений server-2-server при наличии реальных пользователей;
  • использование паролей (по словам докладчика, будущее за сервисами, которые используют одноразовые коды аутентификации, например, QR-код в WhatsApp или одноразовые ссылки, как в Medium).


difwapeb8o8psdzi2nmguyxhq6a.jpeg

Рамазан aka r0hack DeteAct рассказал о том, как выбирать программу для Bug Hunting, с чего начать ее изучение, а также описал эффективные способы нахождения багов и пару интересных кейсов.

jv3c3sydgsgrs5okp-8sfplkdpm.jpeg

Далее Lan рассказал, как правильно выбрать или самостоятельно сконструировать антенну. Вместе с участниками он рассчитал и сконструировал простую антенну, настроил и протестировал ее, а также сравнил её характеристики с фирменной купленной антенной.

mc7cxrgi7unr4yknwkrru49shkc.jpeg

После небольшого перерыва онлайн-лекцию провел профессор из Бельгии Tom Van Goethem. Он рассказал про новый тип временных атак, которые используют объединение пакетов по сетевым протоколам и одновременную обработку запросов приложениями.

abt8nsnrzblkko-f4gb24cslyk0.jpeg

Позже онлайн-эстафету перенял Dan Demeter. Он показал несколько интересных приемов, которые можно использовать с Yara, объяснил, как можно классифицировать образцы вредоносных программ и как с помощью этого улучшить процесс поиска угроз.

gueqtyekcw30-yrjvv9sa-ur0kk.jpeg

Александр Барабанов представил обзор и сравнительный анализ архитектурных подходов, используемых для реализации аутентификации и авторизации в приложениях с микросервисной архитектурой. В частности, рассмотрел типовые подходы к реализации межсервисной аутентификации, пробрасывания контекста внешнего субъекта и авторизации в коде микросервера.

f67x-l_cvwk3bkzjfsonuaouose.jpeg

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

gonzirojabq6xs-panwsqt17o2s.jpeg

fmuvd02egeod9_kqfhonfxuvnke.jpeg

yqpcescez9hmsaqy6tsexwwafp4.jpeg

hnmbslmxmvsyeknxbvmsqqf7mym.jpeg

bc_jsgdpji0zaf2rctepj_5k6de.jpeg

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

basxzkx6hjudaxolhqtz3glkl4g.jpeg

pzcdw5rfyuevfp-uqulqeow1qim.jpeg

ry1gini36adec7qkdgu94ljymdw.jpeg

Хочется отметить, что такой формат мероприятий — хорошая возможность для новичков, студентов и начинающих специалистов приблизиться к индустрии информационной безопасности. Принять участие в лекциях по актуальным темам, узнать о кейсах из практики опытных ИБ-специалистов и задать им свои вопросы — все это можно было делать на протяжении нескольких дней и в одном месте. Такие ивенты помогают ребятам, которые находятся только в начале пути, увидеть перспективы развития в сфере ИБ. Как начинающему специалисту мне бы хотелось, чтобы такие мероприятия проводились как можно чаще.

Автор: Мария Волгина, специалист группы обработки инцидентов ИБ Центра мониторинга и реагирования на инциденты ИБ Jet CSIRT компании «Инфосистемы Джет»

© Habrahabr.ru