Анализ вредоносного ПО
Анализ вредоносного ПО — это процесс изучения работы и возможных последствий различных вредоносных программ. Анализ вредоносного ПО играет ключевую роль в информационной безопасности, поскольку позволяет вырабатывать эффективные меры противодействия и стратегии снижения рисков, связанных с малварью (вредоносными программами)[1].
Декомпиляция
Декомпиляция — эффективная техника для помощи в анализе вредоносного ПО, позволяющая проводить анализ на более высоком уровне абстракции по сравнению с машинным кодом. Она включает механизмы восстановления высокоуровневых абстракций, утраченных при компиляции, таких как типы данных, управляющие конструкции (условные операторы, циклы и пр.)[2]. Несмотря на успехи в области декомпиляторов, получаемый код часто сложен для чтения, однако современные инструменты улучшают его восприятие, ускоряя процесс реверс-инжиниринга.
После 2017 года в этой области произошли значительные изменения. Важным событием стал публичный выпуск АНБ США в 2019 году бесплатного фреймворка для реверс-инжиниринга Ghidra[3]. Его мощный декомпилятор с поддержкой множества архитектур (x86, ARM, MIPS и др.) и промежуточным представлением P-Code позволил ему стать стандартом наряду с коммерческим лидером IDA Pro[3]. Последний, в свою очередь, продолжил активное развитие, добавив в версиях после 2017 года поддержку новых архитектур (например, RISC-V), улучшенную декомпиляцию программ на языке Go и усовершенствованный анализ обработки исключений в C++[4].
Ключевым трендом стало применение машинного обучения (ML) и больших языковых моделей (LLM). Появилась концепция «нейронной декомпиляции», рассматривающая преобразование низкоуровневого кода в высокоуровневый как задачу машинного перевода[5]. Модели ИИ, такие как DeGPT и VarBERT, используются для восстановления осмысленных имён переменных и типов данных, что значительно повышает читаемость кода[6]. Исследования показывают, что ML-модели способны с высокой точностью восстанавливать информацию, утраченную при компиляции: например, в 2021 году модель предсказывала типы возвращаемых функциями значений с F1-мерой 79,1 %, в то время как традиционный декомпилятор показал результат в 30 %[7]. Более поздние проекты, такие как LLM4Decompile, представили LLM, специально обученные для декомпиляции, которые, по утверждениям разработчиков, превосходят по качеству результаты Ghidra и универсальных моделей[8]. При этом в экспертном сообществе продолжаются дискуссии о надёжности ИИ-помощников, поскольку неверно угаданное имя переменной может ввести аналитика в заблуждение[9].
Несмотря на прогресс, современные декомпиляторы сталкиваются с новыми вызовами. К ним относятся рост числа вредоносных программ, написанных на таких языках, как Go, Rust и Haskell, что требует поддержки их специфических рантаймов[10], а также сложные техники обфускации и многоэтапные атаки[11]. В ответ на это растёт фокус на семантической точности восстанавливаемого кода; появляются проекты, использующие символьное выполнение для проверки соответствия логики декомпилированного кода исходному бинарному файлу[6].
Цифровая сигнатура
Сигнатурный анализ — наиболее распространённая стратегия, используемая антивирусами. Сигнатура — это уникальная последовательность байт, идентифицирующая конкретное вредоносное ПО. Базы сигнатур постоянно пополняются по мере обнаружения новых угроз. Для генерации хеш-сигнатур обычно используются алгоритмы MD5 и SHA-1, формируя хеш длиной 16 и 20 байт соответственно[12].
Этот подход прост, быстр и эффективен для известного вредоносного ПО, но не способен обнаруживать новые или модифицированные образцы (т.н. угрозы «нулевого дня»)[12], поскольку даже незначительное изменение в коде меняет его хеш-сумму[13]. Злоумышленники активно обходят сигнатурную защиту с помощью таких техник, как полиморфизм и метаморфизм]], использование упаковщиков и крипторов (шифрование вредоносной нагрузки, которая расшифровывается только в момент выполнения), а также проведение бесфайловых атак, при которых вредоносный код действует исключительно в оперативной памяти[14][15].
Несмотря на ограничения, после 2017 года метод эволюционировал. Произошёл переход от простых сигнатур к более сложным и обобщённым, способным выявлять целые семейства вредоносных программ[15]. Сигнатурный анализ стал частью многоуровневых систем защиты, где он используется в связке с эвристическим анализом, поведенческими детекторами и машинным обучением[16][17], выступая в роли первого эшелона для быстрой блокировки известных угроз[18]. Развитию метода также способствовало применение облачных технологий, которые позволяют практически мгновенно обновлять сигнатурные базы и переносить часть задач по анализу на удалённые серверы, снижая нагрузку на устройства пользователей[19].
Строки
Строки в коде вредоносных программ могут содержать ценную информацию, такую как IP-адреса управляющих серверов, имена файлов, ключи реестра и URL-адреса, что делает их важным объектом анализа[20]. Пример — строка в черве Nimda, свидетельствующая о попытках заражать скрипты:
<html><script language=‘javascript’>window.open(‘readme.eml’)</script></html>
Ещё пример — строка &gameid=%s&pass=%s;myparentthreadid=%d;myguid=%s, предназначенная для кражи паролей онлайн-игры и передачи их на сервер[21].
Однако для обхода статического анализа и сигнатурных методов авторы вредоносных программ активно применяют техники обфускации (запутывания) строк[22]. К наиболее распространённым современным методам относятся:
- Создание строк в стеке (stack strings) — строки не хранятся в открытом виде в секции данных, а динамически формируются в стеке во время выполнения. Это может происходить посимвольно с помощью инструкций MOV или по несколько байт с помощью инструкций PUSH[20], что делает их невидимыми для стандартных утилит анализа[23].
- Шифрование строк — важные данные шифруются и расшифровываются в памяти непосредственно перед использованием. Если ранее часто применялись простые алгоритмы (например, XOR), то современные угрозы, такие как Agent Tesla, могут использовать стойкие криптографические стандарты, например AES[24][25].
Для противодействия этим техникам аналитики используют специализированные инструменты и подходы. Появились автоматизированные решения для извлечения скрытых строк, такие как FLOSS (FLARE Obfuscated String Solver) от Mandiant и Ironstrings — скрипт для IDA Pro, который применяет эмуляцию для выполнения фрагментов кода, отвечающих за создание строк, и восстанавливает их в исходном виде[20]. Когда статический анализ неэффективен, применяется динамический анализ: программа запускается в песочнице или под отладчиком, что позволяет перехватить расшифрованные строки в памяти в момент их использования[26]. Также анализируются дампы памяти процесса, что даёт возможность обнаружить строки даже при использовании техник противодействия отладке[27].
N-граммы
N-граммы — это подстроки фиксированной длины N, выделяемые из кода программы, которые позволяют выделять общие последовательности байт между сходными вредоносными программами и использовать их для идентификации.
После 2017 года метод получил развитие за счёт интеграции с технологиями машинного и глубокого обучения. N-граммы стали использоваться как признаки для обучения моделей, таких как случайный лес, градиентный бустинг и нейронные сети, для классификации файлов на вредоносные и безопасные[28]. Важным направлением стал поведенческий анализ, при котором N-граммы составляются не из статичного кода, а из последовательностей системных вызовов, совершаемых программой во время выполнения в «песочнице». Этот подход позволяет обнаруживать вредоносную активность даже при использовании обфускации и полиморфизма[28].
Метод также применяется для анализа специфических угроз, например, для выявления программ-вымогателей путём анализа характерных для них последовательностей действий (сканирование файлов, шифрование, удаление оригиналов)[29]. Новым направлением стало использование N-грамм для оценки качества синтетических образцов вредоносного ПО, сгенерированных с помощью больших языковых моделей (LLM), что позволяет создавать большие наборы данных для обучения систем обнаружения[30]. В современных системах защиты N-граммный анализ редко применяется изолированно и чаще всего является частью гибридных подходов.
Опкод (от англ. operational code) — часть машинной инструкции, обозначающая конкретную операцию. Вредоносные программы одного семейства (или имеющие общий источник) часто обладают схожим набором сегментов инструкций.
Граф потока управления (Control Flow Graph, CFG) — отображает структуры исполнения программы и используется для анализа программ, включая вредоносные.
Техники уклонения от статического анализа (обфускация)
Современные вредоносные программы используют продвинутые техники обфускации (запутывания кода), чтобы сделать статический анализ неэффективным. Статический анализ исследует файл без его запуска, но методы обфускации направлены на то, чтобы скрыть вредоносную логику до момента исполнения[31]. Это вынуждает специалистов по безопасности всё больше полагаться на динамический анализ в «песочницах» — изолированных средах, где подозрительный файл можно безопасно запустить и проанализировать его поведение[32].
Ключевые техники обфускации включают:
- Полиморфизм и метаморфизм. Эти техники нацелены на постоянное изменение кода для обхода сигнатурного обнаружения[33]. Полиморфные вирусы шифруют свой основной код с помощью постоянно меняющегося ключа, делая каждую копию уникальной для сканеров, хотя сама вредоносная нагрузка остаётся неизменной[34]. Метаморфные вирусы представляют собой более серьёзную угрозу: они полностью переписывают свой код при каждом новом заражении, сохраняя лишь исходную функциональность. Они могут менять инструкции на аналоги, переставлять блоки кода и добавлять «мусорные» команды, что делает их практически невидимыми для статического анализа[35].
- Обфускация на основе виртуализации (VMB-based Obfuscation). Одна из самых мощных современных техник, при которой вредоносный код переводится из стандартного машинного кода (например, x86) в байт-код для специально созданной, уникальной виртуальной машины[36]. Этот байт-код вместе с интерпретатором встраивается в тело программы. Для статического анализатора такой код выглядит как случайный набор данных, и для его понимания аналитику необходимо сначала полностью реконструировать архитектуру этой уникальной виртуальной машины, что является чрезвычайно трудоёмкой задачей[37].
- Многоступенчатые загрузчики и динамическая загрузка. Вредоносные программы редко содержат всю свою нагрузку в одном файле. Вместо этого используется многоступенчатая модель: первоначальный файл-дроппер загружает, расшифровывает и запускает основные модули из сети. Часто вредоносные компоненты подгружаются и выполняются непосредственно в оперативной памяти (например, с помощью технологии .NET Reflection), никогда не сохраняясь на диске в расшифрованном виде, что делает статический анализ первоначального файла бесполезным.
- Продвинутая криптография и упаковщики. Если ранее для шифрования использовались простые алгоритмы вроде XOR, то современные угрозы, такие как Agent Tesla, применяют стойкие криптографические стандарты (например, AES) для шифрования своей полезной нагрузки. Упаковщики, в свою очередь, сжимают и шифруют исполняемый файл, также скрывая его содержимое от статических сканеров.
- Обфускация потока управления и данных. Для запутывания логики программы используется изменение потока управления (Control-Flow Obfuscation) и вставка «мёртвого» или «мусорного» кода — бессмысленных инструкций, которые не влияют на функциональность, но изменяют сигнатуру файла. Важные данные, такие как строки, не хранятся в открытом виде, а создаются и расшифровываются в памяти непосредственно в момент использования.
- Применение искусственного интеллекта (ИИ). Исследователи демонстрируют возможность использования больших языковых моделей (LLM) для автоматической генерации бесконечного числа уникальных вариаций обфусцированного кода. ИИ может комбинировать различные техники, динамически изменять переменные и внедрять «мусорный» код, что ставит под угрозу эффективность даже продвинутых статических анализаторов[38].
Эти техники вынуждают специалистов по безопасности всё больше полагаться на динамический анализ. Однако в ответ на его широкое применение злоумышленники разрабатывают контрмеры, обучая свои программы обнаруживать виртуальные окружения и прекращать вредоносную деятельность[32].
Динамический анализ
Динамический анализ — исследование поведения вредоносного кода в процессе его выполнения в контролируемой среде (виртуальной машине, симуляторе, эмуляторе, песочнице и т. д.)[1].
Динамический анализ зачастую более эффективен, чем статический, и не требует полного реверс-инжиниринга. Он позволяет получить естественное (поведенческое) описание вредоносной программы даже при наличии продвинутой обфускации. Однако этот подход трудоёмок и требует значительных ресурсов, а также может быть ограничен искусственной средой: программное обеспечение зачастую ведёт себя иначе на виртуальной машине, чем на реальной. Кроме того, некоторые вредоносные программы активируют вредоносное поведение только при выполнении особых условий (специфической дате, команде и пр.), что затрудняет их детектирование стандартными средствами динамики[1].
После 2014 года динамический анализ претерпел значительную эволюцию, превратившись из изолированного инструмента в комплексную интеллектуальную систему. Этот процесс был обусловлен «гонкой вооружений» между разработчиками средств защиты и киберпреступниками, которые постоянно совершенствовали техники обхода анализа[39]. Вредоносные программы научились распознавать запуск в виртуальной среде, проверяя наличие специфических файлов, процессов (например, `vmtoolsd`), ключей реестра или моделей процессоров, характерных для серверного оборудования[40]. Для обхода анализа стали применяться такие техники, как отложенное исполнение (программа «засыпает», ожидая окончания времени анализа)[41] и требование участия пользователя (ожидание движений мыши или нажатий клавиш)[42]. В ответ на это разработчики средств защиты усовершенствовали эмуляцию, научились детектировать сами попытки уклонения как признак вредоносности[43] и создали системы анализа на «голом железе» (Bare-Metal Analysis), которые запускают подозрительные файлы на реальном физическом оборудовании, полностью исключая возможность обнаружения виртуализации[44][45].
Ключевым трендом стала интеграция с машинным обучением (ML). Вместо анализа на основе заранее заданных правил, ML-модели начали анализировать всю совокупность действий программы (трассу поведения), выявляя аномалии и скрытые закономерности[16][46]. Такой подход оказался особенно эффективен против полиморфных вирусов, которые постоянно меняют свой код, но сохраняют общую модель поведения[47].
Развитие метода было также связано с появлением новых классов угроз. Динамический анализ стал незаменим для обнаружения бесфайловых вредоносных программ, которые действуют непосредственно в оперативной памяти, и для выявления характерного поведения программ-вымогателей (массовое шифрование, удаление теневых копий)[48].
Важнейшим этапом эволюции стало встраивание функций динамического анализа в комплексные решения для защиты конечных точек — EDR и XDR (Extended Detection and Response)[49]. В отличие от изолированной «песочницы», EDR-системы осуществляют постоянный мониторинг всех процессов на рабочих станциях и серверах, что позволяет не только обнаруживать угрозы в реальном времени, но и немедленно реагировать на них: изолировать заражённое устройство и блокировать вредоносные процессы[50].
В пространстве пользователя осуществляется сбор данных о вызовах функций, API и структурах памяти. Возможность скрыть вредоносные процессы в этом режиме минимальна. Однако при анализе компонентов внутри ядра появляются дополнительные возможности наблюдать за системными вызовами и скрывать сам факт анализа от пользовательских процессов[51].
Исполнение вредоносной программы в эмулированной среде позволяет анализатору полностью управлять всеми аспектами её исполнения, что особенно эффективно для обнаружения упакованных и шифрованных зловредов. В этом случае анализируется динамическое поведение, а полученные данные сопоставляются со статическими моделями.
Виртуальная машина представляет собой изолированную копию реального компьютера, управляемую виртуальным монитором (VMM). Монитор гарантирует прозрачность анализа для изучаемого ПО, а компоненты анализа встраиваются либо в сам VMM, либо в отдельную виртуальную машину.
Обфускация исполняемого файла неэффективна против динамического анализа, так как его цель — не анализировать сигнатуры или инструкции, а фиксировать фактическое поведение программы.
Однако вредоносные программы активно противодействуют динамическому анализу, используя техники, позволяющие распознать запуск в изолированной среде («песочнице») и изменить своё поведение. К наиболее распространённым методам относятся:
- Проверка окружения — поиск признаков виртуализации: специфических файлов, процессов (например, vmtoolsd), ключей реестра или моделей процессоров, нетипичных для рабочих станций (например, Xeon).
- Отложенное исполнение — программа «засыпает» на определённое время, рассчитывая, что анализ в «песочнице» к моменту её «пробуждения» уже завершится.
- Требование участия пользователя — вредоносное ПО ожидает действий, нетипичных для автоматизированной среды, например, движений мыши или нажатий клавиш, и не активируется без них.
В ответ на это современные средства защиты научились не только более точно имитировать реальные системы и действия пользователя, но и расценивать саму попытку уклонения как признак вредоносности. Для противодействия наиболее сложным техникам обхода применяются системы анализа на «голом железе» (Bare-Metal Analysis), которые запускают файлы на реальном физическом оборудовании.
Некоторые вредоносные программы пытаются вызвать сбои в эмуляторе или виртуальной машине, используя известные уязвимости (например, переполнение буфера NE2000 MTU в QEMU), чтобы нарушить работу среды анализа[52].
Зловреды могут использовать разницу во времени исполнения инструкций или в работе кэша памяти между реальными и виртуальными машинами для выявления среды анализа.
Определение специфичных для виртуальных машин устройств (например, по строкам "Logic BT-958" или "pcnet32" для оборудования VMware) может быть использовано для выявления среды анализа.
Некоторые виртуальные машины содержат известные эксплойты, благодаря которым можно уйти из изолированной среды и атаковать хост-компьютер.
Для выявления вредоносных программ, распознающих виртуальную среду (Anti-VM), используются алгоритмы сравнения поведения (behavior distance algorithm), которые анализируют различия в последовательностях вызовов системных функций в реальных и виртуальных средах. Такие методы способны обнаруживать атаки мимикрии с низким уровнем ложных срабатываний.
Инструменты и сервисы анализа
После 2014 года появилось несколько значимых инструментов и фреймворков для статического анализа, расширивших возможности исследователей.
- Ghidra — бесплатный фреймворк для реверс-инжиниринга, разработанный АНБ США и опубликованный в 2019 году[53]. Предоставляет мощный декомпилятор с поддержкой множества процессорных архитектур, дизассемблер и инструментарий для совместной работы.
- Rizin и Cutter — Rizin является форком фреймворка Radare2, созданным в 2020 году для улучшения стабильности и удобства использования[54]. Cutter — это графический интерфейс для Rizin (изначально для Radare2), который делает статический анализ более наглядным[55].
- Intezer Analyze — облачная платформа, запущенная в 2016—2017 годах, которая использует технологию «генетического анализа» кода[56]. Она разбирает файлы на фрагменты и сравнивает их с базой данных вредоносного и легитимного ПО, что позволяет быстро идентифицировать известные участки кода и классифицировать угрозы[56].
- Mobile Security Framework (MobSF) — автоматизированный фреймворк с открытым исходным кодом, запущенный в 2015 году для статического и динамического анализа мобильных приложений (Android, iOS)[57].
- Quark Engine — система для оценки вредоносного ПО под Android, которая фокусируется на анализе разрешений и вызовов API для присвоения баллов опасности[58].
- FLARE VM — специализированный дистрибутив на базе Windows, выпущенный компанией Mandiant (ранее FireEye) в 2017 году[59]. Представляет собой настроенную виртуальную машину с большой коллекцией инструментов для статического и динамического анализа[60].
- Solar appScreener (ранее Solar inCode) — инструмент для статического анализа, появившийся в 2015—2016 годах и предназначенный для выявления уязвимостей и недокументированных возможностей в исходном коде и бинарных файлах[61].
В 2020-х годах развитие инструментов статического анализа было сосредоточено на улучшении существующих решений, интеграции с искусственным интеллектом (ИИ) и автоматизации. В марте 2025 года вышла обновлённая версия системы SASTAV с улучшенным интерфейсом и поддержкой Kubernetes[62]. Появились инструменты, такие как Xygeni-SAST, использующие ИИ для автоматического исправления найденных уязвимостей (функция AutoFix)[63].
Кроме того, наблюдается развитие нормативной базы. Например, в России с 1 апреля 2024 года был введён стандарт ГОСТ Р 71207–2024, который детализирует требования к процессу и инструментам статического анализа программного обеспечения[64].
После 2014 года появилось и получило развитие множество онлайн-сервисов и инструментов для динамического анализа, предлагающих глубокое исследование поведения вредоносного ПО в контролируемой среде. Ключевыми тенденциями стали интерактивность, позволяющая анализировать угрозы, требующие участия пользователя, борьба с техниками уклонения, интеграция с корпоративной инфраструктурой и сопоставление данных с базами знаний об угрозах, такими как MITRE ATT&CK.
Онлайн-«песочницы» позволяют аналитикам безопасно запускать подозрительные файлы и ссылки в изолированных виртуальных средах, наблюдая за их поведением в режиме реального времени.
- ANY.RUN (2016) — один из ведущих интерактивных сервисов, позволяющий пользователю в реальном времени взаимодействовать с запущенной виртуальной машиной (нажимать на кнопки, вводить данные)[65]. Сервис отслеживает сетевую активность, файловые операции, изменения в реестре и сопоставляет поведение с тактиками и техниками из матрицы MITRE ATT&CK[66][67].
- Joe Sandbox (основан в 2014) — коммерческая платформа для автоматизированного анализа на различных ОС (Windows, Linux, macOS, Android)[68]. Применяет технологию гибридного анализа кода (HCA), сочетающую статические и динамические методы для выявления скрытого поведения[69], и генерирует подробные отчёты с индикаторами компрометации (IoC)[70].
- Hatching Triage (ранний доступ с 2019) — «песочница», спроектированная для масштабируемого анализа (до 500 000 образцов в день) для Windows, Linux, Android и macOS[71][72]. В 2022 году компания была приобретена Recorded Future[73].
- FileScan.IO (основан в 2021) — платформа, сфокусированная на извлечении индикаторов компрометации в больших масштабах. В 2022 году активы FileScan.IO были приобретены компанией OPSWAT для интеграции в продукт MetaDefender Sandbox[74].
- Intezer Analyze (сообщество с 2017) — сервис, использующий «генетический анализ» для идентификации фрагментов кода, ранее встречавшихся в других программах[75]. Платформа сочетает статический анализ с динамическим в «песочнице» для получения полной картины поведения и классификации угроз[76][77].
- Kaspersky Sandbox (релиз 1.0 в 2019) — решение для автоматического обнаружения сложных и неизвестных угроз, которое интегрируется со средствами защиты конечных точек (EPP)[78][67]. В нём реализованы передовые методы противодействия уклонению: вредоносное ПО запускается в среде, максимально имитирующей реальную рабочую станцию[79].
- PT Sandbox (активное развитие после 2014) — «песочница» от Positive Technologies для защиты от целевых атак и угроз «нулевого дня»[80]. Позволяет гибко настраивать окружение, воссоздавая реальную IT-инфраструктуру, и глубоко интегрирована с матрицей MITRE ATT&CK[81]. Может анализировать не только файлы, но и сетевой трафик, интегрируясь с другими решениями, такими как PT Network Attack Discovery (NAD)[82].
- FLARE VM (выпущен в 2017) — бесплатный дистрибутив на базе Windows от команды Mandiant (ранее FireEye). Представляет собой набор скриптов, который автоматически устанавливает и настраивает на виртуальной машине обширную коллекцию инструментов для реверс-инжиниринга и анализа вредоносного ПО[83].
- REMnux (версии 6.0 в 2015, 7.0 в 2020) — дистрибутив на базе Ubuntu, предназначенный для реверс-инжиниринга и анализа вредоносных программ. Включает утилиты для исследования различных типов угроз, в том числе для анализа сетевого трафика и вредоносных документов. Часто используется в связке с FLARE VM[84].
Гибридный анализ
Статический и динамический анализы имеют свои преимущества и недостатки. Статический анализ менее ресурсоёмкий, способен охватить даже те части программы, которые не активируются при исполнении, и даёт более полное представление о функциональности. Однако его результативность снижается при наличии сложных техник обфускации или шифрования. Динамический анализ эффективнее реагирует на новое и изменяемое ПО, но зависит от полноты тестового покрытия, тяжёл в автоматизации и не всегда раскрывает все сценарии поведения.
По данным Comodo Cloud Security Center, около 80 % объектов достаточно полно анализируются статически, а только 40 % проходят динамический анализ. Поэтому наиболее эффективны гибридные методы, сочетающие оба подхода: например, сначала проводится динамический анализ (выделение скрытых или выявленных при исполнении сегментов), затем — статический анализ этих фрагментов (пример — PolyUnpack).
Судебно-аналитический подход представляет собой комплексную методологию расследования, сочетающую статический, динамический, поведенческий анализ и анализ оперативной памяти (memory forensics). Этот подход особенно важен при исследовании зашифрованных или скрытых зловредов, поведение которых не всегда проявляется при стандартных действиях[85].
После 2017 года развитие этого подхода было во многом обусловлено ростом числа бесфайловых (fileless) атак[86]. Такие вредоносные программы исполняются непосредственно в оперативной памяти, не оставляя следов на жёстком диске, и используют для своих целей легитимные системные инструменты, такие как PowerShell или WMI. Эта техника, известная как «жизнь за счёт земли» (Living off the Land, LotL), делает традиционные антивирусы, ориентированные на сканирование файлов, неэффективными[87]. В подобных случаях оперативная память становится единственным местом, где можно обнаружить следы вредоносной активности[88].
Рост угроз, ориентированных на оперативную память, стимулировал развитие инструментов анализа. Ключевым из них остаётся фреймворк Volatility. В 2020 году вышла его новая версия Volatility 3 (публичная бета-версия была представлена в 2019 году), полностью переписанная на Python 3[89][90]. В отличие от предыдущей версии, Volatility 3 не требует предварительного указания профиля операционной системы, определяя его автоматически[91]. В него были добавлены плагины для обнаружения современных техник сокрытия, таких как «Process Hollowing» (windows.hollowprocesses) и «Process Ghosting» (windows.processghosting)[92]. Также в арсенале аналитиков появился инструмент MemProcFS, позволяющий монтировать образ памяти как виртуальную файловую систему для удобства исследования[93].
Всё большую значимость приобретает «живая» криминалистика (Live Forensics) — анализ оперативной памяти на работающей системе. Этот подход позволяет зафиксировать состояние системы в момент инцидента и извлечь эфемерные данные (сетевые соединения, активные процессы), которые будут утеряны при перезагрузке[94].
Классификация
Для выявления и группировки новых образцов вредоносного ПО применяются методы машинного обучения — ассоциативные правила, метод опорных векторов, деревья решений, случайный лес, наивная байесовская классификация, кластеризация и др.
После 2014 года, в связи с неспособностью классических антивирусов эффективно противостоять полиморфным и ранее неизвестным угрозам («zero-day» атакам), произошёл переход от традиционных алгоритмов к методам глубокого обучения (DL)[95]. На начальном этапе этого периода классические алгоритмы, такие как случайный лес, SVM и логистическая регрессия, применялись для анализа признаков, извлечённых из сетевого трафика или PE-заголовков исполняемых файлов[96][97]. Однако настоящий прорыв в обнаружении обфусцированных угроз произошёл с внедрением глубоких нейронных сетей, показавших значительное превосходство в точности[98].
С развитием DL были выработаны новые подходы к анализу:
- Визуализация вредоносного кода (Malware Imagery) — метод, при котором двоичный код вредоносной программы преобразуется в изображение в градациях серого. Эти изображения анализируются с помощью сверточных нейронных сетей (CNN), которые выявляют текстурные и структурные паттерны, характерные для определённых семейств вредоносных программ, даже если их код был изменён[98][99].
- Анализ последовательностей — для анализа поведенческих данных, таких как последовательности вызовов системных функций (API-вызовы), применяются рекуррентные нейронные сети (RNN) и сети с долгой краткосрочной памятью (LSTM). Эти модели способны улавливать временные зависимости в действиях программы, что помогает идентифицировать вредоносное поведение[98].
- Гибридные модели — для повышения точности разрабатываются архитектуры, сочетающие разные типы сетей. Например, модель CNN-BiLSTM использует CNN для извлечения локальных признаков и двунаправленную LSTM для анализа их последовательности[100].
Несмотря на успехи, использование ML и DL сопряжено с рядом проблем: состязательные атаки, направленные на «обман» моделей[101]; высокое число ложных срабатываний[102]; и проблема интерпретируемости моделей, которые часто работают как «чёрный ящик»[98]. В современной практике для достижения максимальной эффективности системы защиты часто комбинируют методы машинного обучения с классическим сигнатурным анализом[103].
Филогенетический анализ — исследование сходства и различий в структуре программ для выявления родственных вариантов и получения информации о новых модификациях, которые бывают неразличимы средствами сигнатурного анализа[104]. Пример — система DECODE, сочетающая статическую идентификацию, масштабируемую классификацию по подпрограммам и восстановление родословных вредоносного ПО.
В 2016 году, на фоне взрывного роста числа вредоносных программ, особенно мобильных троянцев и программ-вымогателей[105][106], этот подход стал применяться для отслеживания эволюции угроз, которые традиционные сигнатурные методы уже не могли эффективно обнаруживать[107]. Исследователи использовали его для построения «эволюционных деревьев» вредоносного ПО, например, для Android, сравнивая такие признаки, как используемые API-вызовы и запрашиваемые разрешения, чтобы понять логику развития целых семейств зловредов[108].
После 2016 года развитие метода было связано с интеграцией с машинным обучением для автоматизации классификации. Вместо ручного выделения признаков для сравнения, стали применяться алгоритмы, которые автоматически выявляют ключевые характеристики в коде и строят филогенетические связи. Это позволяет анализировать большие массивы данных и отслеживать эволюцию сложных семейств вредоносных программ, таких как ботнет Mirai. С ростом объёмов данных также возросла потребность в разработке более сложных инструментов визуализации, помогающих аналитикам интерпретировать полученные эволюционные деревья.
Примечания
Литература
- Ekta Gandotra, Divya Bansal, Sanjeev Sofat (20 февраля 2014). “Malware Analysis and Classification: A Survey”. Journal of Information Security [англ.]. 2014. DOI:10.4236/jis.2014.52006. Дата обращения 2024-06-14.
- Manuel Egele, Theodoor Scholte, Engin Kirda, Christopher Kruegel (март 2008). “A Survey on Automated Dynamic Malware-analysis Techniques and Tools”. ACM Comput. Surv. [англ.]. 44 (2): 6:1–6:42. DOI:10.1145/2089125.2089126. Дата обращения 2024-06-14. Проверьте дату в
|date=(справка на английском) - A. Moser, C. Kruegel, E. Kirda (декабрь 2007). “Limits of Static Analysis for Malware Detection”. Twenty-Third Annual Computer Security Applications Conference (ACSAC 2007) [англ.]: 421—430. DOI:10.1109/acsac.2007.21. Дата обращения 2024-06-14. Проверьте дату в
|date=(справка на английском) - Anusha Damodaran, Fabio Di Troia, Corrado Aaron Visaggio, Thomas H. Austin (1 февраля 2017). “A comparison of static, dynamic, and hybrid analysis for malware detection”. Journal of Computer Virology and Hacking Techniques [англ.]. 13 (1): 1—12. DOI:10.1007/s11416-015-0261-z. Дата обращения 2024-06-14.
- Yanfang Ye, Tao Li, Donald Adjeroh, S. Sitharama Iyengar (июнь 2017). “A Survey on Malware Detection Using Data Mining Techniques”. ACM Comput. Surv. [англ.]. 50 (3): 41:1–41:40. DOI:10.1145/3073559. Дата обращения 2024-06-14. Проверьте дату в
|date=(справка на английском) - M. K. Sun, M. J. Lin, M. Chang, C. S. Laih (декабрь 2011). “Malware Virtualization-Resistant Behavior Detection”. 2011 IEEE 17th International Conference on Parallel and Distributed Systems [англ.]: 912—917. DOI:10.1109/icpads.2011.78. Дата обращения 2024-06-14. Проверьте дату в
|date=(справка на английском) - I. You, K. Yim (ноябрь 2010). “Malware Obfuscation Techniques: A Brief Survey”. 2010 International Conference on Broadband, Wireless Computing, Communication and Applications [англ.]: 297—300. DOI:10.1109/bwcca.2010.85. Дата обращения 2024-06-14. Проверьте дату в
|date=(справка на английском) - C. Rathnayaka, A. Jamdagni (август 2017). “An Efficient Approach for Advanced Malware Analysis Using Memory Forensic Technique”. 2017 IEEE Trustcom/BigDataSE/ICESS [англ.]: 1145—1150. DOI:10.1109/trustcom/bigdatase/icess.2017.365. Дата обращения 2024-06-14. Проверьте дату в
|date=(справка на английском) - D. Deka, N. Sarma, N. J. Panicker (декабрь 2016). “Malware detection vectors and analysis techniques: A brief survey”. 2016 International Conference on Accessibility to Digital World (ICADW) [англ.]: 81—85. DOI:10.1109/icadw.2016.7942517. Дата обращения 2024-06-14. Проверьте дату в
|date=(справка на английском) - S. Jilcott (апрель 2015). “Scalable malware forensics using phylogenetic analysis”. 2015 IEEE International Symposium on Technologies for Homeland Security (HST) [англ.]: 1—6. DOI:10.1109/ths.2015.7225311. Дата обращения 2024-06-14. Проверьте дату в
|date=(справка на английском)