Summ3r 0f h4ck: результаты летней стажировки в Digital Security

8sj5frhsxnfpi-pvfkxgjrc82mq.jpeg

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


И сегодня мы расскажем, как прошел наш Summer of h4ck 2018.
Как показывает практика, основной поток стажёрских резюме приходит в отдел анализа защищённости; желающих провести лето в Digital Security снова было много, и поэтому мы создали специальную анкету для кандидатов, которая была доступна на нашем сайте. Претенденты должны были поднапрячься и продемонстрировать не только свои знания и навыки, но и желание профессионально развиваться. Благодаря этому мы смогли оценить уровень подготовки будущих стажеров и выбрать самых достойных из них. Кроме того, в этот раз компания Digital Security сосредоточилась исключительно на офисной стажировке — удаленный вариант стажировки мы не рассматривали.

Краткая информация

Сотрудники отдела анализа защищённости ломают соседский Wi-Fi проводят тесты на проникновение в корпоративных сетях, анализ защищенности веб-приложений и корпоративного ПО, а также пристально вглядываются в исходный код, в том числе мобильных и банковских приложений.

Сотрудники отдела исследований же решают задачи, связанные с reverse engineering’ом, поиском и эксплуатацией уязвимостей, системной разработкой и аудитом С\С++ кода; ведут исследования и в области machine learninig, blockchain и других интересных областях. Команда активно занимается разработкой плагинов, скриптов, инструментов для автоматизации поиска уязвимостей как в статике, так и в динамике (fuzzing).

Кого мы ждали? Любителей интересных задач, не пасующих перед трудностями и влюблённых в то, чем они занимаются!

Введение

Мы рады были вновь увидеть в списках кандидатов на стажировку знакомые имена и фамилии — кое-кто уже был у нас в гостях в прошлом году, и им всё очень и очень понравилось :) Такую инициативу компания только поддерживает. Кроме того, если ты приходишь вновь, ты получаешь больше фирменного DSec-мерча!
ietgjkslcgq_ecolo7wf_xbsx8q.jpeg
Вот такие подарки мы приготовили в этом году

Немного поподробнее о процессе отбора. На нашем сайте были выложены электронные анкеты: анкета от отдела исследований позволяла получить первоначальное представление о навыках потенциального стажёра в реверсе, а в анкете от отдела анализа защищённости было десять небольших заданий, которые можно/нужно было решить. Мы не требовали решения всех заданий, но чем больше правильных ответов давал кандидат и чем лучше объяснял ход своих рассуждений, тем больше внимания он получал при оценке. Впрочем, это не значит, что попасть в отдел исследований было проще:) Вместо подробной анкеты сотрудники предпочли проводить очный этап собеседования, где выясняли подробности об уровне подготовки в личной беседе.
Как и раньше стажерам предлагался список тем, которыми они могли бы заняться во время прохождения стажировки. Кроме того, ребята могли предложить и свою тему, мы всегда готовы были их выслушать.

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

В число лекций входили:

  • Active Directory Security Audit
  • Устройство сетей и сетевых протоколов
  • Web уязвимости
  • Повышение привилегий в Linux и Windows
  • The exposure of Intel 64 architecture
  • Исследование больших C++ проектов на примере Chromium
  • Восстановление имен функций в условиях отсутствия символьной информации
  • Инструментация кода
  • SMT, Z3, SSE, DSE, …
  • И другие…


В завершении Summ3r 0f h4ck участники проводили лекции уже для нас — они рассказывали, удалось ли достичь поставленных целей, с какими трудностями столкнулись во время исследований и к каким результатам их привела стажировка. Всем успешно дошедшим до финала выдавался сертификат участника Summ3r 0f h4ck 2018. Кое-кто из стажёров предпочёл объединиться в команды и работать сообща, и такое стремление мы, конечно же, только приветствовали.

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

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

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


