Завершилась седьмая ежегодная обучающая программа Summ3r 0f h4ck. Мы придерживаемся прежнего намеченного курса и сегодня делимся итогами и впечатлениями участников.

Результаты прошлых лет можно найти здесь:

О программе

После нашего первоапрельского анонса (спасибо, что не посчитали его шуткой) желающие могли заполнить отборочные анкеты. В летней программе участвуют два отдела нашей компании – отдел анализа защищенности (занимается тестами на проникновение, аудитом веб-приложений и корпоративного ПО) и отдел исследований (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. За найденные уязвимости в нем можно было получить баллы – за описание, указание места и причины, описание исправлений.

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

Отзывы стажеров

По традиции мы попросили участников поделиться своими впечатлениями и ответить на вопросы мини-интервью:

  1. Почему решили стажироваться именно в Digital Security? Чем привлекла вас компания?

  2. Понравилась ли стажировка? Что особенно запомнилось? Насколько реальность совпала с вашими ожиданиями?

  3. Расскажите о своей задаче/задачах.

  4. Показались ли интересными задачи, над которыми вы работали в процессе стажировки? Было ли что-то, чем вы хотели заняться, но не удалось?

  5. Готовы ли вернуться в компанию на стажировку или на работу? Что посоветуете начинающим?

Орфография, пунктуация и стиль авторов сохранены.

Владимир Феоктистов, тема исследования «WebView research»

1. Стажировка в DS привлекла меня 2-мя аспектами:

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

  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. В процессе стажировки был анализ приложения с уязвимостями, лекции на эту и другие темы, крутой проект. Что ж еще для стажера нужно? ???? Разве что, я бы хотел увидеть реальную, актуальную задачу, над которой трудится команда, где нужно провести аудит и было бы круто сделать это вместе. Но, стажировка 1 месяц и скорее всего, на это времени бы не хватило.

5. Я хочу работать в сфере пентеста и сменить текущую деятельность. Поэтому, я думаю, что готов. Мой совет для начинающих коллег – тренируйтесь. Есть крутые площадки, PortSwigger Labs, TryHackMe, HackTheBox. Все они условно бесплатные и у первых двух – замечательная теоретическая база. Еще советую добавить в свой арсенал английский и какой-нибудь язык программирования.

Георгий Зайцев, тема исследования «Парсинг AMD PSP»

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

2. Сюда я ехал за темой, которая должна была «вывести» из зоны комфорта моих знаний, полученных в основном с CTF. Я получил такую тему и, в итоге, мне стажировка понравилась :) Правда не во всем реальность совпала с ожиданиями... Хотелось бы больше лекций по тематике ресерч-отдела и, в частности, по фаззингу.

3. Я должен был реализовать дампер стадии PEI (FV с PEICore) из прошивок UEFI, написанных под системы с технологией AMD PSP (аналог Intel ME). Самой основной проблемой было то, что открытой информации по этому со-процессору в интернете кот наплакал - буквально 3.5 источника. В итоге вся моя работа свелась к процессу «каждый день просматриваем 100 метров хексов в поиске внятных структур данных и их связей». Нашел основные секции с кодом, драйверами и т.д. и написал дампер PEI фазы - раздел с драйверами этой стадии лежали в одной из сущностей секции $BHD. Ну и исходники PSPTool в этом ресерче сильно помогли, хоть и авторы почти не документировали свои исследования и код. PSPTool умеет это делать, но я получил в качестве теста прошивки ASRock, в которых $BHD некорректно парсилась (почему - я в процессе выяснения).

4. Да, было интересно изучить подробнее работу UEFI, почитать ресерчи других людей на тему какой-то технологии, где вся документация под NDA. Подтянул свои навыки осинта и аналитики.

