Использовать алгоритмы экспертных систем для выявления вредоносных файлов что это

Обновлено: 07.07.2024


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

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

Лучше всего будет создать для карантина виртуальную сеть (VLAN) с выходом в интернет и переместить туда зараженные ПК. В крупной компании это потребует слаженных действий сотрудников службы кибербезопасности и сетевых администраторов, в мелкой — разноплановых навыков единственного сисадмина.

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

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

Дальше запустим ПК, используя загрузочный носитель с любой операционной системой в режиме forensic и ПО для получения образа жесткого диска. Чаще всего используется образ диска в формате E01 (Encase Image File Format). Его поддерживает большое число приложений как для Windows, так и для Linux.

Режим forensic — это загрузка без монтирования физических дисков. Это позволяет исключить внесение любых изменений в исследуемый диск. Профессиональные криминалисты также используют устройства, позволяющие заблокировать любые попытки обращения к диску для записи.

Изучение дампов

Дампы памяти и диска, скорее всего, содержат всё, что нам необходимо, — тело вредоносной программы и оставленные ей следы. Можем приступать к поиску.

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

На сайте Microsoft есть документация по автозагрузке сервисов и библиотек.

Чтобы понять, каким путем малварь проникла на компьютер, стоит исследовать время создания и изменения файлов на диске, историю браузера и почтовый архив пользователя. Если получится установить хотя бы примерное время заражения, то это будет плюсом. В интернете есть неплохие подборки путей в файловой системе и реестре, на которые стоит обращать внимание в первую очередь (вот, например, неплохая статья Group-IB об этом).

Из дампа памяти ты тоже можешь извлечь некоторую уникальную информацию, например какие были открыты документы и вкладки браузера в момент заражения, какие были активные сетевые подключения, рабочие процессы (в том числе скрытые).

Анализ файла

Также нельзя исключать, что ты столкнулся с угрозой нулевого дня (0-day) — той, о которой еще никому не известно (и у разработчиков есть ноль дней на ее устранение — отсюда и название). Малварь, которая эксплуатирует зиродеи и имеет статус FUD, представляет серьезную угрозу не только для отдельных компьютеров, но и для целых компаний.

Перед началом анализа подозрительного файла необходимо сделать следующее.

  1. Подготовить стенд для исследования — виртуальную машину с установленной операционной системой, подходящей для запуска исследуемого файла.
  2. Настроить выход в интернет, желательно обеспечив скрытие своего реального IP-адреса, чтобы не потерять связь с серверами управления малвари (тебя могут распознать как вирусного аналитика и ограничить доступ, чтобы скрыть какие-то функции).
  3. Сделать снимок (snapshot) первичного состояния виртуальной машины.

Ни в коем случае не подключай стенд в корпоративную сеть — это может вызвать массовое заражение других компьютеров.

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

Статический анализ

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

Рассмотрим начальные заголовки исполняемого файла для Windows.

  1. DOS-заголовок файла, также известный как DOS-заглушка. Благодаря ему возможен запуск программы в DOS (обычно всего лишь выводится надпись This program cannot be run in DOS mode). Можно увидеть начало заголовка по характерным буквам MZ .
  1. Сразу же за первым идет используемый современными ОС заголовок со всеми необходимыми параметрами для исполняемого файла (например, смещение до таблицы импорта/экспорта, начало секции исполняемого кода). Начало заголовка можно найти по характерным буквам PE, а описание формата есть на сайте Microsoft.

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

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

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

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

Более глубокий (и в то же время сложный) анализ любых исполняемых файлов ― это применение дизассемблеров. Ассемблерный код понятнее для человека, чем машинный, но из-за объемов разобраться в нем бывает далеко не так просто. В отдельных случаях возможно восстановить исходный код программ на языке высокого уровня путем декомпиляции — если удастся определить, какой использовался компилятор и алгоритм обфускации.

Словарь терминов

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

