Сегодня мы поделимся итогами четвертой по счету программы летнего обучения Summ3r 0f h4ck в нашей компании в отделе исследований.


За прошлые годы результаты можно почитать тут: 2016, 2017. Отдела аудита в отдельной статье тут и совместной статье за 2018.


Итак начнем с цифр, фактов и другой интересной информации.


  • 76 заявок со всей России и ближнего зарубежья
  • 10 отобранных кандидатов
  • Кандидаты представляли такие города как Саратов, Калининград, Ростов-на-Дону, Москва, Владивосток, Санкт-Петербург, Краснодар.
  • Университеты: СГУ (им Чернышевского), БФУ им И. Канта, ЮФУ, НИУ ВШЭ МИЭМ, Дальневосточный федеральный университет (ДВФУ), СПбГЭТУ, МТКП МГТУ им. Н. Э. Баумана, Санкт-Петербургский политехнический университет Петра Великого, КрУ МВД РФ.

За период обучения от нашего отдела с 15.07 по 15.08 были прочитаны лекции на такие темы как:


  • Введение в поиск уязвимостей в бинарных приложениях и по исходному коду
  • Статический анализ безопасности больших проектов с открытым исходным кодом
  • Восстановление символьной информации в процессе reverse engineering
  • Безопасность прошивок (о UEFI BIOS)
  • Знакомство с инструментом бинарного анализа Ghidra
  • Фазинг с помощью KLEE, libfuzz, AFL
  • Введение в атаки по сторонним каналам на микроархитектуру

Также один из студентов выступил с внутренней лекцией по теме “Обзор защиты с помощью виртуализации кода на примере VMProtect”. Спасибо ребятам за интересные вопросы, бурный интерес к лекциям. Отдельно стоит отметить, что посещать лекции могли студенты обоих отделов и участвовать в мини-CTF, о котором более подробно можно будет прочитать в статье от отдела аудита.


Что касаемо тем этого года, то были такие:


  • Трассировщик на базе аппаратных возможностей Intel процессора
  • Плагин для Clang Analyzer
  • Расширение возможностей Pigaios
  • Фреймворк для исследования безопасности прошивок uefi
  • State-based API fuzzing
  • Side-channel атаки на микроконтроллеры
  • Фреймворк для автоматического восстановления имен функций
  • Адаптация AFL фазера для работы с сетевыми приложениями
  • Декомпиляция eBPF в Ghidra

Стоит отметить, что в процессе работы над темой сама тема и ее направление порой эволюционировали и видоизменялись по тем или иным обстоятельствам. Можно сказать, что все ребята молодцы и постарались выжать максимум за этот довольно небольшой срок программы. Хотя самое главное это приобрести новые знания и опыт (и знакомства).


Важно понимать, что наша программа Summ3r 0f h4ck это обучающая программа, а не программа стажировки (хотя ради простоты некоторые ее так и называют). В процессе, ребята делают совместно с наставниками тему проекта, слушают лекции, решают разные лабы, получают различные советы по разным аспектам ИБ и, конечно, ответы на свои вопросы.


Перейдем как всегда к нередактируемым отзывам наших студентов о их месяце внутри нашей компании (кто их захотел публиковать).


Вопросы для мини-интервью были такими


  1. Почему решили стажироваться именно в Digital Security? Чем привлекла вас компания?
  2. Понравилась ли стажировка? Что особенно запомнилось? Насколько реальность совпала с вашими ожиданиями?
  3. Расскажите о своей задаче/задачах.
  4. Показались ли интересными задачи, над которыми вы работали в процессе стажировки? Было ли что-то, чем вы хотели заняться, но не удалось?
  5. Готовы ли вернуться в компанию на стажировку или на работу?

И вот какие ответы дали некоторые из студентов


