Система и способ категоризации .NET приложений
SYSTEM AND METHOD FOR CATEGORIZATION OF .NET APPLICATIONS

Область техники
Изобретение относится к области категоризации приложений, созданных при помощи программной платформы .NET.
Уровень техники
В настоящее время существует проблема обнаружения вредоносного программного обеспечения (ПО), созданного с использованием программной платформы .NET (.NET Framework), приложения созданные таким образом будем называть .NET приложениями. Упомянутая проблема связана с обнаружением вредоносных приложений на основании их поведения (например, на основании последовательности осуществляемых системных вызовов - вызовов системных функций). Сама платформа .NET состоит из среды исполнения CLR (Common Language Runtime) и библиотеки типов .NET Framework (.NET Framework Class Library). При исполнении кода приложения, содержащего CIL-код (промежуточный код, англ. Common Intermediate Language), среда исполнения CLR, которой передается управление при запуске приложения, осуществляет множество вызовов системных функций, часть которых связана с логикой исполнения приложения, а именно функций, вызываемых из полученного при JIT-компиляции (компиляция "на лету", англ. Just In Time) CIL-кода машинного кода, а другая - с внутренними процессами среды исполнения CLR. Поэтому, просто анализируя журнал вызовов системных функций, который можно получить разными известными из уровня техники способами во время исполнения .NET приложения (если быть более точным - процесса, запущенного из такого .NET приложения), сложно принимать решение относительно поведения приложения (например, характерно ли поведение вредоносным приложениям или нет), так как такой журнал вызовов будет содержать много "лишней" информации, относящейся к вызовам функций, которые не связаны с логикой исполнения приложения.
Заявленная проблема может быть решена при помощи CLR профилировщика (англ. profiler): платформа .NET предоставляет СОМ-интерфейсы для реализации профилировщика - динамической библиотеки (DLL), которая позволяет перехватывать вызовы функций.NET приложения, которые относятся именно к исполнению анализируемого приложения.
В уровне техники присутствуют публикации, в которых используются CLR профайлеры. Например в публикации US 8732674 B1 описан подход к использованию CLR профайлера с целью изменения кода .NET приложения, а именно кода функций, удовлетворяющих определенным критериям.
Однако в уровне техники нет подходов, позволяющих эффективно категоризировать .NET приложения (и, в том числе, обнаруживать вредоносные приложения) на основании журнала вызовов системных функций, осуществляемых при исполнении кода упомянутого приложения.
Раскрытие изобретения
Настоящее изобретение предназначено для категоризации .NET приложений.
Технический результат настоящего изобретения заключается в реализации заявленного назначения.
Еще один технический результат заключается в обеспечении безопасности вычислительного устройства, который достигается путем удаления из памяти вычислительного устройства приложения, которое отнесено к категории вредоносных приложений.
Способ категоризации приложения, созданного с использованием .NET, реализуемый при помощи компьютерной системы, в котором: запускают при помощи средства безопасности профилировщик при запуске приложения, созданного с использованием .NET, с целью обработки событий, возникающих во время исполнения приложения; формируют журнал исполнения приложения, созданного с использованием .NET, при помощи запущенного профилировщика; при этом в журнал исполнения добавляется информация о возникающих во время исполнения приложения событиях, которые обрабатываются профилировщиком; относят при помощи средства безопасности приложение к одной из предопределенных категорий приложений на основании анализа сформированного журнала исполнения .NET приложения.
В одном из вариантов реализации способа событиями, возникающими во время исполнения приложения, созданного с использованием .NET, являются вызовы методов программной платформы .NET, которые осуществляются из программного кода упомянутого приложения во время его исполнения.
В другом варианте реализации способа профилировщиком является CLR профилировщик.
В еще одном из вариантов реализации способа обработкой события профилировщиком является перехват события при помощи функции обратного вызова.
В другом варианте реализации способа запуск профилировщика при запуске приложения, созданного с использованием .NET, осуществляется путем указания в качестве переменной окружения COR_PROFILER значения CLSID, соответствующее профилировщику.
В еще одном из вариантов реализации способа профилировщиком является динамическая библиотека, зарегистрированная в качестве библиотеки СОМ сервер и содержащая реализацию интерфейса ICorProfilerCallback.
В другом варианте реализации способа в журнал исполнения приложения дополнительно добавляется байтовой представление загружаемых в оперативную память сборок.
В еще одном из вариантов реализации способа загрузка сборок в оперативную память осуществляется при помощи любого из следующих методов: Assembly.LoadModule, Assembly.Load, AppDomain.Load.
В другом варианте реализации способа анализ журнала исполнения осуществляется с использованием эвристических правил.
В еще одном из вариантов реализации способа предопределенными категориями приложений являются: категория доверенных приложений, категория недоверенных приложений, категория вредоносных приложений.
В другом варианте реализации способа при отнесении приложения, созданного с использованием .NET, к категории вредоносных приложений упомянутое приложение помещается в карантин или удаляется из памяти вычислительного устройства.
Краткое описание чертежей
Дополнительные цели, признаки и преимущества настоящего изобретения будут очевидными из прочтения последующего описания осуществления изобретения со ссылкой на прилагаемые чертежи, на которых:
Фиг. 1 иллюстрирует примерный вариант компонентов системы, реализующей настоящее изобретение.
Фиг. 2 показывает вариант реализации способа настоящего изобретения.
Фиг. 3 показывает пример компьютерной системы общего назначения.
Хотя изобретение может иметь различные модификации и альтернативные формы, характерные признаки, показанные в качестве примера на чертежах, будут описаны подробно. Следует понимать, однако, что цель описания заключается не в ограничении изобретения конкретным его воплощением. Наоборот, целью описания является охват всех изменений, модификаций, входящих в рамки данного изобретения, как это определено приложенной формуле.
Описание вариантов осуществления изобретения
Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Сущность, приведенная в описании, является не чем иным, как конкретными деталями, необходимыми для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется в объеме приложенной формулы.
Введем ряд определений и понятий, которые будут использоваться при описании вариантов осуществления изобретения.
Вредоносное приложение - приложение, способное нанести вред компьютеру или данным пользователя компьютера (иными словами, компьютерной системы), например: сетевой червь, клавиатурный шпион, компьютерный вирус. В качестве нанесенного вреда может выступать неправомерный доступ к ресурсам компьютера, в том числе к данным, хранящимся на компьютере, с целью хищения, а также неправомерное использование ресурсов, в том числе для хранения данных, проведения вычислений и т.п.
Доверенное приложение - приложение, которое не наносит вреда компьютеру или его пользователю. Доверенным приложением может считаться приложение, разработанное доверенным производителем ПО (программного обеспечения), загруженное из доверенного источника (например, сайт, занесенный в базу данных доверенных сайтов) или приложение, идентификатор (или другие данные, по которым можно однозначно определить приложение) которого (например, хеш-сумма файла приложения) хранится в базе данных доверенных приложений. Идентификатор производителя, например, цифровой сертификат, может также храниться в базе данных доверенных приложений.
Недоверенное приложение - приложение, которое не является доверенным, но также не признано вредоносным, например, при помощи антивирусного приложения. При этом недоверенное приложение может впоследствии быть признано вредоносным, например, при помощи антивирусной проверки.
Вредоносный файл - файл, являющийся компонентом вредоносного приложения и содержащий программный код (исполняемый или интерпретируемый код).
Недоверенный файл - файл, являющийся компонентом недоверенного приложения и содержащий программный код (исполняемый или интерпретируемый код).
Доверенный файл - файл, являющийся компонентом доверенного приложения.
Предопределенные категории приложений - по меньшей мере категория доверенных приложений, категория недоверенных приложений, категория вредоносных приложений.
Событие, возникающее во время исполнения приложения, созданного с использованием .NET (.NET приложения) - вызовы функций (в том числе функций и методов программной платформы .NET), которые осуществляются из программного кода упомянутого приложения во время его исполнения. В силу особенностей платформы .NET в контексте описания настоящего изобретения понятия функция и метод будем считать идентичными. Примерами событий могут являться конкатенация строк (путем вызова функции System.String.Concat), получение значения строкового ресурса (путем вызова функции System.Resources.ResourceManager.GetString) и пр.
1
1
CLR профилировщик (CLR profiler) - динамическая библиотека, зарегистрированная в операционной системе в качестве СОМ объекта и содержащая реализацию интерфейса ICorProfilerCallback. В еще одном варианте реализации CLR профилировщик содержит реализацию интерфейса ICorProfilerCallback2. В еще одном варианте реализации CLR профилировщик содержит реализацию других интерфейсов профилировщиков (например, ICorProfilerCallback7), подробно с интерфейсами профилировщиков можно ознакомиться в документе (https://docs.microsoft.com/en-us/dotnet/framework/unmanaged-api/profiling/profiling-interfaces). В общем случае профилировщик - программное средство, предназначенное для профилирования приложения, а именно сбора информации об исполнении приложения - времени исполнения приложения и его отдельных частей, данных, хранящихся в оперативной памяти, вызываемых при исполнении функциях и их аргументах и т.п.
Обработка события CLR профилировщиком - перехват события, возникающего во время исполнения приложения, при помощи функции обратного вызова, которая реализована самим CLR профилировщиком.
2
2
Сборка (она же.NET сборка) (https://msdn.microsoft.com/en-us/library/k3677y81(v=vs.90).aspx, https://msdn.microsoft.com/ru-ru/library/k3677y81(v=vs.110).aspx) - исполняемый РЕ файл, который содержит промежуточный код (CIL - Common Intermediate Language).
Под средствами системы категоризации.NET приложений в настоящем изобретении понимаются реальные устройства, системы, компоненты, группы компонентов, реализованные с использованием аппаратных средств, таких как интегральные микросхемы (англ. application-specific integrated circuit, ASIC) или программируемые вентильные матрицы (англ. field-programmable gate array, FPGA) или, например, в виде комбинации программных и аппаратных средств, таких как микропроцессорная система и набор программных инструкций, а также на нейроморфных чипах (англ. neurosynaptic chips) Функциональность указанных средств системы может быть реализована исключительно аппаратными средствами, а также в виде комбинации, где часть функциональности средств системы реализована программными средствами, а часть аппаратными. В некоторых вариантах реализации часть средств, или все средства, могут быть исполнены на процессоре компьютера общего назначения (например, который изображен на Фиг. 3). При этом компоненты системы могут быть реализованы в рамках как одного вычислительного устройства, так и разнесены между несколькими, связанными между собой вычислительными устройствами.
Фиг. 1 отображает вариант компонентов системы категоризации .NET приложений. Система категоризации .NET приложений состоит из CLR профилировщика 130, журнала исполнения .NET приложения 150 и средства безопасности 160, связанных между собой, как показано на Фиг. 1.
Как выше было указано, CLR профилировщик 130 - динамическая библиотека (библиотека DLL), которая предназначена для профилирования .NET приложений, иными словами, созданных с использованием программной платформы .NET Framework. При этом платформа .NET включает в себя два существенных компонента: среду исполнения CLR (Common Language Runtime) и библиотеку типов .NET Framework (.NET Framework Class Library). Среда исполнения CLR 140 предоставляет возможность профилировать приложения с управляемым кодом, а именно .NET приложения, при помощи зарегистрированных профилировщиков, таких как CLR профилировщик 140, реализованных в виде библиотек СОМ сервера (COM server DLL). При профилировании такие библиотеки загружаются средой исполнения CLR 140 в оперативную память 110, далее под оперативной памятью 110 будем понимать адресное пространство процесса, запущенного из профилируемого приложения .NET 120. Стоит отметить, что запуск .NET приложения может осуществляться как пользователем компьютерной системы, так и средством безопасности 160 (например, с целью дальнейшего анализа и категоризации).
3
3
В одном из вариантов реализации изобретения регистрация CLR профилировщика 130 в качестве библиотеки СОМ сервер осуществляется средством безопасности 160, в результате регистрации средство безопасности 160 получает от операционной системы (ОС) идентификатор (CLSID) зарегистрированного СОМ объекта. Для загрузки CLR профилировщика 130 в адресное пространство профилируемого приложения средство безопасности 160 также задает необходимые значения переменным окружения COR_ENABLE_PROFILING и COR_PROFILER (последний с указанием идентификатора, например CLSID, CLR профилировщика 130). В другом варианте реализации изобретения средство безопасности 160 также задает значение переменной окружения COMPLUS_ProfAPI_ProfilerCompatibilitySetting (например, значение "EnableV2Profiler"). Процесс запуска CLR профилировщика 130 может отличаться в зависимости от версии программной платформы .NET, расположенной на компьютерной системе. В общем случае для запуска CLR профилировщика 130 средство безопасности 160 выполняет все предписанные спецификацией .NET для этого действия (подробнее (https://docs.microsoft.com/en-us/dotnet/framework/unmanaged-api/profiling/profiling-overview)). После выполнения этих шагов средством безопасности 160 среда исполнения CLR при запуске .NET приложения 120 загружает в оперативную память 110 CLR профилировщик 130. Таким образом средство безопасности 160 хоть и не явно, но осуществляет запуск CLR профилировщика 130 при запуске .NET приложения 120. Стоит отметить, что значения переменных окружения могут задаваться как локально для.NET приложения 120, так и глобально для пользователя компьютерной системы, в рамках которой функционируют компоненты системы категоризации .NET приложений, или для самой компьютерной системы.
Будучи запущенным и находящимся в адресном пространстве процесса профилируемого .NET приложения 120, CLR профилировщик 130 осуществляет сбор информации об исполнении профилируемого .NET приложения 120. CLR профилировщик 130 также способен формировать журнал исполнения .NET приложения 150, созданного с использованием программной платформы .NET, на основании собираемой информации. В такой журнал исполнения .NET приложения 150 CLR профилировщик 130 добавляет информацию о возникающих во время исполнения .NET приложения 120 событиях. В одном из вариантов реализации изобретения информация о событии включает в себя:
наименование (тип) события, примерами наименований являются:
событие вызова функции;
событие загрузки сборки;
событие загрузки домена;
событие загрузки класса;
событие, относящееся к исключительным ситуациям (исключениям, англ. exception);
событие, относящееся к JIT-компиляции;
событие, относящееся к удаленному вызову процедур (RPC - remote procedure call);
4
4
иное событие (https://docs.microsoft.com/en-us/dotnet/framework/unmanaged-api/profiling/icorprofilercallback-interface), информация о котором предоставляется средой исполнения CLR 140;
для событий вызова функции:
наименование функции;
наименование аргументов функции;
значения аргументов функции;
возвращаемое значение функции;
для событий загрузки сборки:
наименование сборки;
тело сборки (байтовое представление);
список типов и методов, описанных в сборке.
Стоит отметить, что событие загрузки сборки в оперативную память 110 связано с вызовом, как правило, одной из следующих функций (методов) при исполнении .NET приложения: Assembly.LoadModule, Assembly.Load, AppDomain.Load.
5
5
В общем случае событиями, возникающими при исполнении .NET приложения 120, являются события, доступ к информации о которых предоставляется (https://docs.microsoft.com/en-us/dotnet/framework/unmanaged-api/profiling/cor-prf-monitor-enumeration) средой исполнения CLR 140. В одном из вариантов реализации такими событиями являются вызовы функций, осуществляемые процессом, запущенным из .NET приложения 120. В еще одном из вариантов реализации изобретениям такими функциями являются методы программной платформы .NET (описанные в платформе .NET Framework, а именно .NET Class Library), вызовы которых осуществляются из программного кода упомянутого приложения 120 во время его исполнения.
Стоит отметить, что в журнал исполнения .NET приложения 150 может быть добавлена также информация, непосредственно не связанная с тем или иным возникающим событием: например наличие в оперативной памяти 110, а именно в памяти, в которой находится образ (загруженное представление) .NET приложения 120 - адресное пространство процесса, запущенного из .NET приложения 120, определенных последовательностей байт, например в виде строк. Такой информацией, в частности, могут быть символьные строки .NET приложения 120, в частности, относящиеся к ресурсам .NET приложения 120 или именам типов или функций этого приложения 120.
Для того, чтобы обрабатывать возникающие события и добавлять информацию о них, при инициализации CLR профилировщика 130 (а именно после его загрузки в оперативную память 110 средой исполнения 140) CLR профилировщик 130 вызывает функцию ICorProfllerlnfo.SetEventMask с указанием в качестве параметра в том числе маски событий, на которые необходимо реагировать профилировщику 130. Примерами таких событий являются (а именно обозначениями соответствующих событий):
COR_PRF_MONITOR_NONE - для отключения перехвата событий;
COR_PRF_MONITOR_ALL - для перехвата любых событий;
COR_PRF_MONITOR_ASSEMBLY_LOADS - для перехвата события загрузки и выгрузки из оперативной памяти 110, а именно адресного пространства процесса исполняющегося .NET приложения 120, сборок .NET, которые осуществляются вызовами функций AssemblyLoad и AssemblyUnload соответственно;
COR_PRF_MONITOR_ENTERLEAVE - для перехвата событий вызова функций и окончания исполнения кода функций.
В одном из вариантов реализации изобретения в качестве параметра функции SetEventMask указывается COR_PRF_MONITOR_ALL. В еще одном варианте реализации в качестве упомянутого параметра указывается COR_PRF_MONITOR_ENTERLEAVE. В другом варианте реализации изобретения в качестве упомянутого параметра указывается COR_PRF_MONITOR_ENTERLEAVE | (бинарное "или") COR_PRF_MONITOR_ASSEMBLY_LOADS.
Сформированный вышеописанным способом журнал исполнения.NET приложения 150 анализируется средством безопасности 160 для категоризации.NET приложения 120, информация о возникающих при исполнении которого событиях добавляется в журнал исполнения.NET приложения 150. Для упомянутого анализа средством безопасности 160 могут применяться любые известны из уровня техники подходы, позволяющие на основании журнала исполнения приложения отнести приложение к той или иной предопределенной категории. В частном случае реализации средство безопасности 160 для упомянутого анализа с целью категоризации.NET приложения 120 применяет эвристические правила. Примерами эвристических правил могу быть следующие правила:
Если возникло событие загрузки сборки, а также в оперативной памяти 110 присутствуют строки: " TVqQAAMAAAAEAAAA", "DeflateStream", "CreateDecryptor", "ToArray", "DecryptData", то .NET приложение 120 относится к категории вредоносных приложений.
Если возникла последовательность следующих событий:
событие или несколько событий вызовов функции формирования строки, например конкатенации строк (например, при помощи вызова String.Concat), результат которых может использоваться для доступа к ресурсам .NET приложения 120, примером результата такой конкатенации является строка "RES" (например, путем конкатенации строк "R", "Е", "S"),
событие вызова функции System.Reflection.Assembly.GetEntryAssembly,
событие вызова функции System.Resources.ResourceManager.GetObject,
то .NET приложение 120 относится к категории вредоносных приложений.
Если возникла последовательность следующих событий:
событие вызова функции для добавления.NET приложения 120 в автозапуск компьютерной системы (например, функции RegistryKey. Set Value),
событие вызова функции NewLateBinding.LateCall, аргументами которой является:
объект Scripting.FileSystemObject и метод Copyfile,
или объект WScript.Shell и метод RegWrite,
а также в оперативной памяти 110 присутствуют последовательности байт, имеющие строковое представление "smtp" и "{Shift}-", то .NET приложение 120 относится к категории вредоносных приложений.
Если возникла последовательность событий вызовов следующих функции:
System.Environment.get_UserName,
System.Environment.get_MachineName,
System.Environment.get_UserDomainName,
System.Environment.get_Is64BitOperatingSystem,
System.Environment.GetLogicalDrives,
System.Environment.get_OSVersion,
System.Net.NetworWnformation.Networklnterface.GetlsNetw orkAvailable,
System.Net.Dns.GetHostName,
System.Net.Dns.GetHostEntry,
System.Net.WebClient.DownloadString,
при этом компьютерной системой, в рамках которой исполняется .NET приложение 120, является не устройство пользователя, а, например, удаленный сервер, то .NET приложение 120 относится к категории вредоносных приложений.
Если возникло событие вызова функции System.Security.Principal.WindowsPrincipal.IsInRole с параметром 0×220 (что означает проверку принадлежности текущего пользователя к группе BUILTIN\Administrators), а также в оперативной памяти 110 присутствует последовательность байт, имеющая строковое представление "KillAV", то .NET приложение 120 относится к категории вредоносных приложений.
Если возникло событие загрузки сборки, при этом загруженная сборка признана вредоносной, то .NET приложение 120 признается вредоносным.
Если возникло событие вызова функции, идентификатор (например, название) которой является идентификатором одной из функций, используемых только доверенными .NET приложениями, то .NET приложение 120 относится к группе доверенных приложений.
Если ни одно из эвристических правил для отнесения .NET приложения 120 к категории вредоносных или доверенных приложений не было применено, то .NET приложение 120 относится к категории недоверенных приложений.
При этом в одном из вариантов реализации изобретения вредоносность сборки (в частности загруженной) определяется, если при сравнении идентификатора сборки (например, хеш-суммы или, например, MVID -module version ID, идентификатор модуля сборки) с идентификаторами известных вредоносных сборок, которые могут храниться как в средстве безопасности 160, так и на удаленном сервере, есть хотя бы одно совпадение. В еще одном из вариантов реализации вредоносность сборки определяется любым другим известным из уровня техники способом.
При этом считается, что функция используется только доверенными .NET приложениями, если ее идентификатор (например, наименование или хеш-сумма от кода функции) содержится в списке доверенных функций. В еще одном варианте реализации считается, что функция используется только доверенными .NET приложениями, если ее идентификатор не содержится в списке недоверенных функций. Доверенная функция - функция, которая используется только доверенными приложениями (и не используется недоверенными или вредоносными приложениями). Не доверенная функция - функция, которая по крайней мере используется недовереными или вредоносными приложениями. Под использованием функции в приложении в данном контексте понимают наличие вызова функции в программном коде приложения. Упомянутые списки могут храниться как в средстве безопасности 160, так и на удаленном сервере, с которым оно связано, и содержит названия тех и только тех функций, которые не встречаются в известных вредоносных .NET приложениях. Такие списки могут формироваться и обновляться на регулярной основе (например, средством безопасности 160) путем выделения функций (и их идентификаторов) известных вредоносных .NET приложений и доверенных .NET приложений, и добавления этих функций (и их идентификаторов) в тот или иной список.
Стоит отметить, что приведенные выше правила являются лишь частными примерами эвристических правил, которые могут применяться к информации, хранящейся в журнале исполнения .NET приложения 150. В общем случае средством безопасности 160 могут использоваться любые другие эвристические правила, предназначенные для категоризации .NET приложений с использованием информации, хранящейся в журнале исполнения .NET приложения 150, в частности информации, получаемой при помощи CLR профилировщика 130. После отнесения .NET приложения 120 к определенной категории приложений средство безопасности 160 способно выполнять действия, направленные на обеспечение безопасности компьютерной системы и основанные на результате категоризации.
В одном из вариантов реализации изобретения, если средство безопасности 160 относит .NET приложение 120 к категории вредоносных приложений, то такое приложение 120 признается вредоносным. В одном из вариантов реализации изобретения такое приложение (и именно файлы приложения, в частности исполняемые файлы) помещается средством безопасности 160 в карантин или удаляется из памяти вычислительного устройства, а именно устройства хранения данных (например, жесткого диска или твердотельного накопителя) компьютерной системы.
В другом варианте реализации изобретения, если средство безопасности 160 не относит .NET приложение 120 к категории доверенных приложений (отнесено, например, к категории недоверенных), то исполнение такого приложения 120 прекращается средством безопасности 160 путем завершения процесса, запущенного из .NET приложения 120.
В еще одном варианте реализации изобретения, если средство безопасности 160 относит .NET приложение 120 к категории вредоносных приложений, то признаются вредоносными также и все сборки, загруженные в оперативную память 110 во время исполнения .NET приложения 120. В еще одном варианте загружаемые сборки признаются вредоносными только в том случае, если они не являются доверенными, а именно идентификаторы (например, MD5 файла приложения) таких сборок хранятся в базе данных доверенных приложений, которая может располагаться как в средстве безопасности 160, так и на удаленном сервере, связанном со средством безопасности 160. В одном из вариантов реализации изобретения такие загруженные сборки признаются вредоносными, только если они загружены в тот же домен, что .NET приложение 120.
В еще одном случае реализации, если средство безопасности 160 относит .NET приложение 120 к категории недоверенных приложений, то средство безопасности 160 ограничивает исполнение .NET приложения 120. Под ограничением исполнения приложения понимают ограничение или запрет выполнения определенных действий .NET приложением:
запрет на запись в определенные области устройства хранения данных (например, относящиеся к системным каталогам "c:\windows" или "c:\windows\system32");
запрет на обращение к определенным сетевым адресам (например, известным адресам, использующимся для проведения онлайн платежей или других банковских операций, например известные сетевые адреса банковских серверов);
запрет на изменение файлов, которые могут содержать документы (например, файлы с расширением doc, docx, pdf и т.п.).
В еще одном варианте реализации изобретения средство безопасности 160 способно передавать информацию о результат отнесения .NET приложения 120 к некоторой категории другим компьютерным системам. В частности, средство безопасности 160 способно передавать такую информацию, например идентификатор .NET приложения 120 (например, MD5 файла) и его категорию средству безопасности, расположенному на другой компьютерной системе (не показано на фигурах), например на вычислительном устройстве некоторого пользователя. Средство безопасности, расположенное на этом вычислительном устройстве, способно сохранить переданную средством безопасности 160 информацию и использовать ее также, как и средство безопасности 160: например удалять файлы .NET приложений, которые были отнесены к категории вредоносных.
Фиг. 2 иллюстрирует примерный вариант реализации способа категоризации .NET приложения 120. На этапе 201 при помощи средства безопасности 160 осуществляют запуск CLR профилировщика 130 после запуска .NET приложения 120. Стоит отметить, что запуск CLR профилировщика 130 при запуске .NET приложения 120 осуществляется не явно, а именно путем регистрации CLR профилировщика 130 в качестве библиотеки СОМ сервера, а также модификации переменных окружения COR_ENABLE_PROFILIG и COR_PROFILER средством безопасности 160. В свою очередь среда исполнения CLR 140, загружаемая в оперативную память 110 при запуске .NET приложения 120, осуществляет загрузку в память 110 CLR профилировщика 130, как как его CLSID указан средством безопасности 160 в качестве значения переменной окружения COR_PROFILER. После этого, на этапе 202, при помощи CLR профилировщика осуществляют формирование журнала исполнения .NET приложения 150. При этом в такой журнал исполнения .NET приложения 150 CLR профилировщик 130 добавляет информацию о возникающих во время исполнения .NET приложения 120 событиях. В одном из вариантов реализации упомянутая информация о событиях включает в себя байтовое представление данных, загружаемых в оперативную память 110. В одном из вариантов реализации такими данными являются загружаемые сборки. После этого, на этапе 203, средство безопасности 160 относит .NET приложение 120 к одной из предопределенных категорий приложений на основании анализа журнала исполнения .NET приложения 150.
В одном из вариантов реализации средство безопасности 160 также проверяет на этапе 205, отнесено ли .NET приложение 120 к категории вредоносных приложений. Если да, то на этапе 207 средство безопасности признает .NET приложение 120 вредоносным. В противном случае средство безопасности 160 на этапе 208 не признает упомянутое приложение 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. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.
В заключение следует отметить, что приведенные в описании сведения являются примерами, которые не ограничивают объем настоящего изобретения, определенного формулой.