Анализ кода на ассемблере ― трудоемкий процесс, который требует больших затрат времени и хороших навыков низкоуровневого программирования, поэтому для быстрого анализа можно преобразовать полученный код в псевдокод. Читать псевдокод более удобно, чем ассемблер, это можно увидеть по следующему примеру, где слева оригинальный код на ассемблере, а справа — псевдокод.

Код на ассемблере
Псевдокод

Динамический анализ

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

WARNING

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

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

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

Неважно, используешь ты отладчик или какую-то программу, которая позволяет контролировать вызовы API, — работать придется в ручном режиме. А это значит, что потребуются углубленные знания операционной системы, зато ты получишь самые полные данные об объекте исследования.

Однако анализ можно и автоматизировать. Для этого используются так называемые песочницы (sandbox) — тестовые среды для запуска ПО.

Песочницы делятся на два типа: офлайновые и онлайновые. Для получения наиболее полной картины я рекомендую использовать сразу несколько источников данных и не исключать какой-то из типов песочниц. Чем больше информации ты соберешь, тем лучше.

Пример анализа

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

Для начала определимся с последовательностью действий. Вот что нам нужно сделать:

  • получить хеш-сумму с файла;
  • воспользоваться онлайновым сервисом для проверки файла;
  • собрать статические данные из файла;
  • проверить файл в песочнице (локальной или в интернете);
  • запустить файл в виртуальной среде для отслеживания выполняемых действий;
  • снять оболочки и получить развернутый в памяти вредонос;
  • проанализировать код в дизассемблере.

Допустим, нам необходимо исследовать неизвестный файл Sample.exe .

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

Делаем снимок (snapshot) виртуальной машины, на которой и будем запускать исполняемый файл (изначальное состояние системы нам еще пригодится), и считаем хеш-сумму файла.

Получение хеш-суммы файла

Получение хеш-суммы файла

Видим, что он выдает схожий результат (смотри в правом нижнем углу). Кроме того, можно собрать дополнительные данные о том, что делала программа. А именно:

  • после старта продублировала себя в памяти;
  • обратилась к серверу 208.91.199.224 по порту 587. На платформе можно посмотреть сетевой дамп взаимодействия с сервером управления малварью (их часто называют Command & Control, C2 или C&C);
  • добавила запрет на запуск диспетчера задач;
  • скопировала себя в отдельную пользовательскую директорию;
  • добавила себя в автозагрузку.

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

Итак, уже два сервиса подтвердили, что это малварь. Продолжаем. Воспользуемся инструментом под названием DIE.

Открываем файл с помощью DIE

Открываем файл с помощью DIE

Detect it easy (DIE) ― утилита, позволяющая импортировать и экспортировать список ресурсов, извлекать манифест и версию ПО, просматривать вычисления энтропии. Есть возможность добавить свои собственные алгоритмы обнаружения или изменить существующие. Это делается с помощью скриптов на языке, напоминающем JavaScript.

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

Другой способ узнать, что малварь написана на Visual Basic, — использовать CFF Explorer.

CFF Explorer ― набор инструментов с единым минималистичным интерфейсом, который позволяет просматривать и при необходимости редактировать все секции заголовка исполняемого файла. Здесь же можно увидеть импорты и экспорты функций из библиотек, перечень самих библиотек и адресацию секций.

В этом случае мы увидим характерную импортированную библиотеку — ее наличие говорит о том, что используются функции Visual Basic.

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

Hiew ― редактор двоичного кода со встроенным дизассемблером для x86, x86-64 и ARM. Также им можно открывать физические и логические диски как файл. Hiew ― «легковесная» (в отличие от IDA) и при этом очень мощная программа, которая позволяет составить первое впечатление об исследуемом объекте.

На данном этапе нам достаточно знать, что при запуске будет исполняться код на Visual Basic.

Пришло время попробовать вытащить код и зафиксировать поведение при запуске. Для этого нам потребуется приготовленная виртуальная машина с Windows, Process Dump и API Monitor.

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