И вот какие ответы дали некоторые стажёры:
Павел Князев, тема «Taint-анализ архитектуры ARM»:

  1. Уже после окончания второго курса я понял, что мне не хватает навыков в ИБ. Хотелось не просто послушать курсы, а поработать руками. Первое, что мне попалось — это статья про Summer of H3ck от Digital security на хабре. Имея почти нулевой опыт, я решился пойти.
  2. Стажировка понравилась. Просторное помещение, большой стол и тишина — мне предоставили рабочее место в комнате для стажеров. Неподалеку сидит еще пара стажеров — трудяг. Время от времени к нам подходят наставники, чтобы обсудить планы, дальнейшие действия. Они всегда готовы что — то объяснить, подкинуть нужную ссылку. Особенно запомнилась легкость общения с ними — просто Антон, Саша, Дима. Можно на время позабыть, что перед тобой сидит большой босс, и просто поговорить.
  3. У меня была, как мне кажется, весьма экзотическая тема: «Taint-анализ ARM архитектуры». Учитывая то, что ни про taint — анализ, ни про ARM архитектуру толком ничего не знал, я был «несказанно рад» тому, что мне выпала такая тема. Для начала нужно было разобраться c отличиями ARM от x86 (только с ней и был знаком), изучить ассемблер этой архитектуры, режимы адресации. Затем нужно было разобраться с существующими средствами, которых… не оказалось. Вернее сказать, они были, однако одно средство не подходило для задач ИБ, второе не обладало достаточной гибкостью, функционалом, а третье — библиотека DrTaint — только недавно начала свое существование. Моей задачей стала доработка этой библиотеки. Тут меня ждал приятный сюрприз: библиотека DrTaint основана на DynamoRIO, а его я немножко, но знал. Несмотря на то, что DrTaint была совсем небольшой, на изучение исходного кода и понимание принципов её работы ушло почти две недели. Лишь только после этих двух недель я почувствовал, что не иду ко дну. Прошла еще неделька, и все начало налаживаться. Я перестал бояться и начал изменять исходный код. Если что — то шло не так, то DynamoRIO сразу мне об этом докладывал своим падением. В результате стажировки мне удалось найти и исправить несколько ошибок в библиотеке, добавить новые возможности, продемонстрировать её работоспособность. Под конец я с удивлением осознал, что разбираюсь в DBI и ассемблере для ARM.
  4. После того, как я узнал, что taint-анализ облегчает работу ревёрсеров и даже помогает обнаруживать уязвимости в ПО, разработка DrTaint по-настоящему меня заинтересовала. Мне вполне хватило того, чем я занимался.
  5. Собираю вещи.


uwbecdoeel-sirsn0qq7qz5n49i.jpeg
Результаты taint-анализа

Евгений Лукин, тема «Golang Social Bot»:

  1. Тем, что ДСек нормально относится к студентам и позволяет им поработать с реальными рабочими проектами. К тому же давно наслышан о компании и знаю, что в ней работают классные люди
  2. Наверное было даже лучше, чем я думал. Понравилось, что все из отдела могут подсказать почти по любой теме и если есть проблема, то решить ее. Ожидал больше формальностей, если так можно выразиться
  3. У меня была тема Golang Social Bot. Данный бот используется при проведении тестирования на проникновение. Основной целью было написание модулей, которые собирают необходимые данные, например пароли, файлы конфигураций и файлы в принципе, позволяют взаимодействовать с файловой системой. Также необходимо было продумать закрепление в системе и сетевую работу внутри корпоративной сети.
  4. Да, как я сказал, я писал модули. И хоть и была проделана большая работа, но осталось много чего задуманного
  5. Да, тут работают крутые люди, у которых можно многому научиться.


С частью работ можно ознакомиться здесь.

