ОБНАРУЖЕНИЕ УГРОЗЫ НУЛЕВОГО ДНЯ С ИСПОЛЬЗОВАНИЕМ СОПОСТАВЛЕНИЯ ВЕДУЩЕГО ПРИЛОЖЕНИЯ/ПРОГРАММЫ С ПОЛЬЗОВАТЕЛЬСКИМ АГЕНТОМ
DETECTING A THREAT OF A ZERO DAY WITH THE USE OF COMPARISON OF A LEADING APPLICATION/PROGRAM WITH A USER AGENT

Область техники, к которой относится изобретение
Описанные в настоящем документе варианты осуществления изобретения касаются сетевой безопасности и, в частности, касаются технологии обнаружения угроз нулевого дня.
Уровень техники
Ботнеты и вредоносные программы используют поле пользовательского агента в протоколе (HTTP) передачи гипертекста для взаимодействия с сервером управления и контроля. Недавно обнаруженные постоянные угрозы повышенной сложности показали вредоносную программу, которая использует HTTP клиент для сигнализации системам управления и контроля. Иногда пользовательский агент помогает при идентификации с помощью технологий, основанных на сигнатурах, как в случае вредоносного ботнета IKEE.B для iPhone компании Apple. Эта вредоносная программа использует команду HTTP wget с пользовательским агентом.
Авторы вредоносной программы осознали, что системы защиты от вредоносных программ знают об этом использовании поля пользовательского агента, и предприняли контрмеры. В настоящее время ботнеты начали вводить случайность в HTTP передачи для обхода защит от вредоносных программ на основе сигнатур пользовательского агента. Они могут использовать встроенный механизм, который может выработать случайных пользовательских агентов при загрузке вторичной полезной нагрузки. Таким образом, желательно пересмотреть путь обнаружения системой защиты от вредоносных программ передач по управлению и контролю.
Кроме того, даже когда системы вредоносных программ или ботнетов не вводят случайность в идентифицирующую информацию пользовательского агента, обнаружение на основе сигнатур может обнаружить только известные угрозы, которые обладают ранее идентифицированными сигнатурами вредоносных программ. Желательно предложить способ обнаружения вредоносных программ нулевого дня (ранее неизвестных).
Краткое описание чертежей
Фиг. 1 - вид, показывающий таблицу, иллюстрирующую сопоставление ведущего приложения с пользовательскими агентами в соответствии с одним вариантом осуществления изобретения;
фиг. 2 - вид, показывающий схему, иллюстрирующую технологию обнаружения угроз нулевого дня с использованием сопоставления ведущих приложений с пользовательскими агентами в соответствии с одним вариантом осуществления изобретения;
фиг. 3 - вид, показывающий блок-схему, иллюстрирующую технологию анализа пользовательских агентов в соответствии с одним вариантом осуществления изобретения;
фиг. 4 - вид, показывающий структурную схему, иллюстрирующую сетевое устройство в соответствии с одним вариантом осуществления изобретения;
фиг. 5 - вид, показывающий структурную схему, иллюстрирующую вычислительное устройство для использования с технологиями, описанными в настоящем документе, в соответствии с одним вариантом осуществления изобретения;
фиг. 6 - вид, показывающий структурную схему, иллюстрирующую вычислительное устройство для использования с технологиями, описанными в настоящем документе, в соответствии с другим вариантом осуществления изобретения;
фиг. 7 - вид, показывающий структурную схему, иллюстрирующую сеть программируемых устройств в соответствии с одним вариантом осуществления изобретения.
Осуществление изобретения
В приведенном ниже описании для обеспечения глубокого понимания изобретения и для объяснения рассмотрено большое количество конкретных деталей. Тем не менее, специалистам в рассматриваемой области ясно, что настоящее изобретение может быть реализовано без этих конкретных деталей. В других примерах, структура и устройства показаны в форме структурных схем, чтобы не затемнять изобретение. Ссылочные позиции, выраженные числами без нижних индексов или суффиксов, надо понимать как относящиеся к соответствующим ссылочным позициям с любыми нижними индексами и суффиксами. Более того, язык, используемый в этом изобретении, преимущественно выбран с точки зрения четкости и обучения и не мог быть выбран для установления границ или обозначения пределов объекта патентования изобретения, для чего нужна формула изобретения. Ссылки в этом описании на «один вариант осуществления изобретения» или «некоторый вариант осуществления изобретения» означают, что конкретный признак, структура или характеристика, описанная в связи с вариантами осуществления настоящего изобретения, содержится, по меньшей мере, в одном варианте осуществления настоящего изобретения, а несколько ссылок на «один вариант осуществления изобретения» или «некоторый вариант осуществления изобретения» не должны рассматриваться как обязательно относящиеся к одному и тому же варианту осуществления изобретения.
В настоящем документе термин «программируемое устройство» может означать одно программируемое устройство или несколько программируемых устройств, работающих вместе для реализации функции, описанной как функция, реализуемая программируемым устройством. Аналогично, «считываемым машиной носителем» может называться один физический носитель или несколько носителей, которые вместе могут хранить материал, описанный как материал, хранимый на считываемом машиной носителе.
В настоящем документе термин «вредоносная программа» относится к любому программному обеспечению, используемому для нарушения работы программируемого устройства, сбора чувствительной информации или получения доступа к частным системам или сетям. Вредоносные программы включают в себя вирусы (в том числе, черви, «троянские кони» и так далее), программы-вымогатели, программы-шпионы, рекламное программное обеспечение, поддельные антивирусные программы и вредоносные программы любого другого типа.
В настоящем документе термин «приложение» относится к любой исполнимой программе, которая может быть автономным программным обеспечением или может являться компонентом другой программы или может содержаться в другой программе.
В настоящем документе термин «пользовательский агент» относится к текстовой строке, обеспеченной HTTP связью и обычно выработанной HTTP GET, которая запрашивает данные от другой компьютерной системы, при этом HTTP GET определяет поле заголовка запроса пользовательского агента. Строка пользовательского агента содержит информацию о программном обеспечении, которое создало запрос. Это поле может содержать несколько маркеров продуктов и комментариев, идентифицирующих агента и любые подпродукты, которые образуют существенную часть пользовательского агента. По традиции маркеры продуктов перечислены в порядке их значимости для идентификации приложения.
С помощью отслеживания пользовательских агентов, видимых в сети для ведущего процесса/приложения, которое их выработало, можно построить таблицу сопоставления, которая сопоставляет ведущие процессы/приложения и пользовательские агенты. С помощью этого сопоставления становятся возможны несколько сценариев:
Если существует сопоставление ведущего процесса/приложения и пользовательского агента и для ведущего процесса/приложения обнаружен новый пользовательский агент, то это может указывать на эксплойт.
При обновлении существующего ведущего процесса или приложения, обновление может указывать небольшое изменение в поле пользовательского агента. Мы может использовать логическую схему для т ого, чтобы автоматически узнать о новом сопоставлении.
Когда в сети устанавливают новый ведущий процесс или приложение, мы может узнать сопоставление ведущего приложения и пользовательского агента с помощью администратора.
Быстрое изменение сопоставления ведущего процесса и его пользовательского агента может указывать на аномальное поведение. Например, браузер может предоставлять возможность вручную изменять информацию о пользовательском агенте, но это не происходит быстро.
Указанное представляет собой подход к обнаружению вредоносных программ в сети без использования сигнатур. Благодаря созданию сопоставления ведущего процесса/приложения и пользовательского агента, любое отклонение известного сопоставления ведущий процесс-пользовательский агент может считаться аномальным, предоставляющим пользователю-администратору возможность рассмотреть новое сопоставление и отреагировать на атаку вредоносной программы или помочь системе узнать о новом пользовательском агенте для нового или существующего ведущего процесса. Изложенное ниже иллюстрирует технологии узнавания сопоставления ведущего процесса и пользовательского агента и объявления тревоги для возможно вредоносных пользовательских агентов в сети.
На фиг. 1 показана таблица, иллюстрирующая список 100 ведущих приложений и связанных пользовательских агентов в соответствии с одним вариантом осуществления изобретения. Таким образом, например, исполнимый файл (ACRORD32.EXE) программного обеспечения ADOBE READER (ADOBE и READER являются зарегистрированными торговыми марками компании Adobe Systems Incorporated) соответствует в этом примере строке «Microsoft-CryptoAPI/6.1» пользовательского агента. Одна и та же строка пользовательского агента может быть связана с несколькими ведущими приложениями. Например, строка пользовательского агента, связанная с Adobe Reader, в этом примере также связана с IEXPLORE.EXE, MAINTENANCESERVICE.EXE, MSIEXEC.EXE, SKYPE.EXE и SVCHOST.EXE. Одно ведущее приложение может быть связано с несколькими строками пользовательских агентов. Например, в примере списка с фиг. 1, приложение SVCHOST.EXE связано со строками «Microsoft NCSI» и «Microsoft-CryptoAPI/6.1» пользовательских агентов. Сопоставление приложений и пользовательских агентов, показанное на фиг. 1, приведено для иллюстрации и только для примера; другие приложения, пользовательские агенты и сопоставления могут быть видны в сетевом устройстве, которое применяет описанные ниже технологии, в зависимости от сетевого трафика, перехватываемого сетевым устройством.
На фиг. 2 показана схема, иллюстрирующая технологию обнаружения угроз нулевого дня с использованием сопоставления ведущих приложений с пользовательскими агентами в соответствии с одним вариантом осуществления изобретения. В этом примере ведущая машина 210 вырабатывает HTTP запрос на сервер 250. Хотя в настоящем документе используются слова «ведущая машина» и «сервер», в эти названия не вкладывается никакого особого значения; каждое устройство может быть программируемым устройством любого типа, способным направлять и принимать сообщения HTTP протокола.
Сетевое устройство 220, соответствующее этому варианту осуществления изобретения, перехватывает трафик сетевого протокола и реализует описанные ниже технологии обнаружения угрозы нулевого дня. Хотя в этом примере сетевое устройство является отдельным устройством, расположенным между ведущей машиной 210 и сервером 250, описанные в настоящем документе технологии могут быть реализованы в виде компонента или модуля, исполняемого или ведущей машиной 210 или сервером 250 или обоими устройствами. В качестве альтернативы описанные ниже функциональные возможности могут быть реализованы в нескольких отдельных устройствах вместо одного сетевого устройства.
На этапе 260, когда приложение, работающее в ведущей машине 210, пытается выполнить HTTP GET с использованием сервера 250, программное обеспечение защиты от вредоносных программ, работающее в ведущей машине 210, предоставляет метаданные, касающиеся желаемого соединения с сервером 230 метаданных сетевого устройства 220. В одном варианте осуществления изобретения метаданные содержат хэш-значение исполнимого файла, пытающегося выполнить HTTP GET, такое как MD5 хэш-значение, а также набор из 5 элементов данных, соответствующих соединению: адрес источника, адрес назначения, порт источника, порт назначения и протокол. Сервер 230 метаданных использует хэш-значение для идентификации приложения, с использованием базы данных, связывающей хэш-значения и идентификационную информацию приложений. Первая часть каждой записи в таблице 100 указывает, что в одном варианте осуществления изобретения идентификационная информация приложения представлена как название исполнимого файла, такое как «ACRORD32.EXE».
Далее, на этапе 262 сервер 230 метаданных предоставляет метаданные на механизм разбора протокола/HTTP прокси-сервер 240, теперь метаданные содержат идентификатор исполнимого файла. Далее механизм 240 разбора протокола помещает информацию метаданных в кэш-память (не показана на фиг. 2). Механизм разбора протокола/HTTP прокси-сервер 240 может быть реализован как отдельные модули или компоненты, отделяющие механизм разбора протокола от механизма HTTP прокси-сервера.
На этапе 264 ведущая машина 210 начинает процедуру установления связи, которая начинает соединение программы (TCP) управления переносом с сервером 250 путем направления SYN пакета. HTTP прокси-сервер 240 принимает SYN пакет и устанавливает связывание, которое соотносит метаданные и соединение до прохождения SYN пакета на сервер 250 на этапе 268. На этапах 270 - 272 осуществляют оставшуюся часть стандартной трехэтапной процедуры установления связи, при этом на этапе 270 сервер 250 направляет пакет SYN + ACK, а на этапе 272 ведущая машина 210 отвечает пакетом ACK с целью завершения установления TCP соединения между ведущей машиной 210 и сервером 250.
На этапе 274 ведущая машина 210 направляет пакет данных с помощью соединения, установленного с сервером 250, при этом указанный пакет данных перехватывает HTTP прокси-сервер и направляет на механизм разборки протокола модуля 240 механизма разборки протокола/HTTP прокси-сервера. На этапе 276 механизм разборки протокола разбирает полезную нагрузку пакета данных с целью получения данных пользовательского агента, расположенных в команде HTTP GET, содержащейся в пакете данных, если указанные данные присутствуют. Ведущее приложение и пользовательский агент вместе предоставляют для анализа в ходе процесса 280, с использованием описанных ниже технологий анализа, при этом пытаются обнаружить на ведущей машине 210 вредоносные программы.
На этапе 292 механизм разборки протокола и HTTP прокси-сервер передают пакет данных на сервер 250, если политики безопасности позволяют такую передачу. В одном варианте осуществления изобретения сетевое устройство 220 выполнено в виде сетевого экрана или устройства системы защиты от вторжения и может содержать политики безопасности, которые не связаны с сопоставлением ведущих приложений и пользовательских агентов и которые могут вынудить сетевое устройство 220 отказать в перенаправлении на сервер 250 пакета данных, направленного на этапе 274. В некоторых вариантах осуществления изобретения процесс 280 анализа также может вызвать отказ в предоставлении возможности направить пакет данных на сервер 250. Далее на этапе 294 сервер 250 отвечает на HTTP GET данными, которые перехвачены механизмом разборки протокола/HTTP прокси-сервером 240 и перенаправлены на ведущую машину 210 на этапе 296.
На фиг. 3 показана блок-схема, иллюстрирующая некоторый вариант осуществления процесса 280 анализа, направленного на анализ данных пользовательского агента. В блоке 310 идентифицируют ведущее приложение. В блоке 320 осуществляют поиск ведущего приложения в кэш-памяти сопоставлений ведущих приложений и пользовательских агентов. В блоке 330 определяют результат этого поиска. Если ведущее приложение не найдено в кэш-памяти сопоставлений ведущих приложений и пользовательских агентов, то в блоке 390 новое ведущее приложение связывают с пользовательским агентом и эту связь сохраняют в кэш-памяти сопоставлений ведущих приложений и пользовательских агентов. Хотя на фиг. 3 ссылаются на кэш-память, может быть использовано запоминающее устройство любого типа для данных ведущих приложений и связанных с ними пользовательскими агентами, в том числе могут быть использованы базы данных любого типа, простые файлы и так далее, которые могут храниться в запоминающем устройстве любой формы, которое содержится в сетевом устройстве 220. Помимо данных ведущих приложений и пользовательских агентов, в кэш-памяти могут храниться любые другие нужные данные, такие как счетчик количества раз наблюдения пары ведущее приложение/пользовательский агент.
Если в кэш-памяти найдено ведущее приложение, то в блоке 340 пользовательский агент, идентифицированный в текущем пакете данных, сравнивают с пользовательским агентом или агентами, связанными с ведущим приложением в кэш-памяти. Если найдено совпадение, то в блоке 360 может быть увеличен счетчик, указывающий сколько раз сетевое устройство 220 сталкивалось с HTTP GET с этой парой ведущее приложение-пользовательский агент. Хотя это не показано на фиг. 3, в некоторых вариантах осуществления изобретения может быть выполнена дополнительная проверка с целью определения, известно ли, что текущее ведущее приложение и пользовательский агент являются вредоносными программами, и в ответ на результат такого определения может быть предпринято некоторое действие.
Если пользовательский агент в текущем пакете данных не совпадает ни с одним ранее связанным пользовательским агентом, то в блоке 350 в кэш-память может быть добавлена новая связь ведущего приложения с пользовательским агентом. Данные пользовательского агента, связанного с ведущим приложением, могут изменяться со временем при обновлении ведущего приложения, таком как новый релиз программного обеспечения. В такой ситуации обычно модифицируют данные пользовательского агента для приложения, часто путем сохранения первой части данных пользовательского агента и изменения второй части, обычно следующей в строке за первой частью. В одном варианте осуществления изобретения может быть обнаружено и указано частичное совпадение информации пользовательского агента. Такое частичное совпадение известного сопоставления приложения, не являющегося вредоносной программой, и пользовательского агента, в целом, рассматривается как обладающее малым риском содержания вредоносной программы.
В одном варианте осуществления изобретения один вариант конфигурации позволяет администратору установить пороговое значение для количества пользовательских агентов, которые могут быть связаны с ведущим приложением, до определения состояния наличия вредоносной программы. В некоторых вариантах осуществления изобретения пороговое значение может быть установлено для отдельных приложений, что позволяет некоторым приложениям обладать другими пороговыми значениями по сравнению с остальными приложениями. В других вариантах осуществления изобретения для всех приложений может быть установлено одно пороговое значение. В еще одних вариантах осуществления изобретения может быть установлено общее пороговое значение, которое применяют как значение по умолчанию для всех приложений из кэш-памяти, но которое можно переписать некоторым пороговым значением для конкретного ведущего приложения. В блоке 370 определяют, превышает ли количество пользовательских агентов, связанных с ведущим приложением, пороговое значение, и если превышает, то в блоке 380 может быть выработано указание на возможное наличие вредоносной программы. Указание может быть любого типа, в том числе может быть флагом, сообщением и так далее. Указание может быть сохранено в месте, доступном для администратора или другой программы, или, при желании, может быть направлено такому администратору или программе. Указание может содержать любые нужные данные, в том числе данные одного или нескольких приложений и пользовательских агентов из текущего пакета данных, а также любую другую информацию, доступную из кэш-памяти или других источников данных.
В некоторых вариантах осуществления изобретения процесс 280 анализа может быть способен вызвать блокировку пакета данных, из которых были извлечены данные HTTP GET пользовательского агента. В других вариантах осуществления изобретения, в блоке 380, в ходе анализа может быть просто выработано указание о возможности вредоносной программы, которая далее может быть обнаружена администратором или другой программой и использована для дальнейшего анализа, включающего в себя запуск сканирования или другой анализ состояния ведущей машины 210 в попытке определить расположение вредоносной программы и возможно удалить вредоносную программу. Указание показывает, что приложение подозрительно и в дальнейшем должно быть проанализировано.
Хотя настоящее изобретение написано в терминах HTTP GET, те же самые технологии могут быть использовано для других протоколов, отличающихся от HTTP, и для других команд, отличных от HTTP GET.
На фиг. 4 показана структурная схема внутренней структуры одного варианта осуществления сетевого устройства 400 (соответствующего сетевому устройству 210 с фиг. 2, соединенному между ведущей машиной 210 и сервером 250), которое может реализовать описанные выше технологии. Компоненты или модули, показанные на фиг. 4, могут быть реализованы с помощью аппаратного обеспечения, аппаратнореализованного программного обеспечения, программного обеспечения или с помощью любого объединения перечисленного. При желании могут содержаться другие компоненты и, при желании, любые компоненты или модули могут быть объединены с любым одним или несколькими другими компонентами или модулями. Расположение компонентов или модулей с фиг. 4 приведено для иллюстрации и для примера и не предназначено для представления любого физического расположения. В настоящем документе термины «компонент» и «модуль» считаются синонимами.
Сервер 405 метаданных соответствует серверу 230 метаданных с фиг. 2. Кэш-память метаданных предоставляет место хранения метаданных, предоставляемых на сервер 405 метаданных, и может быть реализована с использованием любой технологии хранения на постоянной или временной основе, в том числе технологий долговременного хранения. Модуль 415 идентификатора ведущего приложения позволяет осуществлять анализ метаданных с целью определения ведущего приложения, делающего HTTP GET запрос. Механизм 420 разборки протокола используют для разборки HTTP протокола, что позволяет извлечь данные пользовательского агента из HTTP GET запроса. Модуль 425 администрирования и конфигурации позволяет администратору сетевого устройства 400 администрировать сетевое устройство 400, конфигурировать его по желанию, например, устанавливать пороговое значение (значения) для пользовательского агента, описанные выше при рассмотрении блока 370. Другие параметры или значения конфигурации могут быть установлены модулем 425, в том числе варианты конфигурации, определяющие, какой ответ, при необходимости, должен быть выработан при указании на вредоносную программу, при этом указанный ответ может быть установлен в блоке 380.
В одном варианте осуществления изобретения модуль 425 администрирования и конфигурации может позволить администратору заранее загрузить общеизвестные сопоставления в кэш-память сопоставлений ведущих приложений и пользовательских агентов. Аналогично, варианты осуществления изобретения могут позволить администратору модифицировать кэш-память, выполняя желаемые изменения в собранных данных, такие как добавление записей для вновь идентифицированных связей приложений с пользовательскими агентами или обновление записи с целью маркировки связи как указывающей на вредоносную программу.
На фиг. 5 показана структурная схема, иллюстрирующая программируемое устройство 500, которое может быть использовано в сетевом устройстве 210 в соответствии с одним вариантом осуществления изобретения. Программируемое устройство, показанное на фиг. 5, является микропроцессорным программируемым устройством 500, которое содержит первый обрабатывающий элемент 570 и второй обрабатывающий элемент 580. Хотя показаны два обрабатывающих элемента 570 и 580, некоторый вариант осуществления программируемого устройства 500 также может содержать только один такой обрабатывающий элемент.
Программируемое устройство 500 показано как система соединений точка-точка, в которой первый обрабатывающий элемент 570 и второй обрабатывающий элемент 580 связаны с помощью соединения 550 точка-точка. Любое или все соединения, показанные на фиг. 5, могут быть реализованы как многоточечная шина, а не как соединения точка-точка.
Как показано на фиг. 5, каждый из обрабатывающих элементов 570 и 580 может быть многоядерным процессором, содержащим первое и второе ядра (то есть ядра 574а и 574b процессора и ядра 584а и 584b процессора) процессора. Такие ядра 574a, 574b, 584a, 584b могут быть выполнены с возможностью исполнения командного кода, аналогично тому, как описано выше при рассмотрении фиг. 1 - 4. Тем не менее, другие варианты осуществления изобретения могут использовать обрабатывающие элементы, которые, при желании, являются одноядерными процессорами. В вариантах осуществления изобретения с несколькими обрабатывающими элементами 570, 580, каждый обрабатывающий элемент, при желании, может быть реализован с различным количеством ядер.
Каждый обрабатывающий элемент 570, 580 может содержать, по меньшей мере, одну совместно используемую кэш-память 546. Совместно используемая кэш-память 546а, 546b может хранить данные (например, команды), которые используются одним или несколькими компонентами обрабатывающего элемента, такими как ядра 574a, 574b и 584a, 584b, соответственно. Например, совместно используемая кэш-память может локально содержать данные, хранящиеся в памяти 532, 534, с целью более быстрого доступа компонентов обрабатывающих элементов 570, 580. В одном или нескольких вариантах осуществления изобретения совместно используемая кэш-память 546а, 546b может содержать одну или несколько кэш-памятей среднего уровня, такого как уровень 2 (L2), уровень 3 (L3), уровень 4 (L4) или другие уровни кэш-памяти, кэш-память (LLC) последнего уровня или их комбинации.
Хотя для ясности изображения на фиг. 5 показано программируемое устройство с двумя обрабатывающими элементами 570, 580, объем настоящего изобретения этим не ограничен и может присутствовать любое количество обрабатывающих элементов. В качестве альтернативы, один или несколько обрабатывающих элементов 570, 580 могут быть элементом, отличным от процессора, таким как блок (GPU) обработки графики, цифровой сигнальный обрабатывающий блок (DSP), вентильная матрица, программируемая пользователем, или любым другим программируемым обрабатывающим элементом. Обрабатывающий элемент 580 может быть разнородным или ассиметричным относительно обрабатывающего элемента 570. Может присутствовать большое количество различий между обрабатывающими элементами 570, 580 с точки зрения разных мер достоинства, в том числе архитектурных характеристик, микроархитектурных характеристик, тепловых характеристик, характеристик потребления электроэнергии и подобных. Эти различия могут эффективно показывать себя как асимметрия и неоднородность в обрабатывающих элементах 570, 580. В некоторых вариантах осуществления изобретения различные обрабатывающие элементы 570, 580 могут располагаться в одном корпусе кристалла.
Первый обрабатывающий элемент 570 может дополнительно содержать логическую схему 572 (MC) контроллера памяти и соединения 576 и 578 точка-точка (P-P). Аналогично, второй обрабатывающий элемент 580 может содержать МС 582 и соединения 586 и 588 P-P. Как показано на фиг. 5, MC 572 и 582 связывают обрабатывающие элементы 570, 580 с соответствующими памятями, а именно памятью 532 и памятью 534, которые могут быть частями основной памяти, локально прикрепленными к соответствующим процессорам. Хотя логические схемы 572 и 582 MC показаны как встроенные в обрабатывающие элементы 570, 580, в некоторых вариантах осуществления изобретения логическая схема MC может быть дискретной логической схемой, расположенной вне обрабатывающих элементов 570, 580, а не встроенной в них.
Обрабатывающий элемент 570 и обрабатывающий элемент 580 могут быть связаны с подсистемой 590 ввода/вывода с помощью, соответственно, соединений 576, 586 и 584 Р-Р. Как показано на фиг. 5, подсистема 590 ввода/вывода содержит соединения 594 и 598 Р-Р. Более того, подсистема 590 ввода/вывода содержит интерфейс 592 для связи подсистемы 590 ввода/вывода с высокопроизводительным графическим механизмом 538. В одном варианте осуществления изобретения шина 549 может быть использована для связи графического механизма 538 с подсистемой 590 ввода/вывода. В качестве альтернативы соединение 539 точка-точка может связывать эти компоненты.
В свою очередь, подсистема 590 ввода/вывода может быть соединена с первым каналом 516 с помощью интерфейса 596. В одном варианте осуществления изобретения первый канал 516 может быть шиной соединения (PCI) периферийных компонентов или такой шиной, как шина PCI Express, или другой соединительной шиной ввода/вывода, хотя объем настоящего изобретения этим не ограничен.
Как показано на фиг. 5, различные устройства 514 ввода/вывода могут быть связаны с первым каналом 516 вместе с мостом 518, который связывает первый канал 516 и второй канал 510. В одном варианте осуществления изобретения второй канал 520 может быть шиной (LPC) с малым числом контактов. В одном варианте осуществления изобретения различные устройства могут быть связаны со вторым каналом 520, в том числе, например, клавиатура/мышь 512, устройство (устройства) 526 связи (которые, в свою очередь, могут взаимодействовать с компьютерной сетью 503) и блок 528 хранения данных, такой как дисковый привод или другие устройства хранения большой емкости, которые могут содержать код 530. Код 530 может содержать команды для реализации вариантов осуществления одной или нескольких описанных выше технологий. Далее, устройство 524 ввода/вывода звука может быть соединено со второй шиной 520.
Заметим, что возможны другие варианты осуществления изобретения. Например, вместо архитектуры точка-точка с фиг. 5, система может реализовывать многоточечную шину или другую такую топологию связи. Хотя каналы 516 и 520 показаны на фиг. 5 в виде шин, может быть использован канал любого подходящего типа. Также, в качестве альтернативы, элементы с фиг. 5 могут быть разделены с использованием большего или меньшего количества интегральных микросхем по сравнению с количеством, показанным на фиг. 5.
На фиг. 6 показана структурная схема, иллюстрирующая программируемое устройство 600 в соответствии другим вариантом осуществления изобретения. Определенные аспекты фиг. 5 опущены на фиг. 6, чтобы не мешать пониманию других аспектов фиг. 6.
На фиг. 6 показано, что обрабатывающие элементы 670, 680 могут содержать, соответственно, встроенные логические схемы 672 и 682 управления («СL») памятью и вводом/выводом. В некоторых вариантах осуществления изобретения CL 672, 682 могут содержать логическую схему (MC) контроллера памяти, такую как описана выше при рассмотрении фиг. 5. Кроме того, CL 672, 682 также могут содержать логическую схему управления вводом/выводом. На фиг. 6 показано, что не только памяти 632, 634 могут быть связаны с CL 672, 682, но также устройства 644 ввода/вывода также могут быть связаны с логической схемой 672, 682 управления. Существующие устройства 615 ввода/вывода могут быть связаны с подсистемой 690 ввода/вывода с помощью интерфейса 696. Каждый обрабатывающий элемент 670, 680 может содержать несколько ядер процессоров, показанных на фиг. 6, таких как ядра 674A, 674В, 684A и 684B процессора. Как показано на фиг. 6, подсистема 690 ввода/вывода содержит соединения 694 и 698 Р-Р, которые соединены с соединениями 676 и 686 Р-Р обрабатывающих элементов 670 и 680 с помощью каналов 652 и 654. Обрабатывающие элементы 670 и 680 могут быть соединены с помощью канала 650 и, соответственно, соединений 678 и 688.
Программируемые устройства, показанные на фиг. 5 и 6, являются схематичными иллюстрациями вариантов осуществления программируемых устройств, которые могут быть использованы для реализации описанных в настоящем документе различных вариантов осуществления изобретения. Различные компоненты программируемых устройств, показанных на фиг. 5 и 6, могут быть объединены в архитектуре система-на-кристалле (SoC).
HTTP прокси-сервер 430 реализует функциональные возможности HTTP прокси-сервера. Функциональные возможности HTTP прокси-сервера хорошо известны и не будут описаны в настоящем документе. Устройство 435 анализа пользовательского агента осуществляет показанный на фиг. 3 анализ связей ведущих приложений и пользовательских агентов. Модуль 440 обновления может позволить обновить программное обеспечение или аппаратно-реализованное программное обеспечение сетевого устройства 400 с целью поддержки и улучшения сетевого устройства 400. Наконец, при желании, могут быть предусмотрены другие модули 445. Например, с помощью таких других модулей 445, количество которых может быть равно одному или более, могут быть обеспечены другие функциональные возможности защиты от вторжения.
На фиг. 7 схематично показан пример инфраструктуры 700, в которой могут быть реализованы описанные выше технологии. Инфраструктура 700 содержит компьютерные сети 702. Компьютерные сети 702 могут быть компьютерными сетями многих различных типов, доступных в настоящее время, таких как Интернет, корпоративные сети или локальные вычислительные сети (LAN). Каждая из этих сетей может содержать проводные или беспроводные программируемые устройства и может работать с использованием любого количества сетевых протоколов (например, TCP/IP). Сети 702 могут быть соединены со шлюзами и маршрутизаторами (представлены ссылочной позицией 708), компьютерами 706 конечных пользователей и серверами 704. Инфраструктура 700 также содержит сеть 703 сотовой связи для использования с мобильными устройствами связи. Мобильные сети сотовой связи поддерживают мобильные телефоны и устройства многих других типов. Мобильные устройства в инфраструктуре 700 показаны как мобильные телефоны 710, ноутбуки 712 и планшеты 714. Мобильное устройство, такое как мобильный телефон 710, при своем перемещении может взаимодействовать с одной или несколькими сетями поставщиков мобильной связи, обычно взаимодействуя с несколькими вышками 720, 730 и 740 сетей мобильной связи для соединения с сетью 703 сотовой связи. Хотя при рассмотрении фиг. 7 упоминается сеть сотовой связи, мобильное устройство может взаимодействовать с вышками более одной сети поставщика связи, а также с несколькими устройствами не сотовой связи, такими как точки беспроводного доступа и маршрутизаторы 708. Кроме того, мобильные устройства 710, 712 и 714 могут взаимодействовать с немобильными устройствами, такими как компьютеры 704 и 706, для получения нужных сервисов, что может включать в себя предоставление описанных выше сопоставлений приложений и пользовательских агентов и сервисов анализа. Функциональные возможности сетевого устройства 210 могут быть реализованы в любом устройстве или комбинации устройств, показанных на фиг. 7; тем не менее, наиболее часто они реализованы в сетевом экране или системе защиты от вторжения в шлюзе или маршрутизаторе 708.
Использование описанных выше технологий и устройства может позволить обнаружить вредоносную программу, которая вводит случайность в данные пользовательского агента, даже если технология, основанная на сигнатурах, не способна распознать пользовательский агент, представляющий вредоносную программу. Кроме того, так как анализ пользовательского агента не зависит от сигнатуры, могут быть обнаружены угрозы нулевого дня и информация пользовательских агентов может быть использована для разработки сигнатур, используемых в технологиях, основанных на сигнатурах.
Описанные выше технологии, не основанные на сигнатурах, при желании, могут быть реализованы в комбинации с технологиями, основанными на сигнатурах, при этом технологии, основанные на сигнатурах, осуществляют до, после или параллельного с технологиями, не основанными на сигнатурах.
Приведенные ниже примеры касаются дополнительных вариантов осуществления изобретения.
Пример 1 представляет собой считываемый машиной носитель, на котором хранятся команды и который содержит команды, исполнение которых побуждает машину: перехватить, с помощью первого устройства, запрос на данные от второго устройства, при этом запрос выработан приложением и запрос идентифицирует пользовательский агент; и выработать указание в ответ на определение того, что некоторое пороговое количество пользовательских агентов идентифицировано в запросах от этого приложения.
В примере 2 объект из примера 1 может, при желании, включать в себя следующее: команды по перехвату содержат команды, исполнение которых побуждает первое устройство: принять пакет данных, содержащий запрос от второго устройства; и перенаправить пакет данных на второе устройство в зависимости от политики безопасности.
В примере 3 объект из примеров 1 - 2 может, при желании, включать в себя следующее: первое устройство обеспечивает прокси-сервис.
В примере 4 объект из примеров 1 - 2 может, при желании, включать в себя следующее: команды, исполнение которых побуждает машину выработать указание, содержат команды, исполнение которых побуждает машину: идентифицировать приложение, запрашивающее данные; извлечь данные пользовательского агента из запроса, идентифицирующего пользовательский агент; и осуществить поиск данных приложения и пользовательского агента в кэш-памяти.
В примере 5 объект из примера 4 может, при желании, включать в себя следующее: команды, исполнение которых побуждает машину выработать указание, дополнительно содержат команды, исполнение которых побуждает машину: добавить запись в кэш-память, соответствующую данным приложения и пользовательского агента, в ответ на определение того, что в кэш-памяти не существует такой записи; и определить, сколько записей для этого приложения существует в кэш-памяти.
В примере 6 объект из примера 4 может, при желании, включать в себя следующее: команды, исполнение которых побуждает машину выработать указание, содержит команды, исполнение которых побуждает машину: добавить в кэш-память запись, соответствующую данным приложения и пользовательского агента, в ответ на определение того, что в кэш-памяти не существует записей для этого приложения.
В примере 7 объект из примеров 1 - 2 может, при желании, включать в себя следующее: указание указывает, что приложение потенциально является вредоносной программой.
В примере 8 объект из примеров 1 - 2 может, при желании, включать в себя следующее: команды дополнительно содержат команды, исполнение которых побуждает машину: обновить счетчик запросов, сделанных приложением и идентифицирующих этот пользовательский агент.
Пример 9 является сетевым устройством, содержащим: средство для действия в качестве прокси-сервера для трафика сети, для перехвата запроса на данные от приложения, исполняемого на другом устройстве; средство для разбора перехваченных запросов и определения пользовательского агента, идентифицированного запросом; средство для идентификации приложения, делающего запрос; и средство для анализа информации пользовательского агента, содержащее: средство для определения количества пользовательских агентов, связанных с этим приложением; и средство для указания приложения как возможной вредоносной программы в ответ на определение того, что некоторое пороговое количество пользовательских агентов связано с этим приложением.
В примере 10 объект из примера 9 может, при желании, также содержать средство для обработки метаданных, содержащее: средство для получения от другого устройства метаданных, соответствующих приложению и запросу; и средство для идентификации приложения, делающего запрос, на основе метаданных.
В примере 11 объект из примеров 9 - 10 может, при желании, также содержать: базу данных сопоставлений приложений и пользовательских агентов.
В примере 12 объект из примера 11 может, при желании, также содержать: средство для предоставления возможности административных обновлений базы данных.
В примере 13 объект из примеров 9 - 10 может, при желании, включать в себя следующее: пороговое количество зависит от приложения.
Пример 14 является способом обнаружения угроз нулевого дня, включающим в себя следующее: принимают пакет данных с помощью сетевого устройства от приложения, работающего на первом устройстве; идентифицируют пользовательский агент, определенный запросом на данные, который содержится в пакете данных; определяют счетчик количества пользовательских агентов, обнаруженных связанными с этим приложением; и вырабатывают, с помощью сетевого устройства, указание на то, что приложение может быть вредоносной программой, в зависимости от счетчика, обладающего заранее заданной взаимосвязью с заранее заданным пороговым значением.
В примере 15 объект из примера 14 может, при желании, также включать в себя следующее: прием пакета данных включает в себя следующее: перехватывают пакет данных с помощью прокси-сервера сетевого устройства; и перенаправляют пакет данных к месту назначения, которое определено в пакете данных, в зависимости от политики безопасности сетевого устройства.
В примере 16 объект из примера 14 может, при желании, также включать в себя следующее: выработка с помощью сетевого устройства указания включает в себя следующее: идентифицируют приложение по метаданным, принятым от первого устройства; осуществляют разборку пакета данных и извлекают данные пользовательского агента, которые идентифицируют пользовательский агент; и осуществляют поиск приложения и пользовательского агента в кэш-памяти с приложениями и связанными с ними пользовательскими агентами.
В примере 17 объект из примера 16 может, при желании, также включать в себя следующее: выработка с помощью сетевого устройства указания дополнительно включает в себя следующее: добавляют в кэш-память запись, связывающую приложение и пользовательский агент, в ответ на определение того, что в этой кэш-памяти не существует такой записи.
В примере 18 объект из примера 16 может, при желании, также включать в себя следующее: выработка с помощью сетевого устройства указания дополнительно включает в себя следующее: увеличивают счетчик запросов на данные, которые сделаны этим приложением и которые определяют этот пользовательский агент.
Пример 19 является сетевым устройством, содержащим: один или несколько процессоров; базу данных, связанную с одним или несколькими процессорами и хранящую связи между приложениями и пользовательскими агентами; и память, которая связана с одним или несколькими процессорами и в которой хранятся команды, содержащие команды, исполнение которых побуждает один или несколько процессоров: перехватить с помощью прокси-сервиса сетевого устройства запрос от первого устройства на данные; идентифицировать приложение на первом устройстве, которое передало запрос на данные; идентифицировать пользовательский агент, определенный запросом; добавить связь приложения и пользовательского агента в ответ на определение того, что в базе данных не существует такой связи; определить, связано ли приложение с пороговым количеством пользовательских агентов; и указать, в ответ на определение, то, что приложение является подозрительным.
В примере 20 объект из примера 19 может, при желании, включать в себя следующее: команды дополнительно содержат команды, исполнение которых побуждает один или несколько процессоров: перенаправить запрос на данные к месту назначения, которое указано в запросе.
В примере 21 объект из примера 19 может, при желании, также включать в себя следующее: база данных содержит кэш-память.
В примере 22 объект из примера 19 может, при желании, включать в себя следующее: команды дополнительно содержат команды, исполнение которых побуждает один или несколько процессоров обновлять счетчик количества запросов, сделанных этим приложением, указывающим этот пользовательский агент.
Пример 23 является сетевым устройством, выполненным с возможностью: перехвата запроса на данные от второго устройства, при этом запрос выработан приложением, и он идентифицирует пользовательский агент; и выработки указания в ответ на определение того, что некоторое пороговое количество пользовательских агентов идентифицировано в запросах от этого приложения.
В примере 24 объект из примера 23 может, при желании, включать в себя следующее: сетевое устройство выполнено с возможностью перехвата запроса благодаря возможности: приема пакета данных, содержащих запрос от второго устройства; и перенаправления пакета данных на второе устройство в зависимости от политики безопасности.
В примере 25 объект из примеров 23 - 24 может, при желании, включать в себя следующее: сетевое устройство обеспечивает прокси-сервис.
В примере 26 объект из примеров 23 - 24 может, при желании, включать в себя следующее: сетевое устройство выполнено с возможностью выработки указания благодаря возможности: идентификации приложения, запрашивающего данные; извлечения данных пользовательского агента из запроса, идентифицирующего пользовательский агент; и осуществления поиска данных приложения и пользовательского агента в кэш-памяти.
В примере 27 объект из примера 26 может, при желании, включать в себя следующее: сетевое устройство выполнено с возможностью выработки указания благодаря возможности: добавления в кэш-память записи, соответствующей данным приложения и пользовательского агента, в ответ на определение того, что в кэш-памяти не существует такой записи; и определения, сколько записей для этого приложения существует в кэш-памяти.
В примере 28 объект из примера 26 может, при желании, включать в себя следующее: сетевое устройство выполнено с возможностью выработки указания благодаря возможности: добавить в кэш-память запись, соответствующую данным приложения и пользовательского агента, в ответ на определение того, что в кэш-памяти не существует записей для этого приложения.
В примере 29 объект из примеров 23 - 24 может, при желании, включать в себя следующее: указание указывает, что приложение потенциально является вредоносной программой.
В примере 30 объект из примеров 23 - 24 может, при желании, включать в себя следующее: сетевое устройство дополнительно выполнено с возможностью: обновления счетчика запросов, сделанных приложением и идентифицирующих этот пользовательский агент.
Пример 31 представляет собой считываемый машиной носитель, на котором хранятся команды и который содержит команды, исполнение которых побуждает машину: перехватить, с помощью первого устройства, запрос на данные от второго устройства, при этом запрос выработан приложением и запрос идентифицирует пользовательский агент; и выработать указание на то, что приложение потенциально является вредоносной программой, в ответ на определение того, что некоторое пороговое количество пользовательских агентов идентифицировано в запросах от этого приложения, при этом первое устройство обеспечивает прокси-сервис.
В примере 32 объект из примера 31 может, при желании, включать в себя следующее: команды по перехвату содержат команды, исполнение которых побуждает первое устройство: принять пакет данных, содержащий запрос от второго устройства; и перенаправить пакет данных на второе устройство в зависимости от политики безопасности.
В примере 33 объект из примеров 31 - 32 может, при желании, включать в себя следующее: команды, исполнение которых побуждает машину выработать указание, содержат команды, исполнение которых побуждает машину: идентифицировать приложение, запрашивающее данные; извлечь данные пользовательского агента из запроса, идентифицирующего пользовательский агент; и осуществить поиск данных приложения и пользовательского агента в кэш-памяти.
В примере 34 объект из примера 33 может, при желании, включать в себя следующее: команды, исполнение которых побуждает машину выработать указание, дополнительно содержат команды, исполнение которых побуждает машину: добавить в кэш-память запись, соответствующую данным приложения и пользовательского агента, в ответ на определение того, что в кэш-памяти не существует такой записи; и определить, сколько записей для этого приложения существует в кэш-памяти.
В примере 35 объект из примеров 33 - 34 может, при желании, включать в себя следующее: команды, исполнение которых побуждает машину выработать указание, содержат команды, исполнение которых побуждает машину: добавить в кэш-память запись, соответствующую данным приложения и пользовательского агента, в ответ на определение того, что в кэш-памяти не существует записей для этого приложения.
В примере 36 объект из примеров 31 - 35 может, при желании, включать в себя следующее: команды дополнительно содержат команды, исполнение которых побуждает машину: обновить счетчик запросов, сделанных приложением и идентифицирующих пользовательский агент.
Следует понимать, что приведенное выше описание предназначено для иллюстративных целей, а не для ограничения изобретения. Например, описанные выше варианты осуществления изобретения могут быть использованы в комбинации друг с другом. После рассмотрения приведенного выше описания специалисты в рассматриваемой области могут предложить много других вариантов осуществления изобретения. Следовательно, объем изобретения должен определяться со ссылкой на приложенную формулу изобретения, вместе с полным объемом эквивалентов, для которого предназначена формула изобретения.