В API Monitor запускаем Sample.exe и получаем следующую картину: стартует еще один процесс, после чего первый завершается, далее программа добавляется в автозагрузку.

Просмотр API-вызовов файла при помощи API Monitor

Просмотр API-вызовов файла при помощи API Monitor

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

Обнаружили копию в автозагрузке, на диске, открываем файл в DIE

Обнаружили копию в автозагрузке, на диске, открываем файл в DIE

Программа еще и отключает возможность вызвать диспетчер задач.

Просмотр API-вызовов файла при помощи API Monitor

Просмотр API-вызовов файла при помощи API Monitor

Этого уже вполне достаточно, чтобы с уверенностью сказать, что файл вредоносный.

Выгрузим из оперативной памяти работающий процесс. Воспользуемся утилитой для выгрузки дампа процесса ― Process Dump. PID берем из данных API Monitor, он отображается рядом с именем процесса.

Использование утилиты Process Dump

Использование утилиты Process Dump

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

Результат работы утилиты Process Dump

Результат работы утилиты Process Dump

Проверяем каждый полученный исполняемый файл в DIE.



Открываем каждый файл в DIE

Просмотр кода в dnSpy

Просмотр кода в dnSpy

Для анализа двух оставшихся файлов воспользуемся дизассемблером IDA.

IDA ― популярный интерактивный дизассемблер компании Hex-Rays. Имеет бесплатную и пробную версии, чего вполне достаточно для первичного знакомства. Также компания выпускает версию Pro. Основная задача программы ― это перевод исполняемых файлов из бинарного вида в читаемый код на ассемблере.

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

Просмотр псевдокода в IDA

Просмотр псевдокода в IDA

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

Мы, когда использовали API Monitor, уже выявили вредоносную сущность этого файла по совершаемым действиям. Но пока что не знаем, каков потенциал этой малвари. Чтобы получить полный алгоритм работы этого исполняемого файла, необходимо углубляться в анализ как ассемблерного кода, так и программы на Visual Basic, но это выходит за рамки статьи.

Заключение

Если у тебя создалось впечатление, что мы бросили исследование в самом начале пути, то оно отчасти справедливо: здесь мы проделали лишь те действия, которые не требуют знания ассемблера. Однако, как видишь, провести экспресс-анализ и установить, чего можно ждать от малвари, вполне реально и без этого.

При полноценном же разборе потребуется глубокое понимание принципов работы операционной системы и, конечно, знание ассемблера.

Обнаружение вредоносного ПО с помощью алгоритмов МО на облачной платформе Google

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

В этой статье я расскажу:

  • как решал проблему вредоносного ПО с датасетом, содержащем около 200 ГБ данных;
  • как создал функции изображения;
  • как использовал дополнительные возможности для достижения логистической функции потерь 0.01.

1. Бизнес-проблема

1.1. Что такое малварь?

Английский термин “malware” (“малварь”) — это сложносокращенное слово от “malicious software” (вредоносное программное обеспечение). Если коротко, вредоносное ПО — это любая часть программного обеспечения, написанная с намерением нанести вред данным, устройствам или людям.

1.2. Постановка проблемы

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

1.3 Источник/полезные ссылки

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

Набор данных, собранный корпорацией Майкрософт, содержит около 9 классов вредоносных программ.

1.4. Реальные/бизнес-цели и ограничения

  1. Минимизация ошибок при анализе многоклассовых данных.
  2. Вероятностная оценка многоклассовых данных.
  3. Ограничение времени обнаружения вредоносных программ несколькими секундами/минутами во избежание блокировки компьютера пользователя.

2. Проблема датасета/машинного обучения

2.1. Данные

2.1.1. Обзор данных

Типы вредоносных программ:

  • Ramnit;
  • Lollipop;
  • Kelihos_ver3;
  • Vundo;
  • Simda;
  • Tracur;
  • Kelihos_ver1;
  • Obfuscator.ACY;
  • Gatak.

