Злоумышленники не дремлют: новый взгляд на анализ вызовов функций в Android

Автор: Денис Аветисян


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

🐢

Ищешь ракеты? Это не к нам. У нас тут скучный, медленный, но надёжный, как швейцарские часы, фундаментальный анализ.

Бесплатный Телеграм канал
Удаление дубликатов APK-файлов из наборов данных MalNet-Tiny и CICMalDroid привело к резкому снижению производительности всех протестированных методов, что указывает на критическую зависимость эффективности анализа от разнообразия входных данных.
Удаление дубликатов APK-файлов из наборов данных MalNet-Tiny и CICMalDroid привело к резкому снижению производительности всех протестированных методов, что указывает на критическую зависимость эффективности анализа от разнообразия входных данных.

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

Несмотря на эффективность графов вызовов функций (FCG) в обнаружении вредоносного ПО, существующие наборы данных часто не отражают разнообразие современных мобильных угроз. В статье ‘Better Call Graphs: A New Dataset of Function Call Graphs for Malware Classification’ представлен BCG — новый, всеобъемлющий набор данных FCG, извлеченных из актуальных пакетов приложений Android. Полученные результаты демонстрируют, что использование BCG позволяет получить более реалистичную оценку производительности методов классификации, основанных на графах вызовов, и выявляет значительные трудности в классификации современного вредоносного ПО для Android. Какие новые подходы и алгоритмы необходимы для дальнейшего повышения эффективности обнаружения угроз на основе анализа FCG?


Неизбежный Рост Угроз в Экосистеме Android

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

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

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

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

Графы Вызовов Функций: Понимание Динамического Поведения

Графы вызовов функций (FCG) представляют собой мощный инструмент для моделирования динамического поведения Android-приложений посредством визуализации взаимодействий между функциями. В отличие от статического анализа, FCG отображают фактическую последовательность вызовов функций во время выполнения приложения, позволяя увидеть, какие функции вызывают другие и в каком порядке. Каждый узел в графе представляет функцию, а ребро — прямой вызов одной функции другой. Такое представление позволяет анализировать потоки данных и управления, выявлять зависимости между компонентами и реконструировать логику работы приложения, что особенно полезно для обнаружения вредоносного кода и понимания его поведения.

Графы вызовов функций (FCG) предоставляют возможности анализа, выходящие за рамки статического анализа приложений Android. В отличие от статического анализа, который изучает код без его фактического выполнения, FCG отражают последовательность вызовов функций во время работы приложения. Это позволяет выявить динамическое поведение, которое невозможно обнаружить при статическом анализе, например, обфусцированный код или действия, выполняемые только при определенных условиях. Изучение FCG позволяет отследить поток управления в приложении, определить взаимодействие между различными компонентами и выявить потенциально вредоносные действия, такие как несанкционированный доступ к данным или сетевая активность, указывающая на Command & Control серверы.

Структура графа вызовов функций (FCG) отражает ключевые характеристики поведения приложения во время выполнения. Узлы графа представляют отдельные функции в коде приложения, а ребра — вызовы этих функций. Направление ребра указывает на поток управления: от вызывающей функции к вызываемой. Анализ связности узлов и паттернов вызовов позволяет определить порядок выполнения функций, зависимости между ними и, как следствие, логику работы приложения. Таким образом, FCG фактически кодирует последовательность операций, выполняемых приложением, что делает его ценным инструментом для динамического анализа и выявления аномалий в поведении.

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

Временное распределение APK в BCG демонстрирует динамику активности клеток в процессе дифференцировки.
Временное распределение APK в BCG демонстрирует динамику активности клеток в процессе дифференцировки.

BCG Dataset: Новый Фундамент для Исследований

Представляем BCG Dataset — новую коллекцию из 10 057 графов потока управления (FCG) приложений Android, полученных посредством динамического анализа с использованием фреймворка Androguard. FCG представляют собой графическое отображение путей выполнения кода приложения, позволяющее анализировать его поведение. Данные были сгенерированы путем динамического анализа, что означает, что код приложения был выполнен в контролируемой среде для отслеживания его действий и построения графа. Использование Androguard обеспечивает автоматизацию процесса анализа и стандартизацию представления данных, что важно для дальнейшего машинного обучения и исследований в области безопасности Android.

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