Новосельцева Алёна



  1. Digital Security – ведущая компания в России в области ИБ с самой крупной и дружной командой реверсоров. Всегда хотелось попасть в среду людей, близких тебе по духу. Здесь настоящие профессионалы, и у них многому стоит поучиться. Тем более, что в моем крае нет подобных компаний и вообще сообществ, которые хоть как-то бы касались реверс-инжиниринга.
  2. Стажировка очень понравилась. Самое потрясающее – атмосфера, в которой работает компания. Особо внимательные ребята согласятся со мной – на столах у сотрудников не было ни единой бумажки, кроме собственного блокнота с мыслями и идеями. Это о многом говорит, и огромнейшая редкость в нашем бюрократическом мире!
    Тебе предоставляют наилучшие условия для работы – тишина, уют, и самое главное – люди. Сотрудники и их исследования очень вдохновляют. Очень понравилось работать над проектом в команде с наставниками – мы решали проблемы и днем, и ночью, вместе искали решения, вместе радовались, когда что-то получалось. Я давно не испытывала такого счастья. Саша, Коля – низкий вам поклон.
  3. Моей исследовательской работой была разработка на языке Sleigh системы трансляции байткода eBPF в pCode для возможности проводить дизассемблирование, а также декомпиляцию. Нужно было разработать расширение для Ghidra, которое позволило бы дизассемблировать и декомпозировать eBPF-программы. Пришлось освоить язык процессорной спецификации Sleigh, разобраться в особенностях архитектуры eBPF и взаимодействии eBPF-программ с ядром, получить опыт разработки расширений для Ghidrа и работы с Eclipse, и многое другое
    Задача выполнена успешно! Проект находится в открытом доступе и опубликован на Github. Результат можно протестировать любому желающему, скачав сборку расширения из репозитория по ссылке ниже. Более подробно можно ознакомится в отдельной статье.
  4. Да, задачи были сложными и интересными, безумно понравился сам процесс разработки и работа в команде. Очень хотелось бы изучить тему автоматического анализа программ и поиска бинарных уязвимостей еще глубже, интересно символьное исполнение.
  5. С огромным удовольствием! Поскольку в университете предстоит еще учиться несколько лет, то буду готовиться для следующей стажировки! На работу – безусловно и по скорее бы уже

Ссылка на проект


Буковский Виктор



  1. Решил стажироваться в Digital Security потому, что это компания являлась организатором моей любимой конференции по ИБ — ZeroNight.


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


  3. Моя задача заключалась в написании плагинов для IDA PRO 7 при помощи Hex-Rays API. Задачей одного из них было выведение в специальную таблицу (Рис. 1) функций, которые в себе содержали небезопасные на усмотрение исследователя функции (тавтологию обойти не удалось). Целью другого, можно сказать, основного на этой стажировке плагина, было восстановление имен функций из стрипнутых ( -s ) исполняемых файлов при помощи вспомогательной информации. В моем случае имена функций мы брали из параметров, которые передавались функции ведения лога (Рис. 2).



  4. Задачи для меня были абсолютно нетривиальны, что только подогревало интерес к их выполнению. По иронии судьбы я был одним из немногих счастливчиков, которым выпала честь работать с тремя кураторами. В начале это был Артем, который ввел меня в эту тему, подготовил Bitbucket для хранения проекта, доску в Trello, с начальными задачами и целями, и также рассказал, как работать с языком разметки Markdown. Затем моим куратором стал Дмитрий Евдокимов, который в недалеком прошлом уже имел дело с восстановлением имен функций, навел меня на нужные мысли и более глубоко раскрыл проблему. Ну и крайним моим куратором стал Борис Рютин, человек, проводивший со мной собеседование и благодаря которому я и оказался на этой стажировке. С ним я уже получал точные задачи, направленные на получение необходимого результата. Все происходило в очень бодром темпе, и все, что мы запланировали, было осуществлено, за что еще раз огромное спасибо.


  5. На счет стажировки не уверен, так как месяца в этой компании мне показалось слишком мало. Хочется оставаться в ней как можно дольше, поэтому да, я готов вернуться на работу.



Ссылка на проект: https://github.com/o0Starley0o/HexRaysPlugins


Пожелал остаться неизвестным


  1. ZeroNights / были знакомые
  2. Естественно, очень понравилось. Ожидания были оправданы и даже больше.
    Первое что стоит отметить, это тема, которой я занимался. Я планировал посмотреть что-то, что не смог бы (не стал бы) делать в домашних условиях и, собственно, тема идеально этому соответствовала.
    Хотя я не могу сказать, что уделил ей достаточно много времени, результатом и полученными в процессе знаниями я полностью доволен (по факту — чуть больше недели и основной результат был получен=).
    Радует, что на любой вопрос вопрос по теме можно было сразу получить ответ у наставника (и ответный вопрос "хочешь попробовать/изучить подробнее?").
    Второе — это много интерестных людей вокруг, не только из сотрудников, но и из стажеров, по которым можно судить о будущем ИБ.
    Третье — пентестеры сделали очень крутую подборку машин с уязвимыми настройками/сервисами (от xss тасков с ботами, поднятия привелегий, до последовательного захвата доменного админа).
    Всем позволили играть и это стало отличным развлечением на еще 2 недели. Те, кто не уделил ей достаточно любви, очень сильно просчитались.
    Четвертое — лекции, было приятно заполнить пробелы в знаниях или открыть что-то новое для себя.
    Реверсерские лекции почти все были очень серьёзные, у пентестеров раздавали еду и были интерактивные задания.
  3. Задача о снятии трассы исполнения в режиме SMM (ring-2). Включить трассировку из менее привелигированного режима нельзя, нужно чтобы сам код SMM её включил. Естественно, он этого не умеет делать.
    Сделали патч, закинули его в SMM (для этого потребовалось перепрошить UEFI) и уже с помощью существующих средств (WinIPT) смогли записывать то, как происходит исполнение кода в SMM.
  4. Сейчас такое огромное количество технилогий, что невозможно просто брать и пробовать все подряд. Всегда нужен стимул или задача, которые станут причиной взглянуть на что-то новое.
    Потом уже появляюется естественное желание "А могу ли я использовать эту технологию для своих задач? может с ней будет проще/эффективнее?".
    Поэтому я доволен своей темой.
    Стоило все-таки довести проект до хотябы примитивного фаззера. Это еще одна из тех вещей, что у меня не получается попробовать без внешнего стимула.
  5. no comment