2.1.2. Пример точки данных

asm-файл

bytes-файл

2.2. Сопоставление реальной проблемы с проблемой МО

2.2.1. Тип проблемы машинного обучения

Существует 9 различных классов вредоносных программ, которые нам необходимо классифицировать по заданной точке данных => Проблема многоклассовой классификации

2.2.2. Показатели эффективности

  • Многоклассовая логистическая функция потерь
  • Матрица неточностей

2.2.3. Цели и ограничения машинного обучения

Цель: Установить вероятность принадлежности каждой точки данных к одному из 9 классов.

Ограничения: * Нужна вероятностная оценка классов. * Исключить ошибки в вероятностной оценке классов =>Метрика — логистическая функция потерь. *Определенные ограничения по времени.

2.3. Датасет для машинного обучения и тестирования

Рандомное разделение датасета на три части:

  • 64% — для машинного обучения;
  • 16% — для перекрестной проверки;
  • 20% — для тестирования.

2.4. Полезные блоги, видео и справочные материалы

“Перекрестная проверка более надежна, чем знание предметной области”.

3. Использование облачной платформы Google (GCP)

Шаг -1

Создаем экземпляр, указанный ниже. Перед этим обязательно создаем брандмауэр. Как только и то, и другое будет сделано, можно создать внешний IP-адрес со статическим типом и назначить экземпляр.

Созданный экземпляр Google Cloud

Шаг -2

Шаг -3

На этом решающем этапе используем переадресацию портов, как показано ниже.

Шаг -4

Теперь используем приведенную ниже команду, чтобы открыть jupyter notebook.

Теперь открываем браузер Chrome и вводим IP экземпляра: TCP Port

После введения команды Jupyter notebook вы получите токен в консоли (можете использовать то же самое для постоянной установки пароля). Когда все шаги будут выполнены, jupyter notebook отобразится на Google Compute Engine, как показано ниже.

Как видно на рисунке ниже, я использовал 56% из назначенных 492 ГБ. Все в облачном хранилище. Разве это не здорово?

4. Загрузка и извлечение файлов

4.1 Загружаем датасет из Kaggle

Я использовал расширение CurlWget, которое доступно в магазине Google Chrome. Он поможет загрузить датасет из Kaggle и его Cancel.

Открываем CurlWget, копируем ссылку и открываем jupyter notebook.

В ячейке напечатайте то, что указано ниже.

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

4.2 Распаковываем/извлекаем сжатый файл

Устанавливаем 7zip с помощью команды PIP в ячейке jupyter notebook и извлекаем файлы определенных типов с помощью вышеуказанной команды. В приведенном выше коде извлекаем .bytes-файлы из сжатого файла train.7z.

5. Поисковый анализ данных

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

Как видим, самая высокая метка у класса 3, а самая низкая — у класса 5.

Теперь рассчитаем размер byte-файла и построим диаграмму размаха для краткого обзора максимальных размеров классов.

Как видно из приведенного выше графика, byte-файлы класса 2 имеют максимальные размеры файлов, т. е. приблизительно 8 МБ.

6. Разработка функциональных возможностей

Я произвел следующие вычисления и сохранил датасет в Google Cloud:

6.1 Униграмма byte-файлов с размерами

byte-униграммы приведены в датасете, который можно сохранить в файле CSV и прочитать позже, как показано ниже.

6.2 Униграмма asm-файлов с размерами

asm-униграммы приведены в датасете, который можно сохранить в файле pickle и прочитать позже, как показано ниже.

6.3 Биграмма byte-файлов (выбрано 2000 лучших из 66308 функций)

Приступая к созданию биграмм byte-файлов, я понимал, что подобная задача может время от времени убивать ядро python, потому что датасет требует вычислений почти 66,5 тыс. функций. Поэтому я использовал многопроцессорную обработку и вычислил разреженные матрицы, как показано ниже.

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

