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

ПАКЕТ ВИЗУАЛИЗАЦИИ ГРАФА УПРАВЛЕНИЯ МОДЕЛИ МИШЕНИ КАК ЧАСТЬ ПРОГРАММНОГО КОМПЛЕКСА ПО ВЫЯВЛЕНИЮ ВРЕДОНОСНОГО КОДА И НЕДЕКЛАРИРОВАННЫХ ВОЗМОЖНОСТЕЙ ПО

Д.А. Гусарова

Научный руководитель - д.т.н., профессор Л.Г. Осовецкий

Группой разработчиков кафедры БИТ СПбГУ ИТМО разрабатывается программный комплекс по верификации программного обеспечения (ПО), выявлению недекларированных возможностей и вредоносного кода. В статье рассказывается об одной из компонент разрабатываемого программного комплекса, а именно - о пакете визуализации графа управления программы, названном 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

0058EBDB E43C in al, 3C

0058EBDD DADD fcmovu st

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. Пример файла дизассемблированного листинга мишени

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.

После этого происходит разделение содержимого файла на блоки. Каждый блок представляет собой последовательность операторов, которая заканчивается условным или безусловным переходом. Полученный набор блоков, их последовательность, а также другие параметры описываются с помощью специального языка 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

MOV ch, lO

SAHF

JTSTZ OOi8EC13

Рис. 3. Визуализированный граф управления мишени

Заключение

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

Литература

1. Шевченко А. Microsoft Vista против вирусов: кто кого? / http://www.viruslist.com - 2007.

2. Гостев А. Обзор вирусной активности, январь 2007 / http://www.viruslist.com - 2007.

3. Новое поколение уничтожителей информации. / http://www.novirus.ru - 2007.

4. Немолочнов О.Ф., Раков С.В. Автоматизация логического проектирования. / Учебное пособие. Санкт-Петербург: ИТМО, 1995. 60 с.