Дмитрий Фролов, тема «Доработка UEFITool New Engine»:

  1. Почитав отзывы от стажёров предыдущих лет, я понял, что меня здесь ждут интересные проекты, связанные с ревёрсом. И я не прогадал.
  2. Стажировка очень понравилась, и реальность превзошла все мои ожидания. Очень дружеская обстановка в коллективе создавала благоприятные условия для работы над проектом, и решение поставленных передо мной задач приносило одно удовольствие.
  3. Меня довольно давно интересует обратная разработка различных низкоуровневых штук, в частности BIOS, поэтому задачу я выбрал соответствующую. Она заключалась в доработке программы UEFITool NE, которая предназначена для работы с образами UEFI BIOS. Приписка NE означает New Engine: некогда оригинальный UEFITool было решено переписать, и так появилась на свет его новая ветка NE. Но UEFITool New Engine пока не поддерживал возможность модификации прошивки с последующей её пересборкой, как это было в оригинальной ветке, и передо мной стояла задача эту функцию вернуть, да еще и добавить возможность модифицировать разделы NVRAM (поддержки которых в старой тулзе и в помине не было). С задачей я справился и выполнил еще парочку дополнительных (например, нужно было добавить возможность парсинга некоторых заковыристых структур). Мы с моим куратором связались с разработчиком тулзы, и в скором времени предстоит отправка pull request.
  4. Задачи очень интересные. В процессе их решения я получил очень хорошую базу знаний в области BIOS, и я хочу продолжать её развивать.
  5. С удовольствием бы вернулся как на стажировку, так и на работу.


dpsxt0pkg35skbtxi4-rwm7s2ca.jpeg
Обобщённая архитектура доработанного UEFITool New Engine
Ход принятия pull request в основной репозиторий UEFItool можно посмотреть здесь.

Тема «Cisco Config Analysis Tool»
Следующие стажеры работали в группе над общей темой «Cisco Config Analysis Tool». С результатом их работы можно ознакомиться здесь.
Наталия Ходукина:

  1. Давно слышала о компании как об одной из ведущих в сфере информационной безопасности в России.
  2. Понравилась, и реальность полностью совпала с ожиданиями. Так вышло, что над темой мы работали втроем, поэтому кроме практических и теоретических навыков, я училась работе в команде. В обсуждениях рождались новые идеи и решения, кроме того мы помогали друг другу находить и исправлять ошибки и недочеты, делились своим (небольшим) опытом и получали новый. А еще было приятно общаться с сотрудниками, все они старались донести информацию в максимально понятном виде, готовы были ответить на все вопросы и объяснить то, что осталось непонятным.
  3. Перед нами стояла задача по разработке утилиты для анализа конфигурационных файлов сетевого оборудования на предмет наличия слабых мест и небезопасных настроек. Для этого необходимо было познакомиться с сетевым оборудованием, узнать о различных настройках, попробовать сконфигурировать коммутатор и проверить его работоспособность и устойчивость к атакам.
  4. Задачи были действительно интересными, т.к. сетевые технологии я изучала и до стажировки. Все, что было запланировано, оказалось сделанным. Однако, в процессе исследования и разработки появилась масса новых идей, которые, я надеюсь, мы воплотим в жизнь.
  5. Конечно, да.


Михаил Дрягунов:

  1. Известная компания, занимающаяся ИБ. Среди остальных выделяется различными исследованиями и публикациями.
  2. Да, всё супер! Интересные доклады и темы проектов. Из наиболее запомнившегося — командная разработка, и всё что с этим связано.
  3. У меня был групповой проект. Сначала мы определились с базовым функционалом, потом поделили темы (необходимо было понять что и как вообще работает прежде чем писать под всё это проверки), сделали себе своеобразную wiki по возможным слабым местам и security фичам в свитчах. Когда всё было готово — приступили к написанию самой программы. К концу стажировки мы написали тот функционал что планировался изначально, но появилось ещё больше идей и желаемых фич. Планируем доделать их и выступить с докладом на ZN.
  4. Сначала я хотел заниматься темой работы с PayPass/PayWave, но она уже была занята. Также была интересна тема исследования протоколов динамической маршрутизации, но она мне показалась слишком открытой.
  5. Конечно!


