Система и способ обнаружения вредоносного скрипта
SYSTEM AND METHOD OF DETECTING MALICIOUS SCRIPT

Область техники
Изобретение относится к области информационной безопасности, а именно к системам и способам обнаружения вредоносного скрипта.
Уровень техники
В настоящее время постоянно совершенствуются средства обнаружения вредоносного кода и вредоносных файлов, например антивирусные приложения. Зачастую такие средства обнаружения работают совместно с модулями (или включают в себя такие модули) контроля приложений (с англ. "application control") для повышения качества обеспечения безопасности компьютерных систем (например, запрещая запуск недоверенных приложений). При этом модули контроля приложений, как правило, используют списки приложений, например, белые или черные списки (с англ. "whitelist" и "blacklist", соответственно) таким образом, что файлы из черного списка признаются антивирусным приложением вредоносными, а файлы из белого списка считаются безопасными для компьютерных систем (доверенными) и не проверяются антивирусным приложением. Использование таких списков существенно снижает нагрузку на компьютерную систему при обеспечении безопасности антивирусным приложением, так как антивирусному приложению нет необходимости проверять каждый файл всеми имеющимися способами: при помощи сигнатурного анализа, эвристического анализа, анализа поведения и т.п.
Однако действия не каждого процесса, запущенного из доверенного файла, присутствующего в белом списке, безвредны для компьютерной системы. Современные вредоносные программы могут внедряться в адресное пространство доверенных процессов и выполнять свой вредоносный код из адресного пространства доверенного процесса. При этом выполнение такого вредоносного кода никак не обнаруживается (а, соответственно, и не блокируется) антивирусным приложением, так как анализ в отношении кода из адресного пространства (например, сигнатурный или эвристический) доверенного процесса не производится антивирусным приложением.
В уровне техники есть подходы для обнаружения вредоносного кода в адресном пространстве сторонних приложений. Так, например, в публикации ЕР 2788912 А1 описан подход, в соответствии с которым выделяемые участки памяти в адресном пространстве некоторого процесса сравниваются с известными областями памяти (например, областями памяти, сигнатуры которых хранятся в предназначенной для этого базе данных), соответствующими вредоносному коду. При обнаружении в адресном пространстве некоторого процесса такого участка памяти, соответствующего вредоносному коду, данные, которые использовались для запуска упомянутого процесса, признаются вредоносными.
Однако подходы к обнаружению в адресном пространстве процессов областей памяти, соответствующих вредоносному коду, требуют значительных вычислительных ресурсов, так как связаны со сканированием памяти. Настоящее изобретение решает задачу обнаружения вредоносного кода в адресном пространстве процесса более эффективно.
Раскрытие изобретения
Настоящее изобретение предназначено для обнаружения вредоносных скриптов.
Технический результат настоящего изобретения заключается в реализации заявленного назначения.
Способ обнаружения вредоносного скрипта, выполняемый при помощи компьютерной системы, в котором: обнаруживают при помощи средства перехвата запуск процесса из доверенного исполняемого файла скриптового интерпретатора; при этом в адресном пространстве процесса находится образ упомянутого исполняемого файла; обнаруживают при помощи средства перехвата обращение, осуществляемое при исполнении процесса, к подозрительному адресу памяти; при этом адрес памяти является подозрительным, если этот адрес памяти принадлежит подозрительной области памяти в адресном пространстве процесса; подозрительной областью памяти в адресном пространстве процесса, запущенного из исполняемого файла, является область памяти, которая находится за пределами образа исполняемого файла в упомянутом адресном пространстве и в то же время является исполняемой областью памяти; осуществляют при помощи средства безопасности анализ области памяти в адресном пространстве процесса в окрестности подозрительного адреса памяти, при этом во время анализа обнаруживают в адресном пространстве процесса образ исполняемого файла, загруженного из другого файла; обнаруживают при помощи средства безопасности вредоносный код в адресном пространстве процесса путем анализа обнаруженного образа исполняемого файла, загруженного из другого файла; при этом анализ осуществляется при помощи сигнатур вредоносного кода; признают при помощи средства безопасности вредоносным скрипт, инструкции которого выполнялись скриптовым интерпретатором до момента обнаружения вредоносного кода в адресном пространстве процесса, запущенного из доверенного исполняемого файла скриптового интерпретатора.
В одном из вариантов реализации способа обращение к адресу памяти - операция записи адреса на стек или вызов функции для создания потока, аргументом которых является упомянутый адрес.
В еще одном варианте реализации способа скриптовым интерпретатором является PowerShell.
В другом варианте реализации способа окрестностью адреса памяти является область памяти, границы которой удалены от адреса памяти на фиксированные расстояния.
В еще одном варианте реализации способа окрестностью адреса памяти является область памяти, соответствующая региону памяти, в котором находится упомянутый адрес памяти.
Краткое описание чертежей
Дополнительные цели, признаки и преимущества настоящего изобретения будут очевидными из прочтения последующего описания осуществления изобретения со ссылкой на прилагаемые чертежи, на которых:
Фиг. 1 иллюстрирует примерный вариант компонентов системы обнаружения вредоносного кода в адресном пространстве процессов.
Фиг. 2 показывает вариант реализации способа обнаружения вредоносного кода в адресном пространстве процессов.
Фиг. 3 показывает пример компьютерной системы общего назначения.
Хотя изобретение может иметь различные модификации и альтернативные формы, характерные признаки, показанные в качестве примера на чертежах, будут описаны подробно. Следует понимать, однако, что цель описания заключается не в ограничении изобретения конкретным его воплощением. Наоборот, целью описания является охват всех изменений, модификаций, входящих в рамки данного изобретения, как это определено приложенной формуле.
Описание вариантов осуществления изобретения
Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Сущность, приведенная в описании, является не чем иным, как конкретными деталями, необходимыми для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется в объеме приложенной формулы.
Введем ряд определений и понятий, которые будут использоваться при описании вариантов осуществления изобретения.
Вредоносное приложение - приложение, способное нанести вред компьютеру или данным пользователя компьютера, например: сетевой червь, клавиатурный шпион, компьютерный вирус. В качестве нанесенного вреда может выступать неправомерный доступ к ресурсам компьютера, в том числе к данным, хранящимся на компьютере (иными словами, компьютерной системе), с целью хищения, а также неправомерное использование ресурсов, в том числе для хранения данных, проведения вычислений и т.п.
Доверенное приложение - приложение, которое не наносит вреда компьютеру или его пользователю. Доверенным приложением может считаться приложение, разработанное доверенным производителем ПО (программного обеспечения), загруженное из доверенного источника (например, сайт, занесенный в базу данных доверенных сайтов) или приложение, идентификатор которого (например, MD5 файла приложения) хранится в базе данных доверенных приложений. Идентификатор производителя, например, цифровой сертификат, может также храниться в базе данных доверенных приложений.
Недоверенное приложение - приложение, которое не является доверенным, но также не признано вредоносным, например, при помощи антивирусного приложения. При этом недоверенное приложение может впоследствии быть признано вредоносным, например, при помощи антивирусной проверки.
Вредоносный файл - файл, являющийся компонентом вредоносного приложения и содержащий программный код (исполняемый или интерпретируемый код).
Недоверенный файл - файл, являющийся компонентом недоверенного приложения и содержащий программный код (исполняемый или интерпретируемый код).
Доверенный файл - файл, являющийся компонентом доверенного приложения.
Сигнатурный анализ - технология поиска совпадений какого-либо участка кода программы с известным кодом - сигнатурой - из базы данных сигнатур вредоносных программ с целью обнаружения вредоносной программы. Стоит отметить, что данная технология может применяться как для обнаружения файлов вредоносной программы, так и для обнаружения вредоносного кода в оперативной памяти вычислительного устройства (компьютерной системы).
Антивирусная запись - информация, необходимая антивирусному приложению для обнаружения вредоносного кода и, в частности, вредоносных файлов. Может быть представлена, например, в виде сигнатуры, эвристического правила (которое, например, может быть использовано эвристическим и проактивным анализом), контрольной суммы файла - хэша (в том числе и гибкого хэша - англ. locality sensitive hash - хэша файла, инвариантного к небольшим изменениям файла).
Скрипт (англ. scrip), иногда сценарий - последовательность команд (инструкций), как правило написанная на высокоуровневом языке программирования - языке сценариев, которая может быть выполнена (исполнена) компьютерной системой при помощи интерпретатора сценариев (скриптовый интерпретатор).
Под средствами системы обнаружения вредоносного кода в адресном пространстве процессов в настоящем изобретении понимаются реальные устройства, системы, компоненты, группы компонентов, реализованные с использованием аппаратных средств, таких как интегральные микросхемы (англ. application-specific integrated circuit, ASIC) или программируемые вентильные матрицы (англ. field-programmable gate array, FPGA) или, например, в виде комбинации программных и аппаратных средств, таких как микропроцессорная система и набор программных инструкций, а также на нейроморфных чипах (англ. neurosynaptic chips) Функциональность указанных средств системы может быть реализована исключительно аппаратными средствами, а также в виде комбинации, где часть функциональности средств системы реализована программными средствами, а часть аппаратными. В некоторых вариантах реализации часть средств, или все средства, могут быть исполнены на процессоре компьютера общего назначения (например, который изображен на Фиг. 3). При этом компоненты системы могут быть реализованы в рамках как одного вычислительного устройства, так и разнесены между несколькими, связанными между собой вычислительными устройствами.
На Фиг. 1 изображены элементы системы обнаружения вредоносного кода в адресном пространстве процессов. Система содержит в себе следующие компоненты: средство перехвата 110, средство безопасности 120 и базу данных сигнатур вредоносного кода 130. Связи между элементами системы также обозначены на Фиг. 1. В одном из вариантов реализации изобретения средством перехвата 110 и средство безопасности 120 реализовано в виде единого средства, выполняющего функции как средства перехвата 110, так и средства безопасности 120.
Средство перехвата 110 способно обнаруживать запуск процесса из исполняемого файла 111. При этом при запуске процесса из исполняемого файла 111 операционной системой (ОС), под управлением которой функционирует компьютерная система (в частности, с помощью которой реализованы компоненты системы), формируется виртуальное адресном пространство 112 (далее просто "адресное пространство") процесса, в котором находится образ упомянутого исполняемого файла 111, из которого запускается процесс, при этом будем считать идентичными понятия "область памяти адресного пространства" и "область памяти в адресном пространстве". При этом образом исполняемого файла (англ. executable image) является представление исполняемого файла в адресном пространстве процесса, например запущенного из упомянутого файла, достаточное для исполнения кода исполняемого файла (в отличие от просто скопированного байтового предоставления исполняемого файла), образ исполняемого файла формируется загрузчиком ОС, например, при запуске процесса из исполняемого файла. Образ исполняемого файла, как правило, отличается от самого исполняемого файла, например, внесенными изменениями в адреса (например, вызываемых процедур и переходов), используемые в коде образа. Для осуществления процесса обнаружения запуска процесса средство перехвата 110 способно использовать любой из известных в уровне техники подходов, в частности средство перехвата 110 может содержать драйвер, который перехватывает функцию для запуска процесса. В одном из вариантов реализации изобретения такой функцией для ОС Windows является функция CreateProcess. В результате обнаружения запуска процесса средство 110 определяет уникальный идентификатор процесса. В одном из вариантов реализации изобретения таким идентификатором является структура_PROCESS_INFORMATION, полям которой, в частности, присваиваются значения при вызове функции CreateProcess. В еще одном из вариантов реализации изобретения таким идентификатором является описатель процесса (англ. process handle) или идентификатор процесса (англ. PID). В одном из вариантов реализации изобретения идентификатор процесса далее используется средствами заявленной системы для обращения к процессу (например, в рамках работы средств системы: обращение к адресному пространству 112 и т.п.), запущенному из файла 111.
Средство перехвата 110 также способно обнаруживать обращение, осуществляемое при исполнении процесса, к подозрительному адресу памяти в виртуальном адресном пространстве 112. Адрес памяти является подозрительным, если этот адрес памяти принадлежит подозрительной области памяти в адресном пространстве процесса. В свою очередь подозрительной областью памяти в адресном пространстве процесса, запущенного из исполняемого файла, является область памяти, которая находится за пределами образов исполняемых файлов в упомянутом адресном пространстве и в то же время является исполняемой областью памяти. При этом в адресное пространство 112 процесса может быть загружено множество образов исполняемых файлов, в частности образ исполняемого файла 111, из которого был запущен процесс, а также другие образы исполняемых файлов, например образы динамических библиотек (находящиеся, как правило, в области адресного пространства 112, зарезервированного для динамических библиотек - в DLL секции) или других исполняемых файлов. Такие области памяти (загруженные из исполняемых файлов, иными словами соответствующие образам исполняемых файлов) могут быть определены при помощи, например, вызова функции VirtualQueryEx, которая возвращает указатель на структуру данных MEMORY_BASIC_INFORMATION, одно из полей которой - Туре - принимает значение MEM_IMAGE для упомянутых выше областей памяти. Соответственно, факт того, что некоторый адрес памяти принадлежит области исполняемой памяти, но не принадлежит области памяти, загруженной из исполняемого файла, может быть также определен при помощи вызова функции VirtualQueryEx.
В одном из вариантов реализации изобретения подозрительной областью памяти является область памяти в адресном пространстве 112, не включающая в себя доверенные области памяти. В свою очередь доверенными областями памяти могут являться:
• окрестность образа исполняемого файла 111 в адресном пространстве;
• окрестность образа известного исполняемого файла (хеш или любой другой идентификатор такого образа может храниться в базе данных на удаленном сервере), например динамической библиотеки;
• окрестность известного адреса в адресном пространстве 112.
При этом окрестностью образа исполняемого файла является область памяти, границы которой удалены от границ образа исполняемого файла на фиксированные расстояния, например 512 байт от начального адреса образа исполняемого файла в сторону уменьшения адресов и 512 байт от конечного адреса образа исполняемого файла в сторону увеличения адресов. Определение окрестности адреса будет дано ниже. В одном из вариантов реализации окрестностью образа исполняемого файла является область памяти, соответствующая региону памяти (или же являющаяся этим регионом), в котором находится упомянутый образ исполняемого файла. При этом для определения границ региона, а, следовательно, и границ области памяти, являющейся окрестностью некоторого образа исполняемого файла, может быть использована функция VirtualQueryEx, которая возвращает указатель на структуру данных MEMORY_BASIC_INFORMATION, содержащую необходимую для определения границ региона памяти информацию. В одном из вариантов реализации регионом памяти является область памяти, состоящая их страниц, и которая выделяется в адресном пространстве 112 процесса, например при помощи вызова функции VirtualAllocEx. Известным адресом является адрес, запись о котором хранится в базе данных, например базе данных сигнатур вредоносного кода 130. Начальные и конечные адреса известных исполняемых файлов также могут храниться в базе данных, например базе данных сигнатур вредоносного кода 130. Упомянутая информация может быть сохранена в базе данных 130 специалистом в области информационных технологий и использована средством перехвата 110 для определения, какие области памяти в адресном пространстве 112 являются подозрительными.
В одном из вариантов реализации изобретения обращением к адресу памяти является операция записи адреса памяти на стек. В таком случае средство перехвата 110 обнаруживает обращение к адресу памяти путем проверки, присутствует ли на стеке (в области памяти в адресном пространстве 112, зарезервированной для стека) адрес памяти, соответственно, если на стеке присутствует адрес памяти, то во время исполнения процесса имело место обращение к стеку, в частности запись адреса памяти на стек. В одном из вариантов реализации изобретения средство перехвата 120 осуществляет поиск адреса на стеке путем вызова функции CaptureStackBackTrace, которая возвращает в качестве выходного параметра BackTrace массив (а, точнее, указатель на массив) значений (указателей, иными словами адресов), лежащих на стеке. Соответственно, считается, что к адресам памяти, полученным вызовом вышеупомянутой функции, осуществлялся доступ.
В еще одном варианте реализации изобретения средство перехвата 120 осуществляет поиск адреса на стеке путем вызова функции NtQueryInformationThread, при помощи которого можно получить доступ информации о ТЕВ (Thread Environment Block), в частности вызов упомянутой функции заполняет поля структуры (записывает значения в поля структуры) Threadlnformation, формат которой характеризуется параметром вызова ThreadInformationClass (например, ThreadBasicInformation), которая, в свою очередь, содержит адреса в памяти, в пределах которых располагается стек (для вызывающего функцию потока). Обладая этой информацией, а также информацией о значениях регистров процессора (по меньшей регистров esp и ebp), средство перехвата 120 обнаруживает адреса памяти на стеке (а именно цепочку вызовов, аналогичную той, которая может быть получена при помощи CaptureStackBackTrace).
В одном из вариантов реализации адресом на стеке признается число, находящееся на стеке, и значение которого лежит в диапазоне от 0×00000000 до 0×8FFFFFFF. В еще одном варианте реализации любое значение, находящееся на стеке по адресу, выровненному на фиксированную величину (например, 2 байта), считается адресом.
В одном из вариантов реализации изобретения средство перехвата 110 способно осуществлять поиск адреса на стеке с заданной периодичностью, например каждые 5 секунд после запуска процесса. В еще одном варианте реализации изобретения средство перехвата 110 способно осуществлять поиск адреса на стеке при определенных событиях.
В другом варианте реализации изобретения обращением к адресу является вызов функции CreateThread, аргументом которой является упомянутый адрес. В еще одном варианте реализации изобретения обращением к адресу является вызов функции CreateProcess. В еще одном варианте реализации обращением к адресу является вызов любой другой функции для создания потока (примеры которой упомянуты выше - CreateThread и CreateProcess, с учетом того, что при создании процесса также создается по меньшей мере один поток), которая принимает адрес в качестве параметра. В еще одном варианте реализации изобретения обращением к адресу является вызов функции WriteFile. Обращение путем вызова одной из вышеперечисленных функций может быть обнаружено средством перехвата 110 при помощи любого из известных из уровня техники способов, например с использованием драйвера или путем установки процедуры обратного вызова (англ. hook) на вызов соответствующей операции, например CreateThread или CreateProcess.
В одном из вариантов реализации изобретения исполняемый файл 111 является доверенным, и компоненты системы в таком случае предназначены для обнаружения в адресном пространстве 112 доверенного процесса вредоносного кода. В одном из вариантов реализации изобретения доверенным файлом 111 является файл скриптового интерпретатора, например PowerShell. Обнаружение вредоносного кода в адресном пространстве 112 исполняемого файла 111 PowerShell необходимо, потому что скрипты PowerShell, используя возможности, предоставляемые интерпретатором, способны загружать, в частности из сети Интернет, вредоносные исполняемые файлы, сохранять эти файлы в специально выделенной для этого области памяти в адресном пространстве 112 (при этом без сохранения файлов на устройстве хранения компьютерной системы, например жестком диске), выполнять все функции загрузчика ОС (англ. loader, иногда называют "загрузчиком исполняемых файлов", который входит в состав ОС), тем самым превращая загруженный в память исполняемый файл в образ исполняемого файла, доступный для исполнения, и передавать управление исполняемому коду из полученного загруженного вредоносного файла. Таким образом на компьютерную систему может быть осуществлена атака с использованием "бестелесного" вредоносного программного обеспечения (англ. fileless malware), при этом загруженный в адресное пространство 112 вредоносный исполняемый файл не хранится на устройстве хранения данных компьютерной системы, а присутствует только в оперативной памяти в адресном пространстве 112 доверенного процесса, что затрудняет обнаружение вредоносного кода известными из уровня техники подходами.
Средство безопасности 120 связано со средством перехвата и базой данных сигнатур вредоносного кода 130. Средство безопасности 120 предназначено для анализа области памяти в адресном пространстве процесса 112. Целью такого анализа является обнаружение в адресном пространстве 112, в частности в упомянутой области памяти, образов исполняемых файлов. В одном из вариантов реализации изобретения средство безопасности способно обнаруживать образы исполняемых файлов в окрестности некоторого адреса памяти, в частном случае реализации изобретения таким адресом памяти является подозрительный адрес памяти. При этом окрестностью адреса памяти является область памяти, границы которой удалены от адреса памяти на фиксированные расстояния, например 64 Кбайт от адреса в сторону уменьшения адресов и 64 Кбайт в сторону увеличения адресов. Таким образом примером окрестности адреса 0×00600000 будет область памяти в адресном пространстве 112, располагающаяся между адресами 0×005FFE00 и 0×00610000 в адресном пространстве 112 процесса. В другом варианте реализации окрестностью адреса памяти является область памяти, соответствующая региону памяти (являющаяся этим регионом), в котором находится упомянутый адрес памяти. При этом для определения границ региона, а, следовательно, и границ области памяти, являющейся окрестностью некоторого адреса памяти, может быть использована функция VirtualQueryEx, которая возвращает указатель на структуру данных MEMORY_BASIC_INFORMATION, содержащую необходимую для определения границ региона памяти информацию. В одном из вариантов реализации изобретения средство безопасности 120 обнаруживает в области памяти (например, в окрестности некоторого адреса) образ исполняемого файла, если выполнено следующее условие: область памяти содержит заголовок исполняемого файла, а именно, например для исполняемых файлов ОС Windows, область памяти содержит заголовок исполняемого файла, если она содержит последовательность байт, которая в символьном виде выглядит как "MZ", при этом от начала этой строки на расстоянии 0×3С в памяти лежит такая последовательность из четырех байт (DWORD), прибавив значение которой к адресу начала строки "MZ" можно получить адрес в памяти, по которому находится последовательность байт, которая в символьном виде выглядит как "РЕ".
Стоит отметить, что для обнаружения образа исполняемого файла в адресном пространстве 112 могут использоваться любые другие известные из уровня техники подходы, в частности, основанные на обнаружении в области памяти РЕ заголовка или его части, а также любые другие.
В одном из вариантов реализации при обнаружении образа исполняемого файла в области памяти, равно как и в адресном пространстве 112 в целом, средством безопасности 120 также определяет адрес начала образа обнаруженного исполняемого файла.
Средство безопасности 120 также способно обнаруживать вредоносный код в адресном пространстве 112 процесса. Обнаружение вредоносного кода средство безопасности 120 осуществляет в адресном пространстве 112, в частности в обнаруженных образах исполняемых файлов, которые присутствуют в адресном пространстве 112. В одном из вариантов реализации изобретения средство безопасности обнаруживает не просто факт наличия вредоносного кода в адресном пространстве 112, а обнаруживает, какой именно образ исполняемого файла содержит вредоносный код (т.е. обнаруживает образ вредоносного исполняемого файла). При обнаружении образа вредоносного исполняемого файла в адресном пространстве 112 средство безопасности 120 способно удалить из памяти данные, относящиеся к упомянутому образу вредоносного файла, в частности данные, которые располагаются в области памяти, начало которой определено ранее как адрес начала образа обнаруженного вредоносного файла. Таким образом может быть достигнуто обеспечение безопасности компьютерной системы путем удаления из адресного пространства 112 процесса вредоносного кода, в частности образа (а именно данных образа) вредоносного исполняемого файла.
В рамках процесса обнаружения вредоносного кода могут быть использованы, например, сигнатурный, эвристический или любой другой вид анализа. Для обнаружения вредоносного кода средство безопасности 120 используется антивирусные записи, которые хранятся в базе данных сигнатур вредоносного кода 130.
База данных сигнатур вредоносного кода 130 хранит антивирусные записи, которые используются средством безопасности 120 для обнаружения вредоносного кода. В одном из вариантов реализации изобретения такими записями являются сигнатуры.
На Фиг. 2 изображен один из вариантов реализации способа обнаружения вредоносного кода в адресном пространстве процессов. На этапе 201 при помощи средства перехвата 110 осуществляется обнаружение запуска процесса из исполняемого файла 111, при этом при создании процесса в оперативной памяти компьютерной системы формируется (как правило, средствами ОС, например загрузчика ОС) адресное пространство 112. В одном из вариантов реализации изобретения исполняемым файлом 111 является доверенный исполняемый файл. В одном из вариантов реализации изобретения доверенным исполняемым файлом 111 является исполняемый файл скриптового интерпретатора, например PowerShell. После обнаружения запуска процесса из исполняемого файла 111 средство перехвата 110 обнаруживает на этапе 202 обращение к подозрительному адресу во время исполнения процесса, запущенного из исполняемого файла 111, одним из вышеописанных способов. Обнаружив доступ к подозрительному адресу, средство перехвата 110 передает средству безопасности 120 уведомление об обнаружении доступа к подозрительному адресу вместе с указанием, какой адрес в памяти является подозрительным. После чего, на этапе 203, средство безопасности 120 осуществляет анализ области памяти в адресном пространстве 112 в окрестности по меньшей мере одного подозрительного адреса, обращение к которому во время исполнения процесса, запущенного из исполняемого файла 111, было обнаружено ранее. При этом целью такого анализа является обнаружение в адресном пространстве 112, в частности в областях памяти в окрестностях подозрительных адресов, образов исполняемых файлов, загруженных из других исполняемых файлов (не обязательно присутствующих на устройстве хранения данных компьютерной системы, но и присутствующих в оперативной памяти), то есть файлов, отличных от файла 111, образ которого априори присутствует в адресном пространстве 112 запущенного из файла 111 процесса. Такие образы других файлов могут быть загружены в адресное пространство 112 во время исполнения процесса, например, если процесс запущен из исполняемого файла скриптового интерпретатора PowerShell, при этом упомянутый процесс обрабатывает скрипт (англ. script, иногда упоминается как "сценарий" или "файл сценария"), переданный процессу, например, в качестве параметра командной строки или иным образом, и в соответствии с упомянутым скриптом (путем интерпретации инструкций такого скрипта) процесс скриптового интерпретатора загружает файл из сети ("другой" файл, упомянутый выше) и формирует его образ в адресном пространстве 112. Если образов исполняемых файлов, загруженных из других исполняемых файлов, не обнаружено, то на этапе 206 способ обнаружения вредоносного кода в адресном пространстве процессов завершается. Если же найден по меньшей мере один образ исполняемого файла, то на этапе 207 средство безопасности 120 анализирует обнаруженный образ исполняемого файла с целью обнаружения вредоносного кода в адресном пространстве 112, в частности в области памяти, куда загружен упомянутый образ исполняемого файла. Если вредоносный код не обнаружен, то работа способа завершается на этапе 209. В противном случае на этапе 210 средство безопасности 120 обнаруживает вредоносный код в адресном пространстве 112 процесса, запущенного из файла 111.
Стоит отметить, что вышеописанный способ позволяет достичь уменьшения потребления ресурсов компьютерной системы, используемых для обеспечения безопасности, так как известные из уровня техники прототипы предлагают, в частности, поиск вредоносного кода в областях памяти при помощи сигнатур безотносительно расположения анализируемых областей памяти. При этом в заявленном подходе этапу обнаружения вредоносного кода предшествует этап обнаружения доступа к подозрительному адресу, который принадлежит области памяти, в которой может находиться образ исполняемого файла, потенциально содержащий вредоносный код. Этап обнаружения вредоносного кода в области памяти (в частности образа вредоносного исполняемого файла) осуществляется только после обнаружения такого обращения. Соответственно, при исполнении процесса анализ его адресного пространства 112 с целью обнаружения вредоносного кода осуществляется только в определенных случаях, что снижает потребление ресурсов компьютерной системы, на которой функционируют средства системы обнаружения вредоносного кода в адресном пространстве процессов.
В одном из вариантов реализации изобретения после обнаружения вредоносного кода в адресном пространстве 112 процесса, запущенного из исполняемого файла 111, средство безопасности 120 способно останавливать исполнение процесса, в адресном пространстве 112 которого обнаружен вредоносный код. Таким образом средство безопасности 120 препятствует исполнению вредоносного кода, а, соответственно, обеспечивает безопасности компьютерной системы, в рамках которой функционируют компоненты настоящего изобретения - системы, а также исполняется процесс, запущенный из исполняемого файла 111.
В еще одном из вариантов реализации средство безопасности 120 сохраняет информацию о URT (Universal Resource Identifier, в частности URL, с англ. сетевой адрес), с которого был загружен по меньшей мере один обнаруженный образ другого исполняемого файла (такой URI будем называть "опасным URI"), при помощи сетевого драйвера, входящего в состав средства 120, и передает эту информацию об опасном URI, в частности само символьное представление URI или хеш, вычисленный от символьного представления упомянутого URI, ударенному серверу безопасности (не показан на фигурах). В дальнейшем такая информация (которая может храниться как локально на компьютерной системе, так и на удаленном сервере безопасности) об опасных URI, с которых были загружены другие исполняемые файлы, может использоваться средством безопасности 120, расположенным на компьютерной системе, а также аналогичными средствами 120, развернутыми на других компьютерных устройствах (которые могут получить информацию о URI от удаленного сервера безопасности), для блокирования соединения, которые устанавливаются каким-либо процессами, с такими опасными URI. Таким образом обеспечивается безопасности компьютерной системы, на котором функционирует средство безопасности 120, которое не позволяет процессам, исполняющимся на упомянутой компьютерной системе, устанавливать соединения, а также загружать данные с опасных URI, в частности исполняемые файлы.
В еще одном из вариантов реализации, когда исполняемым файлом 111, в частности доверенным, является файл скриптового интерпретатора, такого как PowerShell, и процесс, запушенный из файла 111 обрабатывает (интерпретирует, исполняет) скрипт, переданный процессу, например, в качестве параметра командной строки или иным образом (например, при помощи технологии Drag-and-Drop), после обнаружения в адресном пространстве 112 процесса вредоносного кода средство безопасности 120 также признает упомянутый скрипт вредоносным, так как выполнение команд (инструкций) такого скрипта привело к появлению в адресном пространстве процесса, запущенного из доверенного файла, вредоносного кода. Под обработкой (интерпретацией или исполнением) скрипта в контексте данного изобретения понимают выполнение команд (инструкций) скрипта при помощи скриптового интерпретатора, в частности PowerShell. Информация о том, исполнение какого именно скрипта привела к обнаружению вредоносного кода, может быть получена средством перехвата 110, например из аргументов командной строки запуска процесса из исполняемого файла 111. В еще одном варианте реализации изобретения такая информация может быть получена путем перехвата системного сообщения, соответствующего открытию скрипта при помощи технологии Drag-and-Drop (сообщение WM_DROPFILES), или системного сообщения о передаче данных WM_COPYDATA. В еще одном варианте реализации такая информация может быть получена путем перехвата вызова функции CreateFile, осуществляемого при исполнении процесса, запущенного из исполняемого файла 111. В еще одном варианте реализации для определения, при исполнении какого скрипта был обнаружен вредоносный код в адресном пространстве 112, может быть использован любой из известных из уровня техники подходов. Вышеописанная схема признания скрипта вредоносным также справедлива и для скриптов, которые загружены вследствие исполнения признанных вредоносными скриптов. Таким образом средством безопасности 120 осуществляется обнаружение вредоносного скрипта (иными словами, признание такого скрипта вредоносным), инструкции которого выполнялись скриптовым интерпретатором, а именно при исполнении процесса, запущенного из файла скриптового интерпретатора, до момента обнаружения вредоносного кода в адресном пространстве 112 упомянутого процесса.
В одном из вариантов реализации изобретения средство безопасности 120 удаляет скрипт, признанный вредоносным, или же помещает его в карантин, таким образом обеспечивая безопасности компьютерной системы, в рамках которого функционирует средство безопасности 120. В еще одном из вариантов реализации изобретения средство безопасности 120 передает идентификатор скрипта, признанного вредоносным, (например контрольную сумму, в частности MD5 или любой другой вид хеша) удаленному серверу безопасности. Такой идентификатор скрипта, признанного вредоносным, может быть использован средством безопасности 120 расположенным на компьютерной системе, а также аналогичными средствами 120, развернутыми на других компьютерных устройствах, для обнаружения вредоносных скриптов на компьютерных устройствах, на которых присутствует средство безопасности 120.
Вышеописанный вариант реализации изобретения может быть разъяснен следующим примером. На компьютерной системе А был обнаружен, в соответствии с вышеописанным способом обнаружения вредоносного кода в адресном пространстве 112 процессов, вредоносный скрипт X, идентификатор этого скрипта передается средством безопасности 120, расположенным на компьютерной системе А удаленному серверу безопасности. В одном из вариантов реализации изобретения идентификаторы таких вредоносных скриптов хранятся в предназначенной для этого базе данных идентификаторов вредоносных скриптов, расположенной на удаленном сервере безопасности. На компьютерной системе В также расположено средство безопасности 120, которое может проверять скрипты, например загруженные из сети, как по окончании загрузки из сети, так и при запуске загруженного скрипта с использованием скриптового интерпретатора. Если на компьютерную систему В каким-либо образом попадет скрипт X, то при его запуске средство безопасности 120, расположенное на упомянутой компьютерной системе, обнаружит вредоносный скрипт X, используя информацию о вредоносных скриптах, предоставляемую удаленным сервером безопасности - идентификаторы, которые хранятся на удаленном сервере безопасности, вредоносных скриптов могут быть загружены средством безопасности 120, расположенным на компьютерной системе В, в локальное хранилище для дальнейшего использования, в частности обнаружения вредоносных скриптов. Таким образом средство безопасности 120, расположенное на компьютерной системе В, обнаруживает вредоносный скрипт, расположенный на компьютерной системе В. После такого обнаружения скрипт X может быть удален средством безопасности 120 или же помещен в карантин, таким образом обеспечивает безопасность компьютерной системы В.
Фиг. 3 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 20, содержащий центральный процессор 21, системную память 22 и системную шину 23, которая содержит разные системные компоненты, в том числе память, связанную с центральным процессором 21. Системная шина 23 реализована, как любая известная из уровня техники шинная структура, содержащая в свою очередь память шины или контроллер памяти шины, периферийную шину и локальную шину, которая способна взаимодействовать с любой другой шинной архитектурой. Системная память содержит постоянное запоминающее устройство (ПЗУ) 24, память с произвольным доступом (ОЗУ) 25. Основная система ввода/вывода (BIOS) 26, содержит основные процедуры, которые обеспечивают передачу информации между элементами персонального компьютера 20, например, в момент загрузки операционной системы с использованием ПЗУ 24.
Персональный компьютер 20 в свою очередь содержит жесткий диск 27 для чтения и записи данных, привод магнитных дисков 28 для чтения и записи на сменные магнитные диски 29 и оптический привод 30 для чтения и записи на сменные оптические диски 31, такие как CD-ROM, DVD-ROM и иные оптические носители информации. Жесткий диск 27, привод магнитных дисков 28, оптический привод 30 соединены с системной шиной 23 через интерфейс жесткого диска 32, интерфейс магнитных дисков 33 и интерфейс оптического привода 34 соответственно. Приводы и соответствующие компьютерные носители информации представляют собой энергонезависимые средства хранения компьютерных инструкций, структур данных, программных модулей и прочих данных персонального компьютера 20.
Настоящее описание раскрывает реализацию системы, которая использует жесткий диск 27, сменный магнитный диск 29 и сменный оптический диск 31, но следует понимать, что возможно применение иных типов компьютерных носителей информации 56, которые способны хранить данные в доступной для чтения компьютером форме (твердотельные накопители, флеш карты памяти, цифровые диски, память с произвольным доступом (ОЗУ) и т.п.), которые подключены к системной шине 23 через контроллер 55.
Компьютер 20 имеет файловую систему 36, где хранится записанная операционная система 35, а также дополнительные программные приложения 37, другие программные модули 38 и данные программ 39. Пользователь имеет возможность вводить команды и информацию в персональный компьютер 20 посредством устройств ввода (клавиатуры 40, манипулятора «мышь» 42). Могут использоваться другие устройства ввода (не отображены): микрофон, джойстик, игровая консоль, сканнер и т.п. Подобные устройства ввода по своему обычаю подключают к компьютерной системе 20 через последовательный порт 46, который в свою очередь подсоединен к системной шине, но могут быть подключены иным способом, например, при помощи параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 47 или иной тип устройства отображения также подсоединен к системной шине 23 через интерфейс, такой как видеоадаптер 48. В дополнение к монитору 47, персональный компьютер может быть оснащен другими периферийными устройствами вывода (не отображены), например, колонками, принтером и т.п.
Персональный компьютер 20 способен работать в сетевом окружении, при этом используется сетевое соединение с другим или несколькими удаленными компьютерами 49. Удаленный компьютер (или компьютеры) 49 являются такими же персональными компьютерами или серверами, которые имеют большинство или все упомянутые элементы, отмеченные ранее при описании существа персонального компьютера 20, представленного на Фиг. 3. В вычислительной сети могут присутствовать также и другие устройства, например, маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.
Сетевые соединения могут образовывать локальную вычислительную сеть (LAN) 50 и глобальную вычислительную сеть (WAN). Такие сети применяются в корпоративных компьютерных сетях, внутренних сетях компаний и, как правило, имеют доступ к сети Интернет. В LAN- или WAN-сетях персональный компьютер 20 подключен к локальной сети 50 через сетевой адаптер или сетевой интерфейс 51. При использовании сетей персональный компьютер 20 может использовать модем 54 или иные средства обеспечения связи с глобальной вычислительной сетью, такой как Интернет. Модем 54, который является внутренним или внешним устройством, подключен к системной шине 23 посредством последовательного порта 46. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.
В заключение следует отметить, что приведенные в описании сведения являются примерами, которые не ограничивают объем настоящего изобретения, определенного формулой.