Хабаров Олег


  1. По-моему мнению, в России компании, которые используют реверс-инжинииринг в профессиональной деятельности — единицы, а те, которые используют его для нахождения уязвимостей, а не для анализа вирусов, еще меньше — Digital Security и Positive Technologies.
  2. Стажировка помогла сформировать ориентиры, куда стоит двигаться, если хочешь быть ресёрчером, а не абстрактным "специалистом по ИБ". Запомнилось какие были относительно простые лекции по пентесту и грузящие голову лекции от реверсеров.
  3. Моей задачей была доработка инструмента реверс-инжинириинга Pigaios. Его цель — нахождение функций open-source библиотек в статически скомпилированном бинарнике путем сравнения. Однако я занимался не самим механизмом сравнения, а доработкой той части функциональности, которая извлекала из исходников определения структур, типов, объединений и т.п. В итоге я доработал парсер этих элементов и добавил поддержку для проектов, которые собираются с помощью make. Решил не заниматься интеграцией этих доработок в Pigaios, а создать отдельный инструмент, потому что его отдельно разбирать легче, чем копаться в коде Pigaios.
  4. Не скажу, что мне понравилась задача, но она позволила улучшить понимание кода на Си, и благодаря этой задаче я узнал, что можно заниматься парсингом си-кода не разбираясь в теории компиляторостроения, а просто использовать libclang. Поэтому вряд ли буду дорабатывать свой инструмент. Если кто захочет, то я старался писать чисто и оставлял везде комментарии.
    Благодаря лекциям от реверсеров я осознал чем хочу заниматься, а именно динамическим бинарным анализом (фаззингом, инструментацией).
  5. Буду рад, если в будущем получиться устроиться на работу в Digital Security, так как там очень много профессионалов своего дела.

Ссылка на проект: https://github.com/Barkhat26/decl-exporter


Забелина Маргарита


  1. Я уже прежде проходила стажировку в другой компании в качестве сотрудника службы ИБ. Там мне приходилось больше заниматься вопросами веб-безопасности. Но в цтф команде я всегда решала реверсные таски, часто из интереса читала про бинарные атаки. Мне стало интересно посмотреть как работают реверсеры, посмотреть, как я буду справляться с такой работой. Плюс интересно было посмотреть на DSEC изнутри.
  2. Стажировка хорошая. Больше всего понравились лекции. Т.к. почти всё время ты занят проектом, возможность отвлечься и порешать маленькие таски, очень освежает голову. Плюс я узнала много новых вещей, где-то закрепила старые знания.
    Ожидания/реальность вполне совпали.
  3. Я занималась реализаций чекера для Clang Static Analyzer. Задача не рокетсаинз, но полученные наработки, я могу применить для своей дипломной работы. В первую очередь мне предстояло познакомиться с инструментом, посмотреть что может clag'овская либа, научиться собирать простые тестовые чекеры. Далее было решено, что я возьмусь за реализацию чекера для детекта integer overflow. Идея такого чекера была указана в списке потенциальных чекеров clang'а, я подумала, что вещь полезная и взялась. Мною был выбран подход с анализов AST и проверкой cast'ов. Но такое решение определяет только потенциальные переполнения. Для точной проверки можно использовать taint анализ и SMT solver'ы. Готовых инструментов для работы с taint'ом в либе нет, были наработки других исследователей, которые я взяла в основу. К сожалению, я не успела закончить свою задачу за месяц, но я собираюсь закончить проект в рамках дипломной работы.
  4. Сама идея, что ты реализуешь то, что потом будет применимо и полезно в реальной работе, уже подогревает интерес к проекту. Хочу переписать taint чекер, чтобы потом его можно было использовать не только в моём проекте.
  5. Команда DSEC отличная, все специалисты крутаны. На работу я бы пришла. Но на стажирвоку снова не хотела бы, менторство подкачало на мой взгляд. Учитывая что у нас был всего месяц, в нужное время от ментора фидбека я не получала. И потратила много времени на самостотельные копания, хотя могла получить ответ от опытного наставника. Просто если нет менторства, то зачем мне стажировка, я могу сама дома пилить свой проект.

