Научная статья на тему 'Методика динамического анализа уязвимостей в бинарном коде'

Методика динамического анализа уязвимостей в бинарном коде Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
919
178
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ДИНАМИЧЕСКИЙ АНАЛИЗ / УЯЗВИМОСТЬ / ФАЗЗИНГ / БИНАРНАЯ ИНСТРУМЕНТАЦИЯ / DYNAMIE ANALYSIS / VULNERABILITY / FUZZING / BINARY INSTRUMENTATION

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Шудрак Максим Олегович, Золотарев Вячеслав Владимирович, Лубкин Иван Александрович

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Шудрак Максим Олегович, Золотарев Вячеслав Владимирович, Лубкин Иван Александрович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

THE TECHNIQUE FOR BINARY EXECUTABLES VULNERABILITIES DETECTION

The article describes dynamiс analysis techniques and сoud-based platform for software security and reliability testing. In the article the authors contribute to the dynamie execution analysis techniques. In the first part of the article the authors describe the technique of dynamiс binary analysis which is referred to as fuzzing. The authors show basiс architecture of the tool for security and reliability testing of application and vulnerabilities detection. Due to the use of the dynamiс binary instrumentation this technique implementation is muсh faster than ones applied previously. The technique described in the article has been implemented as the software platform which includes web-interfaee, virtual machine dispatcher, dynamie instrumentation library, debugger, special dll, protocol description and fuzzing manager tool.

Текст научной работы на тему «Методика динамического анализа уязвимостей в бинарном коде»

Для определения влияния инерционности систем РН и РЭВ, времени, затрачиваемого на обнаружение сигнала, вероятности правильного априорного определения параметров формирующих функций необходимо более детальное исследование.

Библиографические ссылки

1. Орощук И. М. Основные направления применения имитационных помех в системах радиосвязи. Классификация способов ими [Электронный ресурс] // Центр информационной безопасности : портал.

2005. иКЬ: http://www.bezpeka.com/ru/lib/spec/metr/ art184.html.

2. Ширман Я. Д. Теоретические основы радиолокации. М. : Сов. радио, 1970. 561 с.

3. Воронов Д. Н. Критерии оценки имитостойко-сти командно-телеметрических радиолиний // Системи обробки іниформаціі. 2007. № 4(62). С. 14-16.

References

1. Oroshchuk I. M. [Main pathways of simulated echoes application in communication systems. Classification of simulated echoes]. Tsentr informatsionnoy bezopas-nosti: portal. 2005 (In Russ.) Available at: URL: http://www.bezpeka.com/ru/lib/spec/metr/art184.html.

2. Shirman Y. D. Teoreticheskiye osnovy radiolo-katsii (Theoretical foundations of radiolocation). Moscow, Soviet radio, 1970, 561 p.

3. Voronov D. N. Sistemi obrobki iniformatsii. 2007, no. 4 (62), p. 14-16.

© Черноусов А. В., Кузовников А. В., Сомов В. Г., 2013

УДК 004.056

МЕТОДИКА ДИНАМИЧЕСКОГО АНАЛИЗА УЯЗВИМОСТЕЙ В БИНАРНОМ КОДЕ*

М. О. Шудрак, В. В. Золотарев, И. А. Лубкин

Сибирский государственный аэрокосмический университет имени академика М. Ф. Решетнева Российская Федерация, 660014, Красноярск, просп. им. газ. «Красноярский рабочий», 31

E-mail: [email protected]

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

Ключевые слова: динамический анализ, уязвимость, фаззинг, бинарная инструментация.

THE TECHNIQUE FOR BINARY EXECUTABLES VULNERABILITIES DETECTION M. О. Shudrak,V. V. Zolotarev, I. A. Lubkin

Siberian State Aerospace University named after academician M. F. Reshetnev 31, Krasnoyarsky Rabochy Av., Krasnoyarsk, 660014, Russian Federation. E-mail: [email protected]