Используя тест хи-квадрат, я выбрал 2000 лучших объектов и подготовил датасет.

Как видно ниже, я подготовил набор данных bigrams, содержащий 2000 функций.

6.4 Биграмма asm-файлов (выбрано 500 лучших из 676 функций)

Ниже представлены подготовленные мной биграммы кодов операций с asm-файлами.

В ходе подготовки набора данных я удалил столбцы, в которых присутствует только 1 уникальное значение, и выбрал 500 лучших объектов с помощью библиотеки теста хи-квадрат.

6.5 Триграмма asm-файлов (выбрано 800 лучших из 17 тысяч функций)

Я прочитал разреженную матрицу, созданную для триграмм кода операции, и подготовил набор данных с 800 лучшими функциями, используя тест хи-квадрат

6.6 Особенности изображений asm-файлов (выбрано 800 лучших)

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

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

Вы можете обратиться к ссылке GitHub, приведенной выше, для завершения экспериментов.

Я использовал библиотеку тестов хи-квадрат для выбора лучших функций. Это делается для уменьшения размерности набора данных, поскольку pandas не может хорошо справляться с большими наборами данных.

6.7 Объединение всех функций

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

7. Пробный метод

Учитывая цель нашего тематического исследования — достичь логистической функции потерь 0,1, — лучше всего подготовить продвинутые функции с использованием N-граммы и объединить их.

В приведенном ниже разделе мы применили модели машинного обучения к окончательно подготовленному набору данных.

8. Классификатор Random Forest

Используя классификатор Random Forest, мы добились логистической функции потерь 0,02, как показано ниже.

9. Классификатор XGBoost

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

10. Сравнение моделей

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

Для знакомства с остальными моделями можете посетить мой профиль на GitHub.


Цель данной работы: определить эффективность методов обнаружения вредоносных программ для РВС.

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

Ключевые слова: вредоносное программное обеспечение, метод обнаружения, распределенная вычислительная сеть.

The purpose of this work: to determine the effectiveness of malware detection methods for PBC.

The article studied the production / expert attack detection systems, studied the method of intrusion detection based on graph methods, analyzed the transition of the system from state to state, investigated static analysis of the sequence of system calls. Methods of finite automata, methods of analyzing the behavior of the system, methods of analyzing the intensity of the transmission of network packets are investigated.

Key words: malware, detection method, distributed computing network.

В настоящее время важную роль играет проблема защиты корпоративных распределенных информационно-вычислительных сетей от вторжений вирусных программ. В 2018 году в первом квартале зафиксировано 796 806 112 вредоносных программ, это означает, что проблема обеспечения защиты информационных структур актуальна [7].

Актуальность исследуемой проблемы обусловлена увеличением количества вредоносных программ. В данной статье произведен обзор и анализ методов обнаружения вредоносных программ.

Основная задача при защите от вредоносного ПО — это изучение методов обнаружения вредоносных программ. В ходе исследований в области обнаружения вредоносного ПО можно выделить работы [4–6,8,9]. В отмеченных исследованиях описаны методы обнаружения вредоносных программ, также в работах описано каким образом производится выработка требований к системе защиты. В работах [2,3] рассматриваются модели обнаружения вредоносного ПО, учитывающие такой параметр, как скорость и время обнаружения. В данных работах не рассмотрен метод графовых моделей обнаружения вредоносного ПО, не выявлены все недостатки методов. В настоящее время существует необходимость в оценке методов обнаружения вредоносного программного обеспечения для выявления наиболее эффективного метода обнаружения вредоносных программ.

Цель данной работы: определить эффективность методов обнаружения вредоносных программ для РВС.

Существует большинство методов обнаружения вредоносных программных средств, для локальных вычислительных систем, но в большинстве случаев не учитываются особенности обнаружения ВПО для распределенных вычислительных систем.

