Завершилась седьмая ежегодная обучающая программа Summ3r 0f h4ck. Мы придерживаемся прежнего намеченного курса и сегодня делимся итогами и впечатлениями участников.
Результаты прошлых лет можно найти здесь:
Summ3r of h4ck 2021. Итоги программы
Summ3r of h4ck 2020. Итоги программы
О программе
После нашего первоапрельского анонса (спасибо, что не посчитали его шуткой) желающие могли заполнить отборочные анкеты. В летней программе участвуют два отдела нашей компании – отдел анализа защищенности (занимается тестами на проникновение, аудитом веб-приложений и корпоративного ПО) и отдел исследований (reverse engineering, поиск уязвимостей в бинарных приложениях и устройствах). Чтобы получить приглашение на летнюю программу от первого отдела, достаточно было хорошо заполнить отборочную анкету. Коллеги из отдела исследований предпочли лично познакомиться с претендентами, перед тем как пригласить их поучаствовать в нашей программе.
Summ3r 0f h4ck заняла 4 самые летние недели. Участники слушали лекции, усваивали новые навыки в воркшопах, а главное – работали каждый над своей темой исследования вместе с кураторами. К сожалению, не все выжили добрались до защиты своих проектов, но мы надеемся, что выбранная тема достаточно интересна, чтобы довести исследование до логического финала уже в рамках личных целей.
В программе Summ3r of h4ck в отделе исследований упор был сделан на личное общение наставников и участников в ходе работы над исследованиями. Темы традиционно выбирались, исходя из того, что может быть полезно нам и сообществу: доработка или разработка инструментов, исследование новой или недостаточно изученной технологии.
Наставники поделились своим опытом, рассказали об эффективном использовании инструментов, разработке плагинов и отладке железа в рамках еженедельных лекций:
Введение в ресеч.
Разработка плагинов для IDA.
Атаки на bluetooth.
HIEW: приручаем сине-бирюзового монстра.
BlackMagic (плата Black Magic Probe).
Как поднять привилегии в Windows.
UEFI & Ghidra.
Загрузка x86.
В рамках стажировки мы стремимся не только поделиться своими знаниями, но и дать возможность получить практические навыки. Учитывая ответы на вступительную анкету в этом году, темой воркшопов, проводимых отделом анализа защищенности, стал аудит исходного кода веб-приложений. White box тестирование является неотъемлемой частью наших работ. Может показаться, что имея исходный код приложения, его намного проще анализировать. Как и везде, здесь есть нюанс. Для успешного white box тестирования необходимо обладать навыками чтения и понимания чужого кода, за короткий промежуток времени погрузиться в проект и понять что, зачем и почему. Кроме того, мы заметили, что с пентестом веб-приложений стажеры уже сталкивались, выполняя лабораторные или играя в CTF, а аудит мобильных приложений для многих – нечто новое. Поэтому для получения начального понимания этих работ на лекциях рассказывали про аудит Android и iOS приложений.
В рамках воркшопов демонстрировались различные уязвимости, а затем участники могли найти их самостоятельно. В части теории специалисты рассказывали о причинах появления конкретных уязвимостей и вариантах исправления. Каждый стажер получил архив с исходным кодом, который мог развернуть самостоятельно (чтобы воспользоваться debug-режимом) или «потрогать» приложения на специальном стенде.
В качестве самостоятельной работы стажерам отдела анализа защищенности был выдан исходный код другого уязвимого приложения на python. За найденные уязвимости в нем можно было получить баллы – за описание, указание места и причины, описание исправлений.
Что касается части исследований, она проходила в традиционном формате – стажерам предлагался список тем, также была возможность предложить свою (которой, к сожалению, никто не воспользовался). В итоге все ребята продемонстрировали свои результаты, и несмотря на то, что не у всех все получилось, результаты каждого из них имеют ценность и будут полезны в будущем.
Отзывы стажеров
По традиции мы попросили участников поделиться своими впечатлениями и ответить на вопросы мини-интервью:
Почему решили стажироваться именно в Digital Security? Чем привлекла вас компания?
Понравилась ли стажировка? Что особенно запомнилось? Насколько реальность совпала с вашими ожиданиями?
Расскажите о своей задаче/задачах.
Показались ли интересными задачи, над которыми вы работали в процессе стажировки? Было ли что-то, чем вы хотели заняться, но не удалось?
Готовы ли вернуться в компанию на стажировку или на работу? Что посоветуете начинающим?
Орфография, пунктуация и стиль авторов сохранены.
Владимир Феоктистов, тема исследования «WebView research»
1. Стажировка в DS привлекла меня 2-мя аспектами:
Сама компания давно на слуху, и я подумал, что было бы здорово получить свой первый опыт в техническом инфобезе именно в серьезной организации.
Порадовало отсутствие возрастного ценза и возможность поучаствовать в стажировке людям, скажем так, закончившим ВУЗ довольно давно.
2. В целом стажировка понравилась, хотя и стала для меня настоящим испытанием и источником дополнительного стресса :) Помню, как первый и самый сильный шок вызвал список тем для исследования: куда не взгляни, всё так или иначе связано с написанием кода, плагина, тулзы. И всего пару тем по исследованию, причем только 1 по «внутрянке», которую я так хотел представлять! И которая мне не досталась. В итоге ожидание несколько разошлось с реальностью и вместо углубления в вопросах, в которых я хоть немного понимал, я занимался исследованием темы, о которой услышал впервые. Хотя бы обработчик шеллкодов писать не пришлось :)
3. Я занимался исследованием WebView и ChromeCustomTab. Работу с ментором построили следующим образом: он задавал конкретные вопросы (например, «при каких условиях мы можем перейти по диплинку изнутри Webview?»), я искал ответы и проводил эксперименты в тестовом мобильном приложении. Предела не было: если получалось найти ответ и провести успешный опыт, появлялся следующий вопрос из тематики. Увы, ничем «крутым» похвастать не могу.
Главная сложность исследования заключалась в моём полнейшем незнании мобильной разработки и нулевым познанием java. Женя [мой ментор], если ты читаешь эти строки – дай Бог тебе здоровья и спасибо за ангельское терпение при объяснении мне базовых вещей.
4. В целом, исследование оказалось интересным. Когда я наконец смог преодолеть минимально допустимый порог понимания, начался настоящий ресерч с бесконечным гуглением англоязычных и китайских тематических форумов и экспериментами в тестовом приложении, которое же сам по ходу работы и «допиливал».
Лично мне хотелось бы поковыряться на каком-нибудь уязвимом стенде с Active Directory, провести разведку в домене, попробовать осуществить latmov, повышение привилегий и т.п. и послушать кейсы «бывалых» (грустные вздохи сожаления).
5. В ходе работы я ощутил конкретный дефицит своих знаний. Помимо досады это вызвало и азарт, желание разобраться и сделать что-нибудь годное. Поэтому, если позволят жизненные обстоятельства, я постараюсь в следующем году снова попасть на стажировку и на этот раз выдать стоящий результат.
В качестве совета начинающим могу лишь озвучить пару банальных истин: не ленитесь. Под лежачий камень вода не течет, а на стажировке вы можете получить полезный опыт и новые знания. И не бойтесь, пробуйте. Даже если результат вашей работы окажется «не очень», никто вас не освистает и не будет тыкать пальцем: в коллективе очень добродушная атмосфера.
Никита Густов, тема исследования «Использование админского ПО при пентесте»
1. Я пошёл на стажировку в Digital Security, так как меня привлекла доступность для начинающих специалистов опробовать свои навыки на пусть и небольшом, но настоящем проекте.
2. Стажировка в целом мне понравилась. Прошла спокойно и свободно. Лекции сменяли практические задания, а между ними надо было заниматься исследованием. Я ожидал системности и продуманности в плане проведения исследования, а меня отправили в «свободное плавание». Пришлось следовать советам интернета и с их помощью определять методы и направление изучения веб-приложения. Однако у меня неплохо получилось скооперироваться с напарником по проекту и достичь хорошего результата, чему я несомненно рад.
3. Моей главной задачей было исследование различных программных продуктов, которые предоставляют веб-интерфейс для системного администратора, на наличие возможностей продвижения по внутренней сети. Так как рассмотренные программы одни из самых популярных в своей сфере применения, то они уже хорошо изучены и протестированы, что оставляет нам, как исследователям, мало шансов найти что-то стоящее. Днями напролёт мы с напарником изучали функционал программ и внутреннее устройство. В один момент мы почти что впали в отчаяние из-за отсутствия результатов. Изо дня в день - пустота. Очередной тест на уязвимость закончился неудачей. В голове, а потом и в душе образовалась беспросветная тьма, грозившая поглотить нас изнутри. Всё стало невыносимым и ничтожным, мы словно оказались в чёрной дыре в самом холодном углу пространства. Но, как говорится, для того чтобы видеть, не нужны глаза. Поэтому мы обратились в глубины нашего подсознания и обратили свою болезнь в благословение, слепоту во внутреннее прозрение, и осознали, где надо искать и как смотреть. Не прошло и дня, как уязвимость была найдена. Все, кто дочитал до этого места - никогда не падайте духом, любая цель достижима при достаточном упорстве.
4. Тема проекта по началу меня очень заинтриговала. Я примерно понимал чем придётся заниматься. В процессе изучения я хотел сильнее углубиться в проект, но ментор вовремя меня остановил и напомнил, что стажировка длится всего 4 недели и надо предоставить хоть какие-то результаты.
5. Я бы с радостью вернулся в компанию Digital Security уже в роли аналитика отдела анализа защищенности. Совет - ничего не бойтесь и идите до конца. Все классные специалисты прошли через что-то подобное и совершали на своём пути множество ошибок.
Олеся Березовская, тема исследования «Уязвимости веб-фреймворков Vue.js»
1. Стоит начать с того, что это моя вторая попытка попасть на Summer of Hack. Сама компания привлекла меня еще на втором курсе бакалавриата, когда нам предложили проходить факультатив — курс на hacktory.ai. Меня порадовала возможность обучаться основам веб-безопасности на практике, с краткой, понятной теорией и интересными лабами. Затем ребята с потока начали тут работать, и от них я узнала о стажировке. В качестве практики на 4 курсе я также выбрала курс на hacktory.ai, только на этот раз он был посвящен безопасности Java, а затем попробовала свои силы во вступительной анкете.
За все время общения с теми, кто работает в Digital Security, я поняла, что здесь очень много крутых ребят, гармонично сочетающих работу с саморазвитием. Такое сочетание позволяет развить свои навыки намного лучше, чем каждая составляющая в отдельности.
2. На стажировке в отделе пентеста было очень интересно, потому что организаторы и спикеры применили практико-ориентированный подход. В тех случаях, когда это было технически реализуемо, студенты не просто слушали материал, а тут же пытались выполнить задание — найти уязвимость в коде или проэксплуатировать ее на реальном ресурсе. Почти всегда то, о чем рассказывали, можно было «потрогать руками», будь то сайт на PHP или приложение под Андроид. Естественно, не обошлось и без домашней работы — анализа приложения на Python, и, наверное, все эти возможности что-то сделать с помощью полученных знаний запомнились больше всего. Чего-то такого я и ожидала от стажировки в дсеке — и благодаря её организаторам совсем не была разочарована.
3. На стажировке я занималась исследованием фреймворка Vue 2 с точки зрения поиска и предотвращения уязвимостей. Помимо исследования в мои задачи входила разработка прототипа лабораторной работы для Hacktory, и к концу стажировки была завершена его первая версия.
Труднее всего, наверное, дались две вещи: инфраструктура проекта и сценарий атаки. Первое решилось горьким опытом и кучей кривых веток в нескольких заброшенных репозиториях, второе — длительным обсуждением наиболее «жизненных» багов с ментором.
На сегодняшний день крайне базовый сценарий усложнился и перешел в стадию реализации. Надеюсь, что совсем скоро проект будет интегрирован в курс.
Статья про уязвимости Vue 2 уже находится в публичном доступе, почитать можно здесь: https://github.com/catrsys/vue-2-article
4. Самостоятельно попробовав разработку на Vue, я оценила лаконичность этого фреймворка. Изучить его с точки зрения безопасности было увлекательно и полезно для будущих проектов, я смогла применить и дополнить свои знания по веб-безопасности как в плане атаки, так и в плане защиты.
Не хватило времени реализовать лабораторную работу в полном смысле, допилить сценарий и докрутить уязвимости — но это ближайшая перспектива, и разработка продолжается.
5. Думаю, многие ребята, как и я, стремятся к тому, чтобы работать в Digital Security. Летняя стажировка является отличной возможностью прокачать свои навыки и узнать что-то новое, поэтому я бы с радостью пришла на Summer of Hack в следующем июле. Прозвучит банально, но я бы посоветовала (себе в том числе) продолжать идти вперед и получать как можно больше удовольствия от саморазвития, стремясь к работе, которая будет приносить радость самореализации.
Андрей Кутузов, тема исследования «Restriction bypass checker»
1. Мне давно хотелось заниматься тестированием на уязвимости, я ходил на курсы, тренировался на различных площадках, искал, где можно найти практический опыт и… И, увидел новость о Summ3r 0f H4ck 2022. На этот момент я уже знал о Digital Security и не раздумывая отправил отклик. Получил тестовое задание, выполнил его и был приглашен на стажировку.
2. Мне понравилось все. Воркшопы и лекции были крутыми. К сожалению, посещать все я не смог и старался ходить на все лекции анализа защищенности, который выбрал для себя изначально, но я смог поприсутствовать на первой лекции отдела исследований и это было очень интересно. Что не хватило – онлайн трансляций или записанных лекций.
Жаль, что у меня не получилось остаться на «прощальную пиццу» ☹️
3. Мой проект «Restriction bypass checker» – это расширение для PortSwigger Burp Suite, с помощью которого можно тестировать и обходить различные фильтры XSS. Все началось с чтения «HowTo», документаций и гайдов. Потом, поиск похожих расширений на Git. Осложнилось все тем, что я более-менее знаком с Python, но Burp Suite и большинство расширений на Java, которую я могу читать, но точно не писать на ней. К счастью, возможность разработки расширений Burp Suite на Python есть, хоть в этом есть достаточно много недостатков («заточенность» Burp Suite и документации для Java, вывод ошибок и донастройка окружения). В итоге, хоть получилось и неидеально, но проект был сделан и выполнял почти все поставленные задачи. Остались мелочи, которые легко можно доработать, а быть может и дополнить функциональность расширения.
Проект доступен здесь: https://github.com/whoishacked/burp_xss_restriction_bypass_checker
4. В процессе стажировки был анализ приложения с уязвимостями, лекции на эту и другие темы, крутой проект. Что ж еще для стажера нужно?