Средняя сложность графа потока управления (FCG) в наборе данных BCG составляет приблизительно 27 000 узлов и 58 000 ребер. Данный показатель отражает детальность и сложность анализируемого поведения приложений Android, захватывая нетривиальные взаимосвязи между компонентами и операциями. Высокая сложность FCG позволяет более точно моделировать реальное поведение вредоносного и легитимного программного обеспечения, что является ключевым фактором для разработки эффективных методов обнаружения угроз.

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

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

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

Графовые Нейронные Сети для Классификации Вредоносного ПО

Исследование демонстрирует высокую эффективность графовых нейронных сетей (GNN), в частности, GCN, GIN и LDP, в анализе графов потока управления (FCG) для классификации вредоносного программного обеспечения. Эти сети способны обучаться векторным представлениям узлов и признакам графа, улавливая структурную информацию внутри FCG и позволяя точно идентифицировать вредоносные программы. Использование GNN позволяет эффективно представлять сложные взаимосвязи между инструкциями в коде, что способствует более глубокому пониманию поведения программного обеспечения и, как следствие, повышает точность классификации. Данный подход представляет собой перспективный инструмент в сфере кибербезопасности, позволяющий автоматизировать и улучшить процесс обнаружения угроз.

Графовые нейронные сети, такие как GCN, GIN и LDP, способны извлекать информацию из графов потока управления (FCG) посредством обучения представлений узлов и графовых признаков. Этот процесс позволяет им улавливать структурные особенности, присущие вредоносному программному обеспечению, и эффективно идентифицировать его. Вместо анализа отдельных инструкций, сети фокусируются на взаимосвязях между ними, выявляя закономерности, характерные для определенных типов атак и вредоносного поведения. Именно эта способность к анализу структуры FCG, а не только содержания, и обеспечивает более точную классификацию вредоносных программ по сравнению с традиционными методами машинного обучения.

Исследования показали, что применение графовых нейронных сетей (GNN) превосходит традиционные методы машинного обучения, такие как случайный лес (Random Forest), при анализе графов потока управления (FCG) для классификации вредоносного программного обеспечения. В ходе экспериментов GNN продемонстрировали способность более эффективно извлекать и использовать структурную информацию, содержащуюся в FCG, что позволило достичь более высокой точности идентификации вредоносных программ по сравнению с алгоритмами, основанными на ручном построении признаков. Превосходство GNN обусловлено их способностью автоматически обучаться представлению графов, улавливая сложные взаимосвязи между инструкциями и компонентами программного обеспечения, что позволяет более надежно отличать вредоносный код от легитимного.

Эксперименты показали, что, несмотря на многообещающие результаты применения графовых нейронных сетей, оценка Macro-F1 на наборе данных BCG составила всего 6.01%. Это значительно ниже, чем 93.04%, достигнутых на CICMalDroid, что указывает на более высокую сложность и требовательность набора BCG для задач классификации вредоносного программного обеспечения. Различия в структуре и характеристиках данных в этих наборах данных подчеркивают важность тщательного отбора и анализа тестовых выборок при оценке эффективности моделей машинного обучения в области кибербезопасности, а также необходимость разработки алгоритмов, устойчивых к вариативности данных.

Представленное исследование демонстрирует, что существующие наборы данных для классификации вредоносного ПО на Android переоценивают эффективность алгоритмов. Авторы подчеркивают важность использования актуальных данных, поскольку эволюция вредоносного кода требует постоянной адаптации моделей машинного обучения. Это созвучно словам Барбары Лисков: «Хорошее программирование — это не просто написание кода, который работает; это создание системы, которая может быть доказана корректной». Подобный подход к верификации систем, основанный на математической строгости, применимо и к задачам обнаружения вредоносного ПО, где надежность и точность критически важны. Создание набора данных BCG, отражающего современную ситуацию с вредоносным ПО, является шагом к созданию более надежных и доказуемо корректных систем защиты.

Куда двигаться дальше?

Представленный анализ графов вызовов функций (FCG) выявил закономерную, но печальную истину: существующие наборы данных для классификации вредоносного ПО для Android, по всей видимости, отражают скорее оптимистичные сценарии, чем реальную сложность современной вредоносной среды. Утверждения о высокой точности, основанные на устаревших данных, выглядят как элегантное, но ошибочное доказательство. Важно помнить, что алгоритм, работающий на ограниченном наборе примеров, может оказаться бесполезным при столкновении с непредсказуемостью реального мира.

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

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


Оригинал статьи: https://arxiv.org/pdf/2512.20872.pdf

Связаться с автором: https://www.linkedin.com/in/avetisyan/

Смотрите также:

2025-12-28 03:27