Научная статья на тему 'ОБНАРУЖЕНИЕ ВРЕДОНОСНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ С ПОМОЩЬЮ МЕТОДОВ АНАЛИЗА КОДА'

ОБНАРУЖЕНИЕ ВРЕДОНОСНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ С ПОМОЩЬЮ МЕТОДОВ АНАЛИЗА КОДА Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
85
12
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ВРЕДОНОСНЫЕ ПРОГРАММЫ / ОБФУСКАЦИЯ / АНАЛИЗ КОДА

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Пушнов Ю.А.

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

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

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Пушнов Ю.А.

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

MALWARE DETECTION USING CODE ANALYSIS METHODS

The detection of zero-day malware is an ongoing problem. Hundreds of thousands of new malicious programs are published daily on the Internet. Although traditional signature methods are still widely used, they are useful only for known malware. Many studies are aimed at helping to identify unknown suspicious and malicious files.

Текст научной работы на тему «ОБНАРУЖЕНИЕ ВРЕДОНОСНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ С ПОМОЩЬЮ МЕТОДОВ АНАЛИЗА КОДА»

исследовательский Томский политехнический университет (ТПУ), Энергетический институт (ЭНИН). 2016. С. 259-262.

2. Клименко А.В., Зорин В.М. Тепловые и атомные электростанции: Справочник. Книга 3. 3-е изд., перераб. и доп. - М.: Издательство МЭИ, 2003. - 648 с.

3. Гафуров Н.М., Хакимуллин Б.Р., Багаутдинов И.З.Основные направления альтернативной энергетики. Инновационная наука. 2016. № 4 3. С. 74-76.

4. Сафин А.Р., Мисбахов Р.Ш., Гуреев В.М. Обоснование рациональной схемы управления тяговым электроприводом трамвая на основе разработки имитационной модели. // Электроника и электрооборудование транспорта. 2014. № 3. С. 19-22.

УДК 004.056+004.491

Пушнов Ю.А. магистр технических наук Белорусский государственный университет информатики и радиоэлектроники Республика Беларусь, г. Минск

Pushnov Y. Master of Engineering sciences Belarusian State University of Informatics and Radioelectronics

Republic of Belarus, Minsk ОБНАРУЖЕНИЕ ВРЕДОНОСНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ С ПОМОЩЬЮ МЕТОДОВ АНАЛИЗА КОДА Аннотация: Обнаружение вредоносных программ нулевого дня является постоянной проблемой. Сотни тысяч новых вредоносных программ ежедневно публикуются в Интернете. Хотя традиционные сигнатурные методы все еще широко используются, они полезны только для известных вредоносных программ. Многие исследования направлены на то, чтобы помочь выявить неизвестные подозрительные и вредоносные файлы.

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

MALWARE DETECTION USING CODE ANALYSIS METHODS Annotation: The detection of zero-day malware is an ongoing problem. Hundreds of thousands of new malicious programs are published daily on the Internet. Although traditional signature methods are still widely used, they are useful only for known malware. Many studies are aimed at helping to identify unknown suspicious and malicious files.

Key words: malware, obfuscation, disassembling, code analysis.

Основные методы борьбы с вредоносным программным обеспечением можно классифицировать на анализ «песочницы», эвристический статический анализ или эмуляцию кода. Среди трех эвристический статический анализ является самым быстрым, пока дело не доходит до обфусцированной программы. Обфускация кода включает в себя упаковку, защиту, шифрование или вставку антиразборных трюков и используется для сдерживания процесса обратного проектирования и анализа кода. Около 80%-90% вредоносных программ используют какие-то упаковочные технологии [2], а около 50% новых вредоносных программ являются просто упакованными версиями более старых известных вредоносных программ [3].

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

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

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

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

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

Основные преимущества данного метода:

1. Используется тот факт, что некоторые продвинутые запутанные вредоносные программы используют непрозрачные предикатные методы, чтобы препятствовать процессу разборки, и описывают методику, которая превращает эту силу в слабость, обнаруживая ее присутствие и помечая файл как подозрительный;

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

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

Идея использования энтропии для поиска зашифрованных и упакованных файлов была представлена в работе R. Lyda и J. Hamrock [2]. Метод стал широко использоваться, поскольку он эффективен и прост в реализации. Однако некоторые файлы без упаковки могут иметь высокие значения энтропии и, следовательно, приводить к ложным срабатываниям. Например, файлы ahui.exe и dfrgntfs.exe имеют энтропию 6.51 и 6.59 соответственно для своего раздела .text (Эти два файла примера существуют в Windows XP 32-bit). Также простое XOR-шифрование на байтовом уровне может также обходить обнаружение энтропии.