Изначально, помимо написания кода дампера, была еще идея допилить UEFITool на парсинг PSP секций. Но в сутках, к сожалению, только 24 часа и иногда надо поспать :(

5. Был бы рад вернуться и поработать, если бы жил в Питере. Может быть когда-нибудь, после сдачи диплома. А для начинающих коллег совет только один - брать нестандартные задачи, реальный опыт приходит в основном от решения проблем, с которыми раньше никогда не сталкивался и которые вызывают вопрос «а что, так можно было/такое вообще существует?»

Кирилл Магаськин, тема исследования «Добавление поддержки глобальных переменных в syms2elf»

1. Я решил стажироваться в Digital security в отделе исследований вдохновившись отзывами участников прошлых сезонов, также компания привлекла тем, что является совсем небольшой, при этом вносит большой вклад в мировое ИБ и даже организует собственную конференцию.

2. В целом, стажировку образовательную программу оцениваю на 7/10, запомнились доклады по hiew и IDAPython. Реальность была немного хуже ожиданий, так как в этом году не разворачивали виртуальную инфраструктуру для исследования на время стажировки + не совсем понравился формат обучения в отделе исследований: если в отделе анализа защищённости были лекции с практической частью, то в моем отделе были только лекции, материалы которых не выдавали в полном объёме для домашней отработки на практике (даже если очень попросить).

3. Я дорабатывал плагин под IDA Pro syms2elf, позволявший сохранять имена функций, которым мы даём осознанные имена, напрямую в таблицу символов ELF-файла (это удобно, если используешь разные декомпиляторы). Я же добавил такой же функционал для глобальных переменных.

Моя задача была небольшой в плане написания кода, но достаточно объемной в плане изучения материалов по устройству ELF и работе idaapi. Главная сложность, с которой я столкнулся-отсутствие внятной документации по idaapi и другим модулям ida+python, так что большинство функций приходилось либо искать интуитивно, либо спрашивать у наставника. Ссылка на проект: https://github.com/k1rpi7ch/mod_syms2elf

4. Задача была действительно интересной. До этой стажировки я даже не думал, что ELF файл, с которым сталкиваешься почти каждый день, имеет такое сложное строение, а ещё прокачал знание python. Во время работы над проектом выяснилось, что плагин хорошо работает только со стрипнутыми бинарями (без отладочной информации), если исполняемый файл обычный, то плагин создаст вторую таблицу символов. В будущем я продолжу работу над улучшением этого плагина, хотелось бы добавить опцию перезаписи таблицы символов в конец файла с удалением старой, а также добавить поддержку radare2.

5. Я бы ещё раз поучаствовал в образовательной программе для расширения своего кругозора и может быть попробовал бы себя в качестве полноценного сотрудника отдела исследований в будущем.

Мнения наставников

Не по другую сторону баррикад, а бок о бок со стажерами в исследованиях принимали участие и наши доблестные менторы. 

Даниил, тема исследования стажера «Создание плагина для Burp, аналогичного по функционалу https://github.com/alufers/mitmproxy2swagger»

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

Кроме основного проекта, ребята с интересом искали флаги в домашке и решали подготовленные для них таски, спасибо им за участие :) 

Ксения, помогала стажерам доработать поддержку переменных и портировать syms2elf под Ghidra/rizin

Накопив в определенный момент какой-то опыт, я ловлю себя на желании им делиться. Кураторство на Summ3r 0f H4ck 2022 показалось мне отличной возможностью попробовать свои силы, тем более что к лету мне как раз пришла идея темы для стажировки.

Было очень интересно ощутить себя частью процесса (того, как стажеры постепенно углубляются в новую для себя тему исследования, сталкиваются с трудностями, задают вопросы, делятся результатами), и помогать им разобраться во всём этом, а затем и достойно представить результаты. Также было круто узнавать что-то для себя вместе с ними, ведь в стремительно развивающейся сфере важно не стоять на месте и учиться постоянно.

Не бойтесь пробовать новое, объять непонятное, даже если какая-то задача не поддается с первой попытки, и не останавливайтесь в познании всего, что вам интересно!

Никита, тема исследования стажера «Эмулирование ESP32 при помощи Qiling framework»

Было очень интересно принять участие в Summer of hack 2022, поскольку я являюсь выпускником прошлогодней стажировки. Список тем от отдела исследований в этом году был достаточно широк и разнообразен. Мне понравилась тема по эмуляции SoC ESP32, который распространен в IoT устройствах, поскольку уже есть некоторый опыт по эмуляции устройств, и я мог бы поделиться своим опытом и решением всякого рода трудностей, с которыми я уже сталкивался. Тем более, это дополнительный шанс проявить себя и узнать что-то новое.

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

Сразу после постановки и объяснения задачи на стажировку, было предоставлено много материала про эмуляцию устройств, как практического, так и теоретического, чтобы лучше понимать, как все это работает под капотом. Для самой эмуляции был выбран Qiling Framework, который:

- предоставляет широкую функциональность, 

- написан на Python, что минимизирует трудности в имплементации,

- интересный ИБ сообществу проект.

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

В заключении хочется сказать, что каждый стажер проделал большую работу и продемонстрировал хороший результат. Поэтому стажировка в DSec – отличный способ проявить себя в области инфобеза.

Заключительное слово

Мы всегда ищем таланты, но также готовы делиться своими знаниями и поддерживать начинающих специалистов. Summ3r of h4ck был создан именно для этого. Нам было приятно поработать с ребятами, и надеемся, что это чувство взаимно.

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

Для тех, кто планирует присоединиться к нам в следующем году: отбор обычно открывается в апреле-мае. Следите за анонсами на сайте и в социальных сетях. Встретимся на Summ3r of h4ck 2023!

Комментарии (0)