ВВЕДЕНИЕ 3
Анализ исследований в данной области 5
Глава 1 9
Способы обнаружения вирусов 9
Характеристики файлов 11
Структура PE - файла 11
N-граммы по опкодам 13
Математические модели 16
Нейронная сеть^^ 16
Деревья решений(ЮТ) 19
Композиции алгоритмов 21
Глава 2. Эксперименты и результаты 24
Системная информация о файлах PE 24
Нейронные сети 24
Random Forest(RF) 29
Композиции классификаторов 31
N - граммы 33
Результаты 36
ЗАКЛЮЧЕНИЕ 37
ПРИЛОЖЕНИЕ 39
ЛИТЕРАТУРА 69
Распространение и развитие сети Интернет позволило получать доступ к программному обеспечению, не выходя из дома. Однако вместе с этим так же упростились способы доставки вредоносных программ. Учитывая это и то насколько информационные технологии проникли в нашу повседневную жизнь, можно сделать вывод что данные программы могут нанести ощутимый ущерб.
Несмотря на наличие большого числа антивирусов, данная проблема остается актуальной и сегодня. Исходя из исследования 2014 года можно сделать следующие выводы:
• Среди применяемых методов защит лидирует защита от вредоносного ПО на рабочих станциях (41%)
• Самой значимой среди внешних угроз является вредоносное ПО (77%)
• За год 98% российских компаний столкнулись хотя бы с одним инцидентом информационной безопасности, вызванным внешними факторами
• Инциденты с использованием вредоносного ПО являются самыми опасными. В 46% случаев происходила утечка данных из компании
• Средняя сумма финансового ущерба в следствии кибератак у крупных копаний 20 млн. рублей, у среднего и малого бизнеса 780 тыс. рублей
Как мы видим вредоносное ПО является лидером по количеству инцидентов в ИТ безопасности. А компании несут большие убытки вследствие недостаточной защищенности. Если учесть еще и дополнительные расходы на устранение последствий данных инцидентов, а также репутационные издержки можно утверждать, что вопросы информационной безопасности являются одними из основных в современных компаниях. Приведенный выше данные показывают, что вирусы под платформу Win32 являются одними из самых распространенных. Это объяснимо учитывая, что «семейство» операционных систем Windows является самым популярным. Опираясь приведенную информацию можно утверждать, что тема, рассматриваемая в моем исследовании, является актуальной.
В данной работе будет рассматриваться именно платформа Win32. Не смотря на различие в типах вредоносного ПО: вирусы, черви, трояны и т. д. Здесь и в дальнейшем под вирусами будет пониматься любая программа способная нанести вред. Поскольку структура файлов, предназначенных под конкретную платформу одинакова, это позволяет рассматривать вирусы как общий класс, а не отдельный группы.
Цели работы:
• Исследовать использованные ранее подходы к обнаружению вирусов.
• Провести собственные эксперименты
• Исследовать структуру файлов формата PE, для выявления новых характеристик
• Разработать статический классификатор, на основе методов
машинного обучения, для обнаружения вирусов.
• Сравнить результаты с существующими решениями
Анализ исследований в данной области
В ходе работы был проведен анализ существующих исследований. В каждой работе особое внимание уделялось следующим аспектам: используемые характеристики файлов, математические модели, обучающее множество и результаты.
Необходимо понимать, что сравнение результатов исследований часто затрудняется тем что каждый автор использует различные обучающие множества и метрики.
В работе 2001 года [1] авторы используют следующие типы характеристик:
• Используемые DLL;
• Вызовы функций DLL;
• Строки
• Последовательности байт
В исследовании были проведены тесты с различными алгоритмами, для каждого из которых использовались свои характеристики. Например, алгоритм Ripper обучался на данных о DLL. А для обучения Наивного Байесовского и Мультиномиального Наивного Байесовского классификаторов использовались строковые данные файлов, а также п- граммы по байтам. В качестве анализа результатов работы классификаторов было проведено исследование полученных правил.
В итоге на обучающем множестве, состоявшем из 4266 файлов, разделенных в следующей пропорции 3265 вирусов и 1001 чистых файлов, лучшая точность классификации составила 97.11% для Наивного Байесовского классификатора.
В работе в качестве характеристик было предложено использовать N-граммы по байтам. В качестве обучающего множества было собранно 1971 чистых файлов и 1651 вредоносных. Признаком при отборе характеристик выступал Information Gain, с помощью которого определили 500 N-грамм. Авторы проверили различные индуктивные методы: Наивный Байес, SVM, Деревья Решений, Бустинг и др. Самый лучший результат показал бустинг над деревьями решений с точностью 98% и 0,05% ложных срабатываний.
Исследование 2013 года [3] использовала схожие характеристики с выше указанными работами, а именно:
• Системная информация о файлах PE
• Подключенные DLL
• Функции DLL
Как и в предыдущей работе среди всех признаков с помощью Information Gain были отобраны наиболее информативные 88 признаков заголовков файлов, 130 часто используемых DLL и 2453 функций API. Было протестировано несколько методов: SVM, Наивный Байес, Деревья решений. Для уменьшения размерности признакового пространства и ускорения обучения системы применялся метод главных компонент. В качестве обучающего множества использовалась открытая база вирусов VX heaven, которая содержит примерно 230 тыс. вирусов. Чистые файлы были собраны вручную их число составило 10592 шт. В итоге лучший результат показал алгоритм «Деревья решений»: 99.6% точности с 2.7% ложных срабатываний.
В работе [4] акцент был сделан использованию и извлечению N- граммных опкодов. Проведена большая работа по представлению исполняемых файлов в виде вектора характеристик на основе N-граммных опкодов. Исследование различных длин последовательностей опкодов, показало, что лучший результат достигается при длине 2. На открытой коллекции вирусов VX heaven были исследованы различные модели, среди которых: Random Forest, Деревья решений, Наивный Байес, KNN, SVM. Лучший результат был получен с помощью алгоритма SVM: 95,90% точность, 0,03% ложных срабатываний.
В 2014 году была опубликована исследовательская работа [5]. Характеристики:
• N-граммные опкоды.
• Системная информация о PE файлах.
Были исследованы различные математические модели, в их числе Деревья Решений, Градиентный бустинг, SVM, Наивный Баейс. В итоге построен агрегированный классификатор, использующий множество из 20 различных классификаторов. Так же рассматривалась возможность сокращения размерности признакового пространства с помощью метода главных компонент.
Обучающее множество: вирусы - коллекция с сайта vxheaven.orgоколо 230 тысяч штук, чистых файлов - 17746. Результаты: точность 99,87% с 0,01% ложных срабатываний.
В данной работе был предложен метод обнаружения вредоносных файлов с помощью статического классификатора основанного на нейронных сетях. Для контроля точности так же использовался популярный алгоритм для решения подобных задач - Random Forest. Всего было предложено 2 метода: первый основан на использовании многослойных нейронных сетей (многослойный персептрон и рекуррентная нейронная сеть), 2 метод основан на композициях нейронных сетей. Каждый из методов проверялся на двух типах характеристик: информация о структуре PE файла и биграммы на опкодах. Для подхода на биграммах было проведено исследование для выявления оптимальных параметров дающих наибольшую точность.
Проведенные эксперименты показали, что композиции алгоритмов не позволяют увеличить точность базовых методов. По-моему, предположению это связанно с использованием «сильных» классификаторов как базовых, все подобные методы обычно строят свои архитектуры на слабых алгоритмах.
В итоге предложенные методы оказались немного хуже RF, однако они все же показали достаточно высокую точность. Считаю, что предположение об эффективности нейронных сетей для решения подобных задач оказалось верным. По результатам экспериментов можно утверждать, что большинство алгоритмов при использовании опкодов как характеристик показывают лучшую точность. Наилучший результат среди всех алгоритмов показал Random Forest на опкодах с точностю 98,58%, среди нейронных сетей лучшая точность у многослойного персептрона опять же на опкодах 97,74%.
Поскольку все методы машинного обучения так или иначе работают с определенной точностью, всегда существует вероятность ошибки, исходя из этого предложенные методы нельзя использовать как изолированные независимые системы. Большую пользу такие модели могут принести при анализе файлов специалистом, упрощая его работу либо в подобных сферах деятельности. Я считаю, что в той или иной степени объединение существующих методов обнаружения вредоносных файлов с перспективными, в том числе с основанными на методах машинного обучения, позволит эффективнее бороться с угрозами в сфере информационных технологий.
В качестве усовершенствования использованных методов можно предложить следующее: использование n-граммов различной длины в рамках одной модели, анализ запакованных файлов, увеличение точности за счет обучения отдельно по разным типам вирусов.
1. M. G. Schultz, E. Eskin, E. Z., and S. J. Stolfo, «Data mining methods for detection of new malicious executables», 2001.
2. J.Z. Kolter and M.A. Maloof. «Learning to detect and classify malicious executables in the wild», 2006.
3. Usukhbayar Baldangombo, Nyamjav Jambaljav, and Shi-Jinn Horng «A Static Malware Detection System Using Data Mining Methods», 2013.
4. Igor Santos, Felix Brezo, Xabier Ugarte-Pedrero, Pablo G. Bringas «Opcode Sequences as Representation of Executables for Data-mining-based Unknown Malware Detection», 2013.
5. Евгений Путин, Адиль Тимофеев. «Классификатор для статического обнаружения компьютерных вирусов, основанный на машинном обучении”, International Journal «Information Technologies & Knowledge» Vol. 8. pp. 103-112 2014.
6. https://www.virustotal.com/ru/statistics/
7. https://securelist.ru/analysis/malware-quarterly/26385/razvitie-informacionnyx-ugroz-vo-vtorom-kvartale-2015-goda/
8. http://www.slideshare.net/malvvv/it-risk-reportrussia2014?qid=d5af7a61-fede-4fe4-afce-e3bf2696c45a&v=default&b=&from search=2
9. http://msdn.microsoft.com/en-us/library/gg463119.aspx
10. Szor P. «Attacks on Win32», Virus Bulletin, 1998. - P. 57-84.
11. Szor P. «Attacks on Win32 - Part II», Virus Bulletin, 2001. - P. 123-144.
12. Jeff Heaton «Introduction to Neural Networks with Java», 2008.
13. Царегородцев В. Г. «Оптимизация экспертов Boosting-коллектива по их кривым обучения», XIII Всероссийский семинар «Нейроинформатика и её приложения» с. 152-157. 2004
14. Cortes C., Jackel L.D., Solla S.A., Vapnik V., Denker J.S. «Learning curves: Asymptotic values and rate of convergence» Advances in Neural Information Processing Systems 6 (1993). Morgan Kaufmann, 1994. - pp.327-334.
15. Yoav Freund, Robert E. Schapire «A Short Introduction to Boosting» 1999
16. Paul Viola , Michael Jones «Rapid object detection using a boosted cascade of simple features» 2001
17. Paul Viola , Michael Jones «Robust Real-time Object Detection» 2001
18. Климентьев К. Е. «Компьютерные вирусы и антивирусы: взгляд программиста» 2013.
19. Peter Szor «The art of computer virus research and defense», 2005.