Популярным инструментом для поиска упакованных файлов является PEiD, который использует около 620 паковщика и сигнатуры crypter [1]. Недостатком этого инструмента является то, что он может идентифицировать только известные упаковщики, в то время как сложные вредоносные программы используют специальные пакеты или процедуры шифрования. Более того, даже если используется известный упаковщик, создатель вредоносного ПО может изменить один байт сигнатуры упаковщика, чтобы избежать обнаружения в упакованном виде. Кроме того, инструмент известен своей высокой частотой ошибок [4].

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

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

зависит от оценки энтропии файла или раздела, сигнатуры упаковщиков или особенностей заголовка файла. Таким образом, он способен преодолеть эти недостатки.

Авторы вредоносных программ используют различные антианалитические трюки для защиты от всех видов анализов. Одни из них -способы защиты от дизасемблирования. Приемы анти-дизасемблирования снижают эффективность статического анализа обнаружения вредоносных программ. Одним из наиболее распространенных методов является использование непрозрачного предиката. Хотя существуют законные причины включения непрозрачных предикатных трюков, таких как водяные знаки [5] и препятствующие реверс-инженирингу, они обычно используются во вредоносном ПО для препятствия анализу.

Нечеткие предикатные трюки [6] вставляют условные операторы (обычно управляющие инструкциями потока), результат которых является постоянным и известным автору вредоносного ПО, но не понятен в статическом анализе. Таким образом, дизассемблер будет следовать в обоих направлениях инструкции управления потоком, один из которых ведет к неправильной разборке и влияет на результирующий контрольный граф потока. В качестве примера на следующем рисунке показан непрозрачный трюк с предикатами, вставленный в строки 6 и 7 фрагмента кода. Так как «команда сравнения» в строке 6 всегда будет иметь значение true, фиктивная ветвь никогда не будет взята во время выполнения. Однако для дизассемблера этот факт не является очевидным, и он будет оценивать оба пути.

1 2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18 19

xor eax, eax

nop

nop

LI: push eax

cmp eax, eax

jne fake

add ecx, 333h

jmp skip

fake: DB OFh

skip: nop nop

mov ecx, ecx

mov edx, 444h

push offset ProcName

push eax

call GetProcAddress

В этом примере дизассемблер будет следовать указанию инструкции jne в строке 7, что приведет к байту данных в строке 11. Разборка будет продолжаться, начиная с этого байта, 0F, в результате чего будет выполнена

запись в файл с кодом 0F9090 8ВС9ВА44.

Н N Ul

; START OF FUNCTION CHUNK FOR start

loc 401828: ; lpProcName

push eax

cnp eax, eax

jnz short loc_401O35

XT

Н N i-U

add j"P

есх, 333h

short near ptr loc_401O35+1

H N Ul

loc 401035:

seto byte ptr [eax+44BflC98Bh]

add al, 0

add [eax-78h], ch

xor [eax+0], al

push eax ; hModule

call GetProcflddress

33C0 90 90 50

3BC0 75 08

81C1 3303000«fiDD ECX,333

EB 01

XOR EfiX,EfiX

MOP

MOP

PUSH EfiX

CMP EfiX,EfiX

JME SHORT 00401035

JMP SHORT 00401036

0P9090 SBC9BI SETO BVTE PTR OS:[ЕАХ+44ВЙС98В]

04 00 fiDD fiL, 0

0068 88 fiDD BVTE PTR DS:[EflX-78],CH

3040 00 XOR BVTE PTR DS:СEfiX],fiL

50 PUSH EfiX

E8 32000000 CALL < JMP.ern e 132.Get Procfiddress >

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

00401004: push eax 00401005: cmp cax. eax 00401007: jne 00401011 h

__i__

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

00401009: add ecx, ОООООЗЗЗЬ 00401 OOF: jmp 00401012h

Использованные источники:

1. Saleh, M. E. Detection and classification of obfuscated maleware. Department of Computer Science / M. E. Saleh - College of Sciences, University of Texas at San Antonio, May 2016.

2. Lyda, R. Using entropy analysis to find encrypted and packed malware. Security Privacy / R. Lyda, J. Hamrock - IEEE, 5(2), 2007, 40-45p.

3. Stepan, A. Improving proactive detection of packed malware / A. Stepan -Virus Bulletin, 2006, 11-13 p.

4. Shafiq, M. PE-probe: leveraging packer detection and structural information to detect malicious portable executables / M. Shafiq, S. Tabish, M. Farooq - In Proceedings of the Virus Bulletin Conference (VB), 2009, 29-33 p.

5. Myles, G. Software watermarking via opaque predicates: Implementation, analysis, and attacks / G. Myles, Ch. Collberg - Electronic Commerce Research, 6(2), 2006, 155-171 p.

6. Eilam, E. Reversing: Secrets of Reverse Engineering / E. Eilam - Wiley & Sons, 2008.

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