Екатерина Федощенко, тема «Восстановление структур данных по динамическим трассам»:

  1. Репутация у DSec чуть ли не легендарная. Наслышана об исследовательской деятельности компании, было безумно интересно ко всему этому прикоснуться. Мне показалось, что это отличный шанс узнать, как ведется работа в практической ИБ, какие навыки необходимы.
  2. Сказать, что понравилась — не сказать ничего. Много всего запомнилось: и замечательные лекции, большое спасибо ребятам, подготовившим выступления; и общение с наставниками и товарищами по стажировке — какие бывают увлеченные, целеустремленные люди, сколькому у них можно научиться. Реальность и ожидания — ни идеалистические, ни пессимистические — не совпали совершенно, и это как раз было самым крутым опытом. А еще удалось испытать невероятное чувство, когда полученные знания пригодились не только в рамках стажировки.
  3. Темой моей стажировки было восстановление структур данных по динамическим трассам. В публичном доступе есть порядочное количество академических работ, но инструменты, решающие эту задачу, можно по пальцам пересчитать. В ходе работы получилось рассмотреть два таких инструмента — Recoverer и dynStruct; выяснилось, что справляется только один (dynStruct), но для него требуется доработка. Нужно было также объединить результаты со статикой HexRaysPyTools — крутого плагина для IDA Pro, написанного моим наставником. Несмотря на то, что кое-каких успехов удалось добиться, нерешенных задач еще много. Также по совету Дмитрия была начата работа над тестовым приложением, которое должно охватить как можно больше способов работы со структурами и классами, чтобы проверять эффективность существующих инструментов, потому что это тоже достаточно актуальная задача.
  4. Все было очень интересно. Хотелось, но не удалось уделять больше времени задачам стажировки: с работой совмещать вполне возможно, хотя временами и не хватало сил и психологической дисциплинированности. Отличный, впрочем, повод узнать себя и понять, над чем работать.
  5. С большим удовольствием. Спасибо большое организаторам и стажерам!


ukjriqk8njjqo-4_5zojpsjhn4y.jpeg
Новые модули для dynStruct

Виталий С., тема «Ищем баги в веб-интерфейсах гипервизоров (proxmox/kimchi/oVirt)»:

  1. Это единственная компания в городе, которая проводит подобные мероприятия. Возможно есть другие компании, но мне они неизвестны. Думаю, что часть вузов как-то могут напрямую взаимодействовать с ИБ компаниями, не делая стажировку доступной, как у Digital Security. Знаю о подобных практиках. Считаю, что другим компаниям стоило бы поучиться у Digital Security. Если не в организации, то хотя бы в самой идее и доступности. Компания профессионально занимается практической информационной безопасностью.
  2. Стажировка понравилась. Она не может не понравиться. Запомнился факт, что я пообщался с ребятами, учащимися в вузе, который я когда-то заканчивал. На знакомых мне специальностях с известным преподавательским составом :). Лаборатории классные. Не ожидал, что будет такое количество виртуальных машин. Ожидание/реальность. Я понял, что мои навыки оставляют желать лучшего. Я понял, какие направления мне стоит подтянуть. Что почитать и куда смотреть.
  3. Моей задачей был поиск недостатков и уязвимостей в системах управления (web) виртуализацией (open source).В данном случае это проекты, где разработчики прослеживают за безопасностью своих разработок, но не везде. Тема оказалась довольно объёмной, и работа продолжается уже за рамками стажировки.
  4. Задачи в большинстве своём интересные. Лёгкими я бы их не назвал. При выборе темы трудновато-то определиться, не бросаясь в крайности. Приятно видеть знакомые слова в названиях тем. Есть пара лайфхаков. Не брать больше одной темы. Вам будет трудно совмещать как сами темы, так и с работой, если конечно тема не совпадает с вашей основной работой. Брать тему, в составе которой есть направления, с которыми вы возможно сталкивались или сейчас занимаетесь. Есть некоторое количество своих личных направлений, но они очень небольшие. В основном то, с чем сталкиваешься в практической работе, и на то, что есть мысли, но нет времени проверить.
  5. Готов вернуться на стажировку. Работа — может быть в будущем.


