Системы и способы защиты от вредоносного программного обеспечения на основе нечеткого вайтлистинга
FUZZY WHITELISTING ANTI-MALWARE SYSTEMS AND METHODS

[0001] Для данной заявки испрашивается приоритет по дате подачи 11.02.2011 предварительной заявки на патент США №61/554,859, которая включена в данное описание полностью в виде ссылки.
УРОВЕНЬ ТЕХНИКИ
[0002] Изобретение относится к системам и способам защиты пользователей от вредоносного программного обеспечения и, в частности, к вайтлистингу программного обеспечения.
[0003] Вредоносное программное обеспечение, известное также как вредоносные программы, нарушает работу большого числа компьютерных систем во всем мире. Во всем многообразии своих форм, таких как компьютерные вирусы, черви, троянские программы и руткиты, вредоносные программы представляют серьезную опасность для миллионов пользователей компьютеров, подвергая их риску потери данных, кражи персональных сведений, и, помимо прочего, снижению производительности работы.
[0004] Компьютерные программы, предназначенные для сканирования вредоносных программ, используют различные способы обнаружения вредоносных программ и удаления их из пользовательских компьютерных систем. Эти способы включают в себя способы на основе поведения и способы на основе содержимого. Способы на основе поведения могут предусматривать возможность выполнения подозрительной программы в изолированной виртуальной среде с выявлением вредоносного поведения и блокированием выполнения нарушающей работу программы. В способах на основе содержимого содержимое подозрительного файла обычно сравнивают с базой данных известных сигнатур, идентифицирующих вредоносные программы. Если в подозрительном файле находят известную сигнатуру вредоносной программы, файл помечается как вредоносный.
[0005] В других способах борьбы с вредоносными программами используют вайтлистинг приложений, который включает в себя ведение списка программного обеспечения и поведенческих характеристик, которые разрешены в компьютерной системе пользователя, и блокирование выполнения всех других приложений. Такие способы особенно эффективны против полиморфных вредоносных программ, которые могут случайным образом модифицировать свои характеристические сигнатуры и тем самым делать неэффективными стандартные способы на основе содержимого.
[0006] Для идентификации и обеспечения целостности заносимого в вайтлист программного обеспечения в некоторых приложениях вайтлистинга используют значения хеш-функции. Для файла или группы файлов, присоединенных к занесенному в вайтлист приложению, может быть создан и сохранен для ссылки криптографический хеш. Соответствующее приложение впоследствии аутентифицируют путем сравнения сохраненного хеша с новым хешем, сгенерированным во время выполнения.
[0007] Производительность способов вайтлистинга для защиты от вредоносных программ может зависеть от возможности поддержания и обновления баз данных вайтлиста эффективным и гибким способом.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
[0008] Согласно одному аспекту способ включает в себя выполнение в клиентской компьютерной системе начального сканирования множества целевых объектов клиентской компьютерной системы на наличие вредоносных программ; в ответ на предварительное определение начальным сканированием подозрительности целевого объекта на вредоносность, генерацию в клиентской компьютерной системе множества целевых хешей целевого объекта, причем каждый целевой хеш представляет отдельный блок кода целевого объекта, при этом каждый отдельный блок кода содержит последовательность процессорных инструкций целевого объекта; отправку множества целевых хешей с клиентской компьютерной системы на серверную компьютерную систему, соединенную с клиентской компьютерной системой глобальной вычислительной сетью; и получение клиентской компьютерной системой от серверной компьютерной системы серверного индикатора, указывающего, является ли целевой объект вредоносным. Серверный индикатор генерируется серверной компьютерной системой для по меньшей мере одного целевого хеша из множества целевых хешей путем получения множества ссылочных хешей ссылочного объекта, причем ссылочный объект выбирают согласно целевому хешу из набора объектов, занесенных в вайтлист; если множество целевых хешей не идентично множеству ссылочных хешей, то путем определения показателя подобия согласно количеству хешей, общих как для множества целевых хешей, так и для множества ссылочных хешей; и, если показатель подобия превышает заданное пороговое значение, то путем маркирования целевого объекта как невредоносного.
[0009] Согласно другому аспекту способ включает в себя получение серверной компьютерной системой множества целевых хешей целевого объекта клиентской компьютерной системы, соединенной с серверной компьютерной системой глобальной вычислительной сетью; генерацию серверной компьютерной системой серверного индикатора, указывающего, является ли целевой объект вредоносным; и отправку клиентской компьютерной системе серверного индикатора, указывающего, является ли целевой объект вредоносным. Множество целевых хешей генерируют в клиентской компьютерной системе в ответ на предварительное определение клиентской компьютерной системой подозрительности целевого объекта на вредоносность, причем предварительное определение происходит в результате начального сканирования множества целевых объектов клиентской компьютерной системы на наличие вредоносных программ. Генерация на серверной компьютерной системе серверного индикатора, указывающего, является ли целевой объект вредоносным, включает в себя получение множества ссылочных хешей ссылочного объекта для по меньшей мере одного целевого хеша из множества целевых хешей, причем ссылочный объект выбирают согласно целевому хешу из набора объектов, занесенных в вайтлист; если множество целевых хешей не идентично множеству ссылочных хешей, то определение показателя подобия согласно количеству хешей, общих как для множества целевых хешей, так и для множества ссылочных хешей; и, если показатель подобия превышает заданное пороговое значение, то маркирование целевого объекта как невредоносного.
[0010] Согласно другому аспекту способ включает в себя получение в серверной компьютерной системе множества целевых хешей целевого объекта, причем каждый целевой хеш представляет отдельный блок кода целевого объекта, при этом каждый отдельный блок кода содержит последовательность процессорных инструкций целевого объекта; использование для по меньшей мере одного целевого хеша из множества целевых хешей серверной компьютерной системы для: получения множества ссылочных хешей ссылочного объекта, причем ссылочный объект выбирают согласно целевому хешу из набора объектов, занесенных в вайтлист; если множество целевых хешей не идентично множеству ссылочных хешей, то определения показателя подобия согласно количеству хешей, общих как для множества целевых хешей, так и для множества ссылочных хешей; и, если показатель подобия превышает заданное пороговое значение, использование серверной компьютерной системы для маркирования целевого объекта как невредоносного.
[0011] Согласно другому аспекту компьютерная система содержит по меньшей мере один процессор, запрограммированный для получения множества целевых хешей, причем каждый целевой хеш представляет отдельный блок кода целевого объекта, при этом каждый отдельный блок кода содержит последовательность процессорных инструкций целевого объекта, получение для по меньшей мере одного целевого хеша из множества целевых хешей множества ссылочных хешей ссылочного объекта, причем ссылочный объект выбирают согласно целевому хешу из набора объектов, занесенных в вайтлист, и, если множество целевых хешей не идентично множеству ссылочных хешей, то определение показателя подобия согласно количеству хешей, общих как для множества целевых хешей, так и для множества ссылочных хешей; и, если показатель подобия превышает заданное пороговое значение, то маркирование целевого объекта как невредоносного.
[0012] Согласно другому аспекту постоянный машиночитаемый носитель данных кодирует инструкции, которые при их выполнении в процессоре обеспечивают выполнение процессором следующих этапов: получение множества целевых хешей, причем каждый целевой хеш представляет отдельный блок кода целевого объекта, при этом каждый отдельный блок кода содержит последовательность процессорных инструкций целевого объекта; получение для по меньшей мере одного целевого хеша из множества целевых хешей множества ссылочных хешей ссылочного объекта, причем ссылочный объект выбирают согласно целевому хешу из набора объектов, занесенных в вайтлист; и, если множество целевых хешей не идентично множеству ссылочных хешей, то определение показателя подобия согласно количеству хешей, общих как для множества целевых хешей, так и для множества ссылочных хешей. Если показатель подобия превышает заданное пороговое значение, целевой объект является невредоносным.
[0013] Согласно другому аспекту компьютерная система содержит средство для получения множества целевых хешей, причем каждый целевой хеш представляет отдельный блок кода целевого объекта, при этом каждый отдельный блок кода содержит последовательность процессорных инструкций целевого объекта; средство для получения множества ссылочных хешей ссылочного объекта, причем ссылочный объект выбирают из набора объектов, занесенных в вайтлист, согласно выбранному целевому хешу множества целевых хешей; средство для определения показателя подобия согласно количеству хешей, общих как для множества целевых хешей, так и для множества ссылочных хешей; средство для маркирования целевого объекта как невредоносного согласно показателю подобия.
[0014] Согласно другому аспекту способ включает в себя получение в серверной компьютерной системе множества целевых хешей, причем каждый целевой хеш представляет отдельный блок данных целевого объекта, при этом каждый отдельный блок кода содержит последовательность процессорных инструкций целевого объекта; получение в ответ на получение множества целевых хешей множества ссылочных хешей, представляющих объект данных, занесенный в вайтлист; и, если множество целевых хешей не идентично множеству ссылочных хешей и если множество целевых хешей и множество ссылочных хешей совместно используют большинство элементов, то маркирование целевого объекта как невредоносного.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0015] Вышеупомянутые аспекты и преимущества данного изобретения станут более понятны после прочтения следующего подробного описания со ссылками на чертежи, на которых:
[0016] Фиг. 1 показывает иллюстративную систему защиты от вредоносных программ (AM) согласно некоторым вариантам осуществления данного изобретения.
[0017] Фиг. 2 показывает иллюстративную конфигурацию аппаратных средств клиентской компьютерной системы согласно некоторым вариантам осуществления данного изобретения.
[0018] Фиг. 3 показывает иллюстративную конфигурацию аппаратных средств серверной системы защиты от вредоносных программ согласно некоторым вариантам осуществления данного изобретения.
[0019] Фиг. 4 показывает архитектуру иллюстративного приложения для защиты от вредоносных программ, которое выполняется в клиентской компьютерной системе согласно некоторым вариантам осуществления данного изобретения.
[0020] Фиг. 5 показывает иллюстративные приложения, выполняющиеся в серверной системе защиты от вредоносных программ согласно некоторым вариантам осуществления данного изобретения.
[0021] Фиг. 6 показывает иллюстративную последовательность этапов, выполняемых показанным на фиг. 4 клиентским приложением для защиты от вредоносных программ согласно некоторым вариантам осуществления данного изобретения.
[0022] Фиг. 7 показывает пример нормализации кода согласно некоторым вариантам осуществления данного изобретения.
[0023] Фиг. 8 показывает иллюстративное представление памяти для процессорной инструкции согласно некоторым вариантам осуществления данного изобретения.
[0024] Фиг. 9 показывает иллюстративный блок кода и соответствующий ему иллюстративный шаблон кода операции согласно некоторым вариантам осуществления данного изобретения.
[0025] Фиг. 10 показывает иллюстративный фрагмент кода, содержащий блоки кода, и соответствующий этому фрагменту кода иллюстративный индикатор объектных данных (ODI) согласно некоторым вариантам осуществления данного изобретения.
[0026] Фиг. 11 показывает иллюстративную последовательность этапов, выполняемых показанным на фиг. 5 серверным приложением для защиты от вредоносных программ согласно некоторым вариантам осуществления данного изобретения.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
[0027] В последующем описании предполагается, что все перечисленные соединения между структурами могут быть соединениями, действующими непосредственно, или соединениями, действующими косвенно через промежуточные структуры. Набор элементов содержит один или несколько элементов. Предполагается, что любое упоминание элемента ссылается по меньшей мере на один элемент. Множество элементов содержит по меньшей мере два элемента. Если не предполагается иное, любые описанные этапы способа могут быть выполнены не обязательно в описанном определенном порядке. Первый элемент (например, данные), выделенный из второго элемента, включает в себя первый элемент, равный второму элементу, а также первый элемент, сгенерированный путем обработки второго элемента и, опционально, другие данные. Процесс определения или принятия решения согласно параметру включает в себя процесс определения или принятия решения согласно параметру и, опционально, согласно другим данным. Если не указано иное, индикатор некоторого количественного параметра/данных может быть непосредственно количественным параметром/данными или индикатором, отличающимся от непосредственно количественного параметра/данных. Компьютерные программы, описанные в некоторых вариантах осуществления данного изобретения, могут быть автономными программными объектами или подобъектами (например, подпрограммы, объекты кода) других компьютерных программ. Если не указано иное, целевой объект является файлом или процессом, находящимся в клиентской компьютерной системе. Идентификатор целевого объекта содержит данные, обеспечивающие возможность выборочной идентификации и извлечения непосредственно целевого объекта, а не просто в виде части более крупной структуры данных, например всей памяти клиентской компьютерной системы. Если не указано иное, индикатор объектных данных (ODI) целевого объекта содержит признаки данных целевых объектов (например, блока кода, шаблона кода операции, хеша), способствующие определению вредоносности целевого объекта, например его заражения вредоносными программами. Если не указано иное, хеш является результатом работы хеш-функции. Хеш-функции представляют собой математические преобразования, отображающие последовательности символов (например, знаковых символов, битов) в более короткие последовательности чисел или строки битов. Целевой хеш - это хеш, вычисленный на основе данных целевого объекта. Если не указано иное, термин «внесенный в вайтлист» понимается как «доверенно чистый», то есть не содержащий вредоносный код. Первый набор идентичен второму набору, если все элементы первого набора содержатся во втором наборе и все элементы второго набора содержатся в первом наборе. Машиночитаемые носители включают в себя постоянные носители, например магнитные, оптические и полупроводниковые носители данных (например, жесткие диски, оптические диски, флэш-память, динамическую память с произвольной выборкой (DRAM)), а также каналы связи, например проводящие кабели и волоконно-оптические каналы. Согласно некоторым вариантам осуществления данное изобретение обеспечивает, помимо прочего, компьютерные системы, содержащие аппаратные средства (например, один или более процессоров), запрограммированные для выполнения описанных здесь способов, а также машиночитаемые носители, кодирующие инструкции для выполнения описанных здесь способов.
[0028] В последующем описании варианты осуществления изобретения проиллюстрированы на примерах, причем необязательно в виде ограничения.
[0029] На фиг. 1 показана иллюстративная система 10 обнаружения вредоносных программ согласно некоторым вариантам осуществления данного изобретения. Система 10 содержит ряд серверных систем 20а-с защиты от вредоносных программ (AM) и ряд клиентских компьютерных систем 30а-b. Клиентские компьютерные системы 30а-b могут представлять собой компьютеры конечного пользователя, каждый из которых имеет процессор, память, устройство хранения данных и использует операционную систему, например, Windows, MacOS или Linux. Некоторые клиентские компьютерные системы 30а-b могут представлять собой мобильные вычислительные и/или телекоммуникационные устройства, например планшетные компьютеры и мобильные телефоны. В некоторых вариантах осуществления клиентские компьютерные системы 30а-b могут представлять собой отдельные клиенты либо несколько клиентских компьютерных систем могут принадлежать одному клиенту. В некоторых вариантах осуществления одна из систем 30а-b может быть сервером, например почтовым сервером, причем в этом случае для идентификации вредоносных программ, присутствующих в электронных письмах или других сообщениях, отправленных клиентам, и для принятия соответствующих мер (например, удаления или помещения на карантин элементов, зараженных вредоносными программами), до того, как эти сообщения будут переданы клиентам, могут использоваться службы обнаружения вредоносных программ. Клиентские компьютерные системы 30а-с и серверные системы 20а-с защиты от вредоносных программ соединены сетью 12. Сеть 12 может быть глобальной сетью, например сетью Интернет. Части сети 12, например часть сети 12, связывающая друг с другом клиентские компьютерные системы 30а-b, могут также включать в себя локальную сеть (LAN).
[0030] На фиг. 2 показана иллюстративная конфигурация аппаратных средств клиентской компьютерной системы 30. В некоторых вариантах осуществления система 30 содержит процессор 24, блок 26 памяти, набор устройств 28 ввода, набор устройств 32 вывода, набор устройств 34 хранения и контроллер 36 интерфейса связи, причем все перечисленные устройства соединены набором шин 38.
[0031] В некоторых вариантах осуществления процессор 24 содержит физическое устройство (например, многоядерную интегральную схему), выполненное с возможностью выполнения вычислительных и/или логических операций с набором сигналов и/или данных. В некоторых вариантах осуществления такие логические операции передаются процессору 24 в виде последовательности процессорных инструкций (например, машинный код или другой тип программного кода). Блок 26 памяти может включать в себя энергозависимые машиночитаемые носители (например, запоминающее устройство с произвольной выборкой (RAM)), хранящие данные/сигналы, доступ к которым или генерация которых осуществляется процессором 24 в ходе выполнения инструкций. Устройства 28 ввода могут включать в себя компьютерные клавиатуры и "мыши", которые, помимо прочего, дают пользователю возможность вводить данные и/или инструкции в систему 30. Устройства 32 вывода могут включать в себя дисплеи, например мониторы. В некоторых вариантах осуществления устройства 28 ввода и устройства 32 вывода могут совместно использовать общую часть аппаратных средств, например в случае устройств с сенсорным экраном. Устройства 34 хранения включают в себя машиночитаемые носители, способные обеспечивать энергонезависимое хранение, чтение и запись инструкций программного обеспечения и/или данных. Иллюстративные устройства 34 хранения включают в себя магнитные и оптические диски, устройства с флэш-памятью, а также съемные носители, например CD и/или DVD диски и приводы. Контроллер 36 интерфейса связи обеспечивает возможность соединения системы 30 с компьютерной сетью и/или с другими машинами/компьютерными системами. Типичные контроллеры 36 интерфейса связи включают в себя сетевые адаптеры. Совокупность шин 38 представляет собой множество системных шин, периферийных шин и шин контроллеров и/или всех прочих электрических цепей, обеспечивающих возможность соединения друг с другом устройств 24-36 компьютерной системы 30. Например, шины 38 могут включать в себя, помимо прочего, шину северного моста, соединяющую процессор 24 с блоком 26 памяти, и/или шину южного моста, соединяющую процессор 24 с устройствам 28-36.
[0032] На фиг. 3 показана иллюстративная конфигурация аппаратных средств серверной системы 20 защиты от вредоносных программ согласно некоторым вариантам осуществления данного изобретения. Серверная система 20 защиты от вредоносных программ может быть компьютерной системой, содержащей серверный процессор 124, серверную память 126, набор серверных устройств 134 хранения и серверный контроллер 136 интерфейса связи, причем все упомянутые компоненты соединены друг с другом набором серверных шин 138. Хотя некоторые детали конфигурации аппаратных средств серверной системы 20 и клиентской компьютерной системы 30 могут отличаться, параметры устройств 124, 126, 134, 136 и 138 могут быть подобны параметрам описанных выше соответствующих устройств 24, 26, 34, 36 и 38.
[0033] Клиентская компьютерная система 30 может содержать клиентское приложение 40 для защиты от вредоносных программ и кэш 56 на стороне клиента, как показано на фиг. 4. В некоторых вариантах осуществления клиентское приложение 40 может быть автономным приложением либо модулем защиты от вредоносных программ, входящим в состав пакета средств обеспечения безопасности, имеющего антивирус, межсетевой экран, антиспам и другие модули. Клиентское приложение для защиты от вредоносных программ может содержать активный сканер 42 вредоносных программ, статический сканер 44 вредоносных программ, эмулятор 46, связанный со статическим сканером 44 вредоносных программ, подсистему 48 нормализации кода, связанную со сканерами 42 и 44, клиентский коммуникационный менеджер 52 и хеширующий механизм 54, связанный с коммуникационным менеджером 52 и подсистемой 48 нормализации кода.
[0034] В некоторых вариантах осуществления клиентское приложение 40 для защиты от вредоносных программ сконфигурировано для проведения клиентской части совместного клиент-серверного сканирования для обнаружения вредоносных программ, которые сохранены на машиночитаемых носителях, являющихся частью клиентской компьютерной системы 30 (например, в памяти, на жестком диске), или на машиночитаемых носителях, соединенных с системой 30 (например, на карте памяти, внешнем жестком диске, на сетевых устройствах и т.д.). Клиентское приложение 40 для защиты от вредоносных программ сконфигурировано для отправки в ходе совместного клиент-серверного сканирования целевого ODI 100 серверным системам 20а-с защиты от вредоносных программ и получения от систем 20а-с отчета 50 о сканировании.
[0035] Целевые объекты, сканируемые приложением 40 для защиты от вредоносных программ, включают в себя компьютерные файлы и процессы. Каждый процесс может включать в себя набор загруженных модулей памяти (то есть загруженные копии содержимого памяти целевого исполняемого файла и его ссылочные динамически подключаемые библиотеки), а также любые дополнительные файлы, соответствующие загруженным модулям памяти. Целевой объект можно считать вредоносным, если он содержит по меньшей мере часть объекта с вредоносным программным кодом (например, вируса, червя, трояна).
[0036] В некоторых вариантах осуществления ODI 100 содержит множество индикаторов блока кода, причем каждый индикатор блока кода указывает на отдельный блок кода целевого объекта. Примерное содержание и форматы ODI 100 подробно обсуждаются при рассмотрении фиг. 7-9.
[0037] В некоторых вариантах осуществления отчет 50 о сканировании содержит идентификатор (например, тег, идентификатор файла) целевого объекта, индикатор статуса вредоносности (например, зараженный, чистый, неизвестный) целевого объекта и/или набор идентификаторов агентов вредоносных программ, заражающих целевой объект, например имена отдельных агентов вредоносных программ (например, Win32.Worm.Downadup.Gen), индикаторы класса вредоносной программы (вирус, руткит, и т.д.) или указатели на соответствующие агенты, содержащиеся в информационной базе вредоносных программ. В некоторых вариантах осуществления может быть скомпилирован единый отчет о пакетном сканировании целевых объектов.
[0038] В некоторых вариантах осуществления коммуникационный менеджер 52 сконфигурирован для управления коммуникацией с серверными системами 20а-с защиты от вредоносных программ. Например, менеджер 52 может устанавливать соединения по сети 12, отправлять серверам 20а-с и принимать от них данные, поддерживать список продолжающихся транзакций сканирования и связывать целевые ODI 100 с серверами защиты от вредоносных программ, выполняющими сканирование на стороне сервера.
[0039] Активный сканер 42 вредоносных программ и статический сканер 44 вредоносных программ обеспечивают возможность выполнения клиентским приложением 40 для защиты от вредоносных программ предварительного сканирования целевого объекта для обнаружения вредоносных программ, как показано более подробно ниже. Если при предварительном сканировании обнаруживают вредоносное содержимое, пользователя уведомляют о проблемном целевом объекте непосредственно без необходимости прохождения клиент-серверного сканирования, благодаря чему экономятся компьютерные ресурсы и время. В некоторых вариантах осуществления целевые объекты-файлы обрабатывают статическим сканером 44 вредоносных программ, в то время как целевые объекты-процессы обрабатывают активным сканером 42 вредоносных программ. В некоторых вариантах осуществления статический сканер 44 вредоносных программ может использовать эмулятор 46 для распаковки файла и выполнения его в безопасной среде, а не в оперативной памяти. Сканеры 42, 44 могут использовать способы на основе поведения, различные эвристические правила, способы на основе содержимого (например, сопоставление сигнатур) или комбинацию этих способов для определения вредоносности целевого объекта. Примеры эвристических критериев для определения вредоносности целевого объекта включают в себя, помимо прочего, относительные размеры различных секций в переносимом исполняемом файле (РЕ файле) целевого объекта, плотности информации в каждой секции, наличие определенных флагов и групп флагов в заголовке РЕ файла, информацию об упаковщике/средстве защиты (если таковая имеется) и наличие определенных текстовых шаблонов в исполняемом коде.
[0040] Клиентское приложение 40 для защиты от вредоносных программ может использовать подсистему 48 нормализации кода и хеширующий механизм 54 для получения целевого ODI 100. Работа подсистемы 48 нормализации кода обсуждается ниже при рассмотрении фиг. 7. Хеширующий механизм 54 сконфигурирован для получения шаблона кода операции и генерации хеша соответствующего шаблона кода операции, как показано на фиг. 8-9. В некоторых вариантах осуществления хеш является результатом работы хеш-функции, а именно математического преобразования последовательности символов (например, знаковых символов, битов) в последовательность чисел или строк битов. Иллюстративные хеш-функции, используемые хеширующим механизмом 54, включают в себя, помимо прочего, контроль с использованием циклического избыточного кода (CRC), профилирование сообщений (MD) или безопасное хеширование (SHA). Примером хеша является 4-байтный CRC32 код.
[0041] Некоторые варианты осуществления кэша 56 на стороне клиента содержат, в любой момент времени, репозиторий ODI, соответствующих тем находящимся на соответствующей клиентской системе 30 целевым объектам, которые уже были просканированы на предмет вредоносности. В некоторых вариантах осуществления кэш 56 может содержать набор хешей ODI целевых объектов, причем каждый ODI, полученный от клиентских систем 30, может быть хеширован с удалением дублирующих хешей, при этом результирующие хеши сохраняются в качестве уникальных индикаторов соответствующих ODI. Кэш 56 обеспечивает ускорение сканирования вредоносных программ. Если ODI целевого объекта или хеш этого ODI найдены в кэше 56 на стороне клиента, что указывает на то, что соответствующий целевой объект уже был просканирован по меньшей мере один раз, то статус вредоносности целевого объекта может быть получен прямо из кэша 56 и сообщен пользователю, при этом процесс происходит значительно быстрее, чем выполнение нового сканирования целевого объекта. В некоторых вариантах осуществления кэш 56 может содержать для каждого ODI идентификатор объекта (например, тег или идентификатор файла) и индикатор статуса вредоносности соответствующего целевого объекта.
[0042] На фиг. 5 показаны иллюстративные приложения, выполняющиеся в серверной системе 20 защиты от вредоносных программ согласно некоторым вариантам осуществления данного изобретения. В некоторых вариантах осуществления система 20 содержит серверное приложение 60 для защиты от вредоносных программ, серверный кэш 68, базу 65 данных (BD) вайтлиста, базу 66 данных вредоносных программ и эпидемическую базу 67 данных, причем все указанные компоненты связаны с серверным приложением 60 для защиты от вредоносных программ.
[0043] В некоторых вариантах осуществления серверное приложение 60 для защиты от вредоносных программ сконфигурировано для осуществления множественных транзакций обнаружения вредоносных программ с клиентскими компьютерными системами 30а-b. Серверное приложение 60 сконфигурировано для проведения для каждой такой транзакции серверной части совместного сканирования для обнаружения вредоносных программ, находящихся в соответствующей клиентской компьютерной системе, как подробно описано ниже. В ходе клиент-серверной транзакции приложение 60 получает целевой ODI 100 от клиентской компьютерной системы и передает отчет 50 о сканировании в соответствующую клиентскую компьютерную систему. Серверное приложение 60 для защиты от вредоносных программ может содержать серверный коммуникационный менеджер 62 и модуль 64 сравнения кода, связанный с коммуникационным менеджером 62.
[0044] В некоторых вариантах осуществления серверный коммуникационный менеджер 62 сконфигурирован для управления коммуникацией с клиентскими компьютерными системами 30а-b. Например, менеджер 62 может устанавливать соединения по сети 12, отправлять клиентам и принимать от них данные, поддерживать список продолжающихся транзакций сканирования и связывать целевые ODI 100 с появляющимися клиентскими компьютерными системами 30а-b. Модуль 64 сравнения кода сконфигурирован для вычисления показателя подобия, указывающего степень подобия целевого объекта и набора ссылочных объектов, хранящихся в базах данных 65-67, как подробно описано ниже.
[0045] В некоторых вариантах осуществления серверный кэш 68 содержит репозиторий ODI целевых объектов, которые уже были просканированы на предмет вредоносности, причем упомянутые ODI были получены от различных клиентских компьютерных систем 30а-b в ходе предыдущих процессов совместного клиент-серверного сканирования. Как обсуждается далее, если ODI целевого объекта найден в серверном кэше 68, что указывает на то, что соответствующий целевой объект уже был просканирован по меньшей мере один раз, статус вредоносности целевого объекта (например, чистый, зараженный и т.д.) может быть получен из серверного кэша 68 без выполнения нового сканирования целевого объекта. В некоторых вариантах осуществления в серверном кэше 68 наряду с целевыми ODI может сохраняться статус вредоносности (например, чистый, зараженный) соответствующего целевого объекта.
[0046] Базы 65-67 данных поддерживаются в виде репозиториев общепринятых сведений, связанных с вредоносными программами. В некоторых вариантах осуществления каждая база 65-67 данных содержит набор индикаторов данных, соответствующих набору ссылочных объектов (файлов и процессов) с известным статусом вредоносности. В некоторых вариантах осуществления в базах 65-67 данных данные хранятся в форме хешей шаблона кода операции (как описано далее при рассмотрении фиг. 7-10). База 65 данных вайтлиста содержит набор хешей, полученных от доверенных чистых объектов (то есть элементов, занесенных в вайтлист). База 66 данных вредоносных программ содержит идентифицирующие вредоносные программы хеши, которые получены от объектов, известных как вредоносные. В некоторых вариантах осуществления эпидемическая база 67 данных содержит хеши, вычисленные для объектов, которые имеют статус вредоносности «неизвестный» (еще не распознаны как вредоносные или чистые).
[0047] В некоторых вариантах осуществления все хеши шаблона кода операции, сохраняемые в базах 65-67 данных, имеют одинаковый размер (например, 4 байта). Они могут быть сохранены последовательно в памяти и/или на машиночитаемых носителях серверных систем 20а-с. В некоторых вариантах осуществления вместе с набором ссылочных хешей сохраняется вторая структура данных, содержащая объектные идентификаторы (например, идентификаторы файла, представленные также в виде 4-байтных чисел). Для связи каждого хеша с идентификатором файла объекта, от которого был получен хеш, используется реверсивное отображение, сохраняемое в памяти соответствующего сервера защиты от вредоносных программ. Это позволяет серверному приложению для защиты от вредоносных программ выборочно получать ссылочные хеши и определять, подобны ли целевые объекты, полученные от клиентских компьютерных систем, каким-либо ссылочным объектам, хранящимся в базах 65-67 данных. Актуальность баз 65-67 данных поддерживается путем добавления в них данных целевых объектов, полученных от клиентских компьютерных систем 30а-b, как описано далее.
[0048] На фиг. 6 показана иллюстративная последовательность этапов, выполняемых клиентским приложением 40 для защиты от вредоносных программ, согласно некоторым вариантам осуществления данного изобретения. На этапе 202 приложение 40 выбирает целевой объект для его сканирования на предмет вредоносности. В некоторых вариантах осуществления целевые объекты могут быть прямо или косвенно определены пользователем (по запросу в процессе сканирования). Например, пользователь может дать приложению 40 команду сканировать определенный файл, либо содержимое определенной папки, либо содержимое, сохраненное на определенном машиночитаемом носителе (например, на CD-ROM, на устройстве с флэш-памятью). Другие иллюстративные целевые объекты выбираются в процессе сканирования по типу доступа, причем приложение 40 сконфигурировано для сканирования определенных типов файлов или процессов перед их чтением/загрузкой/запуском. В некоторых вариантах осуществления для выполнения запланированного сканирования клиентской компьютерной системы набор целевых объектов может быть скомпилирован при запуске приложения 40. Такой иллюстративный набор целевых объектов, находящихся в клиентской системе под управлением Microsoft Windows, может включать в себя, помимо прочего, исполняемые файлы из папки WINDIR, исполняемые программы из папки WINDIR/system32, исполняемые программы выполняющихся в данный момент процессов, динамически подключаемые библиотеки (DLL), которые импортированы выполняющимися в данный момент процессами, и исполняемые программы всех установленных системных служб. В некоторых вариантах осуществления целевые объекты могут также включать в себя файлы/процессы, представляющие интерес для вредоносных программ, например вредоносных программ, которые считаются наиболее распространенными и активными во время инициирования процесса сканирования соответствующих вредоносных программ.
[0049] В некоторых вариантах осуществления для уникального тегирования соответствующего целевого объекта используют идентификатор (например, идентификатор файла). Идентификатор содержит данные, обеспечивающие возможность выборочной идентификации целевого объекта (например, файла или процесса) как такового, а не в виде части большой структуры, например всей памяти соответствующей клиентской компьютерной системы. Иллюстративные идентификаторы целевого объекта содержат, помимо прочего, пути к файлам и адреса памяти. Идентификатор также обеспечивает возможность выборочного получения клиентским приложением 40 целевого объекта для вычисления целевого ODI 100, а также однозначного выполнения транзакций клиент-серверного сканирования с множеством целевых объектов.
[0050] На этапе 204 (фиг. 6) клиентское приложение 40 для защиты от вредоносных программ может выполнять предварительное сканирование целевого объекта на наличие вредоносных программ. В некоторых вариантах осуществления целевые объекты-файлы обрабатываются статическим сканером 44 вредоносных программ, в то время как целевые объекты-процессы обрабатываются активным сканером 42 вредоносных программ. Сканеры 42, 44 могут использовать способы на основе поведения (например, эмуляцию), различные эвристические правила (например, геометрию переносимого исполняемого заголовка целевого объекта), способы на основе содержимого (например, сопоставление сигнатур) или сочетание этих способов для определения вредоносности целевого объекта. В некоторых вариантах осуществления сканеры 42, 44 могут создавать индикатор статуса вредоносности целевого объекта. Иллюстративные индикаторы статуса включают в себя, помимо прочего, такие статусы, как «вредоносный», «подозрительный на вредоносность» и «чистый».
[0051] В некоторых вариантах осуществления целевой объект может подозреваться на вредоносность, если целевой объект и известные вредоносные объекты имеют некоторые общие признаки, которых, однако, недостаточно для того, чтобы считать целевой объект вредоносным. Иллюстративные подозрительные признаки включают в себя, помимо прочего, присутствие в заголовке РЕ целевого объекта определенных значений/пар значений, наличие в целевом объекте определенных кодовых последовательностей (например, кода для проверки выполнения целевого объекта в виртуальной среде) и наличие текстовых шаблонов (сигнатур), идентифицирующих вредоносные программы, например общих паролей и имен и/или индикаторов путей программного обеспечения для защиты от вредоносных программ. Другие подозрительные признаки могут включать в себя определенные шаблоны поведения целевого объекта, которые идентифицируют вредоносные программы.
[0052] В некоторых вариантах осуществления сканеры 42, 44 вычисляют показатель вредоносности для соответствующего целевого объекта, причем для каждого признака, идентифицирующего вредоносную программу, может быть задан удельный вес. Если показатель вредоносности превышает первое пороговое значение, то соответствующий целевой объект может подозреваться в том, что он вредоносный, если показатель превышает второе, более высокое, пороговое значение, то целевой объект может быть маркирован как вредоносный. Иллюстративный целевой объект, содержащий строки, специфичные для протокола IRC, имен антивирусных программ, общих паролей Windows, и кодовые последовательности, специфичные для эксплойтов, может получить сравнительно высокое значение показателя вредоносности и, в связи с этим, может быть маркирован как вредоносный, в то время как другой иллюстративный целевой объект, который содержит только имена некоторых приложений для защиты от вредоносных программ, может получить относительно низкое значение показателя вредоносности, но все же может считаться подозрительным на вредоносность.
[0053] На этапе 206 приложение 40 определяет, является ли целевой объект вредоносным согласно предварительному сканированию на наличие вредоносных программ. Если нет, то приложение 40 переходит к выполнению этапа 210, описанного ниже. Если да, то на этапе 208 приложение 40 маркирует целевой объект как вредоносный и, соответственно, на этапе 230 обновляет кэш 56 на стороне клиента. Затем на этапе 232 клиентское приложение 40 для защиты от вредоносных программ выводит результат сканирования на наличие вредоносных программ.
[0054] В некоторых вариантах осуществления этап 232 может включать в себя выдачу предупреждения (например, в виде всплывающего окна) для информирования пользователя о том, что соответствующая клиентская компьютерная система может быть заражена. Как вариант, приложение 40 может документировать процесс сканирования на наличие вредоносных программ в системном журнале. В некоторых вариантах осуществления приложение 40 для защиты от вредоносных программ может для удобства пользователя выводить отчет о сканировании на экран, причем упомянутый отчет содержит, помимо прочего, имя (или идентификатор объекта) целевого объекта, индикатор типа обнаруженной вредоносной программы и дополнительную информацию относительно соответствующей вредоносной программы (например, возможные способы обработки объекта).
[0055] На этапе 210 клиентское приложение 40 для защиты от вредоносных программ может определить подозрительность целевого объекта на вредоносность согласно результату предварительного сканирования (см. этап 204 выше). Если да, то приложение переходит к выполнению этапа 212, описанного ниже. Если нет, то на этапе 228 приложение 40 может маркировать целевой объект как невредоносный (чистый) и продолжить работу, перейдя к этапу 230.
[0056] На этапе 212, если целевой объект является файлом, приложение 40 может загрузить целевой файл в безопасную среду, созданную эмулятором 46, для устранения всех уровней упаковки и/или шифрования, защищающих код целевого объекта. Если целевой объект является процессом, этап 212 при работе приложения 40 может быть пропущен, поскольку целевой объект уже будет загружен в системную память.
[0057] На этапе 214 подсистема 48 нормализации кода выполняет нормализацию кода целевого объекта. В зависимости от используемых параметров компиляции, в частности при оптимизации кода, компиляторы могут генерировать различный машинный код из одного и того же блока исходного кода. Дополнительные вариации кода могут быть внесены защитными/полиморфными вредоносными программами. В некоторых вариантах осуществления нормализация кода включает в себя преобразование набора процессорных инструкций и формирование целевого объекта из набора стандартизированных процессорных инструкций, чтобы устранить вариации машинного кода, внесенные компиляцией и/или другими полиморфизмами. Иллюстративный процесс нормализации кода может происходить следующим образом.
[0058] 1. Компилятор, используемый для компоновки целевого объекта, определяется согласно определенным признакам целевого объекта. Если компилятор известен, то расположение объектно-специфичного кода в отображении памяти целевого объекта определено. Если компилятор не может быть определен, то выбираются целевые области для извлечения кода, чтобы покрыть по возможности большее число потенциальных объектно-специфичных участков кода (например, точки входа, начало первой секции, начала всех секций и т.д.).
[0059] 2. Дизассемблирование кода начинается с места, найденного на предыдущем этапе. В некоторых вариантах осуществления дизассемблирование кода следует разветвлениям кода (обозначаемым, например, инструкциями JMP/Jxx/CALL в коде архитектуры х86). Дизассемблированные инструкции обрабатываются последовательно. В ходе процесса нормализации некоторые инструкции оставляют неизменными, а другие изменяют. Иллюстративные изменения включают в себя:
a) замену идентификаторов (IDs) регистров, основанную на порядке их появления в функциональном блоке;
b) удаление констант и смещений;
c) замену последовательностей инструкций POP и PUSH на инструкции MOV;
d) замену последовательностей, устанавливающих значение переменной/регистра/адреса памяти в 0 (например, операций XOR <операнд>, <операнд>), на инструкцию MOV <операнд>, 0;
e) замену сложения/вычитания 1 или 2 соответственно одной или двумя инструкциями INC/DEC;
f) замену инструкций JZ/JNZ соответственно инструкциями JE/JNE;
g) удаление прологов и эпилогов функций;
h) удаление классов инструкций CMP, MOV и TEST;
i) удаление не-операций (ADD и SUB с операндом 0; NOP и т.д.).
[0060] На фиг. 7 показан пример нормализации кода согласно некоторым вариантам осуществления данного изобретения. Фрагмент кода, дизассемблированного из иллюстративного целевого объекта, содержит блок 70 функции. В некоторых вариантах осуществления блоки функций начинаются с последовательности инструкций PUSH EBP; MOV EBP, ESP и заканчиваются инструкцией POP EBP. Каждая строка кода (процессорная инструкция) блока 70 функции модифицируется согласно предписанию, перечисленному справа, для получения соответствующего нормализованного блока 72 функции.
[0061] На этапе 216 (фиг. 6) клиентское приложение 40 для защиты от вредоносных программ вычисляет индикатор объектных данных (ODI) целевого объекта. В некоторых вариантах осуществления ODI 100 содержит множество индикаторов блока кода, причем каждый индикатор блока кода указывает на отдельный блок кода целевого объекта. Иллюстративный индикатор блока кода содержит шаблон кода операции соответствующего блока кода.
[0062] В некоторых вариантах осуществления блок кода содержит последовательность процессорных инструкций, причем эта последовательность извлекается из нормализованного кода целевого объекта. В некоторых вариантах осуществления блоки кода содержат предварительно заданное, не зависящее от кода количество инструкций. Как вариант, количество инструкций в блоке кода изменяется в пределах предварительно заданного диапазона. Иллюстративные блоки кода содержат от 5 до 50 следующих друг за другом инструкций. В некоторых вариантах осуществления размер (например, количество инструкций) блоков кода существенно меньше, чем размер блоков функций, с тем чтобы блок функции мог содержать более одного блока кода. В некоторых вариантах осуществления блоки кода запускаются или при запуске блока функции, или по инструкции CALL. Иллюстративный блок 74 кода показан на фиг. 7.
[0063] В некоторых вариантах осуществления этап 216 включает в себя разделение целевого объекта на блоки кода и извлечение набора индикаторов кода операции из каждого такого блока кода. На фиг. 8 показано иллюстративное двоичное представление памяти процессорной инструкции 80 (показанное для 32-битных процессоров семейства Intel 86). В некоторых вариантах осуществления каждая процессорная инструкция сохраняется в памяти в виде последовательности байтов, содержащей набор полей инструкции, например поле 82а префикса, несколько полей 82b-с кода операции, поле 82d режима адресации Reg R/M и поле 82е смещения/данных. В некоторых вариантах осуществления поля 82b-с кода операции кодируют тип инструкции (например, MOV, PUSH и т.д.), в то время как поля 82а, 82d-e кодируют различные параметры инструкции (например, имена регистров, адреса памяти и т.д.). В некоторых вариантах осуществления, например в формате х86, число байтов и содержимое полей инструкции зависят от типа инструкции и поэтому инструкции для архитектуры х86 имеют переменную длину. Инструкция, показанная на фиг. 8 (XOR CL, 12Н), содержит только первый байт кода операции (10000000 для XOR), байт режима адресации R/M (11110001 для регистра CL) и байт смещения/данных (00010010, что является двоичным представлением шестнадцатеричного числа 12Н), в то время как другие инструкции могут включать в себя оба поля кода операции либо другие комбинации полей префикса, кода операции, режима адресации и/или данных.
[0064] На фиг. 9 показан иллюстративный шаблон 90 кода операции, соответствующий блоку 74 кода. В некоторых вариантах осуществления шаблон 90 кода операции является структурой данных (например, последовательностью байтов, списком и т.д.), содержащей набор индикаторов 92 кода операции, причем каждый индикатор кода операции соответствует процессорной инструкции из нормализованного блока 74 кода. Иллюстративные индикаторы 92 кода операции содержат содержимое полей кода операции соответствующей процессорной инструкции, при этом шаблон 90 кода операции содержит последовательность типов инструкций, составляющих соответствующий блок кода. В варианте осуществления, показанном на фиг. 9, каждый индикатор 92 кода операции содержит комбинацию байтов кода операции и байтов параметра (например, индикатор кода операции для инструкции PUSH EDX является числом 52 в шестнадцатеричном формате).
[0065] На фиг. 10 показан фрагмент нормализованного кода и иллюстративный ODI 100 этого фрагмента согласно некоторым вариантам осуществления данного изобретения. ODI 100 содержит множество индикаторов 104а-с блока кода, причем каждый индикатор блока кода обеспечивает характеристический параметр (например, контрольную сумму, сигнатуру) соответствующего блока 74а-с кода. Иллюстративный индикатор 104а-с блока кода содержит соответствующий шаблон 90а-с кода операции. В некоторых вариантах осуществления индикаторы 104а-с блока кода включают в себя, соответственно, хеши шаблонов 90а-с кода операции, как показано на фиг. 10. Наряду с индикаторами 104а-с блока кода, некоторые варианты осуществления ODI 100 могут содержать идентификатор 102 объекта (например, идентификатор файла), тегирующий соответствующий целевой объект, и/или набор объектных индикаторов 106 признаков целевого объекта. Иллюстративные объектные индикаторы признаков включают в себя, помимо прочего, размер файла (например, 130 килобайт), индикатор типа файла (например, является ли файл исполняемой программой, DLL и т.д.), адрес памяти целевого объекта и набор цифр, указывающих на результат ряда эвристических тестов на наличие вредоносных программ (например, проявляет ли целевой объект определенное, специфичное для вредоносных программ поведение или содержимое). В некоторых вариантах осуществления объектные индикаторы 106 признаков могут быть вычислены сканерами 42-44 вредоносных программ, например, во время предварительного сканирования целевого объекта (на этапе 202).
[0066] Для упрощения в остальной части описания предполагается, что индикаторы 104а-с блока кода содержат хеши шаблонов 90а-с кода операции. При этом выполнение этапа 216 (см. фиг. 6) происходит следующим образом. Клиентское приложение 40 для защиты от вредоносных программ может разделять целевой объект на отдельные блоки кода (представленные блоками 74а-с кода на фиг. 10). Для каждого блока 74а-с кода приложение 40 может осуществлять вычисление соответствующего шаблона 90а-с кода операции, как показано на фиг. 9. При этом приложение 40 может вызывать хеширующий механизм 54 для вычисления хеша шаблона 90а-с кода операции и создания соответствующего индикатора 104а-с блока кода (то есть целевого хеша). Хеширующий механизм 54 может использовать в качестве хеширующего алгоритма, помимо прочего, контроль с использованием циклического избыточного кода (CRC), профилирование сообщений (MD) или безопасное хеширование (SHA).
[0067] После вычисления целевого ODI 100 на этапе 218 (фиг. 6) клиентское приложение 40 для защиты от вредоносных программ выполняет поиск ODI в кэше 56 на стороне клиента. Если ODI совпадает с записью кэша (результативное обращение в кэш), что указывает на то, что соответствующий целевой объект уже был просканирован на предмет поиска вредоносных программ по меньшей мере один раз, то приложение 40 переходит к этапу 220, маркируя целевой объект согласно записи кэша (например, как чистый или как вредоносный), и далее переходит к этапу 232, описанному выше.
[0068] Если целевой ODI 100 не имеет совпадений в кэше 56 на стороне клиента, то на этапе 222 приложение 40 может вызвать клиентский коммуникационный менеджер 52 для инициирования клиент-серверной транзакции сканирования. Коммуникационный менеджер 52 передает целевой ODI 100 к серверам 20а-с защиты от вредоносных программ и, на этапе 224, получает от серверов 20а-с отчет 50 о сканировании. В некоторых вариантах осуществления каждый ODI может образовывать часть отдельной транзакции клиент-серверного сканирования либо несколько ODI могут быть переданы одновременно, в рамках одной транзакции (пакетная обработка).
[0069] На этапе 226 приложение 40 определяет, является ли целевой объект занесенным в вайтлист (чистым) согласно отчету 50 о сканировании. Если да, то целевой объект маркируется как невредоносный (этап 228). Если целевой объект, согласно отчету 50 о сканировании, является вредоносным, то приложение 40 маркирует целевой объект как вредоносный (этап 208).
[0070] На фиг. 11 показана иллюстративная последовательность этапов, выполняемых показанным на фиг. 5 серверным приложением для защиты от вредоносных программ согласно некоторым вариантам осуществления данного изобретения. На этапе 302 коммуникационный менеджер 62 сервера защиты от вредоносных программ получает целевой ODI 100 от клиентской компьютерной системы 30. На этапе 304 приложение 60 выполняет поиск ODI 100 в серверном кэше 68. Если ODI совпадает с записью кэша (результативное обращение в кэш), что указывает на то, что соответствующий целевой объект уже был просканирован на наличие вредоносных программ по меньшей мере один раз, то приложение 60 переходит к этапу 306, маркируя целевой объект согласно записи кэша (например, как чистый или как вредоносный). На этапе 308 коммуникационный менеджер 62 компилирует отчет 50 о сканировании и передает упомянутый отчет 50 в соответствующую клиентскую компьютерную систему 30.
[0071] Если в серверном кэше 68 не найдена какая-либо запись ODI 100, то на этапе 310 серверное приложение 60 выполняет фильтрацию хешей ODI 100 для создания релевантного подмножества хешей. В некоторых вариантах осуществления хеши шаблонов кода операции, которые не являются объектно-специфичными, могут быть отброшены из ODI 100 для повышения производительности сканирования вредоносных программ. Такие неспецифичные шаблоны кода операции соответствуют, например, коду распаковщика (например, инсталлятора, самораспаковывающегося архива) и/или коду библиотеки либо присутствуют как в чистых объектах, так и во вредоносных объектах.
[0072] На этапе 312 серверное приложение 60 для защиты от вредоносных программ может запросить для каждого хеша ODI 100 базу 65 данных вайтлиста для получения набора занесенных в вайтлист ссылочных объектов, содержащих соответствующий хеш. В некоторых вариантах осуществления используется алгоритм на основе "кучи" для упорядочивания полученных ссылочных объектов согласно их подобию целевому объекту.
[0073] На этапе 314 серверное приложение 60 для защиты от вредоносных программ вызывает модуль 64 сравнения кода для вычисления показателя подобия, характеризующего степень подобия целевого объекта каждому занесенному в вайтлист ссылочному объекту, полученному на этапе 312. В некоторых вариантах осуществления показатель подобия вычисляется согласно формуле
T
R
где С обозначает число (количество) хешей, общих как для целевого объекта, так и для соответствующего ссылочного объекта, Ν обозначает число (количество) хешей целевого ODI, отфильтрованных на этапе 310, как было описано выше, и N обозначает число (количество) хешей ссылочного объекта.
[0074] В альтернативных вариантах осуществления показатель подобия может вычисляться, например, согласно формулам:
или
[0075] На этапе 316 приложение 60 сравнивает показатель подобия (например, вычисленный по формуле [1]) с заданным пороговым значением. Если показатель подобия превышает пороговое значение, что указывает на то, что целевой объект подобен по меньшей мере одному занесенному в вайтлист объекту, то в некоторых вариантах осуществления на этапе 318 серверное приложение 60 для защиты от вредоносных программ может маркировать целевой объект как невредоносный (чистый). Иллюстративное значение порогового значения для вайтлистинга равно 50, что указывает на то, что целевой объект заносится в вайтлист, если более чем 50% его шаблонов кода являются общими как для этого целевого объекта, так и объекта из вайтлиста.
[0076] Затем, на этапе 320, обновляют базу 65 данных вайтлиста путем записи текущего целевого объекта, при этом на этапе 322 обновляют серверный кэш 68 путем записи целевого объекта и индикатора результата сканирования (например, чистый).
[0077] Если показатель подобия вайтлистинга (этап 318) не превышает порогового значения, что указывает на то, что целевой объект недостаточно подобен какому-либо известному объекту, занесенному в вайтлист, то серверное приложение переходит к этапу 324, на котором целевой ODI 100 сравнивают с набором записей вредоносных объектов. В некоторых вариантах осуществления при этом фильтруют набор хешей ODI 100 для удаления всех хешей, которые совпали с записями из базы 65 данных вайтлиста (см. этап 312 выше), вследствие чего остается подмножество хешей, которые не найдены в каком-либо из известных объектов, занесенных в вайтлист. Для каждого такого нераспознанного хеша целевого объекта модуль 64 сравнения кода может запросить базу 66 данных вредоносных программ и/или эпидемическую базу 67 данных для получения набора вредоносных объектов, содержащих соответствующий хеш. Затем, на этапе 326, модуль 64 сравнения кода может выполнить вычисления показателя подобия вредоносности, показывающего степень подобия целевого объекта каждому такому вредоносному объекту. В некоторых вариантах осуществления модуль 64 сравнения кода использует для вычисления показателя подобия вредоносности любую из формул [1-3], описанных выше.
[0078] На этапе 328 показатель подобия вредоносности сравнивается с заданным пороговым значением. Если показатель подобия вредоносности превышает заданное пороговое значение, что указывает на то, что целевой объект подобен по меньшей мере одному вредоносному объекту, хранящемуся в базах 66-67 данных, то целевой объект маркируют на этапе 330 как вредоносный. Иллюстративное пороговое значение для классификации объекта как вредоносного равно 70 (то есть целевой объект имеет по меньшей мере 70% шаблонов кода операции, общих также и для известного вредоносного объекта). Затем базу 66 данных вредоносных программ и/или эпидемическую базу 67 данных обновляют путем включения в них записи целевого объекта. Серверный кэш 68 обновляют путем включения в него записи целевого объекта и индикатора его вредоносности (например, заражен), компилируют отчет о сканировании и передают его в клиентскую компьютерную систему (этап 308).
[0079] Если показатель подобия вредоносности не превышает пороговое значение, что указывает на то, что целевой объект не подобен известным вредоносным объектам, то в некоторых вариантах осуществления серверные приложения для защиты от вредоносных программ могут маркировать целевой объект как занесенный в вайтлист/невредоносный (этап 318) и соответственно обновлять базу 65 данных вайтлиста.
[0080] Целевой ODI 100 может также инициировать предупреждение о возникновении эпидемии. В некоторых вариантах осуществления серверное приложение 60 для защиты от вредоносных программ подсчитывает в эпидемической базе 67 данных ссылочные объекты, которые подобны целевому объекту и были получены серверными вычислительными системами 20а-с защиты от вредоносных программ в течение заданного периода времени (например, за последние 6 часов). Если подсчитанное количество превышает пороговое значение (например, 10), то делают предположение об эпидемии, при этом целевой объект, а также все подобные ему ссылочные объекты маркируют как зараженные. Затем соответственно обновляют базу 66 данных вредоносных программ и/или эпидемическую базу 67 данных.
[0081] Иллюстративные системы и способы, описанные выше, обеспечивают возможность гибкого поддержания базы данных вайтлиста и использования этой базы данных для повышения производительности обнаружения вредоносных программ системой защиты от вредоносных программ.
[0082] В традиционных приложениях вайтлистинга хеш целевого объекта (компьютерный файл или процесс) сравнивают с набором хешей, соответствующих занесенным в вайтлист объектам (доверенным объектам, которые являются чистыми). Если хеш целевого объекта совпадает с хешем вайтлиста, что указывает на то, что целевой объект идентичен по меньшей мере одному из занесенных в вайтлист объектов, то целевой объект считают доверенным и, например, разрешают его выполнение. Вследствие определенных математических свойств хеш-функций традиционный вайтлистинг не учитывает вариации в коде заносимых в вайтлист объектов, то есть если два объекта отличаются всего на один бит, то хеши этих двух объектов больше не совпадают. В то же время легальные компьютерные файлы и процессы могут демонстрировать существенные вариации, например, вследствие различий, имеющихся у разных компиляторов или у последующих версий одного и того же программного обеспечения.
[0083] Некоторые варианты осуществления систем и способов, описанных выше, позволяют системе защиты от вредоносных программ учитывать безвредные различия между объектами данных, например различия, вносимые компиляторами и другими полиморфизмами. Целевой объект разделяют на множество блоков кода и для каждого блока кода вычисляют хеш. Полученный набор целевых хешей затем сравнивают с базой данных хешей, соответствующих блокам кода, извлеченным из объектов, занесенных в вайтлист. Целевой объект может быть маркирован как занесенный в вайтлист (доверенный), если он имеет существенное число хешей, сходных с хешами, присущими занесенному в вайтлист объекту. Объекты, незначительно отличающиеся от известных занесенных в вайтлист объектов, все же могут получить статус "занесенный в вайтлист". Благодаря тому, что в некоторых вариантах осуществления данного изобретения допускают определенную степень несовпадения между наборами хешей отдельных объектов, тем самым повышают эффективность вайтлистинга, не допуская при этом снижения безопасности данных.
[0084] Размер блока кода может быть определен согласно нескольким критериям. Маленькие блоки кода (каждый из которых содержит, например, несколько процессорных инструкций) могут привести к большому количеству хешей для одного целевого объекта, что может увеличить нагрузку на устройства хранения и на обрабатывающий процессор сервера защиты от вредоносных программ и замедлить сканирование. С другой стороны, маленькие блоки кода предлагают значительный уровень гибкости: если два объекта будут отличаться лишь немного, то различия будут отражены только небольшой частью хешей, при этом будет создан показатель подобия с высоким значением. Большие блоки кода (например, несколько сотен процессорных инструкций) создают в среднем меньшее количество (например, несколько) хешей на один целевой объект и поэтому выгодны с точки зрения хранения и обработки. Однако большие блоки кода приводят к тем же недостаткам, что и традиционное хеширование: небольшие различия между двумя объектами могут быть отражены значительной долей хешей, при этом создается показатель подобия с низким значением. Тестирование выявило оптимальный размер блока кода, содержащий от 5 до 50 процессорных инструкций, и, в частности, приблизительно 5-15 (например, 10) инструкций в некоторых вариантах осуществления.
[0085] Иллюстративные системы и способы, описанные выше, позволяют системе защиты от вредоносных программ проводить совместную клиент-серверную транзакцию сканирования и определять статус вредоносности целевого объекта согласно результатам сканирования целевого объекта на стороне сервера. Проведение части сканирования вредоносных программ на удаленном сервере защиты от вредоносных программ имеет много преимуществ перед локальным сканированием целевых объектов на клиентской компьютерной системе.
[0086] Быстрое распространение агентов вредоносных программ и программного обеспечения в целом способствовало устойчивому увеличению размеров вайтлиста и баз данных хеша вредоносных программ, причем эти размеры могут быть от нескольких мегабайт до нескольких гигабайт данных. Иллюстративные способы и системы, описанные выше, позволяют хранить базы данных хеша на сервере защиты от вредоносных программ и, таким образом, позволяют избежать систематической передачи обновлений программного обеспечения, имеющих большой объем данных, от корпоративного сервера к большому количеству клиентов.
[0087] Благодаря выполнению существенной части сканирования вредоносных программ централизованным способом на сервере описанные выше системы и способы обеспечивают возможность своевременной актуализации хешей недавно обнаруженных вредоносных программ и нового легального программного обеспечения. В отличие от этого при традиционном обнаружении вредоносных программ, в котором сканирование преимущественно распределено по клиентским компьютерным системам, сбор информации о новых угрозах нарушения безопасности и новом программном обеспечении, занесенном в вайтлист, может включать в себя косвенные методы, при этом процесс поступления такой информации к производителям программного обеспечения для защиты от вредоносных программ занимает значительно более продолжительное время.
[0088] Размер файлов, которыми обмениваются между собой описанные выше клиентские и серверные системы защиты от вредоносных программ, сведен к минимуму. Вместо необходимости отправки от клиента к серверу всех целевых объектов для их сканирования на стороне сервера описанные выше иллюстративные способы и системы выполнены с возможностью обмена хешами, размеры которых могут составлять от несколько байтов до нескольких килобайтов для одного целевого объекта, в связи с чем значительно снижается сетевой трафик.
[0089] Любому специалисту ясно, что вышеупомянутые варианты осуществления могут быть изменены разными способами, не отступая от объема правовой защиты изобретения. Соответственно, объем правовой защиты изобретения должен определяться следующей формулой изобретения и ее юридически допустимыми эквивалентами.