- PVSM.RU - https://www.pvsm.ru -
Наша компания в конце апреля этого года объявила [1] об открытой стажировке в трех самых технических отделах: исследований, анализа защищенности и безопасности бизнес-систем. Этот опыт был для нас новым, и хочется поделиться им.
Вопрос образования в области информационной безопасности стоит, на наш взгляд, очень остро. Поэтому мы в рамках стажировки хотели не только научить ребят и показать им что-то новое и актуальное с технической точки зрения, но и даже привить наш технический взгляд на исследования в области ИБ.
Мы – отдел исследований (Исследовательский центр [2]) компании Digital Security. В первую очередь, мы занимаемся задачами reverse engineering, поиском уязвимостей в бинарных приложениях и написанием эксплоитов. Если вы любите сидеть в дизассемблере или отладчике, если хотите автоматизировать различные задачи для поиска уязвимостей, если вам нравится писать fuzzers, то вы близки нам по духу.
К нам в отдел поступали заявки на стажировку как от студентов, так и от тех, кто твердо стоит на ногах, но хочет «прокачать» свои навыки или попробовать силы в сфере ИБ. Ведь после каждого шумного «взлома» наша сфера становится всё популярней :)
Само собой, мы предоставили возможность участвовать в процессе удалённо тем, кто не мог посещать наш офис, но наибольшую пользу извлекли те, кто смог приходить к нам лично. И такие ребята бывали у нас довольно часто (надеемся, что это никак не связанно с довольно частыми дождями в Питере этим летом, которые мешали посещать пляжи и другие места отдыха на каникулах).
С теми, кто выбрал стажировку в нашем офисе, мы проводили небольшие собеседования, и уже по результатам принимали окончательное решение. Общение в удаленном режиме проходило, в основном, через электронную почту и там, честно признаться, критерии были более мягкими, поскольку оценивали по резюме и нескольким вопросам, связанным с запланированными темами.
На темах остановимся подробнее. Перед запуском программы стажировки мы внутри своего отдела провели мозговой штурм и сгенерировали темы, соответствующие следующим критериям:
По результатам ответов на вопросы мы предлагали стажёру тему (или несколько), наиболее подходящую под его навыки и интересы из постоянно обновляемого перечня. В случае, если задача не устраивала или кто-то просил «огласить весь список», мы шли навстречу.
Если честно, большинство стажёров ожидало от нас заданий по поиску «крутых» уязвимостей по типу Heartbleed, Ghost и т.п. Однако, чтобы найти такие ошибки, недостаточно запустить какую-нибудь готовую программу, надо ещё разобраться в механике её работы. Ведь со временем у каждого уважаемого исследователя появляется свой набор ПО, как из готовых, но «доведенных до ума» под свои задачи инструментов, так и написанных лично. Также важно, напомним, чтобы исследование можно было делать сразу публичным (это уже решали сами стажеры).
В рамках программы было проведено несколько митапов. Часть из них была основана на старых выступлениях, но обновлена под текущие реалии или дополнена демонстрацией непубличных уязвимостей ;):
А в середине лета уже сами стажёры провели для нас подобный митап, представив свои результаты. По окончанию каждого выступления мы с коллегами и другими стажёрами задавали вопросы, благодаря этому появлялись другие пути решения поставленной задачи и новые темы для будущих исследований.
Часть ребят ещё не до конца реализовала намеченные планы, но это не означает, что они не справились. Просто некоторые темы оказались шире, и они захотели реализовать дополнительные задачи в них. Мы довольны результатами и будем работать над качеством процесса стажировки. Некоторым стажёрам предложили начать работать в нашей компании уже сейчас.
Руководили стажёрами:
Ниже представлены ответы некоторых стажёров.
Тема: «Изучить возможности плагина hexrays-tools [6] для дизассемблера IDA Pro, портировать его для новых версий IDA Pro. Рассмотреть возможность переноса плагина с C++ на IDAPython [7].»
Интервью:
У IDA еще есть особенность в виде не слишком качественной документации, а также в структурах, название которых мало о чём говорит. Тем не менее, прошло несколько дней и все эти tinfo_t, vdui_t, cvar.idati и т.д. стали моими лучшими друзьями.
Сам плагин будет представлен на конференции ZeroNights 2016 [8].
Тема: «Разработка семантического движка поиска ROP-гаджетов на основе Фреймворка Triton [9].»
Интервью:
Для этого мне понадобилось подтянуть свои знания по форматам исполняемых файлов, познакомиться с Фреймворком Сapstone [13], продумать формат входныхвыходных данных и написать несколько сотен строк кода. Одновременно с этим, совместно с руководителем, мы изучали материалы, посвященные Фреймворку Triton, реализовывали небольшие скрипты, дабы лучше ознакомиться с его возможностями.
Также разбирались с применением SMT решателей в области ИБ и продумывали архитектуру будущего приложения (RopFinder). На данный момент ведется работа над RopFinder, а именно:
(eax == ebx, [esi] == 0xdeadbeef)
Работа с Фреймворком Triton через IDA Pro
Тема: «Реализация программно-аппаратной части для MITM-атак и fuzzing knx-tp»
Интервью:
трансивер KNX-TP для RaspberryPi
Изучив работу ETS5, я собрал KNX-сеть и настроил её работу. Вооружившись осциллографом и логическим анализатором, я наблюдал работу KNX-TP сети на более низком уровне. Следующей моей целью было сделать проект печатной платы KNX-трансивера на основе чипа NCN5120 для Raspberry PI. В качестве САПР был выбран Altium Designer. Разобравшись с AD и изучив работу NCN5120, я принялся за проектирование платы. В процессе возникали разные трудности в работе с AD, но плата была завершена и отправлена в производство. В итоге, мы получили плату с двумя NCN5120, что позволяло вклиниваться в разрыв линии связи в KNX-TP. Благодаря этому, возникла возможность реализации MITM-атаки. Плата подключается к Raspberry PI с помощью SPI. В процессе углубленного изучения Raspberry PI выяснилось, что инструмент не поддерживает работу SPI в режиме slave (скорее даже не он, а сам Linux не поддерживает SPI slave, хотя можно так же заметить, что и процессор на Raspberry PI может сделать slave только на 1 из 2 SPI, что нас тоже не особо устраивает), а NCN5120 работает только в режиме master. Было решено написать программную реализацию SPI slave. После попыток работы с Python было решено реализовать все на чистом C. К сожалению, поставки комплектующих задержали, и собрать до конца работающую плату не удалось. Как следствие, протестировать работу программного SPI slave вместе с платой так же не получилось.
Тема: «Разобраться с утилитами Joern [15] / Bjoern [16] и составить запросы по их правилам для поиска уязвимостей различного типа. Для начала на примере уже найденных ранее»
Интервью:
Графовое представление уязвимой функции в Linux 3.1
В процессе стажировки была создана документация по установке, настройке и эксплуатации данных инструментов. По итогам, было получено представление о современных методологиях поиска уязвимостей в программных продуктах, а также опыт применения инструментов статического анализа. Вдобавок, удалось освоить научный базис перечисленных статических анализаторов (основы работы компиляторов, промежуточное представление исходного кода, графовые модели и т.п.).
Поиск уязвимости CVE-2013-4512
Помимо основной темы практики, были внимательно прослушаны доклады, непосредственно касающиеся деятельности аналитика информационной безопасности (инструментация бинарного кода, приемы эффективной работы с исполняемыми файлами без символьной информации, анализ защищенности шины CAN в автомобилях).
Следующие ребята занимались, по сути, одной темой. Им надо было разобраться в архитектуре TMS 320LF2407 и реализовать её поддержку в популярных средствах для Reverse Engineering. Один стажёр был сконцентрирован на уже упомянутом не раз выше диззасемблере IDA Pro, а второй выбрал Фреймворк с открытым исходным кодом Radare2.
Источник: www.ti.com/product/TMS320LF2407 [17]
Тема: «Добавить поддержку архитектуры микроконтроллера TMS 320LF2407 в IDA Pro (процессорный модуль на языке Python)»
Интервью:
Тема: «Добавить поддержку архитектуры микроконтроллера TMS 320LF2407 в Фреймворк Radare2 [19]»
Интервью:
Для нашего отдела это была первая столь масштабная стажировка. Многое мы совершенствовали по ходу процесса. Но очень рады, как все в итоге прошло, что ребята сами довольны. Планируем и в дальнейшем продолжать такую практику.
Автор: Digital Security
Источник [20]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/194131
Ссылки в тексте:
[1] объявила: https://dsec.ru/news/press/we_invite_to_training_in_digital_security/
[2] Исследовательский центр: https://dsec.ru/ipm-research-center/
[3] d1g1: https://habrahabr.ru/users/d1g1/
[4] Xarlan: https://habrahabr.ru/users/xarlan/
[5] dukebarman: https://habrahabr.ru/users/dukebarman/
[6] hexrays-tools: https://www.hex-rays.com/contests/2013/
[7] IDAPython: https://github.com/idapython/src
[8] ZeroNights 2016: http://2016.zeronights.ru/
[9] Triton: http://triton.quarkslab.com/
[10] 27 встреча Defcon Russia: https://defcon-russia.ru/news/93/
[11] ROPGadget: https://github.com/JonathanSalwan/ROPgadget
[12] Ropper: https://github.com/sashs/Ropper
[13] Сapstone: https://github.com/aquynh/capstone
[14] l4l: https://habrahabr.ru/users/l4l/
[15] Joern: https://github.com/octopus-platform/joern
[16] Bjoern: https://github.com/jonashaag/bjoern
[17] www.ti.com/product/TMS320LF2407: http://www.ti.com/product/TMS320LF2407
[18] reverse4you.org: https://forum.reverse4you.org/
[19] Radare2: http://rada.re/r/
[20] Источник: https://habrahabr.ru/post/311374/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.