Уже третий год подряд мы успешно продолжаем традицию летних стажировок. Как и в прошлые годы, мы взяли стажеров на два технических направления: в отдел исследований и в отдел анализа защищенности. С результатами предыдущих стажировок можно ознакомиться вот здесь:
И сегодня мы расскажем, как прошел наш Summer of h4ck 2018.
Как показывает практика, основной поток стажёрских резюме приходит в отдел анализа защищённости; желающих провести лето в Digital Security снова было много, и поэтому мы создали специальную анкету для кандидатов, которая была доступна на нашем сайте. Претенденты должны были поднапрячься и продемонстрировать не только свои знания и навыки, но и желание профессионально развиваться. Благодаря этому мы смогли оценить уровень подготовки будущих стажеров и выбрать самых достойных из них. Кроме того, в этот раз компания Digital Security сосредоточилась исключительно на офисной стажировке — удаленный вариант стажировки мы не рассматривали.
Краткая информация
Сотрудники отдела анализа защищённости
Сотрудники отдела исследований же решают задачи, связанные с reverse engineering'ом, поиском и эксплуатацией уязвимостей, системной разработкой и аудитом С\С++ кода; ведут исследования и в области machine learning, blockchain и других интересных областях. Команда активно занимается разработкой плагинов, скриптов, инструментов для автоматизации поиска уязвимостей как в статике, так и в динамике (fuzzing).
Кого мы ждали? Любителей интересных задач, не пасующих перед трудностями и влюблённых в то, чем они занимаются!
Введение
Мы рады были вновь увидеть в списках кандидатов на стажировку знакомые имена и фамилии — кое-кто уже был у нас в гостях в прошлом году, и им всё очень и очень понравилось :) Такую инициативу компания только поддерживает. Кроме того, если ты приходишь вновь, ты получаешь больше фирменного 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.
Вопросы для мини-интервью были такими:
- Почему решили стажироваться именно в Digital Security? Чем привлекла вас компания?
- Понравилась ли стажировка? Что особенно запомнилось? Насколько реальность совпала с вашими ожиданиями?
- Расскажите о своей задаче/задачах.
- Показались ли интересными задачи, над которыми вы работали в процессе стажировки? Было ли что-то, чем вы хотели заняться, но не удалось?
- Готовы ли вернуться в компанию на стажировку или на работу?
И вот какие ответы дали некоторые стажёры:
Павел Князев, тема “Taint-анализ архитектуры ARM”:
- Уже после окончания второго курса я понял, что мне не хватает навыков в ИБ. Хотелось не просто послушать курсы, а поработать руками. Первое, что мне попалось – это статья про Summer of H3ck от Digital security на Хабре. Имея почти нулевой опыт, я решился пойти.
- Стажировка понравилась. Просторное помещение, большой стол и тишина – мне предоставили рабочее место в комнате для стажеров. Неподалеку сидит еще пара стажеров – трудяг. Время от времени к нам подходят наставники, чтобы обсудить планы, дальнейшие действия. Они всегда готовы что – то объяснить, подкинуть нужную ссылку. Особенно запомнилась легкость общения с ними – просто Антон, Саша, Дима. Можно на время позабыть, что перед тобой сидит большой босс, и просто поговорить.
- У меня была, как мне кажется, весьма экзотическая тема: «Taint-анализ ARM архитектуры». Учитывая то, что ни про taint – анализ, ни про ARM архитектуру толком ничего не знал, я был «несказанно рад» тому, что мне выпала такая тема. Для начала нужно было разобраться c отличиями ARM от x86 (только с ней и был знаком), изучить ассемблер этой архитектуры, режимы адресации. Затем нужно было разобраться с существующими средствами, которых… не оказалось. Вернее сказать, они были, однако одно средство не подходило для задач ИБ, второе не обладало достаточной гибкостью, функционалом, а третье – библиотека DrTaint – только недавно начала свое существование. Моей задачей стала доработка этой библиотеки. Тут меня ждал приятный сюрприз: библиотека DrTaint основана на DynamoRIO, а его я немножко, но знал. Несмотря на то, что DrTaint была совсем небольшой, на изучение исходного кода и понимание принципов её работы ушло почти две недели. Лишь только после этих двух недель я почувствовал, что не иду ко дну. Прошла еще неделька, и все начало налаживаться. Я перестал бояться и начал изменять исходный код. Если что – то шло не так, то DynamoRIO сразу мне об этом докладывал своим падением. В результате стажировки мне удалось найти и исправить несколько ошибок в библиотеке, добавить новые возможности, продемонстрировать её работоспособность. Под конец я с удивлением осознал, что разбираюсь в DBI и ассемблере для ARM.
- После того, как я узнал, что taint-анализ облегчает работу ревёрсеров и даже помогает обнаруживать уязвимости в ПО, разработка DrTaint по-настоящему меня заинтересовала. Мне вполне хватило того, чем я занимался.
- Собираю вещи.
Запуск одного из тестов
Евгений Лукин, тема “Golang Social Bot”:
- Тем, что ДСек нормально относится к студентам и позволяет им поработать с реальными рабочими проектами. К тому же давно наслышан о компании и знаю, что в ней работают классные люди
- Наверное было даже лучше, чем я думал. Понравилось, что все из отдела могут подсказать почти по любой теме и если есть проблема, то решить ее. Ожидал больше формальностей, если так можно выразиться
- У меня была тема Golang Social Bot. Данный бот используется при проведении тестирования на проникновение. Основной целью было написание модулей, которые собирают необходимые данные, например пароли, файлы конфигураций и файлы в принципе, позволяют взаимодействовать с файловой системой. Также необходимо было продумать закрепление в системе и сетевую работу внутри корпоративной сети.
- Да, как я сказал, я писал модули. И хоть и была проделана большая работа, но осталось много чего задуманного
- Да, тут работают крутые люди, у которых можно многому научиться.
С частью работ можно ознакомиться здесь.
Дмитрий Фролов, тема “Доработка UEFITool New Engine”:
- Почитав отзывы от стажёров предыдущих лет, я понял, что меня здесь ждут интересные проекты, связанные с ревёрсом. И я не прогадал.
- Стажировка очень понравилась, и реальность превзошла все мои ожидания. Очень дружеская обстановка в коллективе создавала благоприятные условия для работы над проектом, и решение поставленных передо мной задач приносило одно удовольствие.
- Меня довольно давно интересует обратная разработка различных низкоуровневых штук, в частности BIOS, поэтому задачу я выбрал соответствующую. Она заключалась в доработке программы UEFITool NE, которая предназначена для работы с образами UEFI BIOS. Приписка NE означает New Engine: некогда оригинальный UEFITool было решено переписать, и так появилась на свет его новая ветка NE. Но UEFITool New Engine пока не поддерживал возможность модификации прошивки с последующей её пересборкой, как это было в оригинальной ветке, и передо мной стояла задача эту функцию вернуть, да еще и добавить возможность модифицировать разделы NVRAM (поддержки которых в старой тулзе и в помине не было). С задачей я справился и выполнил еще парочку дополнительных (например, нужно было добавить возможность парсинга некоторых заковыристых структур). Мы с моим куратором связались с разработчиком тулзы, и в скором времени предстоит отправка pull request.
- Задачи очень интересные. В процессе их решения я получил очень хорошую базу знаний в области BIOS, и я хочу продолжать её развивать.
- С удовольствием бы вернулся как на стажировку, так и на работу.
Обобщённая архитектура доработанного UEFITool New Engine
Ход принятия pull request в основной репозиторий UEFItool можно посмотреть здесь.
Тема “Cisco Config Analysis Tool”
Следующие стажеры работали в группе над общей темой “Cisco Config Analysis Tool”. С результатом их работы можно ознакомиться здесь.
Наталия Ходукина:
- Давно слышала о компании как об одной из ведущих в сфере информационной безопасности в России.
- Понравилась, и реальность полностью совпала с ожиданиями. Так вышло, что над темой мы работали втроем, поэтому кроме практических и теоретических навыков, я училась работе в команде. В обсуждениях рождались новые идеи и решения, кроме того мы помогали друг другу находить и исправлять ошибки и недочеты, делились своим (небольшим) опытом и получали новый. А еще было приятно общаться с сотрудниками, все они старались донести информацию в максимально понятном виде, готовы были ответить на все вопросы и объяснить то, что осталось непонятным.
- Перед нами стояла задача по разработке утилиты для анализа конфигурационных файлов сетевого оборудования на предмет наличия слабых мест и небезопасных настроек. Для этого необходимо было познакомиться с сетевым оборудованием, узнать о различных настройках, попробовать сконфигурировать коммутатор и проверить его работоспособность и устойчивость к атакам.
- Задачи были действительно интересными, т.к. сетевые технологии я изучала и до стажировки. Все, что было запланировано, оказалось сделанным. Однако, в процессе исследования и разработки появилась масса новых идей, которые, я надеюсь, мы воплотим в жизнь.
- Конечно, да.
Михаил Дрягунов:
- Известная компания, занимающаяся ИБ. Среди остальных выделяется различными исследованиями и публикациями.
- Да, всё супер! Интересные доклады и темы проектов. Из наиболее запомнившегося — командная разработка, и всё что с этим связано.
- У меня был групповой проект. Сначала мы определились с базовым функционалом, потом поделили темы (необходимо было понять что и как вообще работает прежде чем писать под всё это проверки), сделали себе своеобразную wiki по возможным слабым местам и security фичам в свитчах. Когда всё было готово — приступили к написанию самой программы. К концу стажировки мы написали тот функционал что планировался изначально, но появилось ещё больше идей и желаемых фич. Планируем доделать их и выступить с докладом на ZN.
- Сначала я хотел заниматься темой работы с PayPass/PayWave, но она уже была занята. Также была интересна тема исследования протоколов динамической маршрутизации, но она мне показалась слишком открытой.
- Конечно!
Екатерина Федощенко, тема “Восстановление структур данных по динамическим трассам”:
- Репутация у DSec чуть ли не легендарная. Наслышана об исследовательской деятельности компании, было безумно интересно ко всему этому прикоснуться. Мне показалось, что это отличный шанс узнать, как ведется работа в практической ИБ, какие навыки необходимы.
- Сказать, что понравилась – не сказать ничего. Много всего запомнилось: и замечательные лекции, большое спасибо ребятам, подготовившим выступления; и общение с наставниками и товарищами по стажировке – какие бывают увлеченные, целеустремленные люди, сколькому у них можно научиться. Реальность и ожидания – ни идеалистические, ни пессимистические – не совпали совершенно, и это как раз было самым крутым опытом. А еще удалось испытать невероятное чувство, когда полученные знания пригодились не только в рамках стажировки.
- Темой моей стажировки было восстановление структур данных по динамическим трассам. В публичном доступе есть порядочное количество академических работ, но инструменты, решающие эту задачу, можно по пальцам пересчитать. В ходе работы получилось рассмотреть два таких инструмента – Recoverer и dynStruct; выяснилось, что справляется только один (dynStruct), но для него требуется доработка. Нужно было также объединить результаты со статикой HexRaysPyTools — крутого плагина для IDA Pro, написанного моим наставником. Несмотря на то, что кое-каких успехов удалось добиться, нерешенных задач еще много. Также по совету Дмитрия была начата работа над тестовым приложением, которое должно охватить как можно больше способов работы со структурами и классами, чтобы проверять эффективность существующих инструментов, потому что это тоже достаточно актуальная задача.
- Все было очень интересно. Хотелось, но не удалось уделять больше времени задачам стажировки: с работой совмещать вполне возможно, хотя временами и не хватало сил и психологической дисциплинированности. Отличный, впрочем, повод узнать себя и понять, над чем работать.
- С большим удовольствием. Спасибо большое организаторам и стажерам!
Новые модули для dynStruct
Виталий С., тема “Ищем баги в веб-интерфейсах гипервизоров (proxmox/kimchi/oVirt)”:
- Это единственная компания в городе, которая проводит подобные мероприятия. Возможно есть другие компании, но мне они неизвестны. Думаю, что часть вузов как-то могут напрямую взаимодействовать с ИБ компаниями, не делая стажировку доступной, как у Digital Security. Знаю о подобных практиках. Считаю, что другим компаниям стоило бы поучиться у Digital Security. Если не в организации, то хотя бы в самой идее и доступности. Компания профессионально занимается практической информационной безопасностью.
- Стажировка понравилась. Она не может не понравиться. Запомнился факт, что я пообщался с ребятами, учащимися в вузе, который я когда-то заканчивал. На знакомых мне специальностях с известным преподавательским составом :). Лаборатории классные. Не ожидал, что будет такое количество виртуальных машин. Ожидание/реальность. Я понял, что мои навыки оставляют желать лучшего. Я понял, какие направления мне стоит подтянуть. Что почитать и куда смотреть.
- Моей задачей был поиск недостатков и уязвимостей в системах управления (web) виртуализацией (open source).В данном случае это проекты, где разработчики прослеживают за безопасностью своих разработок, но не везде. Тема оказалась довольно объёмной, и работа продолжается уже за рамками стажировки.
- Задачи в большинстве своём интересные. Лёгкими я бы их не назвал. При выборе темы трудновато-то определиться, не бросаясь в крайности. Приятно видеть знакомые слова в названиях тем. Есть пара лайфхаков. Не брать больше одной темы. Вам будет трудно совмещать как сами темы, так и с работой, если конечно тема не совпадает с вашей основной работой. Брать тему, в составе которой есть направления, с которыми вы возможно сталкивались или сейчас занимаетесь. Есть некоторое количество своих личных направлений, но они очень небольшие. В основном то, с чем сталкиваешься в практической работе, и на то, что есть мысли, но нет времени проверить.
- Готов вернуться на стажировку. Работа — может быть в будущем.
Гипервизоры, затронутые в исследовании:
Никита Кныжов, тема “Feedback-driven fuzzing проектов с открытым исходным кодом”:
- Потому что я знаю только парочку компаний кроме Digital Security, которые занимаются такими же интересными вещами как в отделе исследований.
- Очень понравилась. Особенно интересно было пообщаться с теми, кто профессионально работает в области, очень полезные некоторые лекции с примерами из жизни.
- Моя задача была — провести исследование фаззеров (форков и связанных в afl), разобраться в принципах работы, структурировать и сравнить на тестовом приложении, какой фаззер сколько уязвимостей нашел.
- Очень интересная задача, область актуальная и в науке, и в промышленности. Я не знал, что фаззеры так хитро и сложно могут быть устроены. Я даже нафаззил dos-уязвимость в ffmpeg во время стажировки.
- Конечно, готов!
Сводная таблица возможностей fuzzing проектов с открытым исходным кодом
Степан Бесклубов, тема «Трассировка на базе аппаратных возможностей ARM процессора»:
- О компании DSec мне известно давно, в основном от друзей и знакомых в области ИБ, также меня очень привлекает активное участие компании в жизни российской и международной ИБ.
- Стажировка, безусловно, понравилась. Особенно запомнились лекции и дружелюбный коллектив, готовый помочь по любому вопросу. Мои ожидания полностью оправдались.
- Темой моей стажировки была «Трассировка на базе аппаратных возможностей ARM процессора». Я занимался изучением технологии ARM CoreSight, трассировкой программ с помощью нее и написанием плагина для отображения полученной трассы в IDA Pro. Также занимался изучением принципа работы ARM TrustZone, и тем, как эти две технологии между собой взаимодействуют.
- Задачи были достаточно интересными и увлекательными. Особенно интересно было поработать с платами на базе ARM-процессоров. Удалось заняться всем тем, чего хотелось.
- С радостью готов вернуться в компанию в качестве сотрудника.
Плагин под IDA Pro для парсинга снятых трасс
Код плагина и то, как его использовать, можно посмотреть здесь (мануалы по настройке CoreSight прилагаются).
Владислав Лунин, тема “Реверс инжиниринг на основе строковой информации”:
- Увидел пост на хабре о итогах прошлогодней стажировки, прочитал о проектах стажёров, а также их отзывы, и решил попробовать.
- Стажировка очень понравилась, реальность оказалась предсказуемой: все, что не знаешь, гуглишь, если нужного не находишь, обращаешься к наставник(у/ам), он(и) в любое время готов(ы) тебе помочь.
- Название моей задачи было «Реверс инжиниринг на основе строковой информации». Занимался написанием плагина для IDA PRO. Плагин позволяет просматривать все строки находящиеся в бинарном файле, показывает их по принадлежности к функциям, позволяет переходить непосредственно в сегмент данных и к месту вызова строки в функции, осуществлять переименование функций, поиск строк(и) по ключевым словам. Также осуществляет поиск в реальном времени, строк(и) в текущей функции, или по заданной глубине, которая может быть отрицательной или положительной, при добавлении глубины отображение строк принимает древовидную структуру, которая демонстрирует расположение строк относительно текущей функции. И восстановление строк.
- Да. Хотел добавить в плагин возможность восстановления имён функций на основе строковой информации, но не успел, думаю, в свободное время доделаю.
- Конечно!
Плагин для IDA PRO
Вывод
Основываясь на результатах предыдущих лет, мы продолжаем улучшать программу стажировки, чтобы сделать её одновременно удобной и полезной, как для нас самих, так и для участников. Нашему коллективу было очень приятно работать с ребятами, и мы очень надеемся, что это было взаимно :)
До встречи следующим летом!