The article describes dynamic analysis techniques and cloud-based platform for software security and reliability testing. In the article the authors contribute to the dynamic execution analysis techniques. In the first part of the article the authors describe the technique of dynamic binary analysis which is referred to as fuzzing. The authors show basic architecture of the tool for security and reliability testing of application and vulnerabilities detection. Due to the use of the dynamic binary instrumentation this technique implementation is much faster than ones applied previously. The technique described in the article has been implemented as the software platform which includes web-interface, virtual machine dispatcher, dynamic instrumentation library, debugger, special dll, protocol description and fuzzing manager tool.

Keywords: dynamic analysis, vulnerability, fuzzing, binary instrumentation.

*

Работа выполнена в рамках гранта по соглашению № 14.132.21.1365 от 22.10.2012 федеральной целевой программы «Научные и научно-педагогические кадры инновационной России» на 2009-2013 годы.

На сегодняшний день компании-разработчики ПО сталкиваются с серьёзнейшими рисками, связанными с безопасностью собственных продуктов. Эти риски возникают вследствие того, что процесс разработки невозможен без тех или иных ошибок и недочетов. Так, за предыдущий год эксперты обнаружили более 9 000 различных уязвимостей «нулевого дня», а это 26 уязвимостей в день! Для решения этой проблемы используется множество различных методик и подходов, которые могут эффективно применяться на том или ином этапе разработки и эксплуатации ПО [1]. В данной статье мы остановимся лишь на динамическом анализе, являющемся наиболее эффективным для анализа бинарного кода, так как метод взаимодействует с реально работающим приложением [2; 3]. Наиболее существенным недостатком динамического анализа на сегодняшний день является сложность и высокая ресурсозатратность для полноценного поиска уязвимостей. Мы попытаемся частично решить эти проблемы.

Методика гибридного анализа бинарного кода.

Методика динамической бинарной инструментации предусматривает проведение тестирования приложения в процессе его исполнения. Как правило, уязвимость в ПО возникает в процессе обработки внешних или пользовательских данных. Для тестирования корректности обработки этих данных часто используется так называемая технология фаззинга, базовая схема которого приведена на рис. 1.

Data generation

Samples

Code coverage Instruction tracking

analysis

пользование такой технологии значительно снижает производительность анализируемой программы. Для решения этой проблемы в рамках проекта было предложено использовать методику динамической бинарной инструментации (ВВІ) анализируемого модуля. Основная схема методики приведена на рис. 2.

Рис. 1. Базовая схема системы

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

Рис. 2. Описание технологии DBI

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

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

Помимо динамического анализа в процессе тестирования используются элементы методики статического анализа на этапе оценки степени опасности найденной ошибки. Для этого участок исходного или декомпилированного кода, на котором произошла ошибка, сравнивается с шаблонами уязвимого кода и в случае наличия совпадений производится классификация степени опасности данной уязвимости в соответствии с CVSS (Common Vulnerability Scoring System).

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

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

Апробация технологии. Одним из самых важных требований, предъявляемых к системе, является возможность ее использования в различных операцион-

ных системах. Для этого было принято решение максимально (где это возможно) использовать кросс-платформенный язык программирования Python, а где невозможно - C/C++. Такой выбор был продиктован тем, что наряду со своими широкими возможностями, язык Python позволяет легко интегрироваться в проекты на C/C++. Для решения задачи отображения информации была реализована библиотека визуализации графа потока выполнения программы с возможностью фильтрации необходимой информации об уязвимых участках тестируемой программы. Пример детектирования уязвимости в тестовом FTP-сервере приведен на рис. 4.

28500

27000

2SS00

24000

P7W10

21000

19800

1ЯЛПП

1CSOO

15000

IWI

Ti

