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.

Толық мәтін

На сегодняшний день компании-разработчики ПО сталкиваются с серьёзнейшими рисками, связанными с безопасностью собственных продуктов. Эти риски возникают вследствие того, что процесс разработки невозможен без тех или иных ошибок и недочетов. Так, за предыдущий год эксперты обнаружили более 9 000 различных уязвимостей «нулевого дня», а это 26 уязвимостей в день! Для решения этой проблемы используется множество различных методик и подходов, которые могут эффективно применяться на том или ином этапе разработки и эксплуатации ПО [1]. В данной статье мы остановимся лишь на динамическом анализе, являющемся наиболее эффективным для анализа бинарного кода, так как метод взаимодействует с реально работающим приложением [2; 3]. Наиболее существенным недостатком динамического анализа на сегодняшний день является сложность и высокая ресурсозатратность для полноценного поиска уязвимостей. Мы попытаемся частично решить эти проблемы. Методика гибридного анализа бинарного кода. Методика динамической бинарной инструментации предусматривает проведение тестирования приложения в процессе его исполнения. Как правило, уязвимость в ПО возникает в процессе обработки внешних или пользовательских данных. Для тестирования корректности обработки этих данных часто используется так называемая технология фаззинга, базовая схема которого приведена на рис. 1. Data generation Samples Code coverage Instruction tracking analysis пользование такой технологии значительно снижает производительность анализируемой программы. Для решения этой проблемы в рамках проекта было предложено использовать методику динамической бинарной инструментации (DBI) анализируемого модуля. Основная схема методики приведена на рис. 2. Рис. 1. Базовая схема системы Опишем технологию динамического анализа и проведем сравнительный анализ полученного решения. Процесс динамического анализа ПО подразумевает анализ продукта в процессе его работы. Такой подход позволяет обнаружить ошибки и уязвимости, возникающие в процессе работы, которые непосредственно доступны для эксплуатации. Для этого система на основе предварительно описанного протокола автоматически генерирует тестовые данные и посылает их в выбранный интерфейс. Затем специальный модуль производит мониторинг исполняемых инструкций (строк кода) и ошибок в процессе выполнения программы. Однако необходимо отметить, что ис Рис. 2. Описание технологии DBI Ее идея заключается в возможности перехвата и анализа графа потока управления программы с помощью вставки специальных инструкций в бинарный код анализируемого приложения. Эксперименты показали, что применение DBI позволяет анализировать программу на несколько порядков быстрее, чем при использовании классических методик автоматизированной отладки. Сравнение производительности выбранного решения приведено на рис. 3. Для повышения гибкости описываемая платформа должна обладать возможностью описания протокола генерации тестовых кейсов с помощью специального языка. Для решения этой задачи был задействован хорошо зарекомендовавший себя ранее блоковый подход к описанию данных. Такой подход частично схож с описанием скриптов в классических языках программирования, однако в значительно урезанном виде. Тестовый пример и общее описание языковых конструкций приведено на рис. 4. Помимо динамического анализа в процессе тестирования используются элементы методики статического анализа на этапе оценки степени опасности найденной ошибки. Для этого участок исходного или декомпилированного кода, на котором произошла ошибка, сравнивается с шаблонами уязвимого кода и в случае наличия совпадений производится классификация степени опасности данной уязвимости в соответствии с CVSS (Common Vulnerability Scoring System). Отдельно необходимо остановиться на системе декомпиляции бинарного кода (декомпиляция - процесс восстановления относительно эквивалентного исходного кода из исполняемого модуля) в случае отсутствия исходного. Анализ бинарного кода является нетривиальной задачей в силу того, что в процессе компиляции исходного кода программы теряется важная с точки зрения анализа информация. Процесс анализа бинарного кода требует некоторого уровня его абстракции от машинного кода к человеку. Таким 85 Вестник СибГАУ. № 4(50). 2013 образом, основная идея заключается в том, что декомпиляция бинарного кода не требует представления машинного кода на языке высокого уровня, достаточно восстановить алгоритм функционирования участка анализируемого кода (тем самым добиться соответствующего уровня абстракции). Для решения этой задачи необходимо рассматривать бинарные инструкции как совокупность элементарных операций над ресурсами, где в качестве ресурса могут выступать регистры, память или регистры флагов процессора. Апробация технологии. Одним из самых важных требований, предъявляемых к системе, является возможность ее использования в различных операцион ных системах. Для этого было принято решение максимально (где это возможно) использовать кросс-платформенный язык программирования Python, а где невозможно - C/C++. Такой выбор был продиктован тем, что наряду со своими широкими возможностями, язык Python позволяет легко интегрироваться в проекты на C/C++. Для решения задачи отображения информации была реализована библиотека визуализации графа потока выполнения программы с возможностью фильтрации необходимой информации об уязвимых участках тестируемой программы. Пример детектирования уязвимости в тестовом FTP-сервере приведен на рис. 4. 23500 27000 25500 24000 ZWU 21000 19900 IfWm 1GS00 VMM 1 ÄH Ti me (msJ| ■ч J ι Vjv V^ / / ---I Debugging Λ \.· / Рис. 3. Сравнение производительности решения Startfuzzlng App port |θ Ξ] Suley Log . [2013-93-06 1Й;Л4іЄ7,219] [ERROR] -> current fuzz path: -> VulnserverDATA [2013-02-05 18;44:07,219] [ERROR] -> fuzzed Θ of 2243 total с-a Les [2013-02-06 18:44:07,219] [ERROR] -> fuzzing 52 of 2248 [2013-Θ2-06 18:44:07,296] [ERROR] -> xmitting: [1.S2] [2013-02-05 18:44:07,390] [DEBUG] *> Packet sent : 1TRUN /.../йААААДАААДААААААААААААААДААААААААДАДААААААААА АДААААААААДААААААААААААААДАЛАЛАДАЛААААААААЛШЛААА AAÜAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAftAftAftAAAAAAAAAAAAftflAAAAAAAAAAAflAAAAflAAAAAAAAAfl AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAflAAAflAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfl MAAAAAAAAAAAAAAAAAAAAA^^ AAAAAAWAWAAAAAAAAAAAftAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA йДАДйАаЙДДДДДДДДДАДАДДДАДДААДАДДАДйД.йДДДДДАДДйайДй AAAAAAAflAflAflAAAAAAAAAAAAAAAAAAAAAAflAflAAAAAAAAAAAAA AAAAAAAflAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA^J -Code coverage log— Debug event bgdębugger thread looking for process id: „ 494Θ41414141 fron thread 6748 caused access violation when attempting to read from 0x41414141 CONTEXT DUMP ГІР: 41414141 Unable to disassemble at 41414141 ЕДХ: 03edf20G ( Й59256Э2) TRUN Λ. - /AAAAAAAftAAAAAAAAAAAAflAAAftAAAAAAAAAAAAAAftflAflAfl AAAAAAAAAAflAAAAAAAAAAAAAAAAAAAAAflAflAflAA (stack) E ЭХ ΘΘ0000d9 : 208) -> N/A £СХ 00765fe4 j 7757796) -> w Cheap) tox дв&Ж&д { 0) N/A £DI 00000009 ( 0) -> N/A ESI Є000&00Є І 0) -> N/A EBP 41414141 (1094795585) -> N/A ESP 03edf9eÖ ! 65927643) -> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAiWWWWWAAAAAAAftAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ддддддААААйДААААддддддАйДйДАДДДАДАйДйДАДйДАААДДйАй AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfl (stack) Address: 0x76856^64 InteriIoekedDecreMetYttflxfeSSBftaj, Address: 0x40253c .) unnanedlnageEntryP&inti&xÇc?,...} Jdreas: 0x402544 unnanedlBiageEritryHpinti0xl00007f3... ) Address: 0x756311e0 TlsGetValue(0x3,... ) Address: 0x751a372d WahOpenCurrentThread(0,...) Address: 0xi62df8 сппй^Ііп*ее£іЦгуРоіпЇ(0х4&4Іс8,,., ) Address: 0x76939836 Fnemset(0x7694c628,... ) ■ Дм(ПЄїЧЄр34Д9Ч Windows Oi&i ΠΐρΐΜΐτρν 9ид Сгрнп Г^индженив J ГЬцесш J Быстродействие J Сеть ~ An образа Полью·.,. ЦП Паи нть зфегл.ехє *32 IÆTW0.,, OO 6 12DKË ivdwlioe LOCAL i.· OO 6«<К6 r/ctciS,sie IOWO.,, га 6IHC KE SVçhfflïW ЮСЯ..- OO «5ÎKE serras.era остею OO 4 746 КБ UTTWMiiIllthi(]& *5? МП «HA CO 4«4Ш Ptt1XDSYnc,еж OCTW OO 4Э6КБ ІІЮ.Щ ост ем QO 4 JftB KB tss^rigF.exe Мак OO 4 «4 КБ WTpie błŁrif ItfIWO... Об 3 552 KB ps4mC,e*e остач OO ї 252 КБ avp.exe '12 Иже OO ÎC5ÉKÉ nvtïSY.m Макс OO ZSW Кб tfaemofttj.eœ *32 Uptla tus... OO 2732 KE ОСТбн» Oo 2 та КБ LMS.exe *33 остені OO г-эмкв rXïtft* OO І2Я КБ Ctfies h. eœ Макс OO г 146 ке tastest,«« Μ*« OO 21«К6 gaœtsv.exe нетеча га 2 12В КБ r.4h«!.fcH toc*... OO ПЗС KE mvsuc.exe система га 2060 КБ ühs.«is«3ï amtM OO 20« КБ Ism .exe систем га 2044КБ igfcçers.iXf Msti OO 202 KE TOWffiPWT.BŒ *32 Масс га 2020 КБ AdobtAfiRtM >32 Mmc OO 1452 KE VWJDSVC.EXE шстев OO 1-600 КБ tostfiMt.-ene M&iŁ OO 1Я4КБ Лін PnÆE. W* оетем OO 1744КБ ;Г ^ ОТСЙрФИГЬ rpOLKŁi все* ПФ.ЪНваТИКЙ Процесс«: 102 ЗггрушЦП;1% Фюичесия п>ч( Рис. 4. Пример детектирования уязвимости 86 Математика, механика, информатика Ключевым этапом, отображенным на схеме, является генерация данных и анализ покрытия кода, который необходим для оценки эффективности проведенного тестирования. Не будем подробно останавливаться на каждом этапе работы системы, лишь отметим, что цель анализатора - сгенерировать данные, которые приведут к ошибке в тестируемом приложении. Для оценки эффективности такого тестирования необходимо оценить степень покрытия бинарного кода тестами. В ходе работы над программным средством были протестированы различные решения оценки покрытия кода: от отладки до динамической бинарной инструментации [4]. Последняя технология показала наиболее значительный прирост к скорости анализа (на 3-4 порядка в сравнении с отладкой). DBI-технология использует виртуальную машину уровня процесса ОС, в которую внедряется специальная dll, описывающая то, как необходимо проводить анализ тестируемой программы. Такая схема позволяет в значительной степени оптимизировать анализ, так как операционной системе нет необходимости в переключении контекста процессора между анализатором и тестируемой программой. Разработанная система была реализована с использованием следующих фреймворков: 1) Sulley-фреймворк - для генерации тестовых данных [5]. 2) Intel PIN - DBI фреймворк для виртуализации тестируемого приложения [6]. 3) библиотека PyDBG - для отладки тестируемого приложения и перехвата исключений. Таким образом, авторами была разработана методика и программное средство, обладающее возможностью тестирования различных приложений, обрабатывающих сетевой трафик и различные пользовательские файлы. На данный момент проект находится в стадии альфа-тестирования. Дальнейшая работа пред полагает расширение числа доступных протоколов для тестирования, использование более эффективных методик анализа покрытия кода, а также применение интеллектуальных алгоритмов для генерации тестовых данных с учетом результатов покрытия кода тестами. В заключение хотелось бы отметить, что поиск уязвимостей является на сегодняшний день очень важным и необходимым этапом жизненного цикла разработки и поддержки ПО.
×

Авторлар туралы

Maksim Shudrak

Siberian State Aerospace University named after academician M. F. Reshetnev

Email: mxmssh@gmail.com
postgraduate student, Information Security Department 31, Krasnoyarsky Rabochy Av., Krasnoyarsk, 660014, Russian Federation

Vyacheslav Zolotarev

Siberian State Aerospace University named after academician M. F. Reshetnev

Email: amida@land.ru
Candidate of Engineering Science, associate professor, Department of Information Technology Security 31, Krasnoyarsky Rabochy Av., Krasnoyarsk, 660014, Russian Federation

Ivan Lubkin

Siberian State Aerospace University named after academician M. F. Reshetnev

Email: lubkin@rambler.ru
senior lecturer, Department of Information Technology Security 31, Krasnoyarsky Rabochy Av., Krasnoyarsk, 660014, Russian Federation

Әдебиет тізімі

  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. 22nd Annual, 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).

Қосымша файлдар

Қосымша файлдар
Әрекет
1. JATS XML

© Shudrak M.O., Zolotarev V.V., Lubkin I.A., 2013

Creative Commons License
Бұл мақала лицензия бойынша қолжетімді Creative Commons Attribution 4.0 International License.

Осы сайт cookie-файлдарды пайдаланады

Біздің сайтты пайдалануды жалғастыра отырып, сіз сайттың дұрыс жұмыс істеуін қамтамасыз ететін cookie файлдарын өңдеуге келісім бересіз.< / br>< / br>cookie файлдары туралы< / a>