УРОВЕНЬ ТЕХНИКИ
[0001] Изобретение относится к системам и способам компьютерной безопасности, и в частности к системам и способам обнаружения вредоносного программного обеспечения и/или проникновения в компьютерную систему и/или сеть связи.
[0002] В последние годы компьютерная и сетевая безопасность становятся все более важными как для частных лиц, так и для компаний. Быстрое развитие технологий электронной связи, растущая зависимость от программного обеспечения в повседневной деятельности и появление Интернета вещей сделали компании и отдельных лиц уязвимыми для потери конфиденциальности и кражи данных.
[0003] Вредоносное программное обеспечение, также известное как вредоносные программы, является одной из основных угроз компьютерной безопасности, влияющих на компьютерные системы во всем мире. Вредоносные программы во многих их формах, таких как компьютерные вирусы, черви, руткиты и шпионские программы, представляют серьезную опасность для миллионов пользователей компьютеров. Программное обеспечение безопасности может быть использовано для обнаружения вредоносных программ, заражающих компьютерную систему пользователя, а также для удаления или остановки выполнения таких вредоносных программ. Из уровня техники известно несколько техник обнаружения вредоносных программ. Некоторые полагаются на сопоставление фрагмента кода вредоносного агента с библиотекой сигнатур, указывающих на вредоносную программу. Другие способы обнаруживают набор признаков поведения вредоносного агента, указывающих на вредоносную программу.
[0004] Такие традиционные стратегии борьбы с вредоносными программами обычно опираются на человеческих аналитиков для разработки явных правил и алгоритмов обнаружения вредоносных программ. Например, аналитик может использовать эмпирические наблюдения и/или понимание способа действия вредоносного программного обеспечения для разработки поведенческой эвристики, которая впоследствии реализуется в программном обеспечении безопасности. Однако постоянно создаются новые вредоносные программы, поэтому такие поведенческие эвристики необходимо постоянно проверять и обновлять. По мере увеличения разнообразия вычислительных устройств и объема данных, протекающих по информационным сетям, человеку-оператору становится все менее целесообразно надежно поддерживать программное обеспечение безопасности. Поэтому существует значительный интерес к разработке более надежных и масштабируемых систем и способов компьютерной безопасности.
[0005] Особой проблемой, угрожающей компьютерной безопасности, является ложноположительное обнаружение, то есть ситуация, в которой программное обеспечение безопасности ложно интерпретирует некоторые законные вычислительные действия как кибератаку. Такие события могут быть особенно дорогостоящими с точки зрения производительности и могут снизить доверие пользователя к соответствующему программному решению или даже к компьютерной безопасности в целом. Поэтому снижение уровня ложноположительного обнаружения может быть столь же важным для успешной компьютерной безопасности, как и надежное обнаружение реальных угроз.
РАСКРЫТИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
[0006] Согласно одному аспекту, компьютерная система содержит по меньшей мере один аппаратный процессор, конфигурированный, чтобы выполнять поведенческий анализатор для определения, является ли программный объект вредоносным, и в ответ, когда поведенческий анализатор указывает, что программный объект не является вредоносным, определять, что программный объект не является вредоносным. По меньшей мере один аппаратный процессор дополнительно конфигурирован, когда поведенческий анализатор указывает, что программный объект является вредоносным, выполнять анализатор памяти для определения, является ли программный объект вредоносным. По меньшей мере один аппаратный процессор дополнительно конфигурирован, когда анализатор памяти указывает, что программный объект является вредоносным, определять, что программный объект является вредоносным, и когда анализатор памяти указывает, что программный объект не является вредоносным, определять, что программный объект не является вредоносным. Поведенческий анализатор содержит первую нейронную сеть, конфигурированную, чтобы принимать последовательность индикаторов событий и определять, является ли программный объект вредоносным, в соответствии с последовательностью индикаторов событий. Каждый индикатор событий последовательности характеризует отдельное событие, вызванное выполнением программного объекта. Последовательность индикаторов событий упорядочена по времени возникновения каждого отдельного события. Анализатор памяти содержит вторую нейронную сеть, конфигурированную, чтобы принимать последовательность индикаторов маркеров и определять, является ли программный объект вредоносным, в соответствии с последовательностью индикаторов маркеров. Каждый индикатор маркеров последовательности характеризует отдельный маркер строки символов, извлеченный из моментального снимка памяти программного объекта. Последовательность индикаторов маркеров упорядочена в соответствии с расположением в памяти каждого соответствующего маркера строки символов.
[0007] Согласно другому аспекту, способ обнаружения вредоносных программ содержит использование по меньшей мере одного аппаратного процессора компьютерной системы для выполнения поведенческого анализатора для определения, является ли программный объект вредоносным, и в ответ, когда поведенческий анализатор указывает, что программный объект не является вредоносным, определения, что программный объект не является вредоносным. Способ дополнительно содержит использование по меньшей мере одного аппаратного процессора, когда поведенческий анализатор указывает, что программный объект является вредоносным, чтобы выполнять анализатор памяти для определения, является ли программный объект вредоносным. Способ дополнительно содержит использование по меньшей мере одного аппаратного процессора, когда анализатор памяти указывает, что программный объект является вредоносным, чтобы определять, что программный объект является вредоносным, и когда анализатор памяти указывает, что программный объект не является вредоносным, определять, что программный объект не является вредоносным. Поведенческий анализатор содержит первую нейронную сеть, конфигурированную, чтобы принимать последовательность индикаторов событий и определять, является ли программный объект вредоносным, в соответствии с последовательностью индикаторов событий. Каждый индикатор события последовательности характеризует отдельное событие, вызванное выполнением программного объекта. Последовательность индикаторов событий упорядочена по времени возникновения каждого отдельного события. Анализатор памяти содержит вторую нейронную сеть, конфигурированную, чтобы принимать последовательность индикаторов маркеров и определять, является ли программный объект вредоносным, в соответствии с последовательностью индикаторов маркеров. Каждый индикатор маркеров последовательности характеризует отдельный маркер строки символов, извлеченный из моментального снимка памяти программного объекта. Последовательность индикаторов маркеров упорядочена в соответствии с расположением в памяти каждого соответствующего маркера строки символов.
[0008] Согласно другому аспекту, невременный машиночитаемый носитель хранит инструкции, которые, при выполнении по меньшей мере одним аппаратным процессором компьютерной системы, побуждают компьютерную систему выполнять анализатор поведения для определения, является ли программный объект вредоносным, и в ответ, когда поведенческий анализатор указывает, что программный объект не является вредоносным, определять, что программный объект не является вредоносным. Инструкции дополнительно побуждают компьютерную систему, когда поведенческий анализатор указывает, что программный объект является вредоносным, выполнять анализатор памяти для определения, является ли программный объект вредоносным. Инструкции дополнительно побуждают компьютерную систему, когда анализатор памяти указывает, что программный объект является вредоносным, определять, что программный объект является вредоносным, и когда анализатор памяти указывает, что программный объект не является вредоносным, определять, что программный объект не является вредоносным. Поведенческий анализатор содержит первую нейронную сеть, конфигурированную, чтобы принимать последовательность индикаторов событий и определять, является ли программный объект вредоносным, в соответствии с последовательностью индикаторов событий. Каждый индикатор событий последовательности характеризует отдельное событие, вызванное выполнением программного объекта. Последовательность индикаторов событий упорядочена по времени возникновения каждого отдельного события. Анализатор памяти содержит вторую нейронную сеть, конфигурированную, чтобы принимать последовательность индикаторов маркеров и определять, является ли программный объект вредоносным, в соответствии с последовательностью индикаторов маркеров. Каждый индикатор маркеров последовательности характеризует отдельный маркер строки символов, извлеченный из моментального снимка памяти программного объекта. Последовательность индикаторов маркеров упорядочена в соответствии с расположением в памяти каждого соответствующего маркера строки символов.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0009] Вышеупомянутые аспекты и преимущества настоящего изобретения станут более понятными после прочтения следующего ниже подробного описания, данного со ссылками на чертежи, на которых изображено следующее.
[0010] Фиг. 1 показывает набор соединенных клиентских систем, защищенных от угроз компьютерной безопасности, согласно некоторым вариантам осуществления настоящего изобретения.
[0011] Фиг. 2 иллюстрирует примерную конфигурацию аппаратного обеспечения вычислительного устройства, конфигурированного, чтобы выполнять операции компьютерной безопасности в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0012] Фиг. 3 иллюстрирует примерные компоненты программного обеспечения, выполняемые в защищенной клиентской системе в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0013] Фиг. 4 показывает структурную и функциональную схему примерного модуля безопасности в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0014] Фиг. 5 показывает примерную последовательность событий, содержащую примерные записи событий в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0015] Фиг. 6 показывает примерные компоненты поведенческого анализатора в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0016] Фиг. 7 иллюстрирует примерный массив внедрения поведения, содержащий множество векторов внедрения событий в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0017] Фиг. 8 иллюстрирует примерную структуру и работу поведенческого классификатора в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0018] Фиг. 9 показывает работу примерной сверточной нейронной сети, являющейся частью поведенческого классификатора в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0019] Фиг. 10-A иллюстрирует примерную однонаправленную рекуррентную нейронную сеть в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0020] Фиг. 10-B показывает типовую двунаправленную рекуррентную нейронную сеть в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0021] Фиг. 11 показывает пример моментального снимка памяти, содержащего множество маркеров строки символов в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0022] Фиг 12 показывает примерные компоненты анализатора памяти в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0023] Фиг. 13 показывает примерную последовательность этапов, выполняемых модулем безопасности в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0024] Фиг. 14 показывает примерный обмен данными в варианте осуществления изобретения, в котором программное обеспечение безопасности выполняется на сервере безопасности в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0025] Фиг. 15 иллюстрирует примерную процедуру обучения кодера событий в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0026] Фиг. 16 показывает альтернативную процедуру обучения кодера событий в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[0027] Фиг. 17 показывает примерные компоненты программного обеспечения в альтернативном варианте осуществления настоящего изобретения.
[0028] Фиг. 18 показывает примерную последовательность этапов, выполняемых модулем безопасности в альтернативном варианте осуществления настоящего изобретения.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
[0029] Следует понимать, что в нижеследующем описании все перечисленные соединения между структурами могут быть прямыми функциональными соединениями или непрямыми функциональными соединениями через промежуточные структуры. Набор элементов включает в себя один или более элементов. Считается, что любое упоминание элемента относится по меньшей мере к одному элементу. Множество элементов включает по меньшей мере два элемента. Если не указано иное, любое использование «ИЛИ» относится к неисключительному или. Если не требуется иное, любые описанные этапы способа не обязательно должны выполняться в конкретном проиллюстрированном порядке. Первый элемент (например, данные), полученный из второго элемента, включает в себя первый элемент, равный второму элементу, а также первый элемент, сгенерированный обработкой второго элемента и, опционально, других данных. Принятие определения или решения в соответствии с параметром включает в себя принятие определения или решения в соответствии с параметром и, опционально, в соответствии с другими данными. Если не указано иное, индикатором некоторого количества/данных может быть само количество/данные или индикатор, отличный от самого количества/данных. Компьютерная безопасность включает в себя защиту оборудования и данных от незаконного доступа, модификации и/или уничтожения. Компьютерная программа - это последовательность инструкций процессора, выполняющих задачу. Компьютерные программы, описанные в некоторых вариантах осуществления настоящего изобретения, могут быть автономными объектами программного обеспечения или подобъектами (например, подпрограммами, библиотеками) других компьютерных программ. Процесс представляет собой экземпляр компьютерной программы, такой как приложение или часть операционной системы, и характеризуется наличием по меньшей мере потока выполнения и выделенного ему пространства виртуальной памяти, причем содержимое соответствующего пространства виртуальной памяти включает в себя исполняемый код. Если не указано иное, страница представляет наименьшую единицу виртуальной памяти, которая может быть индивидуально отображена в физическую память хост-системы. Хэш - это числовой результат применения хэш-функции к маркеру (например, символьная строка, фрагмент кода и т.д.). Хэш-функции сопоставляют данные произвольного размера со значениями фиксированного размера. Примеры функций/процедур хеширования включают в себя, среди прочего, циклическую проверку избыточности (CRC), контрольные суммы, функции дайджеста сообщений (например, MD5) и безопасные алгоритмы хеширования (SHA). Машиночитаемые носители включают в себя невременные носители, такие как магнитные, оптические и полупроводниковые носители данных (например, жесткие диски, оптические диски, флэш-память, DRAM), а также каналы связи, такие как проводящие кабели и оптоволоконные линии. Согласно некоторым вариантам осуществления настоящее изобретение обеспечивает, среди прочего, компьютерные системы, содержащие аппаратные средства (например, один или более процессоров), запрограммированные для выполнения описанных здесь способов, а также машиночитаемые инструкции кодирования мультимедиа для выполнения способов, описанных в данном документе.
[0030] Нижеследующее описание иллюстрирует варианты осуществления изобретения в качестве примера, а не обязательно в качестве ограничения.
[0031] Фиг. 1 показывает примерный набор клиентских систем 10а-с, защищенных от угроз компьютерной безопасности, согласно некоторым вариантам осуществления настоящего изобретения. Клиентские системы 10a-с в целом представляют собой любое электронное устройство, имеющее процессор, память и интерфейс связи. Примеры клиентских систем 10а-с включают в себя, среди прочего, персональные компьютеры, корпоративные мейнфреймы, серверы, ноутбуки, планшетные компьютеры, мобильные телекоммуникационные устройства (например, смартфоны), мультимедийные проигрыватели, телевизоры, игровые приставки, бытовую технику и носимые устройства (например, умные часы).
[0032] Проиллюстрированные клиентские системы соединены между собой сетью 14 связи, которая может содержать локальную вычислительную сеть (LAN) и/или глобальную вычислительную сеть (WAN), такую как Интернет. В некоторых вариантах осуществления изобретения клиенты 10а-с дополнительно соединены с сервером 12 безопасности посредством сети 14. Сервер 12 в целом представляет собой набор связанных с возможностью обмена информацией компьютерных систем, которые могут находиться или не находиться в физической близости друг от друга. Клиенты 10а-с защищены от угроз компьютерной безопасности (например, вредоносных программ, вторжения) с помощью программного обеспечения безопасности, выполняемого в каждой клиентской системе и/или на сервере 12 безопасности, как подробно описано ниже. В некоторых вариантах осуществления такая защита содержит программное обеспечение безопасности, автоматически обнаруживающее подозрительную активность, происходящую в клиентской системе, например, действие злоумышленника, управляющего соответствующей клиентской системой, попытку вредоносного программного обеспечения извлечь конфиденциальную информацию из соответствующего клиента и т.д.
[0033] На фиг. 2 показана примерная конфигурация аппаратного обеспечения вычислительного устройства 100, конфигурированного, чтобы выполнять операции компьютерной безопасности, как описано в данном документе. Устройство 100 может представлять любую из клиентских систем 10а-с с фиг. 1, а также сервер 12 безопасности. Для ясности проиллюстрированное вычислительное устройство представляет собой персональный компьютер. Другие вычислительные устройства, такие как мобильные телефоны, планшетные компьютеры и носимые устройства, могут иметь несколько другую конфигурацию. Процессор 22 содержит физическое устройство (например, микропроцессор, многоядерную интегральную схему, сформированную на полупроводниковой подложке), конфигурированное, чтобы выполнять вычислительные и/или логические операции с набором сигналов и/или данных. Такие сигналы или данные могут быть закодированы и доставлены в процессор 22 в форме инструкций процессора, например машинного кода. Блок 24 памяти может содержать энергозависимые машиночитаемые носители (например, динамическое оперативное запоминающее устройство (DRAM)), хранящие данные/сигналы, доступные или сгенерированные процессором 22 в ходе выполнения операций.
[0034] Устройства 26 ввода могут включать в себя, среди прочего, компьютерные клавиатуры, мыши и микрофоны, в том числе соответствующие аппаратные интерфейсы и/или адаптеры, позволяющие пользователю вводить данные и/или инструкции в вычислительное устройство 100. Устройства 28 вывода могут включать в себя, среди прочего, устройства отображения, такие как мониторы и динамики, а также аппаратные интерфейсы/адаптеры, такие как графические карты, позволяющие соответствующему вычислительному устройству передавать данные пользователю. В некоторых вариантах осуществления устройства 26-28 ввода и вывода совместно используют общее аппаратное оборудование (например, сенсорный экран).
[0035] Устройства 32 хранения включают в себя машиночитаемые носители, обеспечивающие энергонезависимое хранение, чтение и запись программных инструкций и/или данных. Примерные устройства хранения включают в себя магнитные и оптические диски и устройства флэш-памяти, а также съемные носители, такие как CD и/или DVD диски и приводы. Сетевой адаптер(ы) 34 позволяет вычислительному устройству 100 подключаться к сети электронной связи (например, к сети 14 на фиг. 1) и/или к другим устройствам/компьютерным системам.
[0038] Контроллер-концентратор 30 в целом представляет множество системных, периферийных шин и/или шин набора микросхем и/или все другие схемы, обеспечивающие связь между процессором 22 и остальными аппаратными компонентами устройства 100. Например, контроллер-концентратор 30 может содержать контроллер памяти, контроллер ввода/вывода (I/O) и контроллер прерываний. В зависимости от производителя аппаратного обеспечения некоторые такие контроллеры могут быть включены в единую интегральную схему и/или могут быть интегрированы с процессором. В другом примере контроллер-концентратор 30 может содержать северный мост, соединяющий процессор 22 с памятью 24, и/или южный мост, соединяющий процессор 22 с устройствами 26, 28, 32 и 34.
[0037] На фиг. 3 показаны примеры компонентов клиентской системы 10 (например, любой из клиентских систем 10а-с с фиг. 1) в соответствии с некоторыми вариантами осуществления настоящего изобретения. Такие компоненты могут быть реализованы в виде программного обеспечения, то есть компьютерных программ, содержащих инструкции, которые при загрузке в блок 24 памяти и выполнении аппаратным процессором 22 побуждают процессор выполнять соответствующие задачи или процедуры. Специалисту в данной области техники будет понятно, что любые и/или все проиллюстрированные компоненты также могут быть реализованы в аппаратном обеспечении, встроенном программном обеспечении и/или их комбинации, и могут взаимодействовать с другими компонентами через специальные драйверы и/или интерфейсы. Загрузка компонента/модуля в память 24 и/или процессор 22 в данном документе называется формированием или выполнением соответствующего компонента/модуля.
[0038] Клиентская система 10 может выполнять операционную систему (ОС) 40, обеспечивающую интерфейс между аппаратным обеспечением клиентской системы 10 и другими компьютерными программами, такими как пользовательское приложение 42, выполняемое в соответствующей клиентской системе. Примеры операционных систем включают, среди прочего, Windows®, MacOS®, iOS® и Android®. Пользовательское приложение 42, как правило, представляет собой, среди прочего, любую компьютерную программу, такую как текстовая обработка, обработка изображений, электронная таблица, календарь, игры, социальные сети, веб-браузер и приложение электронной связи.
[0039] В некоторых вариантах осуществления модуль 44 безопасности выполнен с возможностью защиты клиентской системы 10 от угроз компьютерной безопасности, таких как вредоносное программное обеспечение и вторжение. Среди других функций, приложение 44 безопасности конфигурировано, чтобы обнаруживать набор событий, происходящих во время выполнения программного обеспечения в клиентской системе 10, и определения, подвергается ли соответствующая клиентская система атаке в соответствии с соответствующими обнаруженными событиями. В некоторых вариантах осуществления модуль 44 безопасности дополнительно конфигурирован определять, подвергается ли соответствующая клиентская система атаке в соответствии с содержимым секции памяти соответствующей клиентской системы. В некоторых вариантах осуществления модуль 44 безопасности содержит систему искусственного интеллекта, такую как набор искусственных нейронных сетей, предварительно обученных различать доброкачественные и вредоносные последовательности событий и/или законное и вредоносное содержимое памяти, как подробно описано ниже.
[0040] Модуль 44 безопасности может выполняться на различных уровнях привилегий процессора. Например, в некоторых вариантах осуществления изобретения модуль 44 выполняется на уровне пользователя (также известном как кольцо 3 в некоторых аппаратных платформах). Некоторые компоненты могут выполняться на уровне привилегий процессора ОС 40 (обычно в режиме кольца 0 или ядра). В варианте осуществления аппаратной виртуализации, в котором ОС 40 и приложение 42 выполняются в виртуальной машине (например, в облачной вычислительной среде), модуль 44 может быть конфигурирован, чтобы защищать несколько виртуальных машин, выполняемых в клиентской системе 10. В таких вариантах осуществления модуль 44 может выполняться за пределами защищенной виртуальной машины, на уровне привилегий процессора гипервизора, предоставляющем соответствующую виртуальную машину (например, кольцо -1 или корневой объект VMX на платформах Intel®), или в пределах отдельной выделенной виртуальной машины безопасности. Для выполнения таких операций, как обнаружение событий из положения за пределами защищенной виртуальной машины, в некоторых вариантах осуществления изобретения может использоваться набор процедур, известных в данной области техники как самодиагностика виртуальной машины.
[0041] Фиг. 4 иллюстрирует примерные компоненты модуля 44 безопасности в соответствии с некоторыми вариантами осуществления настоящего изобретения. Модуль 44 содержит экстрактор 46 данных, поведенческий анализатор 60 и анализатор 70 памяти, принимающий входные данные от экстрактора 46 данных, и модуль 48 принятия решений, соединенный с анализаторами 60 и 70. В некоторых вариантах осуществления модуль 44 безопасности использует технологию искусственного интеллекта для вычисления индикатора 80 вредоносности, указывающего, подвергается ли соответствующая клиентская система в настоящее время атаке, например, содержит ли соответствующая клиентская система вредоносное программное обеспечение или управляется злоумышленником. В предпочтительном варианте осуществления изобретения анализаторы 60 и/или 70 содержат набор искусственных нейронных сетей, обученных различать доброкачественные и вредоносные программные объекты в соответствии с последовательностью событий, вызванных выполнением контролируемого объекта, и в соответствии с моментальным снимком памяти соответствующего контролируемого объекта, соответственно. Контролируемые программные объекты могут варьироваться по объему от отдельных процессов/потоков до целых виртуальных машин.
[0042] Экстрактор 46 данных обеспечивает ввод в поведенческий анализатор 60 и/или анализатор 70 памяти. В некоторых вариантах осуществления изобретения экстрактор 46 конфигурирован, чтобы обнаруживать возникновение определенных событий во время выполнения программного обеспечения в соответствующей клиентской системе. Примеры обнаруженных событий включают в себя, среди прочего, запуск и завершение процесса, порождение дочернего процесса (например, разветвление), динамическую загрузку/выгрузку библиотеки, выполнение конкретной команды процессора (например, системный вызов), события файла, такие как создание файла, запись, удаление и т.д., и установку различных параметров ОС (например, события реестра Windows®). Другие примеры событий включают в себя, среди прочего, запросы доступа к периферийным устройствам (например, жесткому диску, сетевому адаптеру), запрос доступа к удаленному ресурсу (например, протокол передачи гипертекста - HTTP-запрос доступа к конкретному URL-адресу, попытка доступа к репозиторию документов по локальной сети), запрос, сформулированный в конкретной единообразной схеме идентификации ресурсов (например, запрос mailto: или ftp:), и попытку отправки электронного сообщения (например, email, служба коротких сообщений - SMS и т д.). Обнаруженные события могут указывать или не указывать на вредоносность как таковую; некоторые события могут указывать на вредоносность, когда происходят вместе с другими событиями, и/или когда происходят в определенной последовательности.
[0043] Обнаружение события может содержать любой способ, известный в данной области техники. В одном примере, при обнаружении запуска процесса/приложения (такого как пользовательское приложение 42), экстрактор 46 данных регистрирует соответствующий процесс с помощью службы регистрации событий ОС 40 (например, отслеживание событий для Windows® - ETW, Syslog в UNIX®). В ответ на это экстрактор 46 может получать уведомления о различных событиях, происходящих во время выполнения соответствующего процесса, в режиме реального времени или в форме журнала. Инструменты журнала событий могут генерировать список дескрипторов событий, включая временную метку для каждого события, числовой код, идентифицирующий тип события, индикатор типа процесса или приложения, которые сгенерировали соответствующее событие, и другие параметры события. В таких вариантах осуществления экстрактор 46 может обнаруживать возникновение целевого события путем парсинга соответствующего журнала событий.
[0044] В другом примере обнаружения событий экстрактор 46 данных может модифицировать набор нативных функций ОС 40 путем вставки команд перенаправления (также известных как перехваты или патчи). Таким образом, когда процесс, выполняемый в клиентской системе 10, вызывает соответствующую функцию ОС, выполнение перенаправляется на программу обратного вызова, уведомляющую экстрактор 46 о попытке выполнения соответствующей функции ОС. Когда перехваченная функция играет важную роль в контролируемом событии (например, создание файла, запуск процесса и т.д.), попытка вызова соответствующей функции может служить индикатором возникновения соответствующего события.
[0045] В еще одном примере, особенно подходящем для варианта осуществления аппаратной виртуализации, экстрактор 46 данных может изменять разрешение доступа страницы памяти, на которой размещена целевая функция ОС, например, для указания на то, что соответствующая страница памяти не является исполняемой. Попытка выполнения соответствующей функции ОС затем вызовет исключение процессора (например, ошибку страницы). Экстрактор 46 может дополнительно регистрироваться в качестве обработчика исключений, так что попытка выполнения целевой функции ОС будет автоматически уведомлять экстрактор 46 данных. Такое уведомление может, в свою очередь, указывать на возникновение целевого события.
[0046] Экстрактор 46 данных может организовывать обнаруженные события в последовательность событий в соответствии с временем возникновения каждого события и/или в соответствии с программным объектом, который вызвал соответствующее событие. В одном примере последовательность событий собирается исключительно из событий, вызванных выполнением одного и того же программного объекта, идентифицированного, например, его уникальным идентификатором (например, идентификатором процесса - PID), назначенным ОС 40. В альтернативном варианте осуществления последовательность событий может иметь события, вызванные выполнением группы связанных программных объектов, например, членов одного и того же программного набора, объектов, связанных друг с другом по родству (родитель-ребенок), или объектов, которые имеют общую характеристику, такую как значения ключа proc_path или FilePath в Windows®. В пределах последовательности отдельные события могут быть организованы в порядке времени возникновения.
[0047] Пример последовательности 52 событий проиллюстрирован на фиг. 5, где каждое событие представлено соответствующей записью события. Пример записи 53A представляет собой событие создания файла, в то время как другой пример записи 53b представляет собой редактирование реестра Windows®. Каждая запись события может содержать набор характерных признаков соответствующего события, таких как время возникновения (например, временная метка), тип события, уникальный идентификатор соответствующего события (например, хэш, uuid), идентификатор программного объекта, который вызвал соответствующее событие (например, идентификатор процесса - pid), индикатор местоположения (например, путь к файлу, proc_path) соответствующего объекта и различные специфические для события значения параметров. Записи событий могут быть закодированы с использованием любого способа, известного в данной области техники, например, в виде пар атрибут-значение, указанных, среди прочего, в версии расширяемого языка разметки (XML) или объектной нотации Javascript (JSON).
[0048] Некоторые варианты осуществления экстрактора 46 данных дополнительно обрабатывают последовательность 52 событий, представляя каждое событие последовательности в виде числового кода, однозначно идентифицирующего тип события (например, создание файла, запись в реестр, HTTP-запрос и т.д.) соответствующего события. Таким образом, в таких вариантах осуществления последовательность 52 событий может быть представлена в виде упорядоченной последовательности чисел. Другой примерный вариант осуществления отслеживает поднабор различных типов событий NE (в настоящем документе известных как словарь событий), и каждое событие представлено в виде булевого вектора NEx1, где каждая строка представляет собой отдельный тип события, а значение соответствующего элемента (0 или 1) указывает, относится ли соответствующее событие к соответствующему типу или нет. События типа, не включенного в словарь событий, могут быть проигнорированы или заменены общим заполнителем (например, «другие»). Такое представление, как правило, известно как прямое кодирование. В таких вариантах осуществления изобретения вся последовательность 52 событий может быть представлена в виде массива NExME, где ME обозначает количество событий в последовательности 52, каждый столбец представляет собой отдельное событие, а столбцы упорядочены в соответствии с временной меткой каждого события. Специалисту в данной области техники будет понятно, что многие альтернативные кодировки событий могут быть использованы аналогичным образом без отклонения от объема правовой охраны настоящего описания, и, следовательно, иллюстративное однократное кодирование, показанное в данном документе, не является ограничивающим.
[0049] Размер NE и/или состав словаря события могут быть выбраны в соответствии с результатом эксперимента, например, запуск поведенческого классификатора 60 с несколькими различными вариантами словаря и сравнение результатов с точки зрения показателей производительности (точность, частота обнаружения и/или ложноположительная частота, количество потребленных вычислительных ресурсов и т.д.). Состав словаря событий (т.е. выбор типов контролируемых событий) может быть дополнительно выбран в соответствии с простотой обнаружения, частотой возникновения и релевантностью безопасности каждого отдельного типа событий. В одном примере словарь событий содержит n% наиболее часто встречающихся типов событий, дополнительно отфильтрованных для удаления типов событий, которые не считаются релевантными для компьютерной безопасности, где n находится в диапазоне от 1 до 10.
[0050] В одном конкретном примере каждый отдельный элемент словаря событий представляет отдельный тип события (например, создание файла, запись в реестр, загрузка DLL и т.д.). В противном случае два события создания файлов с различными именами/путями файлов представляются как один элемент словаря. В таких вариантах осуществления значения NE могут варьироваться от 20 до 50 с типичным значением 36 для клиентов, выполняющих операционную систему Windows®. В другом примере элементы словаря представляют собой кортежи, созданные путем сопряжения типа событий (например, создание файла) с другими характеристиками соответствующего события (например, имя файла или путь в случае события создания файла). В таких вариантах осуществления изобретения два события создания файлов с различными именами/путями файлов представлены в виде двух отдельных элементов словаря событий. Ниже приведены некоторые примеры таких характерных кортежей:
[0051] 'DIR_ENUM': ['FileName'],
'FILE_CLOSE': ['FilePath'],
'FILE_CREATE': ['FilePath',’CreateOptions’],
'FILE_SET_PROPERTIES': ['FilePath'],
'FILE_WRITE': ['FilePath'],
'KCBCreate': ['KeyPath', 'KeyName'],
'KCBDelete': ['KeyPath', 'KeyName'],
'REGISTRY_SET_VALUE': ['KeyPath', 'KeyName'],
'IMAGE_LOAD': ['FileName'],
'IMAGE_UNLOAD': ['FileName']
'PROCESS_CREATE': ['CommandLine', 'ExitStatus', 'Flags', 'Image', 'ImageFileName', 'PackageFullName', 'ParentCommandLine', 'ParentImage'],
'PROCESS_TERMINATE': ['CommandLine', 'ImageFileName', 'Flags', 'ExitStatus']
В таких вариантах осуществления значения NE, как правило, составляют порядка от ста тысяч до нескольких миллионов.
[0052] В некоторых вариантах осуществления поведенческий анализатор 60 принимает последовательность 52 событий и выводит поведенческий вердикт 56, указывающий, является ли программный объект, вызвавший соответствующую последовательность событий, вредоносным. В некоторых вариантах осуществления поведенческий вердикт 56 включает в себя индикатор вероятности вредоносности (например, численную вероятность, значение по заранее определенной шкале и т.д.) или индикатор категории, выбранной из заранее определенного набора категорий, характеризующих вредоносность (например, низкая/средняя/высокая вероятность, чистая/инфицированная/неизвестная и т.д.).
[0053] Фиг. 6 показывает примерные компоненты поведенческого анализатора в соответствии с некоторыми вариантами осуществления настоящего изобретения. Анализатор 60 может включать в себя кодер 62 событий и поведенческий классификатор 64, соединенный с кодером 62 событий. В предпочтительном варианте осуществления кодер 62 и классификатор 64 содержат предварительно обученные искусственные нейронные сети.
[0054] Фиг. 7 иллюстрирует пример работы кодера 62 событий в соответствии с некоторыми вариантами осуществления настоящего изобретения. Кодер 62 событий выполнен с возможностью для каждого события последовательности 52, представленной в данном документе однонаправленным вектором E0, определять вектор 65 внедрения, содержащий представление соответствующего события в абстрактном многомерном пространстве, считающемся пространством внедрения. Пример пространства внедрения событий охватывается набором осей, при этом каждая ось представляет собой отдельный признак события или комбинацию признаков события (например, главный компонент пространства признаков события). Некоторые варианты осуществления выбирают размерность пространства внедрения в соответствии с размером словаря событий NE, то есть, количеством различных типов событий, которые контролируются модулем 44 безопасности. Например, размерность пространства внедрения событий может быть порядка квадратичного корня NE или логарифма NE. Типичная размерность в соответствии с некоторыми вариантами осуществления составляет порядка нескольких сотен (например, 100 или 300 размеров).
[0055] В предпочтительных вариантах осуществления отдельные события анализируются не изолированно, а в контексте других событий, и вектор 65 внедрения заполняет пространство внедрения контекстов, в котором два события, которые происходят преимущественно в аналогичных контекстах, расположены относительно близко друг к другу. Иначе говоря, два события, которые происходят вместе, разделены в пространстве внедрения на расстояние, меньшее, чем расстояние между двумя событиями, которые происходят преимущественно в разных контекстах. Фиг. 7 иллюстрирует пример последовательности 52 событий, содержащую центральное событие E0, и пример контекста событий, состоящего из поднабора событий E-k…E-1(≥k1), предшествующих центральному событию и/или поднабору событий E1…Ep (p≥1) после центрального события в соответствии с их соответствующей временной меткой. Типичные варианты осуществления используют симметричный контекст событий (p = k), где p находится в диапазоне от 2 до 5.
[0056] В предпочтительном варианте осуществления кодер 62 событий содержит систему искусственного интеллекта, например многослойную искусственную нейронную сеть (например, рекуррентную нейронную сеть и/или нейронную сеть с прямой связью). Для достижения желаемого представления векторов событий, параметры кодера 62 могут быть настроены до тех пор, пока не будут удовлетворены некоторые условия производительности. Такая настройка в настоящем документе называется обучением. В варианте осуществления нейронной сети примерные настраиваемые параметры кодера 62 событий включают в себя, среди прочего, набор весов синапсов и смещений активации. В некоторых вариантах осуществления обучающий кодер 62 событий сводится к построению самого пространства внедрения. Иначе говоря, пространство внедрения не определяется заранее, а зависит от состава корпуса обучающих событий и от выбранной процедуры обучения. Примеры обучающих процедур включают в себя версии алгоритма word2vec (например, алгоритм скип-грамм и алгоритм непрерывного мешка слов), а также версии алгоритма GloVe. Более подробная информация об обучении приведена ниже в связи с фиг. 15-16.
[0057] В некоторых вариантах осуществления вектор(ы) 65 внедрения, полученный обученным кодером 62 событий, дополнительно подается на поведенческий классификатор 64, который, в свою очередь, выводит поведенческий вердикт 56, определенный в соответствии с вектором(ами) 65 внедрения событий. Пример вердикта 56 содержит метку (например, доброкачественная/вредоносная/неизвестная). В другом примере поведенческий вердикт 56 содержит число, указывающее на возможность/вероятность того, что соответствующий контролируемый объект является вредоносным.
[0058] В некоторых вариантах осуществления поведенческий классификатор 64 содержит набор взаимосвязанных искусственных нейронных сетей, обученных различать доброкачественное и вредоносное поведение в соответствии с последовательностями 52 событий. Чтобы точно различать вредоносное и доброкачественное поведение, классификатор 64 предварительно обучен на корпусе примерных последовательностей событий, извлеченных из вредоносных и/или доброкачественных образцов. Более подробная информация об обучении представлена ниже.
[0059] Примерная архитектура классификатора 64 проиллюстрирована на фиг. 8 и содержит стек слоев/нейросетевых модулей, причем каждый слой принимает вывод предыдущего слоя/модуля и обеспечивает ввод на следующий слой стека. Каждый последующий слой преобразует ввод, полученный от предыдущего слоя, в соответствии с набором предварительно заданных сетевых параметров (например, активаций, весов, смещений), специфичных для соответствующего слоя, для получения внутреннего представления вектора 65 внедрения, называемого в данном документе внутренним вектором (проиллюстрирован как элемент 82 на фиг. 8). Размер и диапазон значений внутреннего вектора(ов) 82 могут варьироваться между различными слоями/модулями классификатора 64. Например, некоторые слои достигают уменьшения размерности соответствующего входного вектора, как в случае объединяющего слоя или слоя потерь.
[0060] В предпочтительном варианте осуществления поведенческий классификатор 64 содержит слой сверточной нейронной сети (CNN), за которым следует плотный (т. е. полностью соединенный) слой, дополнительно соединенный с линейным выпрямителем (ReLU) и/или слоем потерь. Альтернативные варианты осуществления содержат слой CNN, дополнительно подаваемый в рекуррентную нейронную сеть (RNN), за которым следуют полностью соединенные и ReLU/слои потерь. В еще одном примерном варианте осуществления классификатор 64 не содержит модуля CNN, вместо этого содержит RNN, дополнительно подающую в полностью соединенный слой и ReLU/слой потерь, которые в конечном итоге выдают вердикт 56.
[0061] Работа примерной сверточной нейронной сети проиллюстрирована на фиг. 9. В некоторых вариантах осуществления CNN принимает в качестве ввода массив векторов 65 внедрения событий (см., например, массив внедрения на фиг. 6). Внутри массива векторы 65 внедрения упорядочены в последовательность в соответствии со временем возникновения соответствующих событий. Свертка эффективно умножает вектор(ы) внедрения 65 с матрицей весов (широко известной в области машинного обучения как фильтры) для получения тензора внедрения. Веса соответствующих сверточных слоев могут быть скорректированы в обучающей процедуре. Свертка сама по себе равносильна выполнению множества точечных произведений между элементами вектора(ов) 65 внедрения и каждым сверточным фильтром. На фиг. 9 каждый фильтр создает отдельный 2-мерный слайс тензора внедрения; такие слайсы складываются в стек в порядке применения сверточных фильтров. Внутри каждого слайса i каждый элемент Tij тензора внедрения имеет вклады от события j, а также вклады от смежных событий j-1, j+1 и т.д. Таким образом, тензор внедрения в совокупности представляет собой последовательность 52 событий с более крупной степенью детализации, чем у отдельных событий. В некоторых вариантах осуществления сверточные фильтры имеют ограниченное эффективное рецептивное поле размера r, то есть все фильтрующие элементы равны нулю, за исключением r смежных элементов. Когда такой фильтр применяется, как показано на фиг. 9, каждый элемент соответствующего слайса тензора внедрения содержит вклады от r последовательных событий и/или r смежных элементов вектора 65 внедрения. Типичные значения r в соответствии с некоторыми вариантами осуществления настоящего изобретения находятся в диапазоне от 1 до 5 и могут варьироваться в зависимости от сверточных фильтров.
[0062] В некоторых вариантах осуществления за слоем CNN следует объединяющий слой, который уменьшает размерность тензора внедрения путем замены целой группы смежных элементов тензора внедрения одним числом, вычисленным в соответствии с соответствующей группой. Примеры объединяющих стратегий включают максимальное объединение, при котором каждая группа значений заменяется наибольшим значением группы, и среднее объединение, при котором каждая группа значений заменяется средним значением из значений группы. Типичная длина полученного внутреннего вектора(ов) 82 в соответствии с некоторыми вариантами осуществления составляет порядка нескольких сотен (например, 100 или 300). Применение процедур объединения и/или других процедур уменьшения размерности дополнительно гарантирует, что каждый внутренний вектор 82 элемента характеризует извлеченную последовательность 52 событий с более крупной степенью детализации, чем у последовательности отдельных событий.
[0063] Рекуррентные нейронные сети (RNN) образуют особый класс искусственных нейронных сетей, причем соединения между узлами сети образуют направленный граф. Фиг. 10-A схематически иллюстрирует примерную однонаправленную RNN в соответствии с некоторыми вариантами осуществления настоящего изобретения. Проиллюстрированная RNN содержит набор скрытых единиц (например, отдельных нейронов) H1, H2 и т.д. и конфигурирована, чтобы принимать последовательность входных векторов и, в ответ, производить другую последовательность выходных векторов, так что каждый выходной вектор соответствует отдельному входному вектору. В явном примере на фиг. 10-A каждая из последовательностей внутренних векторов соответствует отдельному вектору 65 внедрения. Топология RNN специально сконфигурирована так, что каждая скрытая единица Hj получает ввод, характеризующий событие Ej, но также ввод, предоставляемый смежной скрытой единицей Hj-1, которая,в свою очередь, принимает ввод, характеризующий событие Ej-1, предшествующее событию Ej, в пределах соответствующей последовательности событий. В результате на вывод скрытой единицы Hj влияет не только текущее событие Ej, но также и предшествующее событие Ej-1. Иначе говоря, проиллюстрированная RNN обрабатывает информацию о текущем событии в контексте предыдущего события (событий).
[0064] Фиг. 10-B иллюстрирует двунаправленную RNN в соответствии с некоторыми вариантами осуществления настоящего изобретения. В отличие от примера с фиг. 10-A, двунаправленная RNN имеет дополнительный набор скрытых единиц G1, G2 и т.д. и топологию, которая гарантирует, что каждая скрытая единица Gj получает ввод, характеризующий событие Ej, а также ввод, предоставляемый смежной скрытой единицей Gj+1, которая, в свою очередь, принимает ввод, характеризующий событие Ej+1, следующее за событием Ej в пределах соответствующей последовательности событий. Затем объединяют вывод скрытой единицы Hj с выводом скрытой единицы Gj, так что двунаправленная RNN обрабатывает информацию о текущем событии в контексте как предыдущего, так и последующего события (событий).
[0065] В данной области техники известно множество архитектур RNN. В вариантах осуществления настоящего изобретения уровни RNN поведенческого классификатора 64 могут быть реализованы, например, с использованием архитектуры с долгой краткосрочной памятью (LSTM) и/или архитектуры с графовой нейронной сетью (GNN). В одном таком примере RNN содержит множество стековых сетей LSTM (например, 2-4 слоя). Некоторые или все сети LSTM могут быть двунаправленными. В некоторых вариантах осуществления изобретения слой(и) RNN выводит вектор прогнозирования, определенный в соответствии с последовательностью векторов 65 внедрения событий. Затем вектор прогнозирования может быть подан на полностью подсоединенный слой, который, в свою очередь, вычисляет поведенческий вердикт 56, указывающий, является ли последовательность событий 52 вредоносной или нет.
[0066] В некоторых вариантах осуществления анализатор 70 памяти (фиг. 4) конфигурирован, чтобы принимать моментальный снимок 54 памяти из экстрактора 46 данных и выводить вердикт 58 памяти, указывающий, является ли программный объект, имеющий соответствующий моментальный снимок памяти, вредоносным. Вердикт 58 памяти может содержать метку (например, доброкачественная/вредоносная/неизвестная) и/или число, указывающее на вероятность того, что соответствующий программный объект является вредоносным.
[0067] На фиг. 11 показан примерный моментальный снимок памяти в соответствии с некоторыми вариантами осуществления настоящего изобретения. Современные вычислительные системы обычно работают с виртуальной памятью, т. е. абстракцией фактической физической памяти 24. Как правило, каждому программному объекту, выполняемому в соответствующей вычислительной системе, назначается пространство виртуальной памяти, причем части указанного пространства отображаются на адреса в физической памяти 24 и/или физических запоминающих устройствах 32. В аппаратных платформах, поддерживающих разбиение на страницы, физическая память 24 разделена на единицы, обычно известные как страницы, и отображение между физической и виртуальной памятью выполняется с детализацией страницы. В примере с фиг. 11 контролируемому программному объекту (например, процессу, выполняемому в клиентской системе 10) назначено пространство 124 виртуальной памяти, и впоследствии он получает доступ к физической памяти 24 через виртуальные адреса, также известные в данной области техники как логические адреса. Страница 190 виртуальной памяти в пространстве 124 отображена на физическую страницу 90 в фактической памяти 24. Такое отображение фактически включает в себя преобразование адреса памяти с виртуальных на физические адреса. Когда контролируемый объект пытается получить доступ к содержимому страницы 190, адрес страницы 190 преобразовывается процессором в адрес страницы 90 в физической памяти 24 в соответствии с таблицами страниц, обычно сконфигурированными и управляемыми гостевой ОС 40. В платформах аппаратной виртуализации, когда контролируемый объект выполняется в виртуальной машине, процессор 22 обычно выполняет дополнительное преобразование адреса из пространства виртуальной памяти, назначенного соответствующей виртуальной машине, в фактическую память 24. Такие преобразования реализуются через механизм, известный как преобразование адресов второго уровня (SLAT), например, расширенные таблицы страниц (EPT) на платформах Intel®.
[0068] В некоторых вариантах осуществления моментальный снимок 54 памяти содержит копию содержимого набора страниц памяти, используемых соответствующим контролируемым объектом. Страница используется программным объектом, когда она на текущий момент содержит код и/или данные соответствующего объекта. Моментальный снимок 54 может содержать содержимое всей страницы (т.е. все данные, хранящиеся на текущий момент на соответствующей странице) или строго данные, принадлежащие соответствующему объекту на соответствующей странице памяти. Примерный моментальный снимок ядра ОС может включать в себя, среди прочего, копию кода ядра и секции данных, различные драйверы ядра в памяти (коды и/или секции данных), потоки ядра в памяти и их соответствующие стеки, структуры данных ядра ОС, такие как список загруженных модулей, список процессов и т. д. Примерный моментальный снимок приложения 42, среди прочего, может содержать копию изображения памяти приложения 42, включая его секции кода и данных, стеки в памяти, используемые потоками приложения, и страницы динамической памяти приложения 42.
[0069] Некоторые варианты осуществления создают моментальный снимок 54 памяти контролируемого объекта (например, процесса) в соответствии с содержимым исполняемого файла/двоичного изображения соответствующего объекта. Исполняемый файл содержит команды процессора для выполнения соответствующего объекта, которые хранятся на энергонезависимых носителях (например, запоминающих устройствах 32 на фиг. 2). В системах под управлением Windows® примерные исполняемые файлы включают в себя, среди прочих, файлы с расширениями EXE, SYS и DLL. Исполняемые файлы структурированы в соответствии с форматом платформы, таким как портативный исполняемый файл Microsoft® (PE) и исполняемый и связываемый формат (ELF), используемый семейством операционных систем Linux®. Исполняемые файлы обычно содержат заголовок, набор секций кода, содержащий двоичное кодирование исполняемого кода, и набор некодовых секций, содержащий различные неисполняемые данные соответствующего программного объекта. При запуске соответствующего объекта в исполнение содержимое секций заголовка и кода, а также содержимое некоторых некодовых секций загружают в память по различным адресам пространства виртуальной памяти, настроенного операционной системой для соответствующего процесса. В заголовке исполняемого файла обычно хранятся метаданные, указывающие, среди прочего, размер и смещение памяти различных кодовых и некодовых секций соответствующего объекта. Например, метаданные заголовка могут перечислять различные секции в определенном порядке.
[0070] Некоторые варианты осуществления настоящего изобретения обнаруживают запуск контролируемого объекта и в ответ приостанавливают выполнение соответствующего объекта в точке после загрузки выполняемого файла в память для определения местоположения памяти различных секций данных/кода. Например, некоторые варианты осуществления могут идентифицировать страницу памяти, хранящую метаданные заголовка соответствующего выполняемого файла, и использовать такие метаданные для дальнейшей идентификации всех страниц памяти, хранящих код и/или данные соответствующего объекта, прежде чем позволить возобновить выполнение соответствующего объекта. При последующем вызове для извлечения моментального снимка 54 памяти, некоторые варианты осуществления считывают и объединяют содержимое соответствующих страниц памяти в порядке, указанном в метаданных заголовка соответствующего контролируемого объекта.
[0071] Для извлечения моментального снимка 54 памяти некоторые варианты осуществления взаимодействуют с ОС 40 для получения информации, такой как адрес таблицы страниц, используемой ОС 40 для выполнения преобразования адресов для каждого контролируемого объекта. Некоторые варианты осуществления дополнительно приостанавливают выполнение контролируемого объекта на время сбора моментального снимка 54 памяти для обеспечения согласованности извлеченного содержимого памяти. Некоторые варианты осуществления могут дополнительно вызывать ошибку(и) страницы, чтобы гарантировать, что весь требуемый контент на текущий момент находится в памяти, т.е. не выгружается постранично в энергонезависимое запоминающее устройство 32. Когда контролируемый объект выполняется в виртуальной машине, в то время как экстрактор 46 данных выполняется за пределами соответствующей виртуальной машины, некоторые варианты осуществления используют методы самодиагностики памяти для определения, какие страницы памяти содержат код/данные, принадлежащие контролируемому объекту. Такие методы могут включать в себя парсинг различных структур данных (таких как исполнительный блок процесса или EPROCESS в Windows®), используемых ОС 40 для управления выполнением контролируемого объекта. Альтернативный вариант осуществления может вставлять программный агент в соответствующую виртуальную машину, причем агент конфигурирован, чтобы определять местоположение содержимого моментального снимка 54 памяти и передавать индикацию соответствующего местоположения памяти в экстрактор 46 данных.
[0072] Фиг. 12 показывает примерные компоненты анализатора 70 памяти в соответствии с некоторыми вариантами осуществления настоящего изобретения. Проиллюстрированный анализатор 70 памяти содержит экстрактор 72 маркеров, соединенный с кодером 74 маркеров, и классификатор 76 памяти, соединенный с кодером 74 маркеров.
[0073] Классификатор 76 конфигурирован, чтобы определять, является ли программный объект, имеющий моментальный снимок 54 памяти, вредоносным в соответствии с набором характерных признаков соответствующего моментального снимка памяти. В некоторых вариантах осуществления такие признаки включают в себя набор маркеров, присутствующих в моментальном снимке 54 памяти. В предпочтительном варианте осуществления маркеры состоят из строк символов (например, имен библиотек, названий функций, названий различных кодовых и некодовых секций соответствующего выполняемого файла, сниппетов текста, таких как сообщения, отображаемые во время выполнения, различных URL-адресов или других адресов удаленных ресурсов, используемых соответствующим программным объектом, и т.д.), но этот аспект настоящего изобретения не предназначен для ограничения. Примерные маркеры строк символов 55a-f проиллюстрированы на фиг. 11. Специалисту в данной области техники будет понятно, что другие маркеры (например, сниппеты кода, опкоды, флаги секции PE и т.д.) могут быть аналогичным образом извлечены из моментального снимка 54 памяти и использованы для оценки вредоносности.
[0074] В некоторых вариантах осуществления экстрактор 72 маркеров конфигурирован, чтобы выполнять парсинг моментального снимка 54 памяти и извлекать набор строк символов, например, путем поиска значений, которые согласуются с форматом и диапазоном американского стандартного кода для обмена информацией (ASCII) или кодировок в Юникоде печатных символов (буквы/глифы, цифры, знаки препинания и т.д.) и копирования соответствующих значений из моментального снимка 54. В другом примере, экстрактор 72 маркеров может выполнять парсинг моментального снимка 54 для набора заранее определенных разделителей маркеров (например, определенных значений управления или символов) и идентифицировать содержимое моментального снимка 54, расположенного между последовательными разделителями, как один маркер. Некоторые варианты осуществления могут разбивать многословные строки символов на маркеры отдельных слов. В некоторых вариантах осуществления экстрактор 72 маркеров может дополнительно расположить извлеченные маркеры в последовательности в соответствии с некоторым критерием, например, путем группировки маркеров одного и того же вида или путем объединения извлеченных маркеров в последовательности в соответствии с их соответствующим расположением в пределах моментального снимка 54, например, в порядке увеличения адреса памяти. Некоторые варианты осуществления располагают маркеры в последовательности, сохраняя относительное положение маркеров, найденное в бинарном изображении соответствующего контролируемого объекта (например, как указано в выполняемом файле контролируемого объекта).
[0075] В некоторых вариантах осуществления для каждой извлеченной последовательности маркеров кодер 74 создает вектор 66 внедрения памяти, содержащий представление соответствующей последовательности маркеров в абстрактном пространстве, рассматриваемом в данном документе как пространство внедрения памяти. Некоторые варианты осуществления сначала определяют вектор признаков памяти соответствующей последовательности маркеров, при этом каждый маркер в соответствующей последовательности заменяется числовой меткой. Один примерный способ определения такого вектора признаков памяти содержит замену каждого маркера хэшем соответствующего маркера. Другой примерный вектор признаков памяти может быть построен в соответствии с упорядоченным словарем маркеров размера NT, который может состоять из уникальных маркеров NT, наиболее часто встречающихся в обучающем корпусе моментальных снимков памяти/последовательностей маркеров, извлеченных из различных образцов программного обеспечения. Альтернативный словарь маркеров может состоять из NT различных маркеров, которые наиболее эффективно различают доброкачественный и вредоносный программный объект в соответствии с тестированием. Каждый маркер в словаре может получить уникальную числовую метку, указывающую, например, положение соответствующего маркера в словаре. Затем вычисление вектора признаков памяти может включать поиск каждого члена последовательности маркеров в словаре маркера и замену его соответствующей меткой. В некоторых вариантах осуществления маркеры, которые не присутствуют в словаре, отбрасываются из последовательности или заменяются родовым местозаполнителем (например, "другими"). Типичный размер NT словаря маркеров составляет порядка от ста тысяч до нескольких миллионов различных маркеров.
[0076] В предпочтительном варианте осуществления кодер 74 маркеров может представлять каждый маркер моментального снимка 54 памяти в виде прямого вектора NT-by-1. Затем моментальный снимок 54 может быть представлен в виде массива векторов, в котором отдельные векторы упорядочены в соответствии с положением соответствующего маркера в моментальном снимке 54. Аналогично кодеру 62 событий, кодер 74 маркеров может дополнительно анализировать каждый маркер памяти в контексте других маркеров памяти, которые либо предшествуют, либо следуют за соответствующим маркером в пределах моментального снимка 54 памяти. В таких вариантах осуществления для каждого маркера кодер 74 может определять вектор 66 внедрения, охватывающий пространство контекстов памяти, в котором два маркера, которые встречаются преимущественно в аналогичных контекстах памяти, расположены относительно близко друг к другу. Такое представление может быть достигнуто, например, с помощью кодера маркеров, который включает в себя нейронную сеть, обученную в соответствии с алгоритмом word2vec или GloVe (см. детали обучения ниже).
[0077] В некоторых вариантах осуществления классификатор 76 памяти выполнен с возможностью приема вектора(ов) 66 внедрения памяти и определения вердикта 58 памяти в соответствии с вектором(ами) 66 внедрения. Классификатор 76 может содержать набор искусственных нейронных сетей, обученных различать вредоносные и доброкачественные программные объекты в соответствии с их соответствующими векторами внедрения памяти. Примерная архитектура классификатора 76 может отражать архитектуру поведенческого классификатора 64, подробно описанную выше. Например, классификатор памяти может содержать CNN, подающую полностью соединенный слой, за которым следует ReLU и/или слой потерь. В таких вариантах осуществления CNN может вычислять представление моментального снимка 54 памяти с более крупной степенью детализации, чем у отдельных маркеров памяти, путем объединения информации от каждого маркера с информацией из набора соседних маркеров (т. е., маркеров, расположенных вблизи соответствующего маркера в пределах моментального снимка 54 памяти). В альтернативном варианте осуществления вывод CNN сначала подается на RNN (например, сеть LSTM), вывод которой затем подается на полностью соединенный слой, который эффективно генерирует вердикт 58. В некоторых вариантах осуществления ввод в RNN расположен в соответствии с местоположением каждого маркера в моментальном снимке 54 памяти, тем самым сохраняя упорядочение маркеров. В силу своей конкретной архитектуры слои RNN классификатора 76 памяти анализируют каждый маркер в контексте соседних маркеров моментального снимка 54 памяти.
[0078] Фиг. 13 показывает примерную последовательность этапов, выполняемых модулем 44 безопасности, в соответствии с некоторыми вариантами осуществления настоящего изобретения. На этапе 202 экстрактор 46 данных получает последовательность 52 событий. Экстрактор 46 может прослушивать события в реальном времени и/или извлекать информацию о возникновении различных событий из журналов событий, как описано выше со ссылкой на фиг. 4. В некоторых вариантах осуществления экстрактор 46 данных ведет список выполняемых в настоящее время программных объектов и/или отношений между выполняемыми программными объектами и организует обнаруженные события в соответствии с идентификатором объекта, который вызвал каждое обнаруженное событие. События могут накапливаться в очереди до тех пор, пока не будет выполнено условие накопления. Например, события могут накапливаться до достижения заранее определенного количества событий и/или в течение заданного периода времени (например, 1, 10 или 30 секунд). Эксперименты с реальными данными показали, что накопление событий стоимостью 10 секунд может быть оптимальным в том смысле, что результирующая последовательность событий позволяет обеспечить хорошую частоту обнаружения при сохранении существенно низкой частоты ложноположительных результатов. Некоторые варианты осуществления обнаруживают запуск каждого контролируемого объекта и впоследствии собирают последовательности событий в соответствии с временем, прошедшим между возникновением каждого события и запуском соответствующего объекта. Один из таких иллюстративных вариантов осуществления может генерировать набор различных последовательностей событий, причем первая последовательность содержит события, происходящие в течение первых 10 секунд выполнения соответствующего объекта, вторая последовательность содержит события, происходящие между 10 и 20 секундами после запуска соответствующего объекта и т.д. Размер таких временных интервалов может изменяться во времени (например, первый временной интервал может составлять 1 секунду, второй - 10 секунд и т.д.). Другой примерный вариант осуществления отображает события в соответствии с внутренними часами модуля 44 безопасности, который не учитывает запуск каждого объекта: события могут быть помещены в бункеры одинакового размера (например, с 10-секундными интервалами), а затем отсортированы в последовательности событий в соответствии с тем, какое событие было вызвано каким контролируемым объектом.
[0079] Когда условие накопления выполнено, на этапе 204 экстрактор 46 данных может сортировать обнаруженные события для получения последовательности 52 событий и далее передавать последовательность 52 в поведенческий анализатор 60. Некоторые варианты осуществления ограничивают размер (количество событий) последовательности 52 событий для управления вычислительной стоимостью обнаружения вредоносных программ. В одном таком примере, когда количество событий, отнесенных к одному контролируемому объекту в интервале накопления, превышает пороговое значение, в последовательность событий 52 включается только поднабор соответствующих событий. Поднабор может быть выбран из начала интервала накопления, из конца интервала накопления или из обоих. Эксперименты показали, что последовательности событий, имеющие приблизительно 400 событий, являются оптимальными в том смысле, что они обеспечивают компромисс между производительностью обнаружения (частотой обнаружения и/или ложноположительной частотой) и стоимостью памяти, поэтому примерная последовательность событий 52 может быть собрана, например, из первых 200 и последних 200 событий соответствующего временного интервала.
[0080] На этапе 206 модуль 44 безопасности выполняет поведенческий анализатор 60 для получения поведенческого вердикта 56, указывающего, может ли соответствующий контролируемый объект быть вредоносным в соответствии с последовательностью 52 событий. Когда нет, некоторые варианты осуществления переходят к получению другой последовательности событий и/или загрузке другой последовательности событий в очереди в поведенческий анализатор 60.
[0081] Вердикт 56 может содержать число, указывающее на возможность (например, вероятность) вредоносности. Этап 206 затем может содержать сравнение значения вердикта 56 с заранее определенным порогом и определение, является ли контролируемый объект вредоносным в соответствии с результатом указанного сравнения. В одном из таких примеров контролируемый процесс может считаться вредоносным, если вердикт 56 указывает на вероятность вредоносности, превышающую 0,8 (80%). Когда контролируемый объект является вредоносным в соответствии с поведенческим вердиктом 56, на этапе 208 некоторые варианты осуществления могут приостановить выполнение соответствующего программного объекта. На следующем этапе 210 экстрактор 46 данных может извлекать моментальный снимок 54 памяти, содержащий содержимое набора областей памяти, содержащих код и/или данные, принадлежащие приостановленному контролируемому объекту. Затем моментальный снимок 54 передается в анализатор 70 памяти на этапе 212.
[0082] Этап 214 выполняет анализатор 70 памяти для получения вердикта 58 памяти в соответствии с моментальным снимком 54. Этап 214 может дополнительно содержать сравнение вердикта 58 с другим предварительно установленным порогом для определения, указывает ли вердикт 58 на вредоносность. Когда нет, некоторые варианты осуществления возобновляют выполнение контролируемого объекта и продолжают получение новой последовательности событий.
[0083] В некоторых вариантах осуществления, когда вердикт 58 памяти указывает, что контролируемый объект может быть вредоносным, этап 216 выполняет процедуры смягчения вредоносной программы, такие как карантин/отключение/удаление контролируемого объекта, уведомление пользователя клиентской системы 10 и/или системного администратора и т.д.
[0084] Вышеприведенное описание сосредоточено на вариантах осуществления, в которых все компоненты модуля 44 безопасности являются программным обеспечением, выполняемым на защищенной машине. Специалисту в данной области техники будет понятно, что такие конфигурации программного обеспечения не предназначены для ограничения. В одном альтернативном варианте осуществления, выполняемом в варианте осуществления аппаратной виртуализации (например, настройке облачных вычислений), модуль 44 безопасности выполняется в отдельной виртуальной машине, отличной от защищенной виртуальной машины, выполняющей фактические контролируемые программные объекты. В еще одном альтернативном варианте осуществления некоторые из описанных компонентов выполняются удаленно на сервере 12 безопасности. В одном таком примере, показанном на фиг. 14, экстрактор 46 данных выполняет в клиентской системе 10 извлечение последовательности 52 событий и/или моментального снимка 54 памяти. Между тем, поведенческий анализатор 60 и/или анализатор 70 памяти могут выполняться централизованно на сервере 12. В свою очередь, различные части анализаторов 60 и 70 могут выполняться на различных машинах и/или процессорах, например, в параллельных вычислительных конфигурациях. Такие конфигурации могут иметь некоторые преимущества, такие как наличие одного централизованного экземпляра системы безопасности ИИ, обслуживающей множество клиентов, избегая при этом необходимости доставлять крупные обновления программного обеспечения клиентам. Еще одним преимуществом таких вариантов осуществления является то, что вычислительные ресурсы, необходимые для определения элементов, таких как поведенческие вердикты и вердикты памяти, могут быть сильно оптимизированы для их задачи. Например, некоторые нейронные сети могут быть аппаратно подключены в виде программируемой пользователем вентильной матрицы - FPGA или другой специализированной интегральной схемы - ASIC, реализованной в прошивке и т.д. Одним из потенциальных недостатков таких конфигураций является необходимость передачи относительно больших объемов данных на сервер 12.
[0085] Примерная работа делокализованной системы компьютерной безопасности, показанная на фиг. 14, может включать в себя экстрактор 46 данных, передающий кодирование последовательности 52 событий (например, векторов 65 внедрения событий) на сервер 12. Поведенческий анализатор 60, выполняющийся на сервере 12, может определять поведенческий вердикт 56 в соответствии с последовательностью 52 событий. Когда вердикт 56 указывает на высокую вероятность вредоносности, сервер 12 может передавать запрос 57 анализа памяти в клиентскую систему 10, которая, в свою очередь, может извлекать и передавать моментальный снимок 54 памяти (например, векторы внедрения маркеров) на сервер 12. Анализатор 70 памяти, выполняемый на сервере 12, может впоследствии определять вердикт 58 памяти в соответствии с моментальным снимком 54. Когда вердикт 58 указывает на вредоносность, сервер 12 может уведомить соответствующего клиента с помощью индикатора 80 вредоносности.
[0086] Следующее описание иллюстрирует примерные аспекты обучения поведенческого анализатора 60 и/или анализатора 70 памяти в соответствии с некоторыми вариантами осуществления настоящего изобретения. Для вычисления векторов 65 и/или 66 внедрения в некоторых вариантах осуществления используется нейронная сеть, обученная в соответствии с версией алгоритма word2vec. Фиг. 15-16 иллюстрируют примерные процедуры обучения word2vec в соответствии с некоторыми вариантами осуществления настоящего изобретения. Обучение в данном документе означает корректировку набора параметров нейронной сети (например, весов, смещений) в направлении уменьшения функции стоимости. Обучение использует предварительно собранный корпус последовательностей событий, взятых из доброкачественных и/или вредоносных программных объектов.
[0087] Для простоты описание фокусируется исключительно на последовательностях событий, но может также распространяться и на маркеры памяти. В примерной процедуре обучения кодер 62 событий сопряжен и совместно обучен с декодером событий, оба из которых могут содержать части прямой и/или рекуррентной нейронной сети. В целом, пара кодер-декодер может быть конфигурирована, чтобы вводить первый поднабор обучающей последовательности (например, центрального события E0) и выводить прогноз для второго поднабора соответствующей последовательности (например, некоторого контекстного события Ei, i≠0). В примерах на фиг. 15-16, прогнозы проиллюстрированы как прямые векторы; в альтернативных вариантах осуществления может использоваться другое представление. Например, прогнозирование может быть представлено в виде NE-by-1 вектора чисел, причем каждое число указывает на вероятность того, что соответствующий тип события присутствует во втором поднаборе.
[0088] В скип-грамм варианте обучения, показанном на фиг. 15, пара кодер-декодер обучается для получения правильного контекста события, учитывая центральное событие E0. Для каждой последовательности событий, извлеченных из корпуса обучающих событий, кодер 62 конфигурирован, чтобы вводить прямую кодировку центрального события E0 и генерировать соответствующий вектор 65 внедрения, представляющего событие E0. В свою очередь, декодер 162 конфигурирован, чтобы вводить вектор 65 события и выводить множество векторов приближения, каждый из которых представляет собой прогнозируемое контекстное событие Ei (i≠0) соответствующей последовательности событий. Некоторые варианты осуществления затем определяют функцию стоимости, характеризующую степень несоответствия между прогнозируемым контекстом и фактическим контекстом соответствующих последовательностей обучающих событий. Ошибка предсказания может быть рассчитана в соответствии с любым способом, известным в области искусственного интеллекта, например, путем определения расстояния, такого как расстояние Левенштейна, евклидово расстояние или расстояние косинуса между прогнозируемым и фактическими событиями контекста Ei. Альтернативный вариант осуществления может определять функцию стоимости в соответствии с измерением перекрестной энтропии. Затем пара кодер-декодер может быть обучена путем корректировки параметров кодера 62 и/или декодера 162 с целью уменьшения функции стоимости. Некоторые примерные алгоритмы, используемые для обучения, включают, среди прочего, обратное распространение с использованием градиентного спуска, имитированного отжига и генетических алгоритмов. Некоторые варианты осуществления продолжают обучение до тех пор, пока не будет выполнено условие завершения, например, до тех пор, пока средняя ошибка прогнозирования по корпусу обучающего события не опустится ниже заранее определенного порога. В другом варианте осуществления обучение продолжается в течение заранее определенного количества времени или заранее определенного количества итераций/периодов.
[0089] В альтернативной процедуре обучения используется парадигма непрерывного мешка слов, которая направлена на получение правильного центрального события E0 обучающей последовательности с учетом соответствующего контекста события. В одном таком примере, проиллюстрированном на фиг. 16, кодер 62 событий выполнен с возможностью ввода набора прямых векторов, представляющих контекстные события Ei (i≠0) последовательности обучающих событий, и вывода внедренных векторов 65a-c, определенных для каждого соответствующего контекстного события. В отличие от варианта осуществления со скип-граммой, проиллюстрированного на фиг. 15, кодер 62 теперь соединен с декодером 262 событий, конфигурированным, чтобы вводить множество векторов 65a-c внедрения и получения прогноза для центрального события E0 соответствующей обучающей последовательности. Затем пара кодер-декодер может быть обучена путем корректировки параметров кодера 62 и/или декодера 262 с целью уменьшения ошибки прогнозирования, то есть несоответствия между прогнозируемым центральным событием и фактическим центральным событием соответствующих обучающих последовательностей.
[0090] Обучающий поведенческий классификатор 64 может содержать сборку обучающего корпуса последовательностей событий, происходящих из программных объектов, которые, как известно, являются либо вредоносными, либо доброкачественными, и корректировку параметров классификатора 64 (например, весов RNN) в направлении минимизации ошибки классификации. В некоторых вариантах осуществления последовательности обучающих событий по сбору данных содержат запуск каждого обучающего объекта и назначение всех событий, происходящих в течение каждого последовательного временного интервала (например, 10-секундного интервала), в отдельный контейнер событий. Чтобы имитировать способ сбора данных в реальной настройке обнаружения, временная задержка между последовательными событиями может быть искусственно изменена, например, увеличена для моделирования работы более медленной машины. После такого растяжения и/или сжатия по шкале времени некоторые события могут перемещаться между соседними контейнерами событий. Затем из каждого контейнера событий могут быть набраны последовательности обучающих событий.
[0091] Некоторые варианты осуществления основаны на наблюдении, что если программный объект порождает потомственный объект (например, дочерний процесс) во время выполнения, когда родительский элемент определенно является доброкачественным, то его потомки также, скорее всего, являются доброкачественными. И наоборот, когда родитель является вредоносным, потомки не обязательно являются вредоносными. Следовательно, некоторые варианты осуществления выбирают последовательности доброкачественных событий из доброкачественных объектов программного обеспечения, а также их потомков. Напротив, некоторые варианты осуществления собирают последовательности вредоносных событий только из объектов, известных как вредоносные. Такие стратегии обучения могут удобно увеличить размер корпуса событий и, таким образом, улучшить производительность обученного классификатора.
[0092] Обучающий классификатор 76 памяти может содержать аналогичный процесс сборки обучающего корпуса моментальных снимков памяти программных объектов, которые, как известно, являются либо вредоносными, либо доброкачественными, и корректировки параметров классификатора 76 (например, весов CNN) в направлении минимизации ошибки классификации. Сбор моментальных снимков памяти может содержать приостановку выполнения обучающего объекта в различные моменты после его запуска и копирование текущего содержимого его пространства памяти. Примерные моменты включают в себя момент, непосредственно следующий за запуском выполнения, и моменты, следующие за запуском, приблизительно на 1, 3 и 6 секунд. Некоторые варианты осуществления дополнительно основываются на наблюдении, что моментальный снимок памяти, сделанный в конце жизни субъекта, с наибольшей вероятностью покажет признаки вредоносности, если таковые имеются. Следовательно, некоторые варианты осуществления обнаруживают попытку прекращения вредоносного объекта, приостанавливают прекращение и, в ответ, извлекают текущий моментальный снимок памяти, помеченный как вредоносный.
[0093] Примерные системы и способы, описанные выше, позволяют эффективно обнаруживать угрозы компьютерной безопасности, такие как вредоносное программное обеспечение и вторжение. Раскрытые системы и способы предлагают комбинированный статико-поведенческий подход к компьютерной безопасности, в котором угрозы обнаруживаются путем контроля событий, происходящих во время выполнения программного обеспечения, и анализа отпечатка памяти соответствующего программного обеспечения. Были проведены различные эксперименты с обученным поведением и анализатором памяти, как описано в настоящем документе. Частота отзыва/чувствительности типичных вариантов осуществления поведенческого анализатора 60 варьируется от 96% до 99% с ложноположительной частотой от 0,8% до 3% (значения варьируются в зависимости от архитектуры и выбора обучающего корпуса). Для некоторых вариантов осуществления обученного анализатора 70 памяти сообщали сходные значения для частоты отзыва и ложноположительных результатов.
[0094] Хотя каждый способ/анализатор может быть использован независимо друг от друга для обнаружения вредоносного программного обеспечения, в некоторых вариантах осуществления используется комбинация этих двух для снижения скорости ложноположительного обнаружения, то есть для устранения большинства случаев, когда доброкачественное/законное программное обеспечение ошибочно классифицируется как вредоносное одним или другим из способов обнаружения. Предпочтительный вариант осуществления может использовать поведенческий классификатор для контроля вычислительных событий. Пока поведенческий классификатор определяет, что обнаруженная последовательность событий не указывает на злонамеренность, некоторые варианты осуществления могут продолжать выполнять программный объект, который вызвал соответствующую последовательность событий. Напротив, когда поведенческий классификатор определяет, что обнаруженный набор или последовательность событий указывает на существенную вероятность вредоносности, некоторые варианты осуществления вызывают классификатор памяти, чтобы определить, является ли соответствующий программный объект вредоносным в соответствии с содержимым пространства памяти соответствующего программного объекта. Некоторые варианты осуществления затем маркируют подозрительное программное обеспечение как действительно вредоносное или нет в соответствии с вердиктом, вынесенным классификатором памяти. В одном примере, когда классификатор памяти определяет, что контролируемый программный объект не является вредоносным, программное обеспечение безопасности возобновляет выполнение подозрительного объекта. Следовательно, некоторые варианты осуществления объединяют вердикты, полученные с помощью различных способов и критериев для повышения эффективности обнаружения.
[0095] Некоторые известные антивирусные решения объединяют несколько критериев обнаружения, например, путем определения множества показателей, указывающих на вредоносное ПО, в соответствии с отдельными аспектами и/или алгоритмами, и объединения соответствующих показателей в совокупный показатель. В отличие от таких традиционных подходов, в которых различные детекторы используются параллельно, в некоторых вариантах осуществления настоящего изобретения поведенческое обнаружение и анализ памяти намеренно применяются последовательно с явной целью снижения частоты ложных тревог. Если не указано иное, второй детектор используется только для двойной проверки случаев, классифицированных первым детектором как вероятные вредоносные. В компьютерных экспериментах было показано, что применение анализаторов 60 и 70 последовательно, как показано в данном документе, снижает общее ложноположительное обнаружение от 20 до 30 раз до приблизительно 0,1%, при этом сохраняя истинную частоту обнаружения выше 98%.
[0096] Порядок, в котором используется поведенческий анализ и анализ памяти, также сознательно выбирается для снижения вычислительной стоимости обнаружения вредоносного программного обеспечения. Некоторые варианты осуществления основаны на наблюдении, что анализ памяти обычно требует значительно больше вычислительных ресурсов, чем поведенческий контроль. Кроме того, извлечение моментального снимка памяти может потребовать приостановки выполнения контролируемого объекта для обеспечения согласованности соответствующего моментального снимка памяти, тем самым влияя на пользовательский опыт. В отличие от этого, сбор данных о событиях и поведенческий анализ последовательностей событий могут выполняться в режиме реального времени во время выполнения контролируемого программного обеспечения. Следовательно, некоторые варианты осуществления в качестве первого этапа обнаружения вредоносного программного обеспечения используют поведенческий анализ, и приостанавливают выполнение контролируемого объекта для анализа памяти только в том случае, если поведенческий анализ указывает на значительную вероятность вредоносности.
[0097] В одном конкретном примере альтернативного варианта осуществления, проиллюстрированном на фиг. 17, модуль 44 безопасности установлен в качестве дополнения к машине, которая уже имеет первичный движок 144 защиты от вредоносных программ, защищающий соответствующую машину. Первичный движок 144 может использовать любой способ, известный в данной области техники, для определения, является ли программный объект вредоносным, например, любое сочетание статических и поведенческих методов обнаружения. Между тем, модуль 44 безопасности может использовать классификатор нейронной сети для предоставления второго мнения так, чтобы снизить частоту ложных тревог. Движок 144 и модуль 44 безопасности могут быть даже предоставлены двумя отдельными разработчиками.
[0098] На фиг. 18 показана примерная последовательность этапов, выполняемых модулем 44 безопасности в таком варианте осуществления. Модуль 44 безопасности может выполняться на уровне привилегий процессора (например, кольцо 3). В последовательности этапов 232-234 модуль 44 безопасности может прослушивать уведомление, указывающее на то, что контролируемый объект может быть вредоносным. Уведомление может быть явно сгенерировано первичным движком 144 или другим программным компонентом в ответ на указание движком 144 потенциальной вредоносности. При получении такого уведомления последовательность этапов 236-238 извлекает моментальный снимок памяти соответствующего подозрительного объекта. На следующем этапе 240 модуль 44 безопасности может выполнять анализатор 70 памяти на извлеченном моментальном снимке. Когда вердикт 58 памяти указывает, что подозрительный объект действительно является вредоносным, этап 244 может выполнять смягчение. В противном случае на этапе 246 подозрительный объект может быть объявлен доброкачественным и может быть разрешен для возобновления выполнения.
[0099] В некоторых вариантах осуществления поведенческое обнаружение содержит анализ последовательностей событий, происходящих во время выполнения контролируемого программного объекта (например, процесса, виртуальной машины и т.д.) Примеры контролируемых событий включают, среди прочего, запуски процессов, попытки доступа к определенным дисковым файлам или сетевым местоположениям, попытки установки параметров операционной системы и т.д. Специалисту в области техники будет понятно, что описанные здесь системы и способы могут быть адаптированы для анализа других видов событий, таких как события, связанные, среди прочего, с активностью пользователя в социальных сетях, историей просмотра пользователем и игровой активностью пользователя.
[00100] Обычное поведенческое обнаружение вредоносного программного обеспечения обычно основывается на заранее определенном наборе правил, которые должны быть разработаны, протестированы и поддерживаться операторами-людьми. Тем не менее вредоносное программное обеспечение часто меняется, чтобы избежать обнаружения, и обычная методология может не поспевать за темпами изменений. Напротив, в некоторых вариантах осуществления настоящего изобретения классификаторы поведения и/или памяти включают в себя нейросетевые классификаторы, обученные на корпусе образцов, извлеченных из известных вредоносных и/или доброкачественных объектов. Использование технологий машинного обучения и обучения реальным данным может гарантировать, что классификаторы, построенные в соответствии с некоторыми вариантами осуществления настоящего изобретения, способны обнаруживать шаблоны идентификации вредоносного ПО внутри данных без необходимости предоставления явных правил. Кроме того, некоторые варианты осуществления изобретения повторно переобучают классификаторы на образцах вновь обнаруженных угроз. Пластичность, встроенная в нейронные сетевые классификаторы, может приводить к адаптации таких систем к изменениям во вредоносном поведении значительно быстрее и с существенно меньшими затратами, чем человеческие операторы могут разработать новые эвристики обнаружения вредоносных программ.
[00101] Некоторые известные системы и способы компьютерной безопасности в основном анализируют отдельные события, чтобы определить, указывают ли они на угрозу безопасности. Тем не менее, многие события, происходящие во время работы компьютерной системы (например, открытие файла, доступ к веб-странице), могут не указывать на вредоносность, когда они рассматриваются изолированно, но они могут быть вредоносными, когда происходят в контексте других событий, например, в качестве конкретной последовательности действий. В отличие от более традиционных решений, некоторые варианты осуществления настоящего изобретения явно анализируют события в контексте и поэтому лучше подходят для таких ситуаций корреляции событий. В предпочтительном варианте осуществления отдельные события представлены в виде векторов в многомерном пространстве внедрения, имеющем отличительное свойство, заключающееся в том, что пара событий, которые происходят с относительно высокой частотой в одном и том же контексте событий, разделены меньшим расстоянием, чем другая пара событий, которые происходят реже в том же контексте события.
[00102] В некоторых вариантах осуществления классификаторов поведения и/или памяти, описанных в настоящем документе, реализованы конкретные архитектуры нейронных сетей, включая, среди прочего, сверточные и/или рекуррентные нейронные сети. Выбор таких архитектур является преднамеренным, поскольку такие конфигурации явно учитывают отдельные события и/или маркеры памяти в контексте, а не изолированно, и поэтому особенно эффективны для обнаружения вредоносного программного обеспечения. Например, поскольку RNN получают и обрабатывают ввод в виде упорядоченной последовательности, поведенческий анализатор, содержащий RNN, определяет, является ли программный объект вредоносным не только в соответствии с типом событий, которые происходят во время выполнения соответствующего объекта, но также в соответствии с порядком, в котором происходят соответствующие события, а также в соответствии с контекстом каждого события. Аналогичным образом, анализатор памяти, содержащий сверточную нейронную сеть, обнаруживает вредоносность не только в соответствии с наличием определенных маркеров (например, текстовых строк), но и в соответствии с местоположением соответствующего маркера в пределах моментального снимка памяти соответствующего объекта и/или в соответствии с относительным положением различных маркеров в пределах моментального снимка памяти.
[00103] Специалисту в данной области техники понятно, что вышеупомянутые варианты осуществления могут быть различным образом изменены, без выхода при этом за пределы объема правовой охраны настоящего изобретения. Соответственно, объем правовой охраны настоящего изобретения определен следующей ниже формулой изобретения и ее юридическими эквивалентами.
название | год | авторы | номер документа |
---|---|---|---|
СПОСОБ И СИСТЕМА ПОИСКА СХОЖИХ ВРЕДОНОСНЫХ ПРОГРАММ ПО РЕЗУЛЬТАТАМ ИХ ДИНАМИЧЕСКОГО АНАЛИЗА | 2020 |
|
RU2738344C1 |
СИСТЕМЫ И СПОСОБЫ ДЕТЕКТИРОВАНИЯ ПОВЕДЕНЧЕСКИХ УГРОЗ | 2019 |
|
RU2778630C1 |
СИСТЕМЫ И СПОСОБЫ ДЕТЕКТИРОВАНИЯ ПОВЕДЕНЧЕСКИХ УГРОЗ | 2019 |
|
RU2803399C2 |
СИСТЕМЫ И СПОСОБЫ АВТОМАТИЧЕСКОЙ ДЕТЕКЦИИ УСТРОЙСТВ | 2017 |
|
RU2742824C2 |
СИСТЕМЫ И СПОСОБЫ ДЕТЕКТИРОВАНИЯ ПОВЕДЕНЧЕСКИХ УГРОЗ | 2019 |
|
RU2772549C1 |
СПОСОБ И СИСТЕМА ОПРЕДЕЛЕНИЯ ВРЕДОНОСНОЙ АКТИВНОСТИ ПО АНАЛИЗУ ПОВЕДЕНИЯ ОБЪЕКТОВ В НЕИЗОЛИРОВАННОЙ СРЕДЕ | 2020 |
|
RU2743620C1 |
Система и способы для дешифрования сетевого трафика в виртуализированной среде | 2017 |
|
RU2738021C2 |
ДВУКРАТНАЯ САМОДИАГНОСТИКА ПАМЯТИ ДЛЯ ЗАЩИТЫ МНОЖЕСТВА СЕТЕВЫХ КОНЕЧНЫХ ТОЧЕК | 2016 |
|
RU2714607C2 |
СИСТЕМЫ И СПОСОБЫ ОБЕСПЕЧЕНИЯ КОМПЬЮТЕРНОЙ БЕЗОПАСНОСТИ, ИСПОЛЬЗУЮЩИЕ ИСКЛЮЧЕНИЯ АСИНХРОННОЙ ИНТРОСПЕКЦИИ | 2016 |
|
RU2703156C2 |
Система и способ создания антивирусной записи | 2018 |
|
RU2697954C2 |
Изобретение относится к вычислительной технике. Технический результат заключается в снижении уровня ложноположительных результатов обнаружения вредоносных программ. Компьютерная система для обнаружения вредоносных программ содержит поведенческий анализатор, содержащий набор нейронных сетей, обученных определять, является ли контролируемый объект программного обеспечения вредоносным в соответствии с последовательностью вычислительных событий, вызываемых выполнением соответствующего объекта. Когда поведенческий анализатор указывает, что программный объект является вредоносным, выполняется классификатор памяти, содержащий другой набор нейронных сетей, обученных определять, является ли контролируемый объект вредоносным, в соответствии с моментальным снимком памяти контролируемого объекта. 3 н. и 16 з.п. ф-лы, 19 ил.
1. Компьютерная система для обнаружения вредоносных программ, содержащая по меньшей мере один аппаратный процессор, конфигурированный, чтобы:
выполнять поведенческий анализатор для определения, является ли программный объект вредоносным;
в ответ на выполнение поведенческого анализатора, когда поведенческий анализатор указывает, что программный объект не является вредоносным, определять, что программный объект не является вредоносным;
в ответ на выполнение поведенческого анализатора, когда поведенческий анализатор указывает, что программный объект является вредоносным, выполнять анализатор памяти для определения, является ли программный объект вредоносным;
в ответ на выполнение анализатора памяти, когда анализатор памяти указывает, что программный объект является вредоносным, определять, что программный объект является вредоносным; и
в ответ на выполнение анализатора памяти, когда анализатор памяти указывает, что программный объект не является вредоносным, определять, что программный объект не является вредоносным;
причем:
поведенческий анализатор содержит первую нейронную сеть, конфигурированную, чтобы:
принимать последовательность индикаторов событий, причем каждый индикатор событий характеризует отдельное событие, вызванное выполнением программного объекта, причем последовательность индикаторов событий упорядочена по времени возникновения каждого отдельного события, и
определять, является ли программный объект вредоносным, в соответствии с последовательностью индикаторов событий; и
анализатор памяти содержит вторую нейронную сеть, конфигурированную, чтобы:
принимать последовательность индикаторов маркеров, причем каждый индикатор маркеров характеризует отдельный маркер строки символов, извлеченный из моментального снимка памяти программного объекта, причем последовательность индикаторов маркеров упорядочена в соответствии с расположением в памяти каждого соответствующего маркера строки символов, и
определять, является ли программный объект вредоносным, в соответствии с последовательностью индикаторов маркеров.
2. Компьютерная система по п. 1, в которой первая нейронная сеть содержит рекуррентную нейронную сеть.
3. Компьютерная система по п. 1, в которой первая нейронная сеть содержит сверточную нейронную сеть.
4. Компьютерная система по п. 1, в которой по меньшей мере один аппаратный процессор дополнительно конфигурирован, чтобы извлекать моментальный снимок памяти в ответ на выполнение поведенческого анализатора, когда поведенческий анализатор указывает, что программный объект является вредоносным, причем извлечение моментального снимка памяти содержит:
идентификацию страницы памяти в памяти компьютерной системы в соответствии с тем, используется ли страница памяти программным объектом; и
копирование набора данных со страницы памяти в моментальный снимок памяти.
5. Компьютерная система по п. 1, в которой извлечение моментального снимка памяти содержит:
идентификацию первой страницы памяти в памяти компьютерной системы в соответствии с тем, хранит ли первая страница памяти на текущий момент метаданные заголовка выполняемого файла программного объекта;
идентификацию второй страницы памяти в памяти в соответствии с метаданными; и
копирование набора данных со второй страницы памяти в моментальный снимок памяти.
6. Компьютерная система по п. 1, в которой по меньшей мере один аппаратный процессор дополнительно конфигурирован, чтобы строить последовательность индикаторов событий для подготовки к выполнению поведенческого анализатора, при этом построение последовательности индикаторов событий содержит:
определение количества времени, прошедшего между началом выполнения программного объекта и временем возникновения каждого отдельного события; и
определение, включать ли каждый индикатор событий, характеризующий каждое отдельное событие, в последовательность индикаторов событий в соответствии с количеством времени.
7. Компьютерная система по п. 1, в которой по меньшей мере один аппаратный процессор дополнительно конфигурирован, чтобы строить последовательность индикаторов событий для подготовки к выполнению поведенческого анализатора, при этом построение последовательности индикаторов событий содержит:
идентификацию множества событий, происходящих в течение заранее определенного временного интервала во время выполнения программного объекта;
упорядочение множества событий в соответствии с временем возникновения для получения упорядоченной последовательности;
в ответ на определение количества множества событий, когда количество превышает заранее определенное пороговое значение, включение в последовательность индикаторов событий первого набора индикаторов, характеризующих события, принадлежащие началу упорядоченной последовательности, и второго набора индикаторов, характеризующих события, принадлежащие концу упорядоченной последовательности.
8. Компьютерная система по п. 1, в которой по меньшей мере один аппаратный процессор дополнительно конфигурирован, чтобы использовать обученный кодер событий для получения каждого индикатора событий, при этом обучение кодера событий содержит:
соединение кодера событий с декодером событий, причем пара кодер-декодер конфигурирована, чтобы принимать первый поднабор последовательности обучающих событий и вывода прогнозируемого поднабора событий; и
настройку набора параметров кодера событий в соответствии с разницей между прогнозируемым поднабором событий и вторым поднабором последовательности обучающих событий.
9. Компьютерная система по п. 1, в которой каждый индикатор событий определяется в соответствии с заранее определенным словарем события, причем каждый член словаря события характеризуется кортежем, состоящим из типа события, происходящего совместно по меньшей мере с другим признаком события.
10. Способ обнаружения вредоносных программ, содержащий использование по меньшей мере одного аппаратного процессора для выполнения этапов:
выполнения поведенческого анализатора для определения, является ли программный объект вредоносным;
в ответ на выполнение поведенческого анализатора, когда поведенческий анализатор указывает, что программный объект не является вредоносным, определения, что программный объект не является вредоносным;
в ответ на выполнение поведенческого анализатора, когда поведенческий анализатор указывает, что программный объект является вредоносным, выполнения анализатора памяти для определения, является ли программный объект вредоносным;
в ответ на выполнение анализатора памяти, когда анализатор памяти указывает, что программный объект является вредоносным, определения, что программный объект является вредоносным; и
в ответ на выполнение анализатора памяти, когда анализатор памяти указывает, что программный объект не является вредоносным, определения, что программный объект не является вредоносным;
причем:
поведенческий анализатор содержит первую нейронную сеть, конфигурированную, чтобы:
принимать последовательность индикаторов событий, причем каждый индикатор событий характеризует отдельное событие, вызванное выполнением программного объекта, причем последовательность индикаторов событий упорядочена по времени возникновения каждого отдельного события, и
определять, является ли программный объект вредоносным, в соответствии с последовательностью индикаторов событий; и
анализатор памяти содержит вторую нейронную сеть, конфигурированную, чтобы:
принимать последовательность индикаторов маркеров, причем каждый индикатор маркеров характеризует отдельный маркер строки символов, извлеченный из моментального снимка памяти программного объекта, причем последовательность индикаторов маркеров упорядочена в соответствии с расположением в памяти каждого соответствующего маркера строки символов, и
определять, является ли программный объект вредоносным, в соответствии с последовательностью индикаторов маркеров.
11. Способ по п. 10, в котором первая нейронная сеть содержит рекуррентную нейронную сеть.
12. Способ по п. 10, в котором первая нейронная сеть содержит сверточную нейронную сеть.
13. Способ по п. 10, дополнительно содержащий использование по меньшей мере одного аппаратного процессора для извлечения моментального снимка памяти в ответ на выполнение поведенческого анализатора, когда поведенческий анализатор указывает, что программный объект является вредоносным, причем извлечение моментального снимка памяти содержит:
идентификацию страницы памяти в памяти компьютерной системы в соответствии с тем, используется ли страница памяти программным объектом; и
копирование набора данных со страницы памяти в моментальный снимок памяти.
14. Способ по п. 10, в котором извлечение моментального снимка памяти содержит:
идентификацию первой страницы памяти в памяти компьютерной системы в соответствии с тем, хранит ли первая страница памяти на текущий момент метаданные заголовка выполняемого файла программного объекта;
идентификацию второй страницы памяти в памяти в соответствии с метаданными; и
копирование набора данных со второй страницы памяти в моментальный снимок памяти.
15. Способ по п. 10, дополнительно содержащий использование по меньшей мере одного аппаратного процессора для построения последовательности индикаторов событий для подготовки к выполнению поведенческого анализатора, при этом построение последовательности индикаторов событий содержит:
определение количества времени, прошедшего между началом выполнения программного объекта и временем возникновения каждого отдельного события; и
определение, включать ли каждый индикатор событий, характеризующий каждое отдельное событие, в последовательность индикаторов событий в соответствии с количеством времени.
16. Способ по п. 10, дополнительно содержащий использование по меньшей мере одного аппаратного процессора для построения последовательности индикаторов событий для подготовки к выполнению поведенческого анализатора, при этом построение последовательности индикаторов событий содержит:
идентификацию множества событий, происходящих в течение заданного временного интервала во время выполнения программного объекта;
упорядочение множества событий в соответствии с временем возникновения для получения упорядоченной последовательности;
в ответ на определение количества множества событий, когда количество превышает заранее определенное пороговое значение, включение в последовательность индикаторов событий первого набора индикаторов, характеризующих события, принадлежащие началу упорядоченной последовательности, и второго набора индикаторов, характеризующих события, принадлежащие концу упорядоченной последовательности.
17. Способ по п. 10, дополнительно содержащий использование по меньшей мере одного аппаратного процессора для выполнения обученного кодера событий для получения каждого индикатора событий, причем обучение кодера событий содержит:
соединение кодера событий с декодером событий, причем пара кодер-декодер конфигурирована, чтобы принимать первый поднабор последовательности обучающих событий и выводить прогнозируемый поднабор событий; и
настройку набора параметров кодера событий в соответствии с разницей между прогнозируемым поднабором событий и вторым поднабором последовательности обучающих событий.
18. Способ по п. 10, в котором каждый индикатор событий определяют в соответствии с заранее определенным словарем события, причем каждый член словаря события характеризуется кортежем, состоящим из типа события, происходящего совместно по меньшей мере с другим признаком события.
19. Невременный машиночитаемый носитель, хранящий команды, которые, при выполнении по меньшей мере одним аппаратным процессором компьютерной системы, побуждают компьютерную систему:
выполнять поведенческий анализатор для определения, является ли программный объект вредоносным;
в ответ на выполнение поведенческого анализатора, когда поведенческий анализатор указывает, что программный объект не является вредоносным, определять, что программный объект не является вредоносным;
в ответ на выполнение поведенческого анализатора, когда поведенческий анализатор указывает, что программный объект является вредоносным, выполнять анализатор памяти для определения, является ли программный объект вредоносным;
в ответ на выполнение анализатора памяти, когда анализатор памяти указывает, что программный объект является вредоносным, определять, что программный объект является вредоносным; и
в ответ на выполнение анализатора памяти, когда анализатор памяти указывает, что программный объект не является вредоносным, определять, что программный объект не является вредоносным;
причем:
поведенческий анализатор содержит первую нейронную сеть, конфигурированную, чтобы:
принимать последовательность индикаторов событий, причем каждый индикатор событий характеризует отдельное событие, вызванное выполнением программного объекта, причем последовательность индикаторов событий упорядочена по времени возникновения каждого отдельного события, и
определять, является ли программный объект вредоносным, в соответствии с последовательностью индикаторов событий; и
анализатор памяти содержит вторую нейронную сеть, конфигурированную, чтобы:
принимать последовательность индикаторов маркеров, причем каждый индикатор маркеров характеризует отдельный маркер строки символов, извлеченный из моментального снимка памяти программного объекта, причем последовательность индикаторов маркеров упорядочена в соответствии с расположением в памяти каждого соответствующего маркера строки символов, и
определять, является ли программный объект вредоносным, в соответствии с последовательностью индикаторов маркеров.
Способ получения цианистых соединений | 1924 |
|
SU2018A1 |
Способ восстановления спиралей из вольфрамовой проволоки для электрических ламп накаливания, наполненных газом | 1924 |
|
SU2020A1 |
Способ защиты переносных электрических установок от опасностей, связанных с заземлением одной из фаз | 1924 |
|
SU2014A1 |
Способ восстановления спиралей из вольфрамовой проволоки для электрических ламп накаливания, наполненных газом | 1924 |
|
SU2020A1 |
Система и способ обнаружения вредоносных файлов с использованием обученной модели обнаружения вредоносных файлов | 2017 |
|
RU2654151C1 |
Авторы
Даты
2023-09-05—Публикация
2021-04-21—Подача