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

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

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

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

Проблемы по крайней мере с одним — нечистые данные

Как показано в первой и второй частях этой серии, оценка «По крайней мере один» является плохим классификатором, однако она хороша тем, что ее не обманывают определенные методы.

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

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

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

Раздел Обучение

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

В этом примере обучение разделу будет объяснено с шестью кластерами разделов, текстовые полезные разделы, полезные данные разделы, полезные другие разделы, вредоносное ПО текстовые разделы, вредоносные разделы data и вредоносные другие разделы.

Сплит Goodware

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

Раздельное вредоносное ПО

Разделить вредоносное ПО сложнее. Как упоминалось ранее, вредоносное ПО может содержать разделы, не содержащие вредоносного поведения. Требуется метод разделения вредоносного ПО на разделы полезного и вредоносного ПО, однако это занимает невероятно много времени.

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

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

Преобразовать в изображения

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

Метод преобразования в изображения такой же, как и в первой части серии.

Полууправляемая кластеризация

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

Цель этого раздела — сохранить кластеры полезного и вредоносного ПО такими, какими они были в начале, а неизвестные кластеры отфильтровать в наиболее вероятные группы.

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

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

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

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

Классификатор поездов

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

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

Раздел Тестирование

Тестирование такое же, как и раздел «Тестирование» в первой части этой серии, что гарантирует, что хотя бы одна оценка предотвратит атаки, как описано во второй части серии.

Доказательство концепции

Мне удалось создать PoC, используя только файлы Goodware для кластеризации по типу раздела. Тестирование этого с двумя разными типами групп дало успешные результаты.

Версия класса 3 разделяет Goodware на группы данные, текст и другие, достигая максимальной точности 95,96 %. Версия 8 Class делит Goodware на data, idata, rdata, didat, rsrc, reloc, text и другие с максимальной точностью 97,92 %.

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