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

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

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

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

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

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

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

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

Введение

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


Вот такие подарки мы приготовили в этом году

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

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

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

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

  • 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. Собираю вещи.


Результаты 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. С удовольствием бы вернулся как на стажировку, так и на работу.


Обобщённая архитектура доработанного 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. С большим удовольствием. Спасибо большое организаторам и стажерам!


Новые модули для 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. Конечно, готов!


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

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

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


Плагин под IDA Pro для парсинга снятых трасс

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

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

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


Плагин для IDA PRO

Вывод

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

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


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

[Перевод] Учёные вырастили универсальные стволовые клетки при помощи CRISPR инженерии

Клетки сердечной мышцы человека, полученные из новых универсальных стволовых клеток Учёные из University of California San Francisco впервые вырастили универсальные стволовые клетки, используя технологию редактирования генов CRISPR в целях получения плюрипотентных стволовых клеток, которые могут быть трансплантированы любому пациенту, не ...

[Перевод] Шесть историй, как код переписали с нуля

Новый взгляд на извечный вопрос: следует ли переписывать приложение с нуля или это «самая худшая стратегическая ошибка, которую может сделать разработчик программного обеспечения»? Оказывается, при работе со зрелой кодовой базой есть более двух вариантов ответа. «Исходный код словно заржавел!» — Джоэл ...