СИСТЕМЫ И СПОСОБЫ ОТСЛЕЖИВАНИЯ ВРЕДОНОСНОГО ПОВЕДЕНИЯ ПО МНОЖЕСТВУ ОБЪЕКТОВ ПРОГРАММНЫХ СРЕДСТВ
SYSTEMS AND METHODS OF MONITORING MALWARE BEHAVIOR TO MULTIPLE OBJECTS OF SOFTWARE

Уровень техники
[0001] Изобретение относится к системам и способам защиты компьютерных систем от вредоносного программного обеспечения.
[0002] Вредоносное программное обеспечение, также известное как вредоносные программы, влияет на большое количество компьютерных систем во всем мире. Имея множество форм, таких как компьютерные вирусы, черви, руткиты, нежелательная реклама, программы-вымогатели и программы-шпионы, вредоносные программы представляют серьезную угрозу для миллионов пользователей персональных компьютеров, подвергая их опасности потери данных и конфиденциальной информации, кражи личных данных и, среди прочего, потери производительности. Кроме того, вредоносные программы могут отображать материалы, которые некоторые пользователи считают непристойными, чрезмерно жестокими, причиняющими беспокойство или иным образом нежелательными.
[0003] Программное обеспечение безопасности может использоваться для обнаружения вредоносных программ, заражающих компьютерную систему пользователя, а также для удаления вредоносных программ или предотвращения их исполнения. Из уровня техники известно несколько способов обнаружения вредоносных программ. Некоторые основываются на соответствии фрагмента агента вредоносного кода библиотеке признаков, указывающих на вредоносные программы. Другие обычные методы обнаруживают поведение, указывающее на вредоносную программу, например, набор действий, выполняемых агентом вредоносной программы.
[0004] Вредоносное программное обеспечение использует различные стратегии, чтобы избежать обнаружения. Одна из таких стратегий включает в себя техники засекречивания, например, шифрование вредоносного кода или использование слегка отличающихся версий кода на каждом зараженном компьютере (функция, известная как полиморфизм). Другой примерный способ предотвращения обнаружения разделяет вредоносные действия среди множества агентов, при этом каждый агент выполняет отдельный набор действий, который не может считаться вредоносным, если он выполняется изолированно от действий, выполняемых другими агентами.
[0005] Имеется значительный интерес к разработке систем и способов обнаружения таких усовершенствованных вредоносных программ.
Раскрытие изобретения
[0006] Согласно одному аспекту предложена хост-система, которая содержит по меньшей мере один аппаратный процессор и блок памяти, при этом по меньшей мере один аппаратный процессор выполнен с возможностью исполнения диспетчера объектов эвристического механизма. Диспетчер объектов выполнен с возможностью организации совокупности отслеживаемых исполняемых объектов в множество групп объектов, при этом организация совокупности содержит, в ответ на обнаружение, что первый объект совокупности породил дочерний объект, определение, относится ли первый объект к категории создателей группы объектов. Организация совокупности далее содержит, в ответ на определение, относится ли первый объект к категории создателей группы, добавление новой группы объектов к множеству групп объектов и назначение дочернего объекта новой группе объектов, если первый объект относится к категории создателей группы. Организация совокупности далее содержит, в ответ на определение, относится ли первый объект к категории создателей группы, выбор первой группы объектов из множества групп объектов таким образом, чтобы первый объект был членом первой группы объектов, и назначение дочернего объекта первой группе объектов, если первый объект не относится к категории создателей группы. Эвристический механизм сконфигурирован так, чтобы, в ответ на первое действие, выполняемое дочерним объектом, выбирать вторую группу объектов из множества групп объектов так, что дочерний объект является членом второй группы объектов, и, в ответ на выбор второй группы объектов, определять, указывает ли первое действие на атаку вредоносной программы в соответствии со вторым действием, выполняемым другим членом второй группы объектов.
[0007] Согласно другому аспекту предложен способ, который содержит использование, по меньшей мере одного аппаратного процессора хост-системы для организации совокупности отслеживаемых исполняемых объектов в множество групп объектов. Организация совокупности содержит, в ответ на обнаружение, что первый объект совокупности породил дочерний объект, определение, относится ли первый объект к категории создателей группы объектов. Организация совокупности далее содержит, в ответ на определение, относится ли первый объект к категории создателей группы, добавление новой группы объектов к множеству групп объектов и назначение дочернего объекта новой группе объектов, если первый объект относится к категории создателей группы. Организация совокупности далее содержит, в ответ на определение, относится ли первый объект к категории создателей группы, выбор первой группы объектов из множества групп объектов таким образом, чтобы первый объект был членом первой группы объектов, и назначение дочернего объекта первой группе объектов, если первый объект не относится к категории создателей группы. Способ дополнительно содержит, в ответ на первое действие, выполненное дочерним объектом, использование по меньшей мере одного аппаратного процессора хост-системы для выбора второй группы объектов из множества групп объектов так, что дочерний объект является членом второй группы объектов. Этот способ дополнительно содержит, в ответ на выбор второй группы объектов, использование по меньшей мере одного аппаратного процессора хост-системы для определения, указывает ли первое действие на атаку вредоносной программы, в соответствии со вторым действием, выполняемым другим членом второй группы объектов.
[0008] Согласно другому аспекту предложен долговременный машиночитаемый носитель, хранящий инструкции, которые, при исполнении по меньшей мере одним аппаратным процессором хост-системы, обеспечивают формирование хост-системой диспетчера объектов и эвристического механизма. Диспетчер объектов выполнен с возможностью организации совокупности отслеживаемых исполняемых объектов во множество групп объектов, при этом организация совокупности содержит, в ответ на обнаружение, что первый объект совокупности породил дочерний объект, определение, относится ли первый объект к категории объектов создателей групп. Организация совокупности далее содержит, в ответ на определение, относится ли первый объект к категории создателей групп, добавление новой группы объектов к множеству групп объектов и назначение порожденного объекта новой группе объектов, если первый объект относится к категории создателей групп. Организация совокупности далее содержит, в ответ на определение, относится ли первый объект к категории создателей группы, выбор первой группы объектов из множества групп объектов таким образом, чтобы первый объект был членом первой группы объектов, и назначение дочернего объекта первой группе объектов, если первый объект не относится к категории создателей группы. Эвристический механизм сконфигурирован так, чтобы, в ответ на первое действие, выполняемое дочерним объектом, выбирать вторую группу объектов из множества групп объектов так, чтобы дочерний объект был членом второй группы объектов, и, в ответ на выбор второй группы объектов, определять, указывает ли первое действие на атаку вредоносной программы, в соответствии со вторым действием, выполняемым другим членом второй группы объектов.
[0009] Согласно другому аспекту предложена хост-система, которая содержит по меньшей мере один аппаратный процессор и блок памяти, при этом, по меньшей мере один аппаратный процессор выполнен с возможностью исполнения диспетчера объектов и эвристического механизма. Диспетчер объектов выполнен с возможностью организации совокупности отслеживаемых исполняемых объектов во множество групп объектов в соответствии с набором взаимосвязей между объектами так, что по меньшей мере один объект совокупности одновременно принадлежит нескольким группам объектов, при этом набор взаимосвязей между объектами выбирается из группы взаимосвязей, состоящей из связи по родству и связи по вводу кода. Эвристический механизм сконфигурирован так, чтобы, в ответ на первое действие, выполняемое по меньшей мере одним объектом, выбрать группу объектов из множества групп объектов так, что по меньшей мере один объект является членом группы объектов; и, в ответ на выбор группы объектов, определить, указывает ли первое действие на атаку вредоносной программы, в соответствии со вторым действием, выполняемым другим членом группы объектов.
Краткое описание чертежей
[0010] Вышеуказанные аспекты и преимущества настоящего изобретения станут более понятными по прочтении следующего подробного описания и рассмотрения чертежей, на которых изображено следующее.
[0011] На фиг.1 показан примерный набор элементов программного обеспечения, включая приложение безопасности, исполняемых в клиентской системе, согласно некоторым вариантам осуществления настоящего изобретения.
[0012] На фиг.2 показана примерная конфигурация аппаратных средств клиентской компьютерной системы согласно некоторым вариантам осуществления настоящего изобретения.
[0013] На фиг.3 показана примерная структура приложения безопасности согласно некоторым вариантам осуществления настоящего изобретения.
[0014] на фиг.4 показан примерный поток выполнения набора процессов в среде Windows. Сплошные стрелки указывают на типичный поток без приложения безопасности. Пунктирные стрелки указывают на модификации потока выполнения, причем модификации вводятся множеством перехватчиков событий, действующих согласно некоторым вариантам осуществления настоящего изобретения.
[0015] На фиг.5-A показан набор групп объектов, содержащих исполняемые объекты, отслеживаемых на вредоносное поведение согласно некоторым вариантам осуществления настоящего изобретения. Сплошные стрелки обозначают создание объекта; пунктирные стрелки обозначают ввод кода.
[0016] На фиг.5-B показан другой набор групп объектов согласно некоторым вариантам осуществления настоящего изобретения.
[0017] На фиг.6 показана примерная последовательность этапов, выполняемых диспетчером объектов (Фиг.3) согласно некоторым вариантам осуществления настоящего изобретения.
[0018] На фиг.7 показана примерная временная последовательность действий, выполняемых скрывающимися вредоносными программами, и примерная сигнатура поведения согласно некоторым вариантам осуществления настоящего изобретения.
[0019] На фиг.8 показана другая примерная сигнатура поведения согласно некоторым вариантам осуществления настоящего изобретения.
[0020] На фиг.8-B показана еще одна примерная сигнатура поведения согласно некоторым вариантам осуществления настоящего изобретения.
[0021] На фиг.9 показана примерная последовательность этапов, выполняемых эвристическим механизмом (фиг.3) согласно некоторым вариантам осуществления настоящего изобретения.
[0022] На фиг.10-A показано множество примерных элементов оценивания объектов (ESO), каждый ESO определяется для соответствующего исполняемого объекта согласно некоторым вариантам осуществления настоящего изобретения.
[0023] На фиг.10-В показано множество примерных элементов оценивания групп (GSO), причем каждый GSO определяется для соответствующей группы исполняемых объектов согласно некоторым вариантам осуществления настоящего изобретения.
[0024] На фиг.11-A показан примерный набор значений оценок объектов и связанных с ними приращений оценок объектов согласно некоторым вариантам осуществления настоящего изобретения.
[0025] На фиг.11-B показан примерный набор значений оценок групп и связанных с ними приращений оценок групп согласно некоторым вариантам осуществления настоящего изобретения.
[0026] На фиг.12 показана примерная последовательность этапов, выполняемых механизмом оценивания (фиг.3) согласно некоторым вариантам осуществления настоящего изобретения.
[0027] На фиг.12-B показана альтернативная последовательность этапов, выполняемых механизмом оценивания согласно некоторым вариантам осуществления настоящего изобретения.
[0028] На фиг. 12-C показана альтернативная последовательности этапов, выполняемых механизмом оценивания согласно некоторым вариантам осуществления настоящего изобретения.
[0029] На фиг.13 показана примерная последовательность этапов, выполняемых модулем очистки (фиг.3) согласно некоторым вариантам осуществления настоящего изобретения.
подробное описание предпочтительных вариантов осуществления
[0030] В последующем описании подразумевается, что все перечисленные соединения между структурами могут быть прямыми функциональными соединениями или косвенными функциональными соединениями через промежуточные структуры. Набор элементов включает один или более элементов. Любое перечисление элементов понимается как относящееся по меньшей мере к одному элементу. Множество элементов включает в себя по меньшей мере два элемента. Если не требуется иное, любые описанные этапы способа не обязательно должны выполняться в проиллюстрированном определенном порядке. Первый элемент (например, данные), производный от второго элемента, включает в себя первый элемент, равный второму элементу, так же как первый элемент, образованный путем обработки второго элемента и, возможно, других данных. Определение или принятие решения по параметру включает в себя определение или принятие решения по параметру и, возможно, в соответствии с другими данными. Если не указано иное, индикатором некоторого количества/данных может быть само количество/данные или индикатор, отличающийся от самого количества/данных. Компьютерная безопасность включает в себя защиту пользователей и оборудования от неумышленного или несанкционированного доступа к данным и/или аппаратных средств, от неумышленного или несанкционированного изменения данных и/или аппаратных средств, а также от уничтожения данных и/или аппаратных средств. Компьютерная программа представляет собой последовательность инструкций процессора, выполняющих задание. Компьютерные программы, описанные в некоторых вариантах осуществления настоящего изобретения, могут быть автономными программными объектами или подобъектами (например, модулями, библиотеками) других компьютерных программ. Если не указано иное, процесс является примером компьютерной программы, такой как приложение или часть операционной системы, и характеризуется наличием по меньшей мере потока исполнения и назначенным ему пространством виртуальной памяти, причем содержимое соответствующего пространства виртуальной памяти включает в себя исполняемый код. Если не указано иное, эвристика представляет собой процедуру, выполняемую для определения, является ли наличие набора событий индикатором угрозы компьютерной безопасности. Компьютерные носители включают в себя долговременные носители, такие как магнитные, оптические и полупроводниковые хранилища данных (например, жесткие диски, оптические диски, флэш-память, DRAM), а также коммуникационные линии, такие как проводящие кабели и волоконно-оптические линии. Согласно некоторым вариантам осуществления в настоящем изобретении предложены, в частности, компьютерные системы, содержащие аппаратные средства (например один или более микропроцессоров), запрограммированные на выполнение описанных в настоящем документе способов, а также инструкции по кодированию машиночитаемых носителей для выполнения описанных в настоящем документе способов.
[0031] В приведенном ниже описании проиллюстрированы примерные и не обязательно ограничивающие варианты осуществления изобретения.
[0032] На фиг.1 показан примерный набор элементов программного обеспечения, исполняемых в клиентской системе 10, защищаемой от угроз компьютерной безопасности, согласно некоторым вариантам осуществления настоящего изобретения. Клиентская система 10 может представлять собой компьютерную систему (например, компьютер конечного пользователя, корпоративный сервер, и т. д.). Другие примерные клиентские системы 10 включают в себя мобильные вычислительные устройства (например, ноутбуки, планшетные ПК), телекоммуникационные устройства (например, смартфоны), цифровую развлекательную технику (телевизоры, игровые приставки и т. д.), носимые вычислительные устройства (например, смарт-часы) или любое другое электронное устройство, имеющее процессор и память и требующее охраны компьютерной безопасности.
[0033] В некоторых вариантах осуществления операционная система (ОС) 30 содержит программное обеспечение, которое обеспечивает взаимодействие с аппаратными средствами клиентской системы 10 и выступает в качестве хоста для набора программных приложений 32а-с и 36. ОС 30 может содержать любую широко доступную операционную систему, такую как Windows, MacOS, Linux, iOS, или Android. Приложения 32а-с в целом представляют собой пользовательское программное обеспечение, которое может включать в себя, например, текстовую обработку, обработку изображений, базу данных, браузер и, среди прочего, приложения для электронной связи. В некоторых вариантах осуществления приложение 36 безопасности исполняется одновременно с приложениями 32а-с и сконфигурировано таким образом, чтобы определить, представляет ли любое программное обеспечение, исполняемое в клиентской системе 10 (включая приложения 32а-с и ОС 30), угрозу безопасности для компьютера. К примеру, приложение 36 может обнаружить вредоносные и/или шпионские программы. Приложение 36 может быть дополнительно сконфигурировано для удаления или иной нейтрализации такого вредоносного программного обеспечения и оповещения пользователя клиентской системы 10 или системного администратора. Приложение 36 безопасности может быть отдельной программой, или может образовывать часть программного комплекса, содержащего, среди прочего, компоненты противодействия вредоносным программам, спаму и мошенничеству. Работа приложения 36 безопасности подробно описывается ниже.
[0034] На фиг. 2 показана примерная конфигурация аппаратных средств клиентской системы 10, при этом клиентская система 10 представляет собой компьютерную систему. Опытный специалист примет во внимание, что конфигурация аппаратных средств других устройств, таких как планшетные ПК, мобильные телефоны, умные часы и т. д., может отличаться от показанной конфигурации, но при этом настоящее описание может быть адаптировано к таким устройствам. Клиентская система 10 содержит набор физических устройств, в том числе аппаратный процессор 12, блок 14 памяти, набор устройств 16 ввода, набор устройств вывода 18, набор запоминающих устройств 20 и набор сетевых адаптеров 22, каждый из которых взаимосвязан контроллером-концентратором 24.
[0035] В некоторых вариантах осуществления процессор 12 содержит физическое устройство (например, микропроцессор, многоядерную интегральную схему, сформированную на полупроводниковой подложке), сконфигурированное для выполнения вычислительных и/или логических операций с набором сигналов и/или данных. В некоторых вариантах осуществления такие логические операции передаются из блока памяти 14 процессору 12 в виде последовательности инструкций для процессора (например, машинного кода или другого типа программных средств). Блок памяти 14 может содержать энергонезависимый считываемый компьютером носитель, (например, память с произвольным доступом - RAM) сохраняющий данные/сигналы, поступившие или генерируемые процессором 12 в ходе выполнения инструкций. Устройства 16 ввода могут включать в себя компьютерные клавиатуры, мыши и микрофоны и, среди прочего, соответствующие аппаратные интерфейсы и/или адаптеры, позволяющие пользователю вводить данные и/или инструкции в клиентскую систему 10. Устройства 18 вывода могут включать в себя устройства отображения, такие как мониторы и динамики, а также аппаратные интерфейсы/адаптеры, такие как графические карты, позволяющие клиентской системе 10 передавать данные пользователю. В некоторых вариантах осуществления устройства 16 ввода и устройства 18 вывода могут совместно использовать общую аппаратную часть, как в случае устройств с сенсорным экраном. Устройства 20 хранения данных включают в себя считываемые компьютером носители, позволяющие осуществлять энергонезависимое хранение, чтение и запись процессорных инструкций и/или данных. Примерные устройства 20 хранения включают в себя магнитные и оптические диски и устройства флэш-памяти, а также съемные носители, такие как CD и/или DVD диски и их приводы. Набор сетевых адаптеров 22 позволяет клиентской системе 10 подключаться к сети (например, локальной сети, беспроводной сети и т. д.) и/или другим устройствам/компьютерным системам. Контроллер-концентратор 24 обычно представляет собой множество системных, периферийных и/или микросхемных шин, и/или всех других схем, обеспечивающих связь между процессором 12 и устройствами 14, 16, 18, 20 и 22. Например, контроллер-концентратор 24 может содержать северный мост, соединяющий процессор 12 с памятью 14, и/или южный мост, соединяющий процессор 12 с устройствами 16, 18, 20 и 22.
[0036] На фиг.3 показаны примерные компоненты приложения 36 безопасности согласно некоторым вариантам осуществления настоящего изобретения. Приложение 36 безопасности содержит механизм 48 оценивания и модуль 56 очистки, причем каждый из них подключен к диспетчеру 42 поведения. Диспетчер 42 поведения дополнительно содержит диспетчер 44 объектов, соединенный с эвристическим механизмом 46.
[0037] В некоторых вариантах осуществления диспетчер 42 поведения получает набор уведомлений 40 о событиях от набора перехватчиков 28а-с событий, установленных в различных элементах программного обеспечения, исполняемых в клиентской системе 10. Уведомления 40 о событиях могут, таким образом, информировать диспетчер 42 поведения о возникновении различных событий во время исполнения программ. Примерные события с уведомлением могут включать в себя, среди прочего, создание процесса или потока, ввод кода, системный вызов, попытку создания нового дискового файла, попытку записи в существующий дисковый файл, попытку редактирования ключа системного реестра и попытку записи в определенный раздел памяти. Некоторые из событий с уведомлением могут указывать на вредоносную программу. Другие события могут сами по себе не указывать на угрозу безопасности, но могут сигнализировать о потенциальной угрозе при возникновении вместе с другими событиями. В ответ на получение уведомления (уведомлений) 40, диспетчера 42 поведения согласно некоторым вариантам осуществления могут обратиться к базе 26 данных эвристик и выбрать процедуры обнаружения в соответствии с деталями уведомления (уведомлений) 40, при этом выбранные процедуры реализуют конкретную эвристику (эвристики). Диспетчер 42 поведения может дополнительно отправить соответствующие процедуры обнаружения на эвристический механизм 46 для исполнения. Выполнение соответствующих процедур может доставить механизму 48 оценивания оповещение 50 об оценивании. Механизм 48 может поддерживать множество таких оценочных показателей (например, оценок) и может поднять тревогу, если, по меньшей мере, один такой показатель указывает на угрозу компьютерной безопасности. Действие компонентов 44, 46, 48 и 56 подробно описывается ниже.
[0038] Для иллюстрации действия перехватчиков 28а-с событий на фиг.4 показан примерный поток исполнения набора программных объектов 60а-b согласно некоторым вариантам осуществления настоящего изобретения. Для простоты, выбранные объекты 60а-b - это процессы, выполняющиеся в ОС Windows; аналогичные схемы могут быть изображены и для других операционных систем, например, таких как Linux. Сплошные стрелки представляют собой исполняемый поток при отсутствии перехватчиков событий. Прерывистые стрелки представляют собой модификации потока, обусловленные наличием перехватчиков 28а-с событий и исполняемые согласно некоторым вариантам осуществления настоящего изобретения.
[0039] Примерный процесс 60а загружает множество динамически подключаемых библиотек (DLL) 62а-с; в примере с фиг. 4 DLL 62c вводится в процесс 60а (возможно, вредоносным) процессом 60b. Когда процесс 60а (или одна из загружаемых им DLL) исполняет инструкцию, вызывающую некоторые системные функции, например, записать что-нибудь в дисковый файл, или изменить ключ реестра, соответствующая инструкция вызывает пользовательский режим интерфейса программирования приложений (API), такого как kernel32.DLL или NTDLL.DLL. В примере с фиг.4 соответствующий вызов пользовательского режима API перехватывается перехватчиком событий 28a пользовательского уровня. Такие перехватывания могут быть достигнуты, в частности, с помощью такого способа, как ввод DLL или привязки. Привязка - это общий термин, используемый в данной области техники для способа перехватывания вызовов функций, сообщений или событий, происходящих между программными компонентами. Примерный способ привязки содержит видоизменение точки входа целевой функции путем вставки инструкции (в данном случае, перехватчика событий 28a), перенаправляющей исполнение на вторую функцию. Следуя такой привязке, вместо или до целевой функции может быть выполнена вторая функция. На примере с фиг.4, приложение 36 безопасности может быть закреплено в определенных функциях библиотек KERNEL32.DLL и/или NTDLL.DLL, чтобы давать указание соответствующим функциям перенаправлять исполнение к компоненту приложения 36. Таким образом, приложение 36 может быть уведомлено всякий раз, когда процесс 60а пытается выполнить определенное действие, идентифицируемое в соответствии с привязанной функцией - ловушкой.
[0040] В стандартном потоке выполнения пользовательский режим функции API, вызываемый объектом 60а, может запрашивать обслуживание у ядра операционной системы. В некоторых вариантах осуществления такие операции исполняются по системному вызову, такому как syscall и SYSENTER на x86 платформах. В примере с фиг.4 такие системные вызовы перехватываются перехватчиком 28b событий. В некоторых вариантах осуществления такое перехватывание содержит, например, модификацию процедуры обработки системного вызова путем изменения значения, хранящегося в моделезависимом регистре (MSR) процессора 12, которая оперативно перенаправляет выполнение соответствующей процедуры обработчика перехватчику 28b или непосредственно компоненту 10 приложения 36. Такие методы известны в данной области техники как MSR улавливание, и могут позволить приложению 36 безопасности получать уведомления всякий раз, когда программный объект пытается выполнить определенные системные вызовы.
[0041] Следуя системному вызову, управление процессором обычно передается ядру ОС 30. В некоторых вариантах осуществления перехватчик 28с событий на уровне ядра настроен на перехват определенных действий ядра ОС, и, следовательно, определяет, что оцениваемый процесс пытается выполнить определенные операции, которые могут указывать на вредоносные программы. Для перехватывания таких действий в некоторых вариантах осуществления может использоваться набор встроенных механизмов фильтрации, предоставляемых ОС 30. Например, в ОС Windows  может использоваться внутренняя функция ядра FltRegisterFilter для перехватывания таких операций, как создание, открытие, запись и удаление файла. В другом примере перехватчик 28с событий может использовать ObRegisterCallback для перехватывания операций создания или дублирования объектно-ориентированных операций, или PsSetCreateProcessNotifyRoutine для перехватывания создания новых процессов. В следующем другом примере операции системного реестра Windows, такие как создание и настройка ключей/значений реестра, могут быть перехвачены с помощью CmRegisterCallbackEx. Подобные механизмы фильтрации событий известны в данной области техники и для других операционных систем, таких как Linux. В ответ на обнаружение появления конкретного события/действия перехватчик 28 событий может передать уведомление (уведомления) 40 в приложение 36 безопасности.
[0042] В некоторых вариантах осуществления приложение 36 безопасности отслеживает множество программных объектов на наличие вредоносного поведения. Отслеживаемые объекты программного обеспечения могут варьироваться по сложности от отдельных последовательностей исполнения до процессов, до целых приложений, платформ и виртуальных машин. Для простоты в приведенном ниже представлении предполагается, что отслеживаемые объекты являются процессами, но это предположение не должно ограничивать область правовой охраны настоящего изобретения. Специалисту в данной области техники понятно, что описанные системы и способы могут быть распространены на другие типы исполняемых объектов, кроме отдельных процессов.
[0043] Некоторые варианты осуществления настоящего изобретения разделяют исполняемые объекты (например, процессы) на несколько различных категорий с точки зрения отслеживания вредоносного поведения. Такие категории могут включать в себя, среди прочего, создателей групп, наследников групп и неотслеживаемые объекты. В некоторых вариантах осуществления создатели групп включают в себя определенные процессы, компоненты и службы операционной системы, такие как Winlogon и Service Host (svchost.exe) в среде Windows. Другие объекты - создатели групп могут включать в себя, среди прочего, процессы и/или компоненты файлового менеджера (например, Windows Explorer, File Explorer, Total Commander и т. д.), и или процессы и компоненты браузера (например, Internet Explorer, Firefox, Chrome и т. д.). Категория групп наследников может включать в себя большинство пользовательских процессов, а также неизвестные объекты или объекты, которые не могут быть идентифицированы как создатели групп. Еще одна категория может представлять объекты, которые не подлежат мониторингу. Такие неотслеживаемые объекты могут включать в себя, например, определенные процессы, защищенные операционной системой (например, csrss.exe и smss.exe на Windows платформах) и объекты, входящие в состав приложения 36 безопасности. В некоторых вариантах осуществления категория объекта может изменяться в течение времени существования. Например, объект создателя группы может стать наследником группы, как показано ниже.
[0044] Приложения 36 безопасности согласно некоторым вариантам осуществления могут определять, к какой категории относится каждый объект, в соответствии с определенными особенностями соответствующего объекта, такими как путь, имя файла, набор ресурсов (например, библиотеки, загруженные при запуске), запись реестра ОС, цифровая подпись и расположение соответствующего объекта в памяти. Другие данные, свидетельствующие о том, относится ли объект к конкретной категории, содержат показатель, использует ли соответствующий объект определенные аппаратные устройства (например, сетевые адаптеры 22). В примерном варианте осуществления приложение безопасности может проводить ревизию клиентской системы и/или ОС 30, чтобы обнаружить набор ресурсов, связанных с объектами создателей групп, таких как службы ОС, браузеры и файловые менеджеры, и впоследствии использовать эту информацию для определения, принадлежит ли исполняемый объект к той или иной категории. Приложение 36 безопасности может дополнительно идентифицировать объект и установить его категорию, сравнивая наборы хэш-функций соответствующего объекта с базой хэш-функций известных объектов.
[0045] В некоторых вариантах осуществления диспетчер 44 объектов поддерживает структуру данных (например, список) объектов, исполняемых в клиентской системе 10, и динамически обновляет соответствующую структуру данных, чтобы отразить добавление новых объектов (например, в ответ на создание процесса) и удаление других объектов (например, в ответ на завершение процесса). Для простоты, объекты, находящиеся в настоящее время в списке исполняемых объектов, считаются текущими объектами. В некоторых вариантах осуществления каждый объект в списке текущих объектов представляет собой отдельный экземпляр исполняемого элемента. Поэтому список текущих объектов может содержать несколько экземпляров одного и того же исполняемого элемента. В одном из таких примеров, в котором приложение веб-браузера исполняет каждую вкладку браузера как отдельный процесс, каждый такой процесс может быть отдельным отслеживаемым объектом.
[0046] Далее, диспетчер 44 объектов разделяет текущие объекты на множество групп, каждая из которых содержит взаимосвязанные объекты, и поддерживает набор связей, указывающих, например, какой объект является частью какой группы. Объекты могут быть связаны, в частности, через происхождение и/или ввод кода. Происхождение в данном документе относится к одному объекту из группы, являющимся дочерним или родительским для другого объекта. Дочерние процессы могут создаваться, например, путем размножения (в Windows) или родства (в Unix-производных ОС). В некоторых вариантах осуществления один и тот же объект может принадлежать одновременно множеству отдельных групп. В одном из таких примеров объект является частью первой группы, поскольку он является дочерним или родительским относительно другого члена первой группы, и в то же время является частью второй группы, поскольку другой член второй группы ввел в него код.
6
5
7
14
[0047] На фиг.5-A-B показаны различные примерные группы объектов, поддерживаемые диспетчером объектов 44, согласно некоторым вариантам осуществления настоящего изобретения. Иллюстрации используют треугольники для обозначения объектов - создателей групп, круги для обозначения объектов группы наследников и квадраты для обозначения неотслеживаемых объектов. Сплошные стрелки указывают на родство, тогда как пунктирные стрелки указывают на ввод кода. Направление каждой стрелки может указывать направление отношения между соответствующими соединяемыми объектами. Например, на фиг. 5-А объект E является порождением объекта E, в то время как объект E ввел код в объект E.
1
6
1
5
5
6
5
14
7
7
[0048] Создатели групп могут принадлежать или не принадлежать к группе. Некоторые варианты осуществления присваивают определенную группу каждому объекту - создателю группы (например, такие группы, как G и G на фиг.5-A). Такие группы могут иметь только один член, то есть соответствующий объект создателя группы. В некоторых вариантах осуществления создатели групп создают новые группы, когда они порождают новые объекты. В примере на фиг.5-A создатель группы E создает группу G, когда она порождает дочерний объект E. В некоторых вариантах осуществления, когда объект наследника группы порождает другой объект или вводит код в другой объект, другой объект включается в ту же группу, что и объект наследника группы. В примере с фиг.5-A объект E входит в ту же группу, что и его родительский объект E. Аналогично, объект E включается в ту же группу, что и объект Eв ответ на получение вводимого кода от E.
14
11
5
14
5
1
[0049] В некоторых вариантах осуществления категория объекта может изменяться в ответ на определенные события и/или в ответ на включение в группу. В примере на фиг.5-A объект Eизначально был объектом - создателем группы (см. группу G). Позднее, в ответ на получение вводимого кода от члена группы G, объект Eвошел в группу G и был переобозначен как наследник группы. Такой же подход может быть применен к объекту E на фиг.5-В.
5
3
5
6
5
3
3
3
6
5
6
5
5
2
5
9
9
3
5
14
15
15
5
11
[0050] Объект может одновременно принадлежать нескольким группам. В примере с фиг.5-В объект E (наследник группы) одновременно является членом групп G, G и G. E является частью G как получатель вводимого кода от объекта E. Точно так же E является частью G., потому что E получил введенный код от E. Далее, объект E является частью группы G, потому что он был порожден создателем группы E. Когда объект E порождает дочерний объект E, E становится членом обеих групп G и G. Точно так же на фиг.5-А, когда объект E (теперь наследник группы, см. описание выше) порождает новый объект E, объект E может быть включен в обе группы G и G.
[0051] На фиг.6 показана примерная последовательность этапов, выполняемых диспетчером 44 объектов (фиг.3) для управления перечнем текущих объектов согласно некоторым вариантам осуществления настоящего изобретения. В последовательности этапов 150-152, диспетчер 44 объектов перехватывает событие жизненного цикла объекта, и когда такое событие произошло, последовательность этапов 154-155 определяет тип события и затрагиваемые объекты. В некоторых вариантах осуществления события жизненного цикла содержат, среди прочего, создание процесса, ввод кода и завершение процесса. Процесс обнаружения таких событий может содержать прием уведомления 40 (уведомлений) о событии от соответствующего перехватчика событий, например, перехватчика 28с с фиг.4. Диспетчер 44 объектов может идентифицировать объекты, затрагиваемые текущим событием жизненного цикла (например, родительский и дочерний процесс, в случае порождения), детально анализируя структуру данных, используемую ОС для управления процессами, находящимися в процессе исполнения. В ОС Windows, каждый процесс представляется как блок исполнителя процесса (EPROCESS), который содержит, в частности, дескрипторы для каждого из потоков соответствующего процесса, а также уникальный идентификатор (ID) процесса, позволяющий ОС идентифицировать соответствующий процесс из множества исполняемых процессов. Аналогичные представления процесса/потока доступны и для других ОС, таких как Linux.
[0052] Этап 156 определяет, содержит ли событие создание нового объекта (например, нового процесса), и, если нет, диспетчер объектов переходит к этапу 170, описанному ниже. Если событие содержит создание объекта, на этапе 158 диспетчер 44 определяет, является ли родительский объект наследником группы, и если нет, диспетчер 44 переходит к этапу 164. Если да, в последовательности этапов 160-162 диспетчер 44 может добавить дочерний объект в группу (группы) родительского объекта и пометить дочерний объект в качестве наследника группы. На этапе 164 диспетчер 44 определяет, является ли родительский объект создателем группы. Если да, в последовательности этапов 166-168 диспетчер 44 может создать новую группу и добавить дочерний объект во вновь созданную группу.
[0053] В некоторых вариантах осуществления этап 170 определяет, содержит ли обнаруженное событие жизненного цикла ввод кода, и, если нет, диспетчер 44 может перейти к этапу 174. Как правило, приложение 36 безопасности может интерпретировать каждое событие ввода кода как подозрительное, возможно, указывающее на вредоносные действия. Однако, некоторые объекты ОС имеют разрешение на ввод кода в другие объекты, в отдельных специфических ситуациях. Такие ситуации, как правило, известны в сообществе безопасности как исключения и, как правило, освобождаются от антивредоносной обработки, чтобы случайно не сформировать ложно-положительное обнаружение. В некоторых вариантах осуществления этап 171 проверяет, можно ли доверять разрешению на ввод, например, путем попытки сопоставить детали соответствующего события ввода с перечнем исключений. Если соответствующий ввод кода не признается известным видом разрешенного ввода, на этапе 172 диспетчер 44 может добавить объект, получающий введенный код, в группу (группы) объектов, выполняющую ввод кода. В некоторых вариантах осуществления на следующем этапе 173 принимающий объект помечается как наследник группы.
[0054] На этапе 174 диспетчер 44 определяет, содержит ли событие завершение объекта, и, если нет, диспетчер 44 возвращается к этапу 150. Например, процесс завершается после завершения выполнения всех потоков соответствующего процесса. В некоторых вариантах осуществления завершенный объект может сохраняться в составе группы, например, до тех пор, пока не будут завершены все его дочерние объекты или пока не будут завершены все члены соответствующей группы. В таких вариантах осуществления завершенный объект может быть помечен как пустой (этап 176). Эта стратегия может позволить очистить клиентскую систему 10 от воздействий скрывающихся вредоносных программ, например, от воздействий объекта, который порождает вредоносные дочерние объекты, а затем покидает систему. В других вариантах осуществления, когда обнаруженное событие жизненного цикла содержит завершение объекта, диспетчер 44 может удалить завершенный объект из всех групп.
[0055] В некоторых вариантах осуществления эвристический механизм 46 (фиг.3) выполняет набор тестов или процедур, которые в настоящем документе в общем называются эвристиками, чтобы определить, является ли появление набора событий в клиентской системе 10 индикатором угрозы безопасности, например, индикатором вредоносной программы. Когда соответствующая эвристика (эвристики) делает (делают) вывод, что набор событий указывает на вредоносные программы, механизм 46 может передавать оповещение 50 об оценивании для механизма 48 оценивания, который может в дальнейшем определить, содержит ли клиентская система 10 вредоносные программы. Эвристический механизм 46 получает уведомление о наступлении события перехватчиками 28а-с событий.
[0056] Некоторые эвристики могут быть соотнесены с объектами, в том смысле, что они определяют, указывает ли наступление события на вредоносность отдельного объекта. Такие эвристики будут в данном документе именоваться объектными эвристиками. Другие эвристики могут быть соотнесены с группами (и в данном документе названы групповыми эвристиками), в том смысле, что они определяют, указывает ли наступление события на вредоносность всей группы объектов.
1
4
1
6
[0057] Каждая эвристика может представлять собой индивидуальный способ обнаружения вредоносных программ. В некоторых вариантах осуществления каждая эвристика может быть сконфигурирована так, чтобы обнаруживать наличие определенной категории, семейства, типа или варианта вредоносного агента. Некоторые отдельные эвристики могут кооперироваться в обнаружении одной категории, семейства, типа или варианта вредоносного агента. В некоторых вариантах осуществления одна эвристика может участвовать в обнаружении нескольких категорий, типов, семейств или вариантов вредоносных программ. В конкретном примере эвристика проверяет наличие определенной последовательности событий (сигнатура поведения) в клиентской системе 10. Не все события последовательности обязательно должны вызываться одним и тем же объектом. Однако появление такой последовательности событий может указывать на вредоносные программы. В одном таком примере, показанном на фиг.7, вредоносные действия разделяются между группой объектов Е-Е, причем каждый член группы выполняет небольшую часть вредоносных действий. Определенная последовательность действий A-A представляет собой сигнатуру поведения, идентифицирующую конкретную атаку вредоносных программ.
1
2
3
2
3
4
[0058] Фиг.7 иллюстрирует примерную сигнатуру поведения, связанную с атакой программы-вымогателя. Программа-вымогатель - это особый тип вредоносных программ, которая шифрует набор файлов на компьютере пользователя, а затем просит пользователя заплатить за восстановление соответствующих файлов. Создание объекта показано как стрелка с зигзагами. Каждая сплошная вертикальная линия показывает историю жизни каждого объекта. Например, объект E исчезает после того, как породил объект E. Объект Eстал частью показанной группы в ответ на получение введенного кода от E. Некоторые действия соответствующих объектов не являются частью сигнатуры 68. Например, порождение объектом Eобъекта E не включено в сигнатуру 68.
1
6
3
4
5
2
6
[0059] На фиг. 8A-B показаны такие примерные поведенческие сигнатуры. Сигнатура 68а требует, чтобы действия А-A выполнялись точно в указанном порядке. Напротив, примерная сигнатура 68b допускает, чтобы некоторые действия (А, А и А) были выполнены в любом порядке, пока они совершаются между А и А. Гибкость, обеспеченная сигнатурами, такими как 68b, может позволить обнаруживать различные версии, варианты или целое семейство вредоносных агентов. В некоторых вариантах осуществления эвристика, использующая определенную сигнатуру поведения, сконфигурирована так, чтобы обнаружить появление определенной последовательности событий (или действий), указанных соответствующей сигнатурой поведения. Далее, соответствующая эвристика может проверить отношения между объектами, выполняющими действия (например, может проверить, что все участвующие объекты входят в одну группу). В некоторых вариантах осуществления такие проверки являются неявными. Например, групповая эвристика, сконфигурированная для реализации определенной сигнатуры поведения, может быть реализована один раз для выбранной группы объектов. Затем соответствующая групповая эвристика может быть вызвана, только если член соответствующей группы выполняет действие. Дальнейшее описание и примеры групповых эвристик приведены ниже.
[0060] В некоторых вариантах осуществления эвристический механизм 46 взаимодействует с базой 26 данных эвристик, которая может храниться на запоминающих устройствах 20 клиентской системы 10, или на машиночитаемом носителе, коммуникационно связанном с клиентской системой 10. База 26 данных может содержать совокупность имеющихся эвристик и показатель связи между эвристикам и типами событий, которые запускают использование соответствующих эвристик. Такие связи позволяют эвристическому механизму 46 выборочно извлекать эвристику в ответ на уведомление о возникновении события определенного типа. Примерный вариант осуществления базы 26 данных - это библиотека программного обеспечения, например, dll.
[0061] В некоторых вариантах осуществления эвристики кодируются в байт-код (кросс-платформенный набор инструкций). Примеры байт-кода включают в себя языки программирования Java и lua. Каждая эвристика может быть закодирована и передана как отдельная подпрограмма из байт-кода. В таких вариантах осуществления эвристический механизм 46 может включать в себя виртуальную машину перевода байт-кода (например, интерпретатор или JIT («точно в срок») компилятор), которая преобразует байт-код в последовательность собственно процессорных инструкций и выполняет соответствующую последовательность. Такие варианты осуществления могут облегчить разработку и существенно сократить время выхода на рынок приложения 36 безопасности.
[0062] На фиг. 9 показана примерная последовательность этапов, исполняемых эвристическим механизмом 46, согласно некоторым вариантам осуществления настоящего изобретения. Последовательность этапов 200-202 ожидает уведомления о событиях от перехватчиков 28а-с. В ответ на прием уведомления 40 о событии, этап 204 определяет тип и параметры события, соответствующего уведомлению. Примерные типы событий включают в себя, в частности, ввод кода, определенный системный вызов, создание дискового файла и запрос HTTP (протокол передачи гипертекста). Параметры события могут быть специфичны для каждого типа события с уведомлением. Некоторые примерные параметры события включают в себя, среди прочего, идентификатор процесса или потока (например, ID процесса), выполняющего действие с уведомлением, имя файла, путь, адрес памяти и операнд инструкции процессора. Параметры события могут быть определены перехватчиками 28а-с и включены в уведомление (уведомления) 40 о событии, или могут быть определены эвристическим механизмом 46 в ответ на получение уведомления (уведомлений) 40. В одном примере, в котором событие с уведомлением - это попытка создать новый дисковый файл, параметры события могут включать в себя имя создаваемого файла. Соответствующее имя файла может быть определено перехватчиком событий и передано эвристическому механизму 46 как часть уведомления 40. В некоторых вариантах осуществления параметры события включают в себя отметку времени, указывающую момент времени, когда соответствующее событие произошло или было обнаружено. Метки времени могут в дальнейшем использоваться эвристическим механизмом 46 для определения, происходят ли определенные события последовательно (см., например, описание выше в отношении сигнатур поведения).
[0063] В последовательности этапов 206-208 механизм 46 может получить доступ к базе 26 данных эвристик и выборочно извлечь набор эвристик в соответствии с типом и параметрами события с уведомлением. На следующем этапе 209 выбранная эвристика (эвристики) применяется, чтобы определить, указывает ли событие с уведомлением на вредоносные программы. Если соответствующая эвристика (эвристики) указывают на подозрение в злом умысле, на этапе 212 механизм 46 посылает предупреждение 50 об оценивании механизму 48 оценивания. Предупреждение 50 об оценивании может содержать идентификатор соответствующей эвристики (эвристик), а также идентификатор подозрительного объекта и/или группы.
[0064] Эвристический механизм 46 согласно некоторым вариантам осуществления работает с несколькими различными типами переменных, такими как TOCAT, static, entity, group, и GTOBAT. Переменные TOCAT типа могут быть уникальными для каждого экземпляра эвристики. Переменные static типа могут быть специфичными для каждой эвристики в том смысле, что их значение может быть общим для нескольких экземпляров одной эвристики. Переменные GTOBAT типа могут быть общими для всех эвристик и их экземпляров. Переменные entity типа могут быть однозначно привязаны к кортежу <эвристика, объект>, общему для нескольких экземпляров одной и той же эвристики, но отличающемуся от одного объекта к другому. Переменные entity типа могут быть инициализированы один раз для каждого отслеживаемого объекта и стерты после завершения соответствующего объекта. Переменные group типа могут быть однозначно привязаны к кортежу <эвристика, группа>, общему для нескольких экземпляров одной и той же эвристики, но отличающемуся от одной группы объектов к другой. Переменные group типа могут быть инициализированы один раз для каждой группы объектов. Такие варианты осуществления позволяют определенной эвристике проверять, например, наличие сложных поведенческих сигнатур, в которых вредоносные действия распределены по нескольким объектам.
[0065] В некоторых вариантах осуществления механизм 48 оценивания поддерживает и обновляет множество оценок вредоносности, определяемых для множества отслеживаемых объектов и/или групп объектов, исполняющихся на клиентской системе 10. Механизм 48 оценивания может дополнительно определить, содержит ли клиентская система 10 вредоносное программное обеспечение, согласно соответствующим оценкам. В некоторых вариантах осуществления механизм 48 оценивания получает предупреждение 50 об оценивании от эвристического механизма 46, когда механизм 46 определяет, что появление конкретного события указывает на вредоносность. В ответ на обнаружение вредоносных программ механизм 48 оценивания может дополнительно отправить указатель 58 вредоносности модулю 56 очистки.
k
k
[0066] На фиг.10-А показано множество примерных элементов оценивания объектов (ESO) 74a-с, причем каждый ESO определяется механизмом 48 оценивания для соответствующего программного объекта 70а-с согласно некоторым вариантам осуществления настоящего изобретения. Каждый ESO может содержать множество сегментов данных, некоторые из которых проиллюстрированы на фиг.10-А. Такие сегменты включают в себя уникальный идентификатор объекта EID 76а, множество оценок 76b обработки текущего объекта, а также совокупную оценку 76d текущего объекта. В некоторых вариантах осуществления оценки 76b обработки объектов определяются механизмом 48 в соответствии с оповещениями 50 об оценивании, получаемыми от эвристического механизма 46. Каждая оценка 76b может быть определена по отдельному критерию. Например, оценки 76b могут иметь однозначное соответствие с набором эвристик 76с, так что каждая оценка обработки объекта присваивается в соответствии с соответствующей эвристикой. В одном из таких примеров определенная эвристика H содержит определение, загружает ли отслеживаемый объект файл из компьютерной сети, такой как Интернет. Соответствующая оценка S может быть затем присвоена или увеличена только тогда, когда соответствующий оцениваемый объект пытается произвести загрузку. В некоторых вариантах осуществления совокупная оценка 76d объекта рассчитывается как сумма оценок 76b обработки текущего объекта (более подробно см. ниже).
[0067] В некоторых вариантах осуществления каждый ESO может дополнительно включать в себя указатель связи между соответствующим объектом и группами, к которым он принадлежит. Например, в примере с фиг.10-А номером позиции 76f показан такой перечень групп объектов. В альтернативном варианте осуществления механизм 48 оценивания может динамически получать перечень групп, имеющих в качестве члена определенный объект, от диспетчера объектов 44.
1
2
3
1
2
3
1
6
[0068] Механизмы 48 оценивания согласно некоторым вариантам осуществления дополнительно поддерживают набор оценок, связанных с каждой группой объектов. На фиг.10-В показано множество примерных элементов группового оценивания (GSO) 75а-с, причем каждый GSO определен для отдельной группы программных объектов. Каждый изображенный GSO содержит уникальный идентификатор группы GID 77а, множество оценок 77b обработки текущей группы и совокупную оценку 77d текущей группы (верхний индекс G указывает на то, что соответствующие позиции связаны с группой объектов, а не с отдельным объектом). В некоторых вариантах осуществления каждая оценка обработки группы присваивается и/или увеличивается по определенному критерию (например, определенной эвристике). Примерная эвристика, которая устанавливает и/или увеличивает оценки обработки группы реализует такую сигнатуру поведения, как показанная на фиг.7. Используя этот пример, оценка обработки группы, соответствующая группе, содержащей объекты E, E и E, может быть увеличена, если объекты E, E и E выполняют действия А-A в указанном порядке. Групповые эвристики, соответствующие каждой оценке анализа группы, показаны номерами позиций 77c на фиг.10-В.
1
2
1
(G)
(G)
[0069] В некоторых вариантах осуществления каждый ESO может дополнительно содержать указатель связи между соответствующей группой и входящими в нее объектами. На примере фиг.10-В, объекты E, Eи т. д., являются членами группы G. Альтернативно, механизм 48 оценивания может в любое время запросить данные о членах группы у диспетчера 44 объектов. В некоторых вариантах осуществления групповая совокупная оценка 77d рассчитывается путем суммирования оценок 77b обработки группы, как подробно описано ниже.
1
1
(G)
[0070] Некоторые варианты осуществления механизма 48 оценивания увеличивают оценку анализа каждого объекта и/или группы на величину, специфичную для эвристики, сопоставляемой соответствующей оценке. На фиг.11-А-В показаны такие приращения оценок, сопоставляемые оценкам объектов и групповым оценкам, соответственно. Если механизм 48 оценивания получает предупреждение 50 об оценивании, сгенерированное в ответ на исполнение определенной эвристики, оценка обработки для объекта и/или группы, сопоставляемая соответствующей эвристике, может быть увеличена на соответствующую величину приращения. Некоторые эвристики для объектов могут также быть групповыми эвристиками, например, эвристика Н может совпадать с групповой эвристикой Н. В некоторых вариантах осуществления оповещение об оценивании, генерируемое такой эвристикой, может привести к обновлению объектной оценки обработки соответствующего объекта и/или групповой оценки для группы, имеющей в составе соответствующий объект.
k
k
k
[0071] На фиг.12 показана примерная последовательность этапов, исполняемых механизмом 48 оценивания (фиг.3) согласно некоторым вариантам осуществления настоящего изобретения. Последовательность этапов 300-302 ожидает оповещения об оценивании от эвристического механизма 46. В некоторых вариантах осуществления оповещения 50 об оценивании включают в себя индикатор эвристики, генерирующий соответствующее оповещение, и индикатор объекта и/или группы объектов, для которых было сгенерировано соответствующее оповещение. В ответ на получение оповещения 50 об оценивании, этап 304 определяет, было ли оповещение 50 создано объектной эвристикой (то есть эвристикой, сконфигурированной для определения, указывает ли событие на вредоносность отдельного объекта). Если нет, механизм 48 оценивания переходит к этапу 310. Если да, то на этапе 306, механизм 48 оценивания идентифицирует соответствующий объект в соответствии с оповещением 50 и обновляет вычисляемую оценку(-и) соответствующего объекта в соответствии с эвристикой (эвристиками), которая сгенерировала оповещение. Например, если эвристикой Н было сгенерировано оповещение 50, механизм 48 оценивания может увеличить оценку S, соответствующую эвристике Н на надлежащее приращение (см., например, фиг.11-A). На следующем этапе 308 вычисляется совокупная оценка соответствующего объекта, например, путем суммирования всех вычисляемых объектных оценок для соответствующего объекта.
[0072] На этапе 310 определяется, было ли оповещение 50 об оценивании сгенерировано групповой эвристикой (то есть эвристикой, сконфигурированной для определения, указывает ли событие на вредоносность группы объектов). Если нет, механизм 48 оценивания переходит к этапу 316. Если да, на этапе 312 механизм 48 оценивания идентифицирует набор групп, соответствующих оповещению 50, и обновляет групповую вычисляемую оценку соответствующей группы (групп) в соответствии с эвристикой (эвристиками), которая сгенерировала оповещение. На этапе 314 механизм 48 вычисляет совокупную оценку соответствующей группы (групп), например, в результате суммирования оценок обработки группы.
[0073] На этапе 316 механизм 48 оценивания определяет, превышает ли совокупная оценка соответствующего объекта и/или группы заданный порог. Если нет, механизм 48 возвращается к этапу 300. Если да, механизм 48 посылает указатель 58 вредоносности на модуль 56 очистки.
[0074] На фиг.12-B показана альтернативная последовательность этапов, исполняемых механизмом 48 оценивания. В ответ на получение оповещения 50 на этапе 326 идентифицируется объект и эвристика, генерирующая соответствующее оповещение. Затем для соответствующего объекта в соответствии с оповещением 50 определяются оценка (оценки) обработки и итоговая. На этапе 332 механизм 48 оценивания определяет, по меньшей мере, одну группу, имеющую в составе соответствующий объект. Затем, на этапе 336 получает приращение совокупная оценка соответствующей группы. Если совокупная оценка либо объекта, либо группы (или обоих) превышает заданный порог, этап 340 отправляет указатель 58 вредоносности модулю 56 очистки. Примерный вариант осуществления, показанный на фиг.12-B, может давать приращение групповой оценки каждый раз, когда член соответствующей группы выполняет действие, указывающее на вредоносные программы. Следовательно, даже если вредоносная активность разделена между несколькими членами группы и если совокупная оценка, соответствующая каждому отдельному члену, недостаточна, чтобы указать на вредоносность, общегрупповая оценка может превысить порог обнаружения вредоносных программ.
1
6
4
6
4
4
[0075] На фиг.12-C показана еще одна примерная альтернативная последовательность этапов, исполняемых механизмом 48 оценивания согласно некоторым вариантам осуществления настоящего изобретения. В отличие от фиг.12-А-В, фиг.12-C может описывать работу варианта осуществления, который не рассчитывает групповую оценку, а полагается исключительно на оценки объектов. Однако такой вариант осуществления может по-прежнему обнаруживать скрывающиеся вредоносные программы с помощью групповой эвристики. На примере сигнатуры 68 поведения с фиг.7, эвристика, обнаруживающая появление последовательности событий А-A, может генерировать оповещение 50 об оценивании в ответ на обнаружение, что объект Е выполнил действие A, и, таким образом, завершая последовательность действий, способных указать на вредоносные программы, которая предписана сигнатурой 68 поведения. В ответ на получение такого оповещения на этапе 348 может быть дано приращение оценки обработки объекта Е, причем оценка сопоставляется соответствующей эвристике. Если приращение, связанное с соответствующей эвристикой, выбрано достаточно большим, увеличение соответствующей оценки обработки объекта может быть достаточно большим, чтобы совокупная оценка, вычисленная для объекта Е, превышала пороговое значение обнаружения вредоносных программ.
[0076] На фиг.13 показана примерная последовательность этапов, исполняемых модулем 56 очистки (фиг.3), согласно некоторым вариантам осуществления настоящего изобретения. На этапе 402 модуль 56 получает указатель 58 вредоносности от механизма 48 оценивания. В некоторых вариантах осуществления указатель 58 вредоносности включает в себя указатель на подозрительный объект и/или указатель на группы подозрительных объектов, например, на объекты и/или группы, совокупные оценки которых превысили пороговые значения обнаружения вредоносных программ (см. выше.) На этапе 404 модуль 56 идентифицирует подозрительный объект, который вызвал отправку механизмом 48 оценивания указателя 58 вредоносности.
[0077] В некоторых вариантах осуществления на этапе 406 проверяется, является ли соответствующий подозрительный объект членом отдельной группы. Если нет, модуль 56 переходит к этапу 410. Если да, на этапе 408 модуль 56 очистки очищает всю группу подозрительного объекта. В некоторых вариантах осуществления очистка группы объектов содержит очистку каждого составляющего объекта соответствующей группы. Очистка может включать в себя любой способ, известный в области компьютерной безопасности. В некоторых вариантах осуществления очистка объекта содержит приостановление или завершение исполнения соответствующего объекта. Очистка объекта может дополнительно содержать удаление дискового файла, содержащего код соответствующего объекта. Очистка объекта может дополнительно содержать отмену или откат набора изменений, выполненных соответствующим объектом в течение его цикла жизни (такие изменения могут включать в себя изменения в реестре операционной системы, в файловой системе и т. д.). Очистка объекта может содержать анализ соответствующего объекта с помощью дополнительного отдельного сканера вредоносных программ. В некоторых вариантах осуществления очистка дополнительно включает в себя оповещение пользователя клиентской системы 10 и/или системного администратора.
[0078] В одном примере очистки, когда вредоносные действия были отслежены до события ввода кода, модуль 56 очистки завершает принимающий объект и откатывает назад все изменения в памяти и/или файловой системе, произошедшие после соответствующего события ввода. По возможности, модуль 56 очистки может откатить только изменения, произведенные в результате соответствующего события ввода. В другом примере очистки, когда вредоносный объект использует незараженный объект (такой как cmd.ехе, regedit.exe, разрешенный браузерный процесс и т. д.) для выполнения части вредоносной атаки, модуль 56 очистки может завершить соответствующий незараженный объект, но не удалять его исполняемые файлы.
[0079] В некоторых вариантах осуществления, когда подозрительный объект принадлежит нескольким группам объектов, на этапе 410 осуществляется попытка установления, какая из соответствующих групп может быть вредоносной. Этап 410 может включать в себя определение, каким образом подозрительный объект стал членом каждой соответствующей группы (например, в ответ на создание объекта или вводом кода). На этапе 410 возможно дополнительно определить, какая эвристика вызвала оповещение об оценивании, которое привело механизм оценивания к выводу о том, что клиентская система 10 подверглась атаке. Установление эвристики, запускающей обнаружение вредоносных программ, может позволить определить, какое действие, вызвавшее соответствующее оповещение об оценивании, совершал подозрительный объект. Для выполнения этапа 410 модуль 58 очистки может дополнительно определить, какой компонент подозрительного объекта выполнялся, когда сработало соответствующее оповещение об оценивании.
[0080] В одном примерном сценарии подозрительный объект стал членом первой группы путем создания объекта и членом второй группы путем ввода кода. На этапе 410 было установлено, что во время выполнения кода из основного исполняемого модуля подозрительного объекта было инициировано оповещение об обнаружении вредоносных программ. Тогда модуль 58 очистки может сделать вывод, что первая группа является вредоносной. Напротив, если подозрительный объект на момент запуска оповещения об оценивании выполнял введенный код, модуль 58 очистки может сделать вывод о том, что вредоносной была вторая группа.
[0081] На этапе 412 модуль 56 определяет, была ли успешной идентификация вредоносной группы. Если да, на этапе 414, модуль 56 очищает выявленную вредоносную группу. Если на этапе 410 не удалось установить вредоносную группу объектов, на этапе 416 модуль 56 очищает только подозрительный объект. Таким образом, на этапе 416 можно предотвратить ложноположительную идентификацию вредоносных программ, то есть ложную идентификацию безопасного объекта как вредоносного, что для пользователя может привести к потере данных.
[0082] Примерные системы и способы, описанные выше, позволяют защитить компьютерную систему от вредоносного программного обеспечения, такого как вирусы, трояны и шпионские программы. В некоторых вариантах осуществления настоящего изобретения приложение безопасности отслеживает поведение набора объектов (например, процессов), выполняемых в данное время в клиентской системе. Приложение безопасности уведомляется набором перехватчиков событий о возникновении различных событий в клиентской системе. Такие примерные события могут включать в себя, среди прочего, создание процесса или потока, ввод кода, системный вызов, попытку создания нового дискового файла, попытку записи в существующий дисковый файл, попытку редактирования ключа реестра ОС и попытку записи в определенный раздел памяти. Некоторые из событий с уведомлениями могут указывать на вредоносные программы, в то время как другие события могут не быть сами по себе индикаторами угрозы безопасности, но могут сигнализировать о потенциальной угрозе при появлении вместе с другими событиями.
[0083] В ответ на получение уведомлений о событиях приложение безопасности может выполнить ряд процедур по обнаружению (например, эвристик), чтобы определить, указывают ли соответствующие события на вредоносные программы. В ответ на определение, что событие может указывать на вредоносные программы, эвристика может привести к приращению оценки наличия вредоносных программ. Механизм оценивания может далее определить, подвергается ли клиентская система атаке, в соответствии с увеличенной оценкой наличия вредоносных программ. Модуль очистки может далее предпринять действие по борьбе с вредоносными программами в отношении объектов или групп объектов, которые считаются вредоносными.
[0084] Обычные системы защиты от вредоносных программ обычно связывают оценку с каждым отдельным объектом и увеличивают такие оценки всякий раз, когда поведение соответствующих объектов указывает на их вредоносность. Такие обычные системы, как правило, не обнаруживают скрывающиеся вредоносные программы, которые разделяют вредоносные действия между множеством объектов. Если отдельно взятое поведение каждого участвующего объекта не указывает на его вредоносность, такое поведение может не привести к обнаружению на основе индивидуальных оценок. Напротив, некоторые варианты осуществления настоящего изобретения явным образом направлены на скрывающиеся вредоносные программы путем сопоставления поведения нескольких связанных объектов.
[0085] В некоторых вариантах осуществления приложение безопасности разделяет отслеживаемые объекты на множество групп объектов, в которых все члены группы связаны происхождением или вводом кода. Объект может одновременно принадлежать нескольким группам объектов. Приложение безопасности может также связать набор оценок с каждой группой объектов. Такие групповые оценки могут получать приращение, когда участник соответствующей группы выполняет определенные действия. Таким образом, даже несмотря на то, что сами по себе действия, выполняемые отдельными участниками, могут не указывать на вредоносность, групповая оценка может уловить коллективное вредоносное поведение и запустить обнаружение.
[0086] В некоторых вариантах осуществления настоящего изобретения исполняемые объекты делятся на по меньшей мере две основные категории, то есть создатели группы и наследники групп. Категория создателей группы может включать в себя такие объекты, как процессы операционной системы, файловые менеджеры и браузеры, которые могут часто выполнять такие действия, как разрешенное создание объекта. В некоторых вариантах осуществления объекты-создатели групп создают новые группы, когда они порождают дочерние объекты. Категория принятого в группу наследника группы может содержать пользовательские процессы и неизвестные процессы. Объекты наследников группы могут стать членами группы их родительского объекта или могут быть первым объектом группы, когда их родительский объект является создателем группы. Наличие отдельных правил членства в группах для объектов-создателей групп и объектов-наследников позволяет в некоторых вариантах осуществления настоящего изобретения отслеживать две категории объектов, используя различные стратегии обнаружения вредоносных программ.
[0087] Другой образ действий, направленный на скрывающиеся вредоносные программы, согласно некоторым вариантам осуществления настоящего изобретения содержит использование эвристик обнаружения вредоносных программ, которые обнаруживают определенную последовательность или комбинацию действий, выполняемых группой связанных объектов, в отличие от изолированных действий, выполняемых отдельными объектами. Соответствующая эвристика может вызвать увеличение оценки только при выполнении всех действий соответствующей последовательности или комбинации.
[0088] Обычные системы компьютерной безопасности могут обнаруживать отдельные вредоносные объекты и предпринимать действие по борьбе с вредоносными программами в отношении каждого такого объекта независимо от других объектов. Если обнаруженный вредоносный объект является небольшой частью скоординированной сети вредоносных объектов, выведение из строя одного объекта может все же оставить клиентскую систему уязвимой или даже зараженной вредоносной программой. Напротив, в ответ на обнаружение группы вредоносных объектов, в некоторых вариантах осуществления настоящего изобретения можно очистить или иным образом вывести из строя целую группу вредоносных объектов. Когда подозрительный объект является частью нескольких групп объектов, но приложение безопасности не в состоянии определить, какая из соответствующих групп выполняет вредоносные действия, в некоторых вариантах осуществления настоящего изобретения действие против вредоносной программы предпринимается только в отношении соответствующего подозрительного объекта, чтобы предотвратит ложноположительную идентификации вредоносной программы.
[0089] Специалисту в данной области понятно, что приведенные выше варианты осуществления могут быть изменены во многих отношениях без выхода за рамки объема правовой охраны настоящего изобретения. Соответственно, объем правовой охраны настоящего изобретения определяется прилагаемой формулой изобретения и ее юридическими эквивалентами.