Для защиты локальных сетей от ВПО необходимо:

 Своевременное противодействие на ВПО;

 Своевременное обновление уязвимостей локальной вычислительной системы;

 Резервирование данных и программных средств вычислительной системы.

Для защиты распределённых сетей от ВПО необходимо дополнительно:

 Выявление источников и маршрутов.

В связи с этим существует необходимость исследования дополнительных методов обнаружения ВПО в РВС. Наиболее часто используемые методы, охватывающие большой спектр вредоносных программ это:

 Сигнатурные методы анализа

Продукционные / экспертные системы обнаружения атак;

Обнаружение вторжений, основанное на модели;

Анализ перехода системыиз состояния в состояние.

 Статистические методы анализа

Статический анализ последовательности системных вызовов;

 Эвристические методы

Анализ поведения системы.

 Мониторинг активности

Анализ интенсивности передачи сетевых пакетов.

Сигнатурные методы анализа [12] описывают каждую атаку индивидуальной моделью, или сигнатурой. Ею могут служить строка символов, семантическое выражение, формальная математическая модель и т. д. [5].

Продукционные / экспертные системы обнаружения вторжения кодируют данные об атаках и правила импликации «если. то», а также подтверждают их, обращаясь к контрольным записям событий. Ресурсоемкость метода средняя, время выявление ВПО высокое, эффективность выявления ВПО на ранней стадии низкая, эффективность выявления ВПО на поздней стадии высокая, ложные срабатывания максимальны.

Обнаружение вторжений, основанное на модели, — один из вариантов, объединяющий модели вторжения и доказательств, поддерживающих вывод о вторжении. В системе обнаружения вторжений поддерживается база данных сценариев атак. Ресурсоемкость метода средняя, время выявление ВПО высокое, эффективность выявления ВПО на ранней стадии высокая, эффективность выявления ВПО на поздней стадии высокая, ложные срабатывания минимальны.

Анализ перехода системыиз состояния в состояние осуществлён в системах STAT и USTAT под ОС UNIX. В них обнаружения вторжений атаки представляются как последовательность переходов контролируемой системы из состояния в состояние. Ресурсоемкость метода высокая, время выявление ВПО высокое, эффективность выявления ВПО на ранней стадии низкая, эффективность выявления ВПО на поздней стадии высокая, ложные срабатывания средние.

Статистические методы анализа предназначены для выявления безопасности поведения программ и систем обнаружения нарушителя [5].

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

Метод конечных автоматов состоит в разработке конечного автомата для распознавания «языка» трассы программы. Для этого существует много методик, основанных на использовании как детерминированных, так и вероятностных автоматов. Ресурсоемкость метода низкая, время выявление ВПО низкое, эффективность выявления ВПО на ранней стадии высокая, эффективность выявления ВПО на поздней стадии низкая, ложные срабатывания максимальны.

Эвристические методы. Программу, которая анализирует код проверяемого объекта и по косвенным признакам определяет, является ли объект вредоносным, называют эвристический анализатор (эвристик) [3]. Ресурсоемкость метода высокая, время выявление ВПО высокое, эффективность выявления ВПО на ранней стадии средняя, эффективность выявления ВПО на поздней стадии высокая, ложные срабатывания минимальны.

Метод мониторинга характеристик передачи сетевого трафика. Перспективен способ обнаружения быстро распространяющихся вирусов и червей, основанный на постоянном мониторинге сетевого трафика. Ресурсоемкость метода высокая, время выявление ВПО высокое, эффективность выявления ВПО на ранней стадии высокая, эффективность выявления ВПО на поздней стадии высокая, ложные срабатывания максимальны. При отслеживании параметров передачи сетевого трафика система анализирует количество пакетов данных, пересылаемых между различными сетями, и в случае обнаружения аномального всплеска активности подаёт сигнал тревоги. Это позволяет идентифицировать вирусную эпидемию в течение долей секунды после её начала [12].

