| Слушать на Google Podcasts | Слушать на Mave | Слушать на Яндекс Музыке |
Security Vision
Введение
В прошлой статье мы рассмотрели возможности проверки открытого кода различными способами, вендорскими и самостоятельными. В целом, частая проверка обновлений на предмет подозрительной или даже вредоносной активности – вещь кропотливая, ответственная, и если заниматься этим вручную – отнимает много времени.
Есть различные способы автоматизировать данный процесс, но в контексте того, что методы завуалировать вредонос под легитимное ПО эволюционируют день ото дня, процесс его выявления также должен развиваться чуть ли не в большем темпе.
Искусственный интеллект
На заре антивирусной индустрии обнаружение вредоносных программ на компьютерах основывалось на эвристических функциях, которые идентифицировали конкретные вредоносные файлы по:
• фрагментам кода
• хэшам фрагментов кода или всего файла
• свойствам файла
• и комбинациям этих функций.
Основной целью было создать надежный отпечаток — комбинацию признаков – вредоносного файла, который можно было бы быстро проверить.
Алгоритмы машинного обучения выделяются своей способностью подстраиваться под постоянно меняющуюся обстановку. Они не просто следят за известными шаблонами, а активно адаптируются к новым возможностям хакеров.
Сведения о файлах собираются на двух разных стадиях:
· Перед исполнением, то есть до того, как код файла был бы каким-либо образом выполнен. На этой стадии могут быть записаны данные о формате файла, его исходный код или описание кода, данные бинарного представления и прочая подобная информация.
· После исполнения собираемые данные о файле представляют собой журналы происходящих при его исполнении (в рамках изолированной среды - песочницы) системных событий и вызовов.
Для обоих видов данных можно применять машинное обучение. Рассмотрим классические подходы к каждому.
Классификация на основе статических свойств файла
В контексте обнаружения вредоносного ПО в открытом исходном коде одним из мощных инструментов машинного обучения является алгоритм «Случайный Лес» (Random Forest). Этот метод особенно эффективен при работе со статическими свойствами файла, такими как фрагменты кода, хеши, метаданные и структура исполняемого файла.
Случайный Лес работает путем создания множества деревьев решений на основе различных подмножеств и атрибутов входных данных. Каждое дерево решений в алгоритме анализирует определенный набор характеристик файла, таких как строки кода, символы импорта/экспорта, бинарные паттерны и другие статические атрибуты. Эти деревья работают независимо друг от друга, предоставляя свои собственные предсказания о том, является ли файл вредоносным или нет.
Преимущество данного подхода - в его способности адаптироваться к новым типам вредоносного ПО.
Поведенческий анализ файла с помощью рекуррентных сетей
Рекуррентные нейронные сети (RNN) и их разновидности, такие как Long Short-Term Memory (LSTM) сети, идеально подходят для анализа поведения файлов, особенно когда речь идет о последовательностях системных вызовов, производимых файлом в процессе его исполнения.
RNN способны обрабатывать данные временных последовательностей, сохраняя информацию о предыдущих состояниях в своей памяти. Это позволяет им анализировать поведение файла не только в текущий момент симуляции в песочнице, но и в накопительном порядке учитывать его предыдущую активность. Такой подход важен для выявления сложных шаблонов поведения, которые часто свойственны вредоносным программам.
LSTM, разновидность RNN, особенно эффективна в обработке длинных последовательностей данных. Она способна «запоминать» важную информацию на как длительных промежутках времени, так и на коротких, и игнорировать нерелевантные данные. Это делает LSTM особенно подходящими для анализа сложных и продолжительных поведенческих паттернов, таких как серии разветвленных системных вызовов, изменения в системном реестре, операции над пользовательскими политиками или над файлами, которые могут указывать на вредоносную деятельность.
LSTM-сети, являясь усовершенствованной формой RNN, основаны на структурах, называемыми вентилями (gates), которые позволяют модели распределять в информацию в своей памяти. Есть три основных типа вентилей: вентиль забывания (forget gate), входной вентиль (input gate) и выходной вентиль (output gate). Вентиль забывания решает, какую информацию из предыдущего состояния следует «забыть» или отбросить, входной вентиль определяет, какие новые данные следует добавить в состояние ячейки, а выходной вентиль контролирует, какая информация из текущего состояния ячейки должна быть использована в выходных данных сети.
Применяя LSTM к анализу последовательностей системных вызовов вирусов, модель способна эффективно изучать сложные и изменчивые шаблоны поведения, которые могут быть неочевидны при статическом анализе. Например, вирус может производить серию обычных операций с файлами, чтобы скрыть свою вредоносную активность, такую как копирование или изменение системных файлов. LSTM способна распознавать такие поведенческие аномалии, анализируя последовательность и контекст этих операций.
Кроме того, LSTM эффективно работает с другими динамическими характеристиками программ, такими как изменения в системных реестрах или создание и удаление процессов, что часто является признаком вредоносной деятельности. Это особенно важно для обнаружения продвинутых вредоносных программ, которые могут маскировать свои действия или изменять свое поведение во времени.
Глубокое обучение против нераспространенных атак
Как правило, машинное обучение сталкивается с задачами, когда вредоносные и доброкачественные образцы представлены в большом количестве в обучающем наборе. Но некоторые атаки настолько редки, что у нас есть только один пример вредоносного ПО для обучения. Это типично для громких целевых атак. В данном случае используется очень специфическая архитектура модели, основанная на глубоком обучении.Этот подход называется exemplar network (ExNet).
Идея здесь заключается в том, что модель обучается созданию компактных представлений входных признаков. Затем они используются для одновременного обучения нескольких классификаторов для каждого примера — это алгоритмы, которые обнаруживают определенные типы вредоносных программ. Глубокое обучение позволяет объединить эти многочисленные этапы (извлечение признаков объекта, компактное представление признаков и создание локальной модели или модели для каждого образца) в один конвейер нейронной сети, который выделяет отличительные признаки для различных типов вредоносных программ.
Данная модель может эффективно обобщать знания об отдельных образцах вредоносного ПО и большой коллекции чистых образцов. Затем она может обнаруживать новые модификации соответствующего вредоносного ПО.
Рисунок 1. Пример работы алгоритма exemplar network (ExNet)
Итоги
В постоянной борьбе с вредоносным программным обеспечением одной из ключевых стратегий является создание надежных отпечатков для быстрой проверки файлов. Здесь на сцену выходят мощные алгоритмы машинного обучения, способные не только следить за известными шаблонами, но и адаптироваться к новым хитроумным тактикам хакеров.
Применяя различные методы проверки подозрительного кода, можно существенно улучшить и ускорить процесс обновления ПО, что, в свою очередь, тянет за собой и ускорение связанного процесса – патч-менеджмента.
На двух этапах сбора информации - до и после исполнения файла - машинное обучение раскрывает свой полный потенциал. На первом этапе, алгоритм "Случайный Лес" великолепно работает со статическими свойствами файла, выявляя фрагменты кода, хеши и структуру исполняемого файла. С помощью множества деревьев решений, каждое анализируя уникальный набор характеристик, этот метод обеспечивает адаптивность к новым угрозам.
Второй этап - после исполнения - становится ареной для рекуррентных нейронных сетей (RNN) и их производных, таких как LSTM. Эти сети анализируют последовательности системных вызовов, запоминая предыдущие состояния и обеспечивая комплексный взгляд на поведение файла. Этот метод идеально подходит для выявления сложных шаблонов вредоносного программного обеспечения, подчеркивая важность анализа динамики действий.
Не каждый будет настолько сильно адаптировать автоматизацию поиска подозрительных паттернов только лишь для того, чтобы пользоваться свободным ПО, однако само наличие такой опции – это уже хорошо. А дальше уже каждый решает для себя.