поиск по сайту
Применение Dynamic Binary Instrumentation в области защиты информации.

Применение Dynamic Binary Instrumentation в области защиты информации.

Перов Максим

В деятельности специалистов по защите информации возникают ситуации, когда требуется изучить ПО без исходного кода. Например, нужно исследовать malware, проверить коммерческое ПО, которое не поставляется с исходным кодом на предмет недекларированных возможностей (НДВ), провести сертификацию предоставленного софта. Для решения конкретной задачи необходимо подобрать определенный инструмент, который может в лучшем случае оказаться платным, в худшем — вообще не существовать. Поэтому специалистам в области защиты информации время от времени приходится создавать собственные инструменты. Отсюда вытекают две существенные проблемы: время и сложность написания средств.

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

Для реализации динамического анализа существует технология, название которой Dynamic Binary Instrumentation (DBI). Основной принцип DBI заключается во вставке дополнительных внешних процедур в исследуемый бинарный код. Данные процедуры вставляются единожды, а вызываются столько раз, сколько выполняется участок кода, в который была произведена вставка. Например, можно перехватывать и обрабатывать события возникновений исключений, запуск системных вызовов, порождение потоков и многое другое.

Поскольку ручной анализ — это весьма трудоёмкая задача, поэтому были созданы различные фреймворки для DBI, которые позволяют достаточно просто и быстро создавать динамические бинарные анализаторы. Один из самых знаменитых фреймворков — PIN, разработанный в Intel, речь о котором пойдёт далее. Однако существуют и другие библиотеки, например, DynInst и DynamoRIO. Помимо инструментов анализа, упомянутые выше фреймворки позволяют создавать отладчики, инструменты измерения производительности и симуляторы, примером является потактовый симулятор The Sniper, который базируется на PIN.

Как говорилось ранее, PIN — это фреймворк динамической двоичной инструментации, поддерживающий такие архитектуры, как IA-32 и x86-64. В то же время, PIN — кроссплатформенный, позволяет создавать инструменты под Linux и Windows. Библиотека даёт исследователю возможность вставить произвольную процедуру, написанную на Си или Си++, в произвольный участок бинарного кода. Перед выполнением вставленного кода полностью сохраняются все данные выполняемого процесса, такие как состояние регистров, таким образом, работа программы не нарушается.

Одной из отличительных особенностей PIN является вполне обширный API, примеры использования которого поставляются вместе с библиотекой. На сайте Intel имеется подробное описание всех примеров. Всё это делает PIN достаточно простым фреймворком, которым легко научиться пользоваться. А из недостатков стоит отметить то, что PIN — проприетарное приложение. Однако распространяется бесплатно для некоммерческих проектов.

Среди существующих проектов, использующий PIN, стоит отметить те, которые относятся к безопасности. Итак, VERA — инструмент визуализирующий работу программы; Kerckhoffs детектируют криптографические примитивы; Tripoux — анализатор упаковщиков; Privacy Scope ищет утечки критичной информации. И это далеко не полный список. Упомянутые проекты с открытым исходным кодом, что позволяет их изучить и написать собственные инструменты.

Таким образом, DBI довольно удобная технология, для которой существуют мощные фреймворки, позволяющие достаточно быстро и легко создавать инструменты динамического анализа, без которых не обойтись для быстрого и качественного исследования ПО без исходного кода, что является одной из важнейших задач в области защиты информации.


ФорумФорум
Форум ОКБ САПР
Вопросы специалистовВопросы специалистов
Вопросы, которые нам присылают, и наши ответы на них