Затронутые выше методы систематизированы в таблице, где символом «3» отмечены методы с наилучшими характеристиками по данному параметру, символом «1» — методы с наихудшими, «2» — с средними. Сравнение взято из литературы.

В таблице 1 приведена характеристика методов обнаружения вредоносных ПО.

Сравнительная характеристика методов обнаружения вредоносных программ

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

Утилиты для анализа ПК

FileMon

FileMon

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

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

FileMon

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

RegMon

RegMon позволяет осуществлять мониторинг всех операций с реестром в реальном времени и распространяется бесплатно. Интерфейс данной утилиты аналогичен FileMon. Исполняемый файл использует для работы драйвер, который хранится внутри исполняемого файла и устанавливается в момент запуска программы. Запись событий можно временно приостановить при помощи пункта меню File=>Capture events.

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

Process Explorer

Основной задачей Process Explorer является просмотр списка запущенных процессов. Для каждого процесса отображаются потоки, используемые им библиотеки и Handle (с расшифровкой типа Handle и отображением уточняющей информации). Помимо просмотра списка процессов программа может выполнять ряд полезных сервисных функций, в частности осуществлять поиск процесса по его окну и составлять список процессов, использующих указанную библиотеку. Для каждого процесса предусмотрен просмотр детализированной информации, в том числе данных о потоках и прослушиваемых портах TCP/UDP, параметров безопасности, переменных окружения, списка найденных в исполняемом файле (на диске и в памяти процесса) текстовых данных с возможностью поиска и сохранения найденной информации для анализа. Как показывает практика, в памяти подозрительного процесса можно обнаружить много интересных текстовых строк, например адреса в Интернете, по которым программа ведет обмен.

Process Explorer

Еще одной заслуживающей внимания возможностью этой утилиты является встроенная поддержка механизма проверки цифровых подписей файлов.

Autoruns

Утилита является диспетчером автозапуска с расширенными возможностями. Она анализирует практически все способы автозапуска, применяемые вредоносными программами.

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

Autoruns

Утилита распространяется в двух вариантах: в виде стандартной программы с диалоговым интерфейсом и в виде консольного приложения, управляемого ключами командной строки.

Утилита анализирует множество ключей реестра, управляющих автозапуском, отображает список служб, модулей расширения проводника, BHO (Browser Helper Object) и панели Internet Explorer, назначенные задания. Любая библиотека или программа может быть временно удалена из автозагрузки, что позволяет на время отключить запуск подозрительных программ и библиотек.

Sigcheck

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

Sigcheck

HijackThis

HijackThis

Пользователь может отметить один или несколько элементов: после нажатия кнопки Fix утилита производит их исправление или удаление. Утилита позволяет сохранять текстовые протоколы с результатами анализа; протокол достаточно легко анализировать вручную или с помощью автоматизированных анализаторов.

a-squared HiJackFree

a-squared HiJackFree

TDIMon

Утилита TDIMon предназначена для мониторинга сетевой активности приложений. В протоколе утилиты регистрируются обмен приложений по протоколам TCP и UDP. Программа не нуждается в инсталляции и может оказаться весьма полезной для обнаружения приложений, ведущих скрытный обмен с сетью.

Данная утилита, помимо сигнатурного сканера, содержит анализатор запущенных процессов, служб, драйверов, модулей пространства ядра, диспетчер автозапуска и расширений Internet Explorer, анализатор настроек SPI (LSP/NSP/TSP), анализатор открытых портов TCP/UDP и сетевых ресурсов. Утилита имеет встроенные средства поиска данных в реестре и файлов на диске. Все эти функции защищены встроенным антируткитом.

AVZ

Встроенное исследование системы позволяет формировать HTML-протоколы, которые можно использовать для экспресс-анализа системы. Анализ запускается из меню «Файл=>Исследование системы», протокол размещается в указанной пользователем папке. Встроенная база безопасных файлов позволяет утилите AVZ опознавать файлы, входящие в состав операционной системы, и файлы распространенных приложений. Опознанные файлы выделяются цветом и могут быть автоматически исключены из протоколов исследования системы, что в ряде случаев значительно упрощает их анализ.