Ссылка на проект: https://github.com/dR3m/IntOverflow-CSA-plugin


Санкин Никита


  1. Digital Security привлекла темами проектов и отзывами участников с предыдущих стажировок, а также множеством статей на Хабре, написанных сотрудниками. Вообще, из поста на Хабре я и узнал о стажировке. Ещё было желание сменить обстановку, пройдя стажировку в другом городе и попробовав проекты, которыми не занимаюсь на основной работе.
  2. Стажировка прошла не так, как я ожидал, по большей части благодаря неудачному съёму квартиры, что помешало сосредоточиться на проекте и сделать всё в срок. Кроме того, поначалу смутило, что задача была больше про написание кода, нежели про исследование, но тут наверное дело в несовпадении ожиданий и других личных факторов
  3. Нам требовалось реализовать фреймворк по тестированию уязвимостей прошивки UEFI на основе существующего решения chipsec. Проблема была в том, что поддерживать код chipsec трудно, поэтому нужно было всё красиво переписать на python 3.x и, возможно, добавить какой-то новый функционал.
  4. В задаче мне показалось интересным не столько писать код, сколько изучать технологии, с которыми приходилось работать. Хотелось дописать проект до стадии HAL (hardware abstraction layer) и доскональнее изучить работу hardware-устройств и их интерфейсов. К сожалению, этому помешали причины, указанные в пункте 2, но я планирую продолжить проект и после стажировки.
  5. Готов вернуться на стажировку либо чтобы доделать и показать нынешний проект, либо если встретится интересная идея. Однозначно рассмотрю компанию одной из первых при трудоустройстве в Питере, но на данный момент мне это не нужно.

Комаров Никита


  1. Я уже какое-то время следил за Digital Security, началось это с момента, когда я впервые услышал о Zeronights, подумал, что такое может сделать только действительно крутая компания. Не сразу, но заметил, что проводятся стажировки, однако поехать сначала не смог. В этом же году случайно увидел, что на рекламном постере прямо по центру находится мой неизвестно как попавший туда хороший друг, подумал, что это отличный знак, чтобы, наконец, посетить стажировку.
  2. Вышло действительно интересно, а главное время постоянно было чем-то наполненно. Запомнились, конечно, доклады и сервис с вулнбоксами. На самом деле не ожидал, что будет так много всего, каждый вечер было чем заняться помимо основного проекта, это хорошо разбавляло атмосферу и давало разнообразие в задачах.
  3. В рамках стажировки моей задачей было написание фреймворка по тестированию безопасности uefi. Тема интересная, особенно учитывая то, что в рамках обычной деятельности мне еще не приходилось так глубоко погружаться на этот уровень абстракции.
  4. Задачи были, безусловно, интересными, скорее всего, от того, что приходилось узнавать много нового или давным давно забытого за ненадобностью старого. К сожалению, были вещи, которые не успелись, зато теперь есть стимул продолжать работу над проектом в течение года.
  5. Надеюсь посетить стажировку и в следующем году. Спасибо вам большое.

Уваров Кирилл



  1. Читаю блог компании на Хабре. Поэтому это первый вариант был, где можно было пощупать сферу изнутри
  2. Стажировка понравилась. Понравилась атмосфера очень. Я раньше не был связан с безопасностью никак. Поэтому очень хотелось все самому потрогать "руками".
  3. Занимался атакой по сторонним каналам на микроконтроллеры. Реализация криптоалгоритмов, анализ энергопотребления и получение ключа.
  4. Задача очень близка к моим интересам, поэтому занимался темой с удовольствием.
  5. Благодаря стажировке, я знаю, куда надо развиваться, так что однозначно готов вернуться в компанию:)

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


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


Ждите анонса Summ3r 0f h4ck 2020 в следующем году!


P.S. Позже по ряду проектов ребят мы опубликуем их отдельные технические статьи.

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