RU2757807C1 - System and method for detecting malicious code in the executed file - Google Patents
System and method for detecting malicious code in the executed file Download PDFInfo
- Publication number
- RU2757807C1 RU2757807C1 RU2020128086A RU2020128086A RU2757807C1 RU 2757807 C1 RU2757807 C1 RU 2757807C1 RU 2020128086 A RU2020128086 A RU 2020128086A RU 2020128086 A RU2020128086 A RU 2020128086A RU 2757807 C1 RU2757807 C1 RU 2757807C1
- Authority
- RU
- Russia
- Prior art keywords
- file
- files
- executable file
- executable
- assembly
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/564—Static detection by virus signature recognition
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Virology (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
Область техникиTechnology area
Изобретение относится к области информационной безопасности, а более конкретно к системам и способам проверки файлов на наличие вредоносного кода.The invention relates to the field of information security, and more specifically to systems and methods for checking files for malicious code.
Уровень техникиState of the art
Количество создаваемых пользователями и компаниями новых приложений продолжает непрерывно расти. Улучшенные среды программирования и готовые конструкторы программ значительно упрощают и ускоряют процесс создания или изменения приложений. Создание версий и альтернативных сборок одного приложения редко приводит к появлению совершенно нового исполняемого файла. Зачастую разница функциональности упомянутых исполняемых файлов при детальном анализе может оказаться незначительной.The number of new applications created by users and companies continues to grow. Improved programming environments and out-of-the-box program designers greatly simplify and speed up the process of creating or modifying applications. Versions and alternate assemblies of the same application rarely result in a completely new executable file. Often, the difference in functionality of the mentioned executable files during a detailed analysis may turn out to be insignificant.
Существующие методы компиляции ввиду своей сложности позволяют создавать приложения одинаковой функциональности в виде различных исполняемых файлов. С другой стороны, существует возможность создать два одинаковых исполняемых файла, которые будут иметь разный набор функций.Existing compilation methods, due to their complexity, allow you to create applications of the same functionality in the form of various executable files. On the other hand, it is possible to create two identical executable files that will have a different set of functions.
Непрерывно растущее количество приложений и их постоянное изменение, например, в результате установки обновлений, не позволяет пользователю иметь актуальную информацию о текущей корректно работающей и наиболее безопасной версии сборки приложения. В то же время создатели программного обеспечения не всегда имеют возможность следить за выпуском различных версий сборок создаваемых ими приложений. Этой ситуацией может воспользоваться злоумышленник.The constantly growing number of applications and their constant change, for example, as a result of installing updates, does not allow the user to have up-to-date information about the current correctly working and most secure version of the application assembly. At the same time, software developers do not always have the ability to keep track of the release of different versions of assemblies of the applications they create. This situation can be exploited by an attacker.
Злоумышленники могут воспользоваться упомянутой сложностью и намеренно создать вредоносный исполняемый файл, который будет похож на исполняемый файл известного приложения, но иметь вредоносный функционал. С другой стороны, возможно создание нескольких разных вредоносных исполняемых файлов, которые будут иметь один или похожий вредоносный функционал. Для выявления функциональных отличий используют анализ информации о файлах исходного кода исполняемых файлов.Attackers can take advantage of this complexity and deliberately create a malicious executable file that looks like the executable file of a known application, but has malicious functionality. On the other hand, it is possible to create several different malicious executable files that will have the same or similar malicious functionality. To identify functional differences, the analysis of information about the files of the source code of the executable files is used.
В настоящее время существуют решения, предназначенные для детального сравнения файлов исходного кода. Например, в публикации US9569199B2 описана система, в которой осуществляют сравнение текста файлов исходного кода. Результаты сравнения используют для быстрого создания обновления или новой версии сборки приложения.Currently, there are solutions for detailed comparison of source code files. For example, publication US9569199B2 describes a system that compares the text of source code files. The comparison results are used to quickly create an update or new version of an application assembly.
Хотя описанный выше способ работы успешно справляется с задачей детального сравнения файлов исходного кода, но он не подразумевает выполнения антивирусной проверки функциональности различных версий сборки приложения. Настоящее изобретение позволяет эффективно решать эту задачу.Although the method described above successfully copes with the task of detailed comparison of source code files, it does not imply an anti-virus check of the functionality of different versions of the application assembly. The present invention makes it possible to effectively solve this problem.
Раскрытие изобретенияDisclosure of invention
Изобретение относится к области информационной безопасности, а более конкретно к системам и способам проверки файлов на наличие вредоносного кода. Изобретение предназначено для проверки наличия вредоносного кода в исполняемом файле. Технический результат настоящего изобретения заключается в обеспечении защиты информационной безопасности. Указанный технический результат достигается путем выполнения проверки наличия вредоносного кода в исполняемом файле, схожем по метаданным с доверенным файлом.The invention relates to the field of information security, and more specifically to systems and methods for checking files for malicious code. The invention is intended to check for the presence of malicious code in an executable file. The technical result of the present invention is to provide information security protection. The specified technical result is achieved by performing a check for the presence of malicious code in the executable file, which is similar in metadata to the trusted file.
В одном из вариантов реализации предоставляют способ обнаружения вредоносного кода в исполняемом файле, по которому: определяют метаданные, содержащие информацию о версии сборки исполняемого файла; выбирают из базы данных доверенных файлов по меньшей мере один исполняемый файл, метаданные которого схожи с определенными метаданными; определяют функциональный блок в исполняемом файле, который отсутствует по меньшей мере в одном выбранном исполняемом файле; обнаруживают наличие вредоносного кода в исполняемом файле при помощи правил проверки сборки и на основании определенного функционального блока.In one embodiment, a method is provided for detecting malicious code in an executable file, by which: determining metadata containing information about the version of an assembly of the executable file; select from the database of trusted files at least one executable file, the metadata of which is similar to certain metadata; determining a functional block in the executable file that is absent in at least one selected executable file; detect the presence of malicious code in an executable file using assembly validation rules and based on a specific functional block.
В другом варианте реализации способа под метаданными, содержащими информацию о версии сборки исполняемого файла, выступают по меньшей мере следующие метаданные: номер версии сборки; имя файла; размер файла; уникальные строки, выделенные из файла; структура файла; и содержимое секций импорта, экспорта и ресурсов.In another embodiment of the method, under the metadata containing information about the version of the assembly of the executable file, there are at least the following metadata: the version number of the assembly; File name; file size; unique lines extracted from the file; file structure; and the contents of the import, export and resource sections.
Еще в одном варианте реализации способа в базе данных доверенных файлов хранят исполняемые файлы, списки файлов и модулей исходного кода, отдельные файлы и модули исходного кода, файлы символов различных версий сборок исполняемых файлов и приложений, которые соответствуют по меньше мере одному из следующих условий: в отношении которых ранее была выполнена проверка на наличие вредоносного кода, происхождение которых подтверждено создателем программного обеспечения.In another embodiment of the method, executable files, lists of files and source code modules, individual files and source code modules, symbol files of various versions of assemblies of executable files and applications that correspond to at least one of the following conditions are stored in the database of trusted files: which were previously checked for the presence of malicious code, the origin of which has been confirmed by the creator of the software.
В другом варианте реализации способа функциональный блок представляет совокупность программных инструкций, обеспечивающих выполнений заданной задачи.In another embodiment of the method, the functional block represents a set of program instructions that ensure the execution of a given task.
Еще в одном варианте реализации способа определение функционального блока в исполняемом файле выполняют на основании по меньшей мере одного файла исходного кода, которые отсутствуют в выбранном файле.In yet another embodiment of the method, the definition of the functional block in the executable file is performed based on at least one source code file that is absent in the selected file.
В другом варианте реализации способа определяют функциональный блок в исполняемом файле на основании по меньшей мере одного модуля исходного кода, которые отсутствуют в выбранном файле.In another embodiment of the method, a functional block in the executable file is determined based on at least one source code module that is absent in the selected file.
Еще в одном варианте реализации способа исполняемый файл и файл, выбранный из базы данных доверенных файлов, принадлежат версиям сборки одного и того же приложения.In yet another embodiment of the method, the executable file and the file selected from the database of trusted files belong to assembly versions of the same application.
В другом варианте реализации способа под правилом проверки сборки понимают набор условий, при выполнении которого, определяют вероятность того, что исполняемый файл содержит вредоносный код.In another embodiment of the method, an assembly check rule is understood as a set of conditions under which the probability that the executable file contains malicious code is determined.
Краткое описание чертежейBrief Description of Drawings
Фиг. 1 иллюстрирует структуру системы обнаружения вредоносного кода в исполняемом файле.FIG. 1 illustrates the structure of a system for detecting malicious code in an executable file.
Фиг. 2 иллюстрирует алгоритм системы обнаружения вредоносного кода в исполняемом файле.FIG. 2 illustrates the algorithm of the system for detecting malicious code in an executable file.
Фиг. 3 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер.FIG. 3 is an example of a general purpose computer system, personal computer or server.
Хотя изобретение может иметь различные модификации и альтернативные формы, характерные признаки, показанные в качестве примера на чертежах, будут описаны подробно. Следует понимать, однако, что цель описания заключается не в ограничении изобретения конкретным его воплощением. Наоборот, целью описания является охват всех изменений, модификаций, входящих в рамки данного изобретения, как это определено в приложенной формуле.Although the invention may take various modifications and alternative forms, the characteristic features shown by way of example in the drawings will be described in detail. It should be understood, however, that the purpose of the description is not to limit the invention to a specific embodiment. On the contrary, the purpose of the description is to cover all changes, modifications falling within the scope of this invention, as defined in the appended claims.
Описание вариантов осуществления изобретенияDescription of embodiments of the invention
Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Сущность, приведенная в описании, является ничем иным, как конкретными деталями, необходимыми для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется в объеме приложенной формулы.The objects and features of the present invention, methods for achieving these objects and features will become apparent by reference to exemplary embodiments. However, the present invention is not limited to the exemplary embodiments disclosed below, but may be embodied in various forms. The essence recited in the description is nothing more than the specific details necessary to assist a person skilled in the art in a thorough understanding of the invention, and the present invention is defined within the scope of the appended claims.
Исполняемый файл - файл, содержащий программу или ее часть, написанную на каком-либо из языков программирования, предназначенный для запуска операционной системой.1 (1 Феликс Воройский. Информатика. Энциклопедический словарь-справочник. - Litres, 2017-01-12. - 769 с. - ISBN 9785457966338.)An executable file is a file containing a program or a part of it, written in any of the programming languages, intended to be launched by an operating system. 1 ( 1 Felix Voroisky. Informatics. Encyclopedic Dictionary-Reference. - Litres, 2017-01-12. - 769 pp. - ISBN 9785457966338.)
Сборка приложения - исполняемый файл, набор файлов или логическая структура, содержащая программный код, метаданные и ресурсы, необходимые для корректной компиляции или исполнения приложения. В. NET Core и .NET Framework сборку можно создать из одного или нескольких файлов исходного кода. В. NET Framework сборки могут содержать один или несколько модулей. В крупных проектах несколько разработчиков могут работать с отдельными файлами или модулями исходного кода, которые вместе образуют единую сборку.2 (2 Официальный сайт корпорации Microsoft. URL: https://docs.microsoft.com/ru-ru/dotnet/standard/assembly/#assembly-manifest (дата обращения 30.07.2020).)An application assembly is an executable file, set of files, or logical structure that contains program code, metadata, and resources necessary for the correct compilation or execution of an application. B. NET Core and .NET Framework, an assembly can be created from one or more source code files. B. NET Framework assemblies can contain one or more modules. In large projects, multiple developers can work with separate files or modules of source code that together form a single assembly. 2 ( 2 Official site of Microsoft Corporation. URL: https://docs.microsoft.com/ru-ru/dotnet/standard/assembly/#assembly-manifest (date of access 07/30/2020).)
Функциональный блок - объект аппаратного средства и/или программного обеспечения, выполняющий определенную задачу.3 (3 ГОСТ Ρ 53195.4-2010: Безопасность функциональная связанных с безопасностью зданий и сооружений систем. Часть 4. Требования к программному обеспечению.) Исходный код программы при создании может быть поделен на функциональные блоки. Отдельный файл или модуль исходного кода приложения может быть функциональным блоком. Совокупность файлов и модулей исходного кода, которая отвечает за выполнение отдельного действия, также может быть функциональным блоком.A functional block is a hardware and / or software object that performs a specific task. 3 ( 3 GOST Ρ 53195.4-2010: Functional safety of systems related to the safety of buildings and structures. Part 4. Software requirements.) The source code of the program during creation can be divided into functional blocks. A separate file or module of the application source code can be a function block. The collection of files and modules of the source code, which is responsible for the execution of a particular action, can also be a functional block.
Файл символов - файл, предназначенный для хранения отладочной информации о программе, включая информацию о символах, которая состоит из списка всех символов в программном модуле с адресами, именем файла и строкой, в которой был объявлен символ, информацию об оптимизации указателей на записи активации, название и информацию о типе локальных переменных и структуре данных. Среди файлов символов известны файлы с расширениями COFF, DBG, SYM, PDB.4 (4 Официальный сайт корпорации Microsoft. URL: https://devblogs.microsoft.com/devops/understanding-symbol-files-and-visual-studios-symbol-settings/ (дата обращения 30.07.2020).)Symbols file - a file designed to store debug information about the program, including information about symbols, which consists of a list of all symbols in the program unit with addresses, file name and the line in which the symbol was declared, information about the optimization of pointers to activation records, name and information about the type of local variables and the data structure. Among the symbol files, files with the extensions COFF, DBG, SYM, PDB are known. 4 ( 4 Official website of Microsoft Corporation. URL: https://devblogs.microsoft.com/devops/understanding-symbol-files-and-visual-studios-symbol-settings/ (date of access 07/30/2020).)
Список файлов и модулей исходного кода сборки приложения содержит перечень данных о всех файлах и модулях исходного кода сборки, без связи и наличия которых компиляция исполняемого файла сборки невыполнима, и их хеш-суммы. Список может быть получен путем обработки файлов символов или иного источника данных, который содержит информацию о файлах и модулях исходного кода версии сборки приложения.The list of files and modules of the source code of the application assembly contains a list of data about all files and modules of the source code of the assembly, without connection and the presence of which the compilation of the assembly executable file is impossible, and their hash sums. The list can be obtained by processing symbol files or other data source that contains information about the files and modules of the source code of the assembly version of the application.
В первом случае злоумышленник может осуществить скрытое внедрение вредоносного кода в существующее доверенное и проверенное приложение, исходные файлы которого находятся в открытом доступе либо к которым получен несанкционированный доступ. Во втором случае злоумышленник может осуществить создание множества копий одного вредоносного приложения, которые будут определены антивирусной программой как отличные друг от друга приложения, и в отношении каждой будет осуществлена отдельная проверка на наличие вредоносного кода, хотя, по сути, это одно и то же приложение.In the first case, an attacker can covertly inject malicious code into an existing trusted and trusted application, the source files of which are in the public domain or to which unauthorized access has been obtained. In the second case, an attacker can create multiple copies of one malicious application, which will be identified by the antivirus program as different applications, and each will be scanned separately for the presence of malicious code, although, in fact, it is one and the same application.
Для того чтобы выявить небезопасные приложения из перечисленных случаев, используют систему обнаружения вредоносного кода в неизвестной версии сборки приложения. Фиг 1 иллюстрирует систему обнаружения вредоносного кода в исполняемом файле, которая включает в себя базу данных доверенных файлов 110, средство обнаружения 120, средство анализа 130, средство проверки 140, базу данных правил 150.In order to identify unsafe applications from the listed cases, they use a malicious code detection system in an unknown version of the application assembly. 1 illustrates a system for detecting malicious code in an executable file, which includes a trusted
База данных доверенных файлов 110 - хранилище исполняемых файлов, соответствующих им списков файлов и модулей исходного кода, отдельных файлов и модулей исходного кода, файлов символов различных версий сборок приложений, которые соответствуют по меньше мере одному из следующих условий: в отношении которых ранее была выполнена проверка на наличие вредоносного кода, происхождение которых может быть явно подтверждено создателем программного обеспечения. Базу данных доверенных файлов 110 пополняют из открытых репозиториев разработчиков программного обеспечения файлов исходного кода, например sourceforge, githup и прочих; закрытых репозиториев разработчиков программного обеспечения, например компаний Microsoft, Adobe и прочих. Обращение к закрытому репозиторию осуществляют, например, через прямой запрос для выполнения проверки на наличие вредоносного кода по конкретному приложению или исполняемому файлу. Помимо этого, данные могут поступать из антивирусного сервера.Database of trusted files 110 - a repository of executable files, their corresponding lists of files and source code modules, individual files and source code modules, symbol files of different versions of application assemblies that meet at least one of the following conditions: which were previously checked for the presence of malicious code, the origin of which can be clearly confirmed by the creator of the software. The database of trusted
Средство обнаружения 120 предназначено для определения метаданных, содержащих информацию о версии сборки исполняемого файла, выбора из базы данных доверенных файлов 110 исполняемого файла, метаданные которого схожи с определенными метаданными, передачи данных об исполняемом файле и о выбранном файле средству анализа 130.The
Метаданными, содержащими информацию о версии сборки исполняемого файла, которые используют для поиска схожести, могут быть по меньшей мере следующие метаданные: номер версии сборки, имя файла, размер файла, уникальные строки, выделенные из файла, структура файла, содержимое секций импорта, экспорта, ресурсов.The metadata containing information about the version of the assembly of the executable file, which is used to search for similarity, can be at least the following metadata: assembly version number, file name, file size, unique strings extracted from the file, file structure, contents of import and export sections, resources.
Выборку из базы данных доверенных файлов 110 выполняют как по одному типу метаданных, например по имени файла, так и по совокупности типов, например по номеру версии сборки, размеру файла и содержимому секции импорта. Применяют как четкие, так и нечеткие алгоритмы проверки схожести. Для всего перечня метаданных создают процентное соотношение. Схожесть анализируемых файлов по заданному перечню метаданных означает 100-процентное сходство. Различие одного типа метаданных сокращает степень сходства на соответствующее процентное соотношение значение. В результате выборки выявляют по крайней мере один безопасный файл из базы данных доверенных файлов 110 и все связанные с ним данные.Fetching from the database of trusted
Затем средство обнаружения 120 передает данные об исполняемом файле и о выбранном файле средству анализа 130.The
Средство анализа 130 предназначено для определения функционального блока в исполняемом файле, который отсутствует по меньшей мере в одном выбранном файле, и передачи данных об определенном функциональном блоке средству проверки 140.The
Определение функционального блока осуществляют путем выполнения следующего перечня действий. Во-первых, выявляют список файлов и модулей исходного кода в исполняемом файле. Во-вторых, сравнивают списки файлов и модулей исходного кода исполняемого файла и выбранного файла из базы данных доверенных файлов 110. В-третьих, по результатам сравнения выявляют файлы и модули исходного кода, которые отсутствуют или отличны, и объединяют их в отдельный функциональный блок.The definition of a functional block is carried out by performing the following list of actions. First, the list of files and modules of the source code in the executable file is revealed. Second, the lists of files and modules of the source code of the executable file and the selected file from the database of trusted
При создании различных версий сборок приложений среды разработки программного обеспечения и языки программирования предусматривают возможность создания файлов символов для каждого файла и модуля исходного кода. На основе файлов символов вычисляют список файлов и модулей исходного кода и хранят, например, в таком виде:When you create different versions of application assemblies, software development environments and programming languages provide the ability to create symbol files for each source file and unit. Based on the symbol files, a list of files and modules of the source code is calculated and stored, for example, in the following form:
«0 c:\program files (x86)\windows kits\10\include\10.0.17763.0\ucrt\sys\stat.h (MD5: 8DCC3C7F28EF6CADCEA54C4F1881C8D3)»"0 c: \ program files (x86) \ windows kits \ 10 \ include \ 10.0.17763.0 \ ucrt \ sys \ stat.h (MD5: 8DCC3C7F28EF6CADCEA54C4F1881C8D3)"
В одном случае упомянутые файлы символов могут быть частью скомпилированного файла. В другом случае файлы символов могут быть среди исходных файлов, например, в виде файла PDB (Program DataBase). Например, для интерпретируемых языков программирования список файлов и модулей исходного кода может быть получен непосредственным подсчетом хеш-сумм всех файлов приложения или сценария.In one case, said symbol files may be part of a compiled file. Alternatively, symbol files may be among the source files, for example, as a PDB (Program DataBase) file. For example, for interpreted programming languages, a list of files and source code modules can be obtained by directly calculating the hash sums of all files in an application or script.
После определения функционального блока средство анализа 130 передает данные об определенном функциональном блоке средству проверки 140.After determining the functional block, the
Средство проверки 140 предназначено для обнаружения наличия вредоносного кода в исполняемом файле при помощи правил проверки сборки и на основании определенного функционального блока.The
База данных правил 150 предназначена для хранения правил проверки сборки. В качестве базы данных правил 150 могут быть использованы различные виды баз данных, а именно: иерархические (IMS, TDMS, System 2000), сетевые (Cerebrum, Cronospro, DBVist), реляционные (DB2, Informix, Microsoft SQL Server), объектно-ориентированные (Jasmine, Versant, POET), объектно-реляционные (Oracle Database, PostgreSQL, FirstSQL/J), функциональные и т.д. Количество правил не ограничено примерами. Правила могут быть созданы при помощи алгоритмов машинного обучения и автоматизированной обработки больших массивов данных, и содержать иные условия или комбинации условий, вердикты.The
Проверка на наличие вредоносного кода исполняемого файла предусматривает проверку всех файлов и модулей исходного кода с учетом данных о схожести исполняемого файла и выбранного файла. Файлы и модули исходного кода исполняемого файла, которые идентичны файлам и модулям исходного кода выбранного файла, могут быть частично или полностью исключены из проверки. Файлы и модули исходного кода, которые отсутствую или отличны, которые были объединены в функциональный блок, подлежат детальному анализу на наличие вредоносного кода с использованием правил проверки сборки.Checking for malicious code of an executable file includes checking all files and modules of the source code, taking into account the data on the similarity of the executable file and the selected file. Files and modules of the source code of the executable file, which are identical to the files and modules of the source code of the selected file, can be partially or completely excluded from scanning. Files and source code modules that are missing or different, which have been combined into a functional block, are subject to detailed analysis for the presence of malicious code using assembly check rules.
Правилом проверки сборки является набор условий, при выполнении которых определяют вероятность того, что исполняемый файл содержит вредоносный код.An assembly validation rule is a set of conditions that determine the likelihood that an executable file contains malicious code.
Одним из примеров реализации правил проверки сборки может быть выполнение следующих условий: исполняемый файл и выбранный файл при проверке сходства по метаданным схожи на 90 процентов, определенный функциональный блок не может быть обнаружен, вердикт - вероятность наличия вредоносного кода больше 80 процентов. Представленный набор условий явно указывает на то, что исполняемый файл не содержит файлов символов в отличие от выбранного файла. Использование файлов символов является существенным параметром в процессе разработки программ и не может быть просто так отменено. Это свидетельствует о том, что злоумышленник получил доступ к процессу сборки выбранного файла и создал исполняемый файл, содержащий вредоносный код.One of the examples of the implementation of assembly verification rules can be the fulfillment of the following conditions: the executable file and the selected file are 90 percent similar when checking the metadata similarity, a certain functional block cannot be found, the verdict is the probability of the presence of malicious code is more than 80 percent. The presented set of conditions clearly indicates that the executable file does not contain symbol files, unlike the selected file. The use of symbol files is an essential parameter in the development process and cannot be simply overridden. This indicates that an attacker gained access to the build process of the selected file and created an executable file containing malicious code.
Другим примером реализации правил проверки сборки может быть выполнение следующего набора условий: исполняемый файл и выбранный файл схожи по метаданным на 90 процентов, определенный функциональный блок составляет от 1 до 10 процентов от общего количества функциональных блоков, в одном из файлов и модулях исходного кода из определенного функционального блока обнаружено наличие вредоносного кода, вердикт -вероятность наличия вредоносного кода 80 процентов.Another example of the implementation of assembly verification rules can be the fulfillment of the following set of conditions: the executable file and the selected file are similar in metadata by 90 percent, a certain functional block is from 1 to 10 percent of the total number of functional blocks, in one of the files and modules of the source code from a certain functional block, the presence of malicious code was detected, the verdict is the probability of the presence of malicious code 80 percent.
Третьим примером реализации правил проверки сборки может быть выполнение следующего набора условий: исполняемый файл и первый выбранный файл схожи по метаданным на 50 процентов, определенный функциональный блок составляет 5 процентов от общего количества функциональных блоков, исполняемый файл и второй выбранный файл приложения схожи по метаданным на 50 процентов, определенный функциональный блок составляет 5 процентов от общего количества функциональных блоков, вердикт - вероятность того, что исполняемый файл содержит вредоносный код, 60 процентов. Такой набор условий свидетельствует о том, что обнаружено массовое создание похожих приложений.The third example of the implementation of assembly verification rules can be the fulfillment of the following set of conditions: the executable file and the first selected file are similar in metadata by 50 percent, a certain functional block is 5 percent of the total number of functional blocks, the executable file and the second selected application file are similar in metadata by 50 percent, a certain functional block is 5 percent of the total number of functional blocks, the verdict is the probability that the executable file contains malicious code, 60 percent. This set of conditions indicates that a massive creation of similar applications has been detected.
В самом общем случае метаданные исполняемого файла 1, например, могут быть следующими: номер версии сборки 1, имя файла 1, размер файла 1, уникальные строки 10, структура фала 1, секция импорта содержит 18 импортируемых файлов, секция экспорта содержит 1 экспортируемый файл, секция ресурсов содержит 3 файла. Допустим, что по перечисленным метаданным в базе данных доверенных файлов 110 был найден и выбран файл 2, метаданные которого следующие: номер версии сборки 1, имя файла 1, размер 2, уникальные строки 10, структура файла 1, уникальные строки 10, структура файла 1, секция импорта содержит 19 импортируемых файлов, секция экспорта содержит 1 экспортируемый файл, секция ресурсов содержит 3 файла. Помимо этого, для файла 2 найден соответствующий ему список файлов и модулей исходного кода, состоящий из 30 позиций, по которым построены 25 функциональных блоков. Средство обнаружения 120 выявляет обнаруженные следующие отличия: размер 2 больше размера 1 на 5 процентов, 1 импортируемый файл в секции импорта выбранного файла не встречается в метаданных исполняемого файла. Подсчет степени схожести показал, что исполняемый файл схож с выбранным файлом более чем на 90 процентов. На основании этих данных средство анализа 130 определяет наличие файла символов и на его основе определяет список файлов и модулей исходного кода. Определенный список содержит 32 позиции на основе которых выявляют 26 функциональных блоков. 25 из 26 функциональных блоков и 30 из 32 файлов и модулей исходного кода являются идентичными с функциональными блоками выбранного файла. Определяем, что выбранный файл не содержит 1 функциональный блок исполняемого файла. Таким образом, за 100 процентов принимается 26 функциональных блоков, определенный функциональный блок составляет 4 процента. На основе этих данных средство проверки 140 и правил проверки сборки из базы данных правил 150 обнаруживает, что согласно второму примеру правил, исполняемый файл содержит вредоносный код с вероятностью 80 процентов. Файлы и модули исходного кода, которые содержат определенный функциональный блок, подвергаются более сложному и детальному анализу для выяснения, в каком месте и каким образом исполняется вредоносный код.In the most general case, the metadata of
Правила проверки сборки могут быть созданы и для выявления неучтенных исполняемых файлов. Например, система обнаружения вредоносного кода в исполняемом файле может быть установлена или внедрена в среду разработки программного обеспечения. В этом случае правила проверки сборки могут быть настроены на выявление всех исполняемых файлов, которые не были созданы в упомянутой среде разработки программного обеспечения, подразделении, отдельным работником и т.д. Помимо этого, правила проверки сборки могут быть настроены для выявления критических изменений в функциональных блоках исполняемого файла новых версий сборки. Например, система обнаружения вредоносного кода в исполняемом файле может быть установлена или внедрена в центры анализа кода в рамках инициативы по информационной прозрачности. В этом случае правила проверки сборки могут быть настроены для выявления исполняемых файлов различных версий, функциональные блоки которых сильно отличаются от эталонной версии и могут сомнительно сказаться на репутации компании при проверке центром анализа кода.Build validation rules can also be created to detect unrecorded executable files. For example, a system for detecting malicious code in an executable file can be installed or implemented in a software development environment. In this case, assembly validation rules can be configured to identify all executable files that were not created in the mentioned software development environment, department, individual worker, etc. In addition, assembly validation rules can be configured to detect critical changes in the functional blocks of the executable file of newer assembly versions. For example, a system for detecting malicious code in an executable file can be installed or deployed in code analysis centers as part of a transparency initiative. In this case, assembly verification rules can be configured to identify executable files of different versions, the functional blocks of which are very different from the reference version and may have a dubious effect on the company's reputation when checked by the code analysis center.
Фиг. 2 иллюстрирует алгоритм функционирования системы обнаружения вредоносного кода в исполняемом файле. На этапе 211 средство обнаружения 120 осуществляет определение метаданных, содержащих информацию о версии сборки исполняемого файла. На этапе 212 средство обнаружения 120 осуществляет выбор из базы данных доверенных файлов 110 по меньшей мере одного исполняемого файла, метаданные которого схожи с определенными метаданными, и передает данные об исполняемом файле и о выбранном файле средству анализа 130. На этапе 213 средство анализа 130 определяет функциональный блок в исполняемом файле, который отсутствует по меньшей мере в одном выбранном файле, и передает данные об определенном функциональном блоке средству проверки 140. На этапе 214 средство проверки 140 при помощи правил проверки сборки и на основании определенного функционального блока обнаруживает наличие вредоносного кода в исполняемом файле. При наличии вредоносного кода на этапе 215 средство проверки 140 отправляет данные об исполняемом файле, содержащем вредоносный код, на антивирусный сервер. При отсутствии вредоносного кода на этапе 216 система завершает работу.FIG. 2 illustrates the algorithm of functioning of the system for detecting malicious code in an executable file. At
Фиг. 3 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 20, содержащий центральный процессор 21, системную память 22 и системную шину 23, которая содержит разные системные компоненты, в том числе память, связанную с центральным процессором 21. Системная шина 23 реализована, как любая известная из уровня техники шинная структура, содержащая в свою очередь память шины или контроллер памяти шины, периферийную шину и локальную шину, которая способна взаимодействовать с любой другой шинной архитектурой. Системная память содержит постоянное запоминающее устройство (ПЗУ) 24, память с произвольным доступом (ОЗУ) 25. Основная система ввода/вывода (BIOS) 26, содержит основные процедуры, которые обеспечивают передачу информации между элементами персонального компьютера 20, например, в момент загрузки операционной системы с использованием ПЗУ 24.FIG. 3 shows an example of a general-purpose computer system, a personal computer or
Персональный компьютер 20 в свою очередь содержит жесткий диск 27 для чтения и записи данных, привод магнитных дисков 28 для чтения и записи на сменные магнитные диски 29 и оптический привод 30 для чтения и записи на сменные оптические диски 31, такие как CD-ROM, DVD-ROM и иные оптические носители информации. Жесткий диск 27, привод магнитных дисков 28, оптический привод 30 соединены с системной шиной 23 через интерфейс жесткого диска 32, интерфейс магнитных дисков 33 и интерфейс оптического привода 34 соответственно. Приводы и соответствующие компьютерные носители информации представляют собой энергонезависимые средства хранения компьютерных инструкций, структур данных, программных модулей и прочих данных персонального компьютера 20.The
Настоящее описание раскрывает реализацию системы, которая использует жесткий диск 27, сменный магнитный диск 29 и сменный оптический диск 31, но следует понимать, что возможно применение иных типов компьютерных носителей информации 56, которые способны хранить данные в доступной для чтения компьютером форме (твердотельные накопители, флеш карты памяти, цифровые диски, память с произвольным доступом (ОЗУ) и т.п.), которые подключены к системной шине 23 через контроллер 55.The present description discloses an implementation of a system that uses a
Компьютер 20 имеет файловую систему 36, где хранится записанная операционная система 35, а также дополнительные программные приложения 37, другие программные модули 38 и данные программ 39. Пользователь имеет возможность вводить команды и информацию в персональный компьютер 20 посредством устройств ввода (клавиатуры 40, манипулятора «мышь» 42). Могут использоваться другие устройства ввода (не отображены): микрофон, джойстик, игровая консоль, сканер и т.п. Подобные устройства ввода по своему обычаю подключают к компьютерной системе 20 через последовательный порт 46, который в свою очередь подсоединен к системной шине, но могут быть подключены иным способом, например, при помощи параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 47 или иной тип устройства отображения также подсоединен к системной шине 23 через интерфейс, такой как видеоадаптер 48. В дополнение к монитору 47, персональный компьютер может быть оснащен другими периферийными устройствами вывода (не отображены), например, колонками, принтером и т.п.
Персональный компьютер 20 способен работать в сетевом окружении, при этом используется сетевое соединение с другим или несколькими удаленными компьютерами 49. Удаленный компьютер (или компьютеры) 49 являются такими же персональными компьютерами или серверами, которые имеют большинство или все упомянутые элементы, отмеченные ранее при описании существа персонального компьютера 20, представленного на Фиг. 3. В вычислительной сети могут присутствовать также и другие устройства, например, маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.The
Сетевые соединения могут образовывать локальную вычислительную сеть (LAN) 50 и глобальную вычислительную сеть (WAN). Такие сети применяются в корпоративных компьютерных сетях, внутренних сетях компаний и, как правило, имеют доступ к сети Интернет. В LAN- или WAN-сетях персональный компьютер 20 подключен к локальной сети 50 через сетевой адаптер или сетевой интерфейс 51. При использовании сетей персональный компьютер 20 может использовать модем 54 или иные средства обеспечения связи с глобальной вычислительной сетью, такой как Интернет. Модем 54, который является внутренним или внешним устройством, подключен к системной шине 23 посредством последовательного порта 46. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.Network connections can form a local area network (LAN) 50 and a wide area network (WAN). Such networks are used in corporate computer networks, internal networks of companies and, as a rule, have access to the Internet. In LAN or WAN networks,
В заключение следует отметить, что приведенные в описании сведения являются примерами, которые не ограничивают объем настоящего изобретения, определенного формулой.In conclusion, it should be noted that the information given in the description are examples, which do not limit the scope of the present invention defined by the claims.
Claims (12)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2020128086A RU2757807C1 (en) | 2020-08-24 | 2020-08-24 | System and method for detecting malicious code in the executed file |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2020128086A RU2757807C1 (en) | 2020-08-24 | 2020-08-24 | System and method for detecting malicious code in the executed file |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2757807C1 true RU2757807C1 (en) | 2021-10-21 |
Family
ID=78289556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2020128086A RU2757807C1 (en) | 2020-08-24 | 2020-08-24 | System and method for detecting malicious code in the executed file |
Country Status (1)
Country | Link |
---|---|
RU (1) | RU2757807C1 (en) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050039029A1 (en) * | 2002-08-14 | 2005-02-17 | Alexander Shipp | Method of, and system for, heuristically detecting viruses in executable code |
US20050172338A1 (en) * | 2004-01-30 | 2005-08-04 | Sandu Catalin D. | System and method for detecting malware in executable scripts according to its functionality |
US20060037080A1 (en) * | 2004-08-13 | 2006-02-16 | Georgetown University | System and method for detecting malicious executable code |
RU2427890C2 (en) * | 2009-10-01 | 2011-08-27 | ЗАО "Лаборатория Касперского" | System and method to compare files based on functionality templates |
US20140366137A1 (en) * | 2013-06-06 | 2014-12-11 | Kaspersky Lab Zao | System and Method for Detecting Malicious Executable Files Based on Similarity of Their Resources |
RU2637997C1 (en) * | 2016-09-08 | 2017-12-08 | Акционерное общество "Лаборатория Касперского" | System and method of detecting malicious code in file |
-
2020
- 2020-08-24 RU RU2020128086A patent/RU2757807C1/en active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050039029A1 (en) * | 2002-08-14 | 2005-02-17 | Alexander Shipp | Method of, and system for, heuristically detecting viruses in executable code |
US20050172338A1 (en) * | 2004-01-30 | 2005-08-04 | Sandu Catalin D. | System and method for detecting malware in executable scripts according to its functionality |
US20060037080A1 (en) * | 2004-08-13 | 2006-02-16 | Georgetown University | System and method for detecting malicious executable code |
RU2427890C2 (en) * | 2009-10-01 | 2011-08-27 | ЗАО "Лаборатория Касперского" | System and method to compare files based on functionality templates |
US20140366137A1 (en) * | 2013-06-06 | 2014-12-11 | Kaspersky Lab Zao | System and Method for Detecting Malicious Executable Files Based on Similarity of Their Resources |
RU2637997C1 (en) * | 2016-09-08 | 2017-12-08 | Акционерное общество "Лаборатория Касперского" | System and method of detecting malicious code in file |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8621278B2 (en) | System and method for automated solution of functionality problems in computer systems | |
Aljawarneh et al. | Cloud security engineering: Early stages of SDLC | |
Shu et al. | Threat intelligence computing | |
CN112131882A (en) | Multi-source heterogeneous network security knowledge graph construction method and device | |
US7840573B2 (en) | Trusted file relabeler | |
Kim et al. | Software systems at risk: An empirical study of cloned vulnerabilities in practice | |
CN114077741B (en) | Software supply chain safety detection method and device, electronic equipment and storage medium | |
Bao et al. | V-SZZ: automatic identification of version ranges affected by CVE vulnerabilities | |
EP2880580A1 (en) | Vulnerability vector information analysis | |
Koschke | Large‐scale inter‐system clone detection using suffix trees and hashing | |
NL2027556B1 (en) | Method and system for generating a list of indicators of compromise | |
Gegick et al. | Matching attack patterns to security vulnerabilities in software-intensive system designs | |
Christey et al. | Common weakness enumeration | |
CN111611590B (en) | Method and device for data security related to application program | |
US20150213272A1 (en) | Conjoint vulnerability identifiers | |
Dalai et al. | Neutralizing SQL injection attack using server side code modification in web applications | |
CN114386032A (en) | Firmware detection system and method for power Internet of things equipment | |
US20240054210A1 (en) | Cyber threat information processing apparatus, cyber threat information processing method, and storage medium storing cyber threat information processing program | |
Pirch et al. | Tagvet: Vetting malware tags using explainable machine learning | |
Li et al. | On the vulnerability proneness of multilingual code | |
CN116932381A (en) | Automatic evaluation method for security risk of applet and related equipment | |
Homaei et al. | Athena: A framework to automatically generate security test oracle via extracting policies from source code and intended software behaviour | |
Akram et al. | VCIPR: vulnerable code is identifiable when a patch is released (hacker's perspective) | |
Salih et al. | Digital forensic tools: A literature review | |
Viertel et al. | Detecting Security Vulnerabilities using Clone Detection and Community Knowledge. |