Специализированные утилиты для поиска RootKit

F-Secure BackLite

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

SysInternals RootkitRevealer

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

Полезные On-Line-сервисы

Автоматический анализатор протоколов утилиты HijackThis. Работает только с протоколами последней версии данной утилиты, по результатам анализа генерирует протокол с указанием, на какие позиции следует обратить внимание.

Проверка файла несколькими антивирусами. В настоящий момент проверка переданного для анализа файла проводится при помощи 19 антивирусных пакетов.

Русскоязычная конференция, полностью посвященная вирусологии, борьбе с AdWare/SpyWare-программами и защите компьютера. Для начинающего пользователя ценность представляет раздел «Помогите», в котором рассматриваются проблемы пользователей, анализируются полученные от пользователей протоколы и подозрительные файлы.

Русскоязычная конференция, содержащая подразделы «Системное администрирование, безопасность», «Техподдержка» и «Программы: Интернет», где обсуждаются вопросы безопасности, антивирусные программы, Firewall и методы обнаружения вирусов.

Подготовка к анализу

Итак, мы перечислили основные инструменты, которые потребуются для анализа компьютера. Теперь можно приступать к анализу. Однако перед тем, как перейти к проведению стоит ответить на ряд вопросов:

Анализ

Поиск RootKit

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

Желательно применить все рекомендованные программы (RootkitRevealer, BackLite и AVZ), так как они используют различные алгоритмы поиска RootKit.

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

После поиска (и уничтожения в случае обнаружения) RootKit можно продолжить анализ системы. В случае активного противодействия удалению со стороны вредоносной программы самым простым способом ее удаления является подключение HDD к безусловно чистому компьютеру и удаление файлов, обнаруженных в ходе поиска руткита.

Анализ запущенных процессов

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

Процессы, которые AVZ определяет как безопасные, можно с высокой степенью вероятности считать таковыми и снять с подозрения. Аналогично можно поступить с файлами, подписанными Microsoft (проверить подпись можно консольной программой Sigcheck).

Анализ автозапуска

Поиск файлов на диске

Анализ BHO и модулей расширения Internet Explorer

Анализ различных модулей расширения Internet Explorer является важной задачей, поскольку многие SpyWare- и AdWare-программы устанавливаются как BHO (Browser Helper Object). Анализ рекомендуется вести из утилиты Autoruns (закладка Internet Explorer) или из AVZ (Сервис=>Менеджер расширений IE). Все подозрительные модули расширения рекомендуется отключить, причем перед отключением необходимо в обязательном порядке закрыть все экземпляры Internet Explorer. Это связано с тем, что некоторые BHO отслеживают наличие своих ключей в реестре в момент выгрузки и восстанавливают их при необходимости, что затрудняет их удаление.

Папка Downloaded Program Files

Анализ файла hosts

Файл hosts участвует в процессе определения IP-адреса сервера по его имени. Модификация этого файла может привести к нарушению данного процесса и подмене адреса любого сервера (этот процесс является простейшей формой DNS-спуфинга). Как правило, добавленные троянской программой в файл hosts строки имеют вид:

Анализ файла hosts сводится к изучению его содержимого в любом текстовом редакторе (например, в блокноте) или в специализированной утилите (например, в HiJackFree или в HijackThis). Обнаружение посторонних записей, особенно связанных с популярными поисковыми системами или антивирусными продуктами, однозначно свидетельствует о деятельности троянской программы.

Изучение папки «Избранное» Internet Explorer

Действия в типовых ситуациях

Рассмотрим несколько типовых случаев, которые, согласно статистике, чаще всего можно наблюдать на зараженных компьютерах.

Заключение

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

Читайте также: