ОТУ Дизассемблирование и анализ вредоносного ПО, чтобы увидеть, как оно работает, для чего оно предназначено и как от него защититься, — это в основном долгая ручная задача, требующая глубокого понимания ассемблерного кода и программирования, методов и эксплойтов, используемых злоумышленниками, и других навыков. которые трудно найти.
Что касается развития глубокого обучения и других исследований ИИ, специалисты по информационной безопасности изучают способы использования машинного обучения для повышения скорости, эффективности и автоматизации этого процесса. Эти автоматизированные системы должны справляться с дьявольски запутанным вредоносным кодом, призванным избежать обнаружения. Одна из ключевых целей — заставить системы ИИ выполнять более рутинную работу, освобождая инженеров-обратных инженеров, чтобы они могли сосредоточиться на более важных задачах.
Mandiant — одна из тех компаний, которые видят, как нейронные сети и связанные с ними технологии могут изменить то, как разбиваются и анализируются вредоносные программы. На этой неделе на мероприятии Nvidia GTC 2022 Сунил Васишт, штатный специалист по данным в фирме информационной безопасности, представил одну из этих инициатив: модель нейронного машинного перевода (NMT), которая может аннотировать функции.
Эта модель предсказания, насколько мы понимаем, может принимать декомпилированный код — инструкции машинного языка, преобразованные обратно в соответствующий код языка высокого уровня — и использовать его, чтобы предлагать подходящие имена для каждого из функциональных блоков. Таким образом, если вы реверс-инженер, вы можете пропустить функции, которые, например, заставляют ОС обрабатывать вызов printf(), и сразу перейти к функциям, идентифицированным как выполняющие шифрование или повышающие привилегии. Вы можете игнорировать блок, помеченный моделью как tolower(), и идти после блока inject_into_process(). Вы можете не тратить время на тупиковые или несущественные функции.
В частности, модель работает, предсказывая ключевые слова имени функции (например, «получить», «реестр», «значение») из токенов абстрактного синтаксического дерева (AST) из декомпилированных исполняемых файлов. Было показано, что модель могла пометить одну функцию как «des», «encrypt», «openssl», «i386», «libeay32», тогда как аналитик, участвовавший в эксперименте, смог предложить только encode(). Mandiant также построил второй NMT, который делал прогнозы на основе графов потоков управления и вызовов кода API.
Васишт рассказал о типичных методах, которые используются для обратного проектирования вредоносных программ, и о множестве проблем, связанных с этим, в том числе о методах, которые создатели вредоносных программ используют для создания своего кода, чтобы усложнить его поиск и дизассемблирование для охотников за угрозами. Это делает для того, что становится неприемлемой ситуации.
«Реверсирование — чрезвычайно сложная работа, и тратить больше времени на решение проблемы аналитика нецелесообразно», — сказал он во время своей презентации.
Автоматизируя аннотации функций, Mandiant стремится решить широкие проблемы, с которыми сталкивается большинство реверс-инженеров при анализе современных вредоносных программ. Продавец, купленный Google за 5,4 млрд долларов, хочет расширить отчеты о функциях и возможностях вредоносного ПО, уменьшить количество проблем, с которыми сталкиваются его аналитики, и сделать реверсирование более эффективным. Другими словами, упростите выявление сердцевины сложного вредоносного кода. Мы полагаем, что это также может быть полезно для сравнения штаммов вредоносных программ.
«Мы надеемся заняться легкими случаями, чтобы аналитики могли потратить свое драгоценное время на более важные дела», — сказал Васишт. «Мы в Mandiant поставили перед собой задачу решить эти задачи с помощью унифицированного подхода к машинному обучению. Постановка нашей проблемы такова: как мы можем увеличить охват имен функций при дизассемблировании двоичных файлов, чтобы ускорить сортировку вредоносных программ?»
Мы надеемся заняться легкими случаями, чтобы аналитики могли потратить свое драгоценное время на более важные дела.
Аналитики вредоносных программ используют ряд методов, подпадающих под статический и динамический анализ; первый включает изучение исполняемого кода, второй — его запуск и наблюдение за его работой. Есть такие инструменты, как IDA Pro, Binary Ninja, Ghidra, а также отладчики, эмуляторы и гипервизоры, чтобы помочь с этим. Тем не менее, за декомпилированными и дизассемблированными функциями может быть трудно следить, что вынуждает реверсеров тратить часы, прежде чем они поймут, что делает участок кода, а многие образцы слишком велики для полного анализа. Код также может быть зашифрован, что затрудняет статический анализ.
Кроме того, вредоносные программы могут быть написаны так, чтобы они самоуничтожались или действовали безобидно, если обнаруживают, что они запущены при динамическом анализе. «Вредоносное ПО может определить, когда оно запущено на виртуальной машине, и скрыть свое истинное поведение. Возможно, оно может проверить операционную систему или даже температуру процессора и определить, запускать его или просто скрывать», — сказал он.
Васишт описал два способа преобразования двоичного кода во входные данные для прогнозирующей модели NMT. Один из них заключается в использовании code2seq, который разбивает исходный код и декомпилированный код на AST репрезентативных токенов. Другой — Nero, который описывает граф потока управления (CFG) кода.
По его словам, инженеры Mandiant учитывали обе инициативы при создании своей модели именования функций. Как описано выше, один фокусировался на AST, а другой на CFG.
«Используя архитектуры, подобные code2seq и Nero, в качестве вдохновения, мы решили посмотреть, сможем ли мы применить эти методы к дизассемблированию вредоносных программ, используя представления AST и CFG для прогнозирования значимой функции, и в процессе мы надеемся сократить усилия, связанные с утомительным обратным инженерный рабочий процесс», — сказал Васишт.
Инженеры использовали Linux-сервер с 48 ядрами ЦП, 500 ГБ системной оперативной памяти. и восемь графических процессоров Nvidia Tesla M40 с 24 ГБ памяти. По его словам, платформа использовалась для одновременного запуска нескольких поисковых запросов по гиперпараметрам — от максимальных контекстов AST до максимальных субтокенов меток вывода — и для обучения окончательной модели. Они использовали входной набор данных из более чем 360 000 дизассемблированных функций и аннотаций, взятых из 4 000 вредоносных файлов Windows PE, некоторые из которых были автоматически сгенерированы из IDA FLIRT, а другие — из рукописных реверсивных аннотаций, написанных за десятилетие от Mandiant.
По его словам, автоматизированный и масштабируемый конвейер анализа Mandiant показал улучшения по сравнению с моделями code2seq и Nero. Теперь компании нужно подумать, как она будет развертывать модель.
«К ним относится использование этих модельных прогнозов с IDA. Pro а также [the NSA’s open-source] Плагины Ghidra, — сказал Васишт. — Мы также предполагаем развертывание этой модели в конвейере анализа вредоносных программ. Кроме того, это позволит нам собирать отзывы о прогнозах, а также собирать некоторые новые аннотации, чтобы мы могли повторять и улучшать эту модель в будущем».
Будущая работа включает улучшение маркировки и качества данных; использование комбинированной модели AST и CFG; и использование различных комбинаций двоичных файлов для обучения модели, сказал он. ®