ПАКЕТ ВИЗУАЛИЗАЦИИ ГРАФА УПРАВЛЕНИЯ МОДЕЛИ МИШЕНИ КАК ЧАСТЬ ПРОГРАММНОГО КОМПЛЕКСА ПО ВЫЯВЛЕНИЮ ВРЕДОНОСНОГО КОДА И НЕДЕКЛАРИРОВАННЫХ ВОЗМОЖНОСТЕЙ ПО
Д.А. Гусарова
Научный руководитель - д.т.н., профессор Л.Г. Осовецкий
Группой разработчиков кафедры БИТ СПбГУ ИТМО разрабатывается программный комплекс по верификации программного обеспечения (ПО), выявлению недекларированных возможностей и вредоносного кода. В статье рассказывается об одной из компонент разрабатываемого программного комплекса, а именно - о пакете визуализации графа управления программы, названном Alpha.
Введение
Сегодня вирусные атаки прочно удерживают пальму первенства во всех хитпарадах угроз IT-безопасности. Эти вредители наносят прямой финансовый ущерб, а также служат отправной точкой для реализации многих других опасных угроз, среди которых - кража конфиденциальной информации и несанкционированный доступ к данным. В свою очередь, антивирусная индустрия предлагает несколько новых подходов к защите IT-инфраструктуры: проактивные технологии, форсированный выпуск критически важных вакцин, серьезное увеличение частоты обновления антивирусных баз и т.д.
Характерной чертой сегодняшнего дня является не только огромный ущерб, наносимый вирусными атаками, но и непрекращающийся рост числа самих вредоносных кодов. Отметим, что в 2005 году рост популяции компьютерных вредителей приобрел просто взрывной характер. Например, по данным «Лаборатории Касперского», количество ежемесячно детектируемых вирусов выросло на конец 2005 года в среднем до 6368 экземпляров, а по итогам года рост составил 117 %, в то время как в 2004 году рост составил только 93 %.
На данный момент ни одна антивирусная программа не дает стопроцентной гарантии обнаружения вредоносного кода. Их проактивный/эвристический анализ является скорее слабым звеном в поиске вредоносного кода и далеко не всегда обнаруживает неизвестные вирусы.
Основная часть
Группой разработчиков с кафедры БИТ СПбГУ ИТМО разрабатывается программный комплекс по верификации ПО (программного обеспечения), выявлению не-декларированных возможностей и вредоносного кода. В статье рассматривается одна из компонент разрабатываемого программного комплекса, а именно - пакет визуализации графа управления программы, названный Alpha.
Пакет визуализации Alpha включает в себя 2 программы:
1. Alpha32 - 32-битная программа на языке Delphi, которая анализирует тестовую программу (далее мишень) и строит по ее коду граф управления.
2. Dot.exe - собственно сам визуализатор.
Основные принципы работы Alpha32
На вход программы подается файл дизассемблированного листинга мишени (далее - файл), полученный с помощью w32Dasm (см. рис. 1). Alpha32 находит в файле условные и безусловные переходы, запоминает их последовательность и адреса, а также адреса, на которые указывают эти переходы.
0058EBBD 16 push ss
0058EBBE EC in al, dx
0058EBBF 6801C1008B push 8B00C101
0058EBC4 11D8 adc eax, ebx
0058EBC6 207784 and byte ptr [edi-7C], dh
0058EBC9 19709F sbb dword ptr [eax-61], esi
0058EBCC 07 pop es
0058EBCD E689 out 89, al
0058EBCF 5D pop ebp
0058EBD0 F8 clc
0058EBD1 648F5711 pop fs:[edi+11]
0058EBD5 C855FC8B enter FC55, 8B
0058EBD9 F8 clc
0058EBDA 4B dec ebx
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0058EB78(C)
0058EBDB E43C in al, 3C
0058EBDD DADD fcmovu st(0), st(5)
0058EBDF B510 mov ch, 10
0058EBE1 9E sahf
0058EBE2 8B2CD3 jnz 0058EC13
0058EBE5 2CF0 sub al, F0
0058EBE7 FE40A5 inc [eax-5B]
0058EBEA 5E pop esi
0058EBEB 8531 test dword ptr [ecx], esi
0058EBED 8CDA mov dx, ds
0058EBEF 1303 adc eax, dword ptr [ebx]
0058EBF1 F8 clc
0058EBF2 893E mov dword ptr [esi], edi
0058EBF4 816FFF16210650 jmp 0058EBBD
Рис. 1. Пример файла дизассемблированного листинга мишени (primer.lst)
digraph G { node[shape = record]; edge[headport = n]; Start[label="START", shape = "box", style="filled"]; Start -> Addr0058EBBD;
Addr0058EBBD[label="0058EBBD:\lPUSH ss\lIN al, dx\lPUSH 8B00C101\lADC eax, ebx\lAND byte ptr [edi-7C], dh\lSBB dword ptr [eax-61], esi\lPOP es\lOUT 89, al\lPOP ebp\lCLC \lPOP fs:[edi+11] \lENTER FC55, 8B\lCLC \lDEC ebx\lIN al, 3C\lFCMOVU st(0), st(5)\lMOV ch, 10\lSAHF \lJNZ 0058EC13"]; Addr0058EBBD -> Addr_EXIT[label = "Y (out of program)"] Addr0058EBBD -> Addr0058EBE5[label = N]
Addr0058EBE5[label="0058EBE5:\lSUB al, F0\lINC [eax-5B]\lPOP esi\lTEST dword ptr [ecx], esi\lMOV dx, ds\lADC eax, dword ptr [ebx]\lCLC \lMOV dword ptr [esi], edi\l"];
Addr0058EBE5 -> Addr0058EBBD[label = Jump]
Addr_EXIT[label="EXIT", shape = "box", style="filled"]; }
Рис. 2. Файл описания графа управления программы на языке Dot. (primer.dot)
После этого происходит разделение содержимого файла на блоки. Каждый блок представляет собой последовательность операторов, которая заканчивается условным или безусловным переходом. Полученный набор блоков, их последовательность, а также другие параметры описываются с помощью специального языка dot. Результатом работы программы является файл описания графа управления программы на языке dot (рис. 2).
Dot.exe - собственно сам визуализатор
Данная программа разработана фирмой Graphviz и распространяется бесплатно. Сайт производителя: http://www.graphviz.org. На вход программы подается файл Dot описания (см. рис. 2), по которому программа «рисует» граф управления. На выходе получаем файл формата JPG - визуализированный граф управления мишени (рис. 3).
START
OOiSEBBD:
PUSH ss
EST al, dx
PUSH SBOUC'lUl
ADC eax. e!»i
AND byte pti [edi-7C], dh
SBB ctsvord pti" [ea5i-<31], est
POP es
OUT 89, al
POP ebp
CLC
POP is: [edi+11 ]
ENTER FC5 5. SB
CXC
DEC ebx
H--T al. 3C
PCMOVU st(0), st(5)
MOV ch, lO
SAHF
JTSTZ OOi8EC13
Рис. 3. Визуализированный граф управления мишени (primer.jpg)
Заключение
Работа над представленным пакетом далека от завершения. На данном этапе нет возможности обрабатывать мишени с вычисляемыми и шифрованными адресами, а также самомодифицирующимся кодом. Впоследствии предполагается добавить в пакет возможность динамического анализа и построения графа управления по загруженной (работающей в данный момент) модели мишени.
Литература
1. Шевченко А. Microsoft Vista против вирусов: кто кого? / http://www.viruslist.com - 2007.
2. Гостев А. Обзор вирусной активности, январь 2007 / http://www.viruslist.com - 2007.
3. Новое поколение уничтожителей информации. / http://www.novirus.ru - 2007.
4. Немолочнов О.Ф., Раков С.В. Автоматизация логического проектирования. / Учебное пособие. Санкт-Петербург: ИТМО, 1995. 60 с.