Гипервизоры, затронутые в исследовании:
Никита Кныжов, тема «Feedback-driven fuzzing проектов с открытым исходным кодом»:

  1. Потому что я знаю только парочку компаний кроме Digital Security, которые занимаются такими же интересными вещами как в отделе исследований.
  2. Очень понравилась. Особенно интересно было пообщаться с теми, кто профессионально работает в области, очень полезные некоторые лекции с примерами из жизни.
  3. Моя задача была — провести исследование фаззеров (форков и связанных в afl), разобраться в принципах работы, структурировать и сравнить на тестовом приложении, какой фаззер сколько уязвимостей нашел.
  4. Очень интересная задача, область актуальная и в науке, и в промышленности. Я не знал, что фаззеры так хитро и сложно могут быть устроены. Я даже нафаззил dos-уязвимость в ffmpeg во время стажировки.
  5. Конечно, готов!


klxpjwgogeuebmhu2pcyzg-b2hw.jpeg
Сводная таблица возможностей fuzzing проектов с открытым исходным кодом

Степан Бесклубов, тема «Трассировка на базе аппаратных возможностей ARM процессора»:

  1. О компании DSec мне известно давно, в основном от друзей и знакомых в области ИБ, также меня очень привлекает активное участие компании в жизни российской и международной ИБ.
  2. Стажировка, безусловно, понравилась. Особенно запомнились лекции и дружелюбный коллектив, готовый помочь по любому вопросу. Мои ожидания полностью оправдались.
  3. Темой моей стажировки была «Трассировка на базе аппаратных возможностей ARM процессора». Я занимался изучением технологии ARM CoreSight, трассировкой программ с помощью нее и написанием плагина для отображения полученной трассы в IDA Pro. Также занимался изучением принципа работы ARM TrustZone, и тем, как эти две технологии между собой взаимодействуют.
  4. Задачи были достаточно интересными и увлекательными. Особенно интересно было поработать с платами на базе ARM-процессоров. Удалось заняться всем тем, чего хотелось.
  5. С радостью готов вернуться в компанию в качестве сотрудника.


wtcdspfbhpjmszgjrwvahiy40q0.jpeg
Плагин под IDA Pro для парсинга снятых трасс
Код плагина и то, как его использовать, можно посмотреть здесь (мануалы по настройке CoreSight прилагаются).

Владислав Лунин, тема «Реверс инжиниринг на основе строковой информации»:

  1. Увидел пост на хабре о итогах прошлогодней стажировки, прочитал о проектах стажёров, а также их отзывы, и решил попробовать.
  2. Стажировка очень понравилась, реальность оказалась предсказуемой: все, что не знаешь, гуглишь, если нужного не находишь, обращаешься к наставник (у/ам), он (и) в любое время готов (ы) тебе помочь.
  3. Название моей задачи было «Реверс инжиниринг на основе строковой информации». Занимался написанием плагина для IDA PRO. Плагин позволяет просматривать все строки находящиеся в бинарном файле, показывает их по принадлежности к функциям, позволяет переходить непосредственно в сегмент данных и к месту вызова строки в функции, осуществлять переименование функций, поиск строк (и) по ключевым словам. Также осуществляет поиск в реальном времени, строк (и) в текущей функции, или по заданной глубине, которая может быть отрицательной или положительной, при добавлении глубины отображение строк принимает древовидную структуру, которая демонстрирует расположение строк относительно текущей функции. И восстановление строк.
  4. Да. Хотел добавить в плагин возможность восстановления имён функций на основе строковой информации, но не успел, думаю, в свободное время доделаю.
  5. Конечно!


wtcdspfbhpjmszgjrwvahiy40q0.jpeg
Плагин для IDA PRO

Вывод

Основываясь на результатах предыдущих лет, мы продолжаем улучшать программу стажировки, чтобы сделать её одновременно удобной и полезной, как для нас самих, так и для участников. Нашему коллективу было очень приятно работать с ребятами, и мы очень надеемся, что это было взаимно :)

До встречи следующим летом!

© Habrahabr.ru