me (msJj

■ч

J i V/V V/

/\

/

/

—-j Debugging

\

/

Рис. 3. Сравнение производительности решения

74 fuzzfr manager

Start fuzzing App port |o 3

Sutley Log

[2013-02-06 18:44:07,239] [ERROR] -> current fuzz -*j path: -> VulnserverDATA

[2013-02-06 18:44:07,219] [ERROR] -> fuzzed 0 of 224S total cases

[2013-02-06 18:44:07,239] [ERROR] -> fuzzing 52 of 2248

[2013-02-06 18:44:07,296] [ERROR] -> xmitting:

[1.52]

[2013-02-06 18:44:07,390] [DEBUG] -> Packet sent : 'TRUN

I... /AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAMMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAflAAAAAAAAAAAAflAAAAAAAAAAflAflflA AAAAAMAAAftAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfl

AAAAflAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAA Code coverage log

Debug event log

debugger thread looking for process id: 494041414341 from thread 6748 caused access violation

when attempting to read from 0x41414141

CONTEXT DUMP

EIP: 41414141 Unable to disassemble at 41414141 EAX: 03edf200 ( 65925632) -> TRUN /,../AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA (stack)

ЕВХ 000000d0 ( 208) -> N/A

ЁСХ 00765fe4 ( 7757796) -> vv (heap)

EDX 00000000 { 0) -> N/A

EDI 00000000 ( 0) -> N/A

ESI 00000000 ( 0) -> N/A

EBP 43414141 (1094795585) -> N/A

ESP 03edf9e0 ( 65927648) ->

ААААААААААААААААААААААААДААААААААААААААААААААААААД AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ДАААДААААААААААААААААААААААААААААААААААААААААААААА AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA (stack)

Address: 0x76856a64 InterlockedDecrement(0x656308J, Address: 0x40253c

unnamedInageEntryPoint(0x9c7,,..) ddress: 0x4Q2b44 unnamedlmageEntryPoirvt(&xl00007f,. . .)

Address: 0x756311e0 TlsGetValue(0x3,...)

Address: 0x751a372d WahOpenCurrentThread(0,...) Address: 0x402df8 unnamedImage£ntryPoint(0x4041c8,,.,) Address: 0x76939836 memset(0x7694c628,,..)

I Диспетчер ндач Windows

Файл Параметры Зил Справка Приложения ; ГЬоиксы [ Службы | Быстродействие | Сеть

Пня образа Пользов.,, ЦП Память {... t

sqfcem.exe *32 NETWO... 00 6 120 КБ ;

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

svchost.exe LOCAL... оо 606^ КБ >

svdwst.eae NETWO... 00 60-40 КБ >

svdiost.*ire LOCM. .„ оо 4-952 КБ >

serras.ese систем оо 4746КБ Г

urn ware iMjthd eie “32 система оо 4 6+4 КБ \

NvXDSync.exe система оо 4 296КБ f

Isass. Q'OfM оо 4206КБ 1

taskmy ,exe Макс 00 4064КБ t

wmpnetwiLe*e NETWO... 00 3 552 КБ (

svdmst.exe система 00 3 252 КБ >

avp.exe *52 Макс 00 3036 КБ »

mliay.ert Макс 00 2980 КБ Г

daemomj.exe *32 Updatus,.. 00 2732КБ t

csrss.exe Система оо 2708КБ Г

LMS.exe *32 система оо 2456КБ L

ETDOrle» Макс оо 2220КБ Е

corhostexe Макс 00 2148КБ (

asWicst.sm маке оо 2144КБ >

spodsv.exe □стена 00 2 128 КБ 1

SvehMt.exe ЮС*. .„ оо 2120 КБ >

nwsvc.exe система 00 2080 КБ f

UNS.ext «32 систем so 2060 КБ 1

Ism.ewe система оо 2044КБ {

igfxpers.exe Макс оо 2 02В КБ {

raW0iPMT.EXE *32 Макс 00 2020 КБ Г

AdobeARM.ene '32 Макс 00 1952 КБ t

WIIDSVC.EXE система оо 1800КБ t

asktl05l.exe Макс оо 1784КБ >

WmPivSE.exe система 00 1744КБ 1

<Т“

J Отображать просессы всех гхыъзователей

Процессов 102 За грузка ЦП 1 % Физическая пэм?

Рис. 4. Пример детектирования уязвимости

Ключевым этапом, отображенным на схеме, является генерация данных и анализ покрытия кода, который необходим для оценки эффективности проведенного тестирования. Не будем подробно останавливаться на каждом этапе работы системы, лишь отметим, что цель анализатора - сгенерировать данные, которые приведут к ошибке в тестируемом приложении. Для оценки эффективности такого тестирования необходимо оценить степень покрытия бинарного кода тестами. В ходе работы над программным средством были протестированы различные решения оценки покрытия кода: от отладки до динамической бинарной инструментации [4]. Последняя технология показала наиболее значительный прирост к скорости анализа (на 3-4 порядка в сравнении с отладкой). DBI-технология использует виртуальную машину уровня процесса ОС, в которую внедряется специальная dll, описывающая то, как необходимо проводить анализ тестируемой программы. Такая схема позволяет в значительной степени оптимизировать анализ, так как операционной системе нет необходимости в переключении контекста процессора между анализатором и тестируемой программой.

Разработанная система была реализована с использованием следующих фреймворков:

1) Sulley-фреймворк - для генерации тестовых данных [5].

2) Intel PIN - DBI фреймворк для виртуализации тестируемого приложения [6].

3) библиотека PyDBG - для отладки тестируемого приложения и перехвата исключений.

Таким образом, авторами была разработана методика и программное средство, обладающее возможностью тестирования различных приложений, обрабатывающих сетевой трафик и различные пользовательские файлы. На данный момент проект находится в стадии альфа-тестирования. Дальнейшая работа пред-

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

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

References

1. Giuseppe Desoli, Nikolay Mateev, Evelyn Dues-terwald, Paolo Faraboschi, and Joseph A. Fisher. Deli: A new run-time control point. In Proceedings of the 35th Annual Symposium on Microarchitecture (MICRO35), p. 257-270, Istanbul, Turkey, November 2002.

2. Henry S., Kafura D. Software structure metrics based on information flow. IEEE Transactions on Software Engineering, vol. SE-7, Issue 5, Sept. 1981, p. 510518.

3. Marco Cova, Viktoria Felmetsger, Greg Banks, Giovanni Vigna. Static Detection of Vulnerabilities in x86 Executables, Computer Security Applications Conference,

2006. ACSAC '06. 22ndAnnual, vol. 2, no. 7, p. 269-278.

4. DBI (2007). Available at: http://uninformed. org/index.cgi?v=7&a=1&p=3 (accessed 14.10.2013).

5. Pedram Amini. Fuzzing Framework. Black Hat USA, vol. 14, Aug. 2007, p. 211-217.

6. PIN description. Available at: http://software. intel.com/en-us/articles/pin-a-dynamic-binary-instrumentation-tool (accessed 14.10.2013).

© Шудрак М. О., Золотарев В. В., Лубкин И. А., 2013

УДК 517.55

ОБ АНАЛИТИЧЕСКОМ ПРОДОЛЖЕНИИ КРАТНОГО СТЕПЕННОГО РЯДА С ПОМОЩЬЮ т-ОДНОРОДНЫХ ПОЛИНОМОВ МАТРИЧНЫМ МЕТОДОМ В ОБОБЩЕННУЮ ЗВЕЗДУ МИТТАГ-ЛЕФФЛЕРА

Е. И. Яковлев

Сибирский государственный аэрокосмический университет имени академика М. Ф. Решетнева Российская Федерация, Красноярск, просп. им. газ. «Красноярский рабочий», 31

Е-таі1:уеі@пт.ги

Рассмотрено аналитическое продолжение кратного степенного ряда в класс областей, обобщающих звездные. С помощью переразложения кратного степенного ряда по m-однородным полиномам строится продолжение этого ряда в (ш1, ..., mn) -круговые области, которые являются естественным обобщением круговых областей в Сп . Опираясь на это разложение, данный кратный степенной ряд аналитически продолжается в максимальную m-звездную область, называемую m-звездой Миттаг-Леффлера функции f определяемой этим рядом. Это аналитическое продолжение представляет собой суперпозицию m-однородных полиномов, по которым разлагается степенной ряд, с бесконечной треугольной матрицей, элементы которой не зависят от функции f. Приводится пример, когда m-звезда Миттаг-Леффлера отличается от обычной звезды Миттаг-Леффлера.

i Надоели баннеры? Вы всегда можете отключить рекламу.