Ransomware Prevention

By introducing a trust classification mechanism and an IO request monitoring mechanism in the file system, the problem of difficult to prevent and mitigate ransomware attacks in the existing technology is solved, and effective protection and recovery costs of system data are achieved.

JP7667149B2Active Publication Date: 2025-04-22FIELD EFFECT SOFTWARE INC
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2022523660
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-07-30
Filing Date
2020-10-20
Publication Date
2025-04-22
Estimated Expiration
2040-10-20

AI Technical Summary

Technical Problem

The prior art is difficult to effectively prevent and mitigate ransomware attacks, especially in unknown or unpatched operating systems, which lead to difficult and costly data recovery.

Method used

By introducing a trust classification mechanism in the file system, after receiving the IO request, the trust level of the requesting process is determined, the IO request result is modified, and the untrusted process is monitored, its IO request is restricted, and the process is isolated if necessary.

Benefits of technology

Effectively prevent potential ransomware attacks from untrusted processes, ensure the security of system data, and reduce the recovery costs and time caused by ransomware attacks.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007667149000001
    Figure 0007667149000001
  • Figure 0007667149000002
    Figure 0007667149000002
  • Figure 0007667149000003
    Figure 0007667149000003
Patent Text Reader

Abstract

Ransomware attacks can be prevented by monitoring file access requests. When a process requests a directory listing, the result provided can be modified based on whether the process is trusted. For trusted processes, the result provided is the actual directory listing, while the result provided to untrusted processes can be modified to include the seeded file. Access to the seeded file can be monitored to determine if the process is associated with a ransomware attack, and steps can be taken to mitigate the attempted ransomware attack. Ransomware can also be prevented by ensuring that only trusted processes are allowed access to specific files. To provide an improved user experience, processes can be automatically determined from system structures and determining their trustworthiness.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims priority to U.S. Provisional Patent Application No. 62 / 923,941, filed October 21, 2019, and U.S. Provisional Patent Application No. 63 / 059,151, filed July 30, 2020, each of which is incorporated by reference in its entirety for all purposes.

[0002] The present disclosure relates to computer system security, and in particular to preventing ransomware attacks on computer systems. [Background technology]

[0003] A ransomware attack is a type of security threat against a computer system in which an attacker attempts to deny access to the computer system's data or the computer system itself by encrypting user files until a ransom is paid to the attacker. The cyberattack, dubbed the "WannaCry" ransomware attack, took advantage of an unpatched exploit in the Microsoft Windows™ operating system implementation of the Server Message Block (SMB) protocol, leaving millions of computer systems potentially vulnerable.

[0004] Ransomware may be treated as a virus or other security threat, and efforts are made to prevent ransomware from being installed on or gaining access to computer systems, but recent ransomware attacks exploit unknown or unpatched operating system security vulnerabilities. The impact of a ransomware attack may be further mitigated by using regular backups of computer systems, which may allow at least a portion of the data to be restored, but recent data may not be recoverable, which would require significant time and expense.

[0005] Additional, alternative, and / or improved systems for preventing or mitigating ransomware attacks are desirable. Summary of the Invention [Means for solving the problem]

[0006] According to the present disclosure, a method for preventing ransomware attacks is provided, the method including receiving an input / output (IO) request from a requesting process at a file system, determining a trust classification of the requesting process based on whether the requesting process is a trusted process, modifying a result of the IO request based on the trust classification of the requesting process, and monitoring one or more IO requests of the modified results from the requesting process when the requesting process is determined to have an untrusted trust classification.

[0007] In a further embodiment, the method further includes one or more of restricting further file access of the untrusted process when the process attempts to access one or more files of the modified results, and isolating the requesting process.

[0008] In a further embodiment of the method, restricting further file access includes one or more of: preventing untrusted processes from reading the file, preventing untrusted processes from writing the file, preventing untrusted processes from deleting the file, and preventing untrusted processes from moving the file.

[0009] In a further embodiment of the method, modifying the results includes including the seeded file in the results provided to the requesting process if the requesting process is not trusted, and excluding the seeded file from the results provided to the requesting process if the requesting process is trusted.

[0010] In a further embodiment of the method, the seeded file is stored in a storage medium and removed from the results presented to a requesting process when the requesting process is trusted.

[0011] In a further embodiment of the method, the seeded files are identified using one or more of a defined naming convention and a list of seeded file names.

[0012] In a further embodiment of the method, the seeded file is added to the results presented to a requesting process if the requesting process is not trusted.

[0013] In a further embodiment of the method, only the seeded file is presented as a result to a requesting process if the requesting process is not trusted.

[0014] In a further embodiment of the method, the file system operates in kernel mode and the requesting process operates in user mode or kernel mode.

[0015] In a further embodiment of the method, monitoring IO requests for one or more of the modified results includes detecting a write process for one or more of the modified results, determining whether content being written by the write process is likely to be encrypted, and blocking the write process when it is determined that the content being written is likely to be encrypted.

[0016] According to the present disclosure, there is further provided a system for preventing ransomware attacks, the system comprising: a processor for executing instructions; and a memory for storing instructions which, when executed by the processor, configure the system to perform a method including receiving an input / output (IO) request from a requesting process at a file system; determining a trust classification of the requesting process based on whether the requesting process is a trusted process; modifying a result of the IO request based on the trust classification of the requesting process; and monitoring one or more IO requests of the modified result from the requesting process when the requesting process is determined to have an untrusted trust classification.

[0017] In a further embodiment of the system, the method configured by the instructions further includes one or more of restricting further file access of the untrusted process when the process attempts to access one or more files of the modified results, and isolating the requesting process.

[0018] In a further embodiment of the system, restricting further file access includes one or more of: preventing untrusted processes from reading files, preventing untrusted processes from writing files, preventing untrusted processes from deleting files, and preventing untrusted processes from moving files.

[0019] In a further embodiment of the system, modifying the results includes including the seeded file in the results provided to the requesting process if the requesting process is not trusted, and excluding the seeded file from the results provided to the requesting process if the requesting process is trusted.

[0020] In a further embodiment of the system, the seeded file is stored on a storage medium and removed from the results presented to a requesting process if the requesting process is trusted.

[0021] In a further embodiment of the system, the seeded files are identified using one or more of a defined naming convention and a list of seeded file names.

[0022] In a further embodiment of the system, the seeded file is added to the results presented to a requesting process if the requesting process is not trusted.

[0023] In a further embodiment of the system, only the seeded file is presented as a result to a requesting process if the requesting process is not trusted.

[0024] In a further embodiment of the system, the file system operates in kernel mode and the requesting process operates in user mode or kernel mode.

[0025] In a further embodiment of the system, monitoring IO requests for one or more of the modified results includes detecting a write process for one or more of the modified results, determining whether content being written by the write process is likely to be encrypted, and blocking the write process when it is determined that the content being written is likely to be encrypted.

[0026] In accordance with the present disclosure, there is further provided a non-transitory computer-readable medium having instructions stored therein which, when executed by a processor of a computer system, configures the computer system to perform a method including receiving an input / output (IO) request at a file system from a requesting process; determining a trust classification of the requesting process based on whether the requesting process is a trusted process; modifying a result of the IO request based on the trust classification of the requesting process; and monitoring one or more IO requests of the modified result from the requesting process when the requesting process is determined to have an untrusted trust classification.

[0027] In a further embodiment of the non-transitory computer-readable medium, the method configured by the instructions further includes one or more of restricting further file access of the untrusted process when the process attempts to access one or more files of the modified results, and isolating the requesting process.

[0028] In further embodiments of the non-transitory computer readable medium, restricting further file access includes one or more of: preventing untrusted processes from reading files, preventing untrusted processes from writing files, preventing untrusted processes from deleting files, and preventing untrusted processes from moving files.

[0029] In a further embodiment of the non-transitory computer-readable medium, modifying the results includes including the seeded file in the results provided to the requesting process if the requesting process is not trusted, and excluding the seeded file from the results provided to the requesting process if the requesting process is trusted.

[0030] In a further embodiment of the non-transitory computer readable medium, the seeded file is stored in a storage medium and removed from the results presented to the requesting process if the requesting process is trusted.

[0031] In a further embodiment of the non-transitory computer-readable medium, the seeded files are identified using one or more of a defined naming convention and a list of seeded file names.

[0032] In a further embodiment of the non-transitory computer readable medium, the seeded file is added to the results presented to a requesting process if the requesting process is not trusted.

[0033] In a further embodiment of the non-transitory computer readable medium, only the seeded file is presented as a result to a requesting process if the requesting process is not trusted.

[0034] In a further embodiment of the non-transitory computer readable medium, the file system operates in kernel mode and the requesting process operates in user mode or kernel mode.

[0035] In a further embodiment of the non-transitory computer-readable medium, monitoring IO requests for one or more of the modified results includes detecting a write process for one or more of the modified results, determining whether content being written by the write process is likely to be encrypted, and blocking the write process when it is determined that the content being written is likely to be encrypted.

[0036] According to the present disclosure, there is further provided a method for preventing ransomware attacks, the method including: processing a system structure to automatically determine a file type process mapping between a plurality of file types and a process used in accessing each of the plurality of file types; for each of the processes in the file type for process mapping, evaluating a trust level of the process; receiving an input / output (IO) request from a requesting process in a file system; determining whether the requesting process is a trusted process; and allowing or blocking the IO request based on a determination of whether the requesting process is trusted.

[0037] In a further embodiment, the method further includes generating a fingerprint of the process evaluated for trustworthiness for each of the processes in the file type for process mapping, and when determining whether the requesting process is trusted, determining a requesting process fingerprint of the requesting process, and comparing the requesting process fingerprint with a previously determined fingerprint of the process evaluated for trustworthiness, wherein allowing or blocking the IO request is further based on a comparison of the requesting process fingerprint and the previously determined fingerprint.

[0038] In a further embodiment of the method, if the requesting process fingerprint and the previously determined fingerprint do not match, the trustworthiness of the requesting process is re-evaluated.

[0039] In a further embodiment of the method, the system structures include a Windows registry.

[0040] In a further embodiment of the method, processing the Windows registry to automatically determine file types for process mapping includes determining registered applications from a first known location in the registry, where each registered application in the first known location points to a respective second location in the registry; determining for each determined registered application from the respective second location a file type associated with the respective registered application, where each file type points to a third location in the registry; and determining for each file type from the respective third location one or more file access commands associated with a respective process executable located on the file system.

[0041] In a further embodiment of the method, the system structure includes a macOS system structure.

[0042] In a further embodiment of the method, processing macOS system structures to automatically determine file types for process mapping includes using an API to identify multiple UTIs on a given host and correlating the UTI mappings to registered applications or bundles that support them.

[0043] According to the present disclosure, there is further provided a system for preventing ransomware attacks, the system comprising: a processor for executing instructions; and a memory for storing instructions which, when executed by the processor, configure the system to perform a method including processing a system structure to automatically determine file types for process mapping between a plurality of file types and a process used in accessing each of the plurality of file types; for each process in the file types for process mapping, evaluating a trust level of the process; receiving an input / output (IO) request from a requesting process in a file system; determining whether the requesting process is a trusted process; and allowing or blocking the IO request based on a determination of whether the requesting process is trusted.

[0044] In a further embodiment of the system, the method configured by executing the instructions further includes generating, for each process in the file type to process mapping, a fingerprint of the process evaluated for trustworthiness, and when determining whether the requesting process is trusted, determining a requesting process fingerprint of the requesting process, and comparing the requesting process fingerprint with a previously determined fingerprint of the process evaluated for trustworthiness, wherein allowing or blocking the IO request is further based on a comparison of the requesting process fingerprint with the previously determined fingerprint.

[0045] In a further embodiment of the system, if the requesting process fingerprint and the previously determined fingerprint do not match, the trustworthiness of the requesting process is re-evaluated.

[0046] In a further embodiment of the system, the system structure includes a Windows registry.

[0047] In a further embodiment of the system, processing the Windows registry to automatically determine file types to process mapping includes determining registered applications from a first known location in the registry, where each registered application in the first known location points to a respective second location in the registry; determining for each determined registered application from the respective second location a file type associated with the respective registered application, where each file type points to a third location in the registry; and determining for each file type from the respective third location one or more file access commands associated with a respective process executable located on the file system.

[0048] In a further embodiment of the system, the system structure includes a macOS system structure.

[0049] In a further embodiment of the system, processing macOS system structures to automatically determine file types for process mapping includes using an API to identify multiple UTIs on a given host and correlating the UTI mappings to the registered applications or bundles that support them.

[0050] According to the present disclosure, there is further provided a non-transitory computer readable medium having instructions stored therein which, when executed by a processor of a computer system, configures the computer system to perform a method including processing a system structure to automatically determine file types for process mapping between a plurality of file types and a process used in accessing each of the plurality of file types; for each of the processes in the file types for process mapping, evaluating a process trust level; receiving an input / output (IO) request from a requesting process at a file system; determining whether the requesting process is a trusted process; and allowing or blocking the IO request based on a determination of whether the requesting process is trusted.

[0051] In a further embodiment of the non-transitory computer-readable medium, the method configured by the instructions further includes generating, for each of the processes in the file type to process mapping, a fingerprint of the process evaluated for trustworthiness, and when determining whether the requesting process is trusted, determining a requesting process fingerprint of the requesting process, and comparing the requesting process fingerprint to a previously determined fingerprint of the process evaluated for trustworthiness, wherein allowing or blocking the IO request is further based on a comparison of the requesting process fingerprint to the previously determined fingerprint.

[0052] In a further embodiment of the non-transitory computer readable medium, if the requesting process fingerprint and the previously determined fingerprint do not match, the trust level of the requesting process is re-evaluated.

[0053] In a further embodiment of the non-transitory computer-readable medium, the system structures include a Windows registry.

[0054] In a further embodiment of the non-transitory computer readable medium, processing the Windows registry to automatically determine file type to process mapping includes determining registered applications from a first known location in the registry, where each registered application in the first known location points to a respective second location in the registry; for each determined registered application, determining from the respective second location a file type associated with the respective registered application, where each file type points to a third location in the registry; and for each file type, determining from the respective third location one or more file access commands associated with a respective process executable located on the file system.

[0055] In a further embodiment of the non-transitory computer-readable medium, the system structure includes a macOS system structure.

[0056] In a further embodiment of the non-transitory computer-readable medium, processing macOS system structures to automatically determine file types for process mapping includes using an API to identify multiple UTIs on a given host and correlating the UTI mappings to registered applications or bundles that support them.

[0057] Further features and advantages of the present disclosure will become apparent from the following detailed description taken in conjunction with the accompanying drawings. [Brief description of the drawings]

[0058] [Figure 1] 1 illustrates a computer system for preventing or mitigating ransomware attacks. [Diagram 2] Show how to mitigate ransomware attacks. [Figure 3A] Indicate each method for use in mitigating a ransomware attack. [Figure 3B] Indicate each method for use in mitigating a ransomware attack. [Figure 4A] Indicate each method for use in mitigating a ransomware attack. [Figure 4B] Indicate each method for use in mitigating a ransomware attack. [Figure 4C] Indicate each method for use in mitigating a ransomware attack. [Diagram 5] Demonstrate the ransomware attack process and mitigation of the attack. [Figure 6A] 1 illustrates a trusted process that accesses a file on a computer system that implements ransomware mitigation functionality. [Figure 6B] 1 illustrates an untrusted process accessing a file on a computer system that implements ransomware mitigation features. [Figure 7] Showing the ransomware attack process and further mitigation of the attack. [Figure 8] We present a process-based attack mitigation method. [Figure 9] We present further process-based attack mitigation methods. [Figure 10] We show how to determine the trustworthiness of a process associated with a file type. [Figure 11] Indicates the system structures used to determine the process associated with a file type. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0059] Ransomware attacks can be prevented or mitigated by preventing processes from overwriting files with encrypted content or by preventing files copied to a remote location from being deleted, either directly or by utilizing file renaming semantics. While most processes are trusted processes that can overwrite file contents with appropriate permissions, some processes may be of unknown trust and should only be allowed to overwrite data if it is likely not a ransomware attack. As described further herein, likely ransomware processes can be identified in a variety of ways, including, for example, seeding a file that is presented to an untrusted process when a directory listing is requested. Access to the seeded file can then be monitored, and if an untrusted process is accessing the seeded file, further access can be blocked and other mitigating actions can be taken, such as suspending or isolating the untrusted process. Ransomware prevention can be implemented as a file system filter or mini-filter that can handle all input / output (IO) requests for the system. While seeding a file can help detect ransomware processes, it is possible to determine which processes are trusted rather than attempting to determine which processes will not end up being trusted. Determining which processes are trusted to access different file types can be difficult to do without requiring an individual to configure to identify applications that may be used to access and / or edit various file types. As an alternative to, or in addition to, identifying possible ransomware attacks by seeding files, it is possible to automatically determine the processes used to access different file types and determine whether the processes are trusted, as described further below.

[0060] FIG. 1 illustrates a computer system for preventing or mitigating ransomware attacks. The computer system may be, for example, a desktop computer, laptop, server, or other computing device running an operating system such as Windows™, macOS™, Linux™, Chrome™, Android™, iOS™, iPadOS™, etc. The described process is applicable to Windows™ operating systems, but may also be applicable to operating systems vulnerable to ransomware attacks. The computer system 100 may be a standalone computer, or may be located in a network environment such as an enterprise network, or may be a personal computer. Regardless of the make or shape of the computer, the computer system 100 may include a central processing unit (CPU) 102 for executing instructions to configure the computer system 100 to provide various functions. The computer system 100 includes a memory 104 operatively coupled to the CPU 102 and storing instructions 106 for execution by the CPU 102. Computer 100 may further include non-volatile storage shown as a hard disk drive 108, although other devices may be capable of non-volatile storage including, for example, solid state drives, flash memory, optical storage, network attached storage, network shares, etc. Additionally, while hard disk drive 108 is shown as being internal to computer 100, it is possible that the hard drive or other non-volatile storage may be external to computer 100. The non-volatile storage device may store various files 110 in one or more directories.

[0061] Files 110 may be stored in one or more directories, and directories may contain files that may be valuable or sensitive to either individuals, corporations, or other entities. For example, files may include user documents, multimedia files, corporate financial information stored in a financial directory, so that a user or corporation may be affected if access to the files is denied, for example, by an outside party encrypting the files. Directories with valuable or sensitive files may be vulnerable to ransomware attacks. Other files are not sensitive or may be easily restored if access to them is blocked. For example, system files may be restored by reinstalling applications or the operating system.

[0062] The stored instructions, when executed, may configure the computer 100 to provide an operating system (OS) that supports basic functions of the computer. The OS 112 may provide a user mode 114 and a kernel mode 116. Applications generally run in the user mode 114, and the core functions of the OS run in the kernel mode 116. Applications run in the user mode as one or more processes 118, or as one or more dynamic libraries that reside in one or more processes. Processes may access functions in the kernel mode through defined interfaces, such as application programming interfaces (APIs) or user mode drivers. For example, a file editor application may request directory information using an API to list files in a directory. The OS may include interfaces provided by an input / output (IO) manager 120, or other operating system components that manage file I / O, communication between applications or processes of applications, and multiple device drivers. Communication between the operating system and the device drivers may be performed using I / O request packets (IRPs) sent between the operating system components and the drivers. The drivers may use a layered model. For example, a stack of drivers may be associated with a process that accesses files stored on a hard drive.

[0063] The OS 112 may provide a file system 122 that allows processes to create, read, list, update, and delete files on one or more storage devices. File requests received at the IO manager 120 may be forwarded to the file system. The file system 122 may allow filters to be applied to the file system request. For example, a filter may be applied that determines whether the requesting process is authorized to access the requested file. The filters may be provided as one or more file filters or as one or more mini-filters registered with the filter manager 124. The filter manager 124 intercepts the request and passes the IRP to the filters and registered mini-filters in a specified order. As shown, multiple mini-filters 126, 128 may be registered with the same filter manager 124. Ransomware prevention functionality may be provided as a mini-filter 128 registered with the filter manager 124 or as a legacy file filter 130. The filters and mini-filters may modify the request and / or the results. The file system driver 132 receives the modified request and forwards it to the appropriate storage driver stack 134. The storage driver stack 134 prepares the request to the hardware and returns the results, which can be passed back to the filters and mini-filters to modify the results. Although not shown in FIG. 1, ransomware prevention functionality can be provided as a File System Filter driver.

[0064] The ransomware prevention function may prevent ransomware attacks by modifying the file list to make it difficult for malicious processes to identify the actual files. Furthermore, the modified file list may be used to identify malicious processes. Additionally or alternatively, the ransomware prevention function may prevent file access based on whether the process is trusted. The process determination function 136 may be used to determine which processes are used by the computer to access different file types. The trust determination function 138 may then evaluate the process or the executable file of the process to determine whether it is trusted. Whether a process will be trusted may vary depending on the computing device, the user, the entity, etc. For example, a home user may trust applications or processes of applications from known developers or other known sources, while in an enterprise environment, there may be a limited list of applications that may be used or trusted.

[0065] As described in further detail below, the ransomware mini-filter 128, or a possible ransomware (or malicious software) filter function, may receive a directory request or a result of a request from a process. The result to be provided to the process may be modified based on whether the requesting process is considered a trusted or known process. A trusted process is presented with a result identifying the actual file stored in the directory, while the result shown to a non-trusted or untrusted process is seeded with additional seed files in the directory listing that are more likely to be accessed before the actual file. Whether a process is trusted may be determined in various ways. For example, a whitelist may be provided for trusted processes, and processes not on the whitelist may be considered untrusted. Additionally, the trustworthiness classification of a process may be determined periodically based on characteristics of the process. For example, the trustworthiness classification engine may determine whether a process is trusted or untrusted based on various factors including where the application was installed, the name, the time the process was executed, the network activity of the process, the file system activity of the process, signed / unsigned dynamic modules loaded within the address space, non-attributable executable code having an address space, etc. Untrusted processes may include both legitimate processes that may not be trusted and illegitimate processes that are not explicitly trusted. The ransomware mini-filter 128 function may monitor file access requests from untrusted processes to determine if the process is attempting to access any of the seeded files. If the process attempts to access any of the seeded files, the ransomware mini-filter function may restrict further file access for the process. The seeded files may be named to place them at the beginning of the results returned to the process. For example, the seed files may be inserted alphabetically before the actual files.The seed files are associated with common file extension types, such as, but not limited to, .DOC, .DOCX, .XLA, .XLSX, .PPT, .PPTX, .ODT, .RTF, .TXT, .PDF, .JPG, .MPG, .MP4, etc. If the process is a ransomware process or incorporates injected ransomware, the process may attempt to encrypt files starting at the beginning in the directory list, but the ransomware functionality can detect the attempted encryption of files seeded at the beginning of the directory list. By using the ransomware mini-filter 128, computer systems may be protected from ransomware attacks without adversely affecting file system performance for trusted processes.

[0066] FIG. 2 illustrates a method for mitigating ransomware attacks. The method 200 may be implemented within a file system of an operating system and operates in kernel mode. For example, the ransomware prevention method 200 may be implemented as a mini-filter that registers with a filter manager of the file system. The method 200 receives an IO request (202) to retrieve a directory listing. The IO request may be received before the results are retrieved or may be received along with the results. The IO request may be provided in an IO request packet (IRP) that is associated with a requesting process and may be transmitted between file system components, including filters, mini-filters, and drivers of the file system. Each of the components may modify the IRP when processing the request and / or the results. After receiving the IO request, a trust classification of the requesting process is determined (204). The trust classification may identify whether the process is trusted or untrusted. An untrusted process may be of unknown trust. That is, an untrusted process may still be a valid process that should be able to access the file system. That is, not all untrusted processes are considered unsafe. Once the trust classification of the requesting process is determined, it is used to modify the results of the IO request based on the determined trust classification (206). Requesting processes determined to be trusted are presented with results for IO requests of directory listings as if the ransomware prevention feature were not present. In contrast, untrusted processes are shown results for IO requests that include one or more seeded files. As described in more detail below, the seeded files may be stored on the hard drive and removed from the results presented to the trusted process, or the seeded files may be added to the results presented to the untrusted process. The seeded files presented to the untrusted process may be named to position the seeded files at the top of the results list, or the files may be seeded throughout the results list.A ransomware process may generally start encrypting files at the top of the results list, so that it will attempt to encrypt one of the seeded files before encrypting the actual files in the directory. Further IO requests of the untrusted requesting process are monitored for requests for modified results (208). The IO requests may be monitored to detect file access to the seed file by an untrusted process. Because the seeded file is created to detect ransomware attacks, normal processes, even if untrusted, typically do not access the seeded file. As described in more detail below, file access may be monitored for reading the seed file, writing to the seed file, and possibly comparing the content being written to the seeded file to help determine the appropriate action to be taken. For example, an untrusted process may be able to read the seeded file without taking any action, while attempting to write to or delete the seeded file may trigger a mitigation action. After monitoring the IO requests, further file access from the untrusted process may be restricted (210). For example, if the process attempts to write to the seeded file, the process may be blocked from further file access. Additionally, the process may be quarantined (212), killed or suspended, or marked as a rogue process.

[0067] 3A and 3B each illustrate a respective method for use in mitigating a ransomware attack. FIG. 3A illustrates a method in which seeded files are stored on a hard drive or other non-volatile storage medium. Method 300a seeds 302 a file on a storage medium. Files may be seeded in all directories or only in selected directories. Seeding the file may be performed such that the type of seeded file generally matches the type of the actual files in the directory. For example, if a directory has files that are half word documents and half images, the seeded files generally match in composition such that half the seeded files are word documents and the other half are images. The name of the seeded file may be used to position the seeded file in various locations within the results list. Directory listing results are typically presented in alphabetical order, so that a seed file named "1111seedfile.doc" would appear first in the results. Positioning the seeded file at the top of the results list may be particularly useful since ransomware is likely to begin encrypting files at the top of the results, although it is also possible to position the seeded file in different locations throughout the results. Additionally, it is possible to seed only a limited number of files, including as few as a single file, but it is also possible to seed a file for every actual file in a directory. Although seeding a file is shown to occur once initially, it is possible to continually update or modify the seeded file. After the file is seeded, the results of the IO request for the directory listing are received (304). The results will include both the actual file and the seeded file. The trust classification of the requesting process is determined (306a), and if the requesting process is trusted ("yes" at 306a), the seeded file is removed from the results (308a). Seeded files in the results may be identified in a variety of ways.For example, a list of the names of the seeded files may be maintained and checked to determine if any of the files in the results are present. Additionally or alternatively, characteristics of the files in the results may be used to identify the seeded files. For example, the names of the files may be used to identify the seeded files, such as by comparing to a particular naming convention. Additional characteristics, such as file size and / or creation date, may be used to identify the seeded files. Once the seeded files have been removed from the results, the results may be returned to the requesting process (310). By removing the seed files presented to the trusted process, only the actual files will be presented. If the requesting process is not determined to be trusted ("No" in 306a), the results including the seeded files are returned to the requesting process (310). Thus, the untrusted process receives both the actual files and the seeded files.

[0068] FIG. 3B illustrates how the seeded file is not stored on the hard drive or other non-volatile storage medium, but rather inserted into the results. As described above with reference to FIG. 3A, the seeded file was stored on the hard drive and then removed from the results presented to the trusted process. In contrast, method 300b does not store any seeded files on the hard drive or other non-volatile storage medium, but rather seeds the file into the results presented to the untrusted process. Similar to method 300a, method 300b receives results of an IO request for a directory listing (304). A trust classification of the process is determined (306b), and if the process is not trusted ("no" at 306b), the file is seeded into the results (308b). Seeding the file into the results may be performed in a manner similar to seeding the file into the hard drive described above. For example, the name of the file may be used to position the seeded file within the results. The type of the seeded file may also be selected to match the file type composition of the directory. Once the results are modified with the seeded file, the results are returned (310). If the process is determined to be a trusted process (yes at 306b), the results are returned (310) without the seeded file.

[0069] As noted above, a seed file may be presented to a process that has been determined to be untrusted. Files may be seeded in a variety of ways. For example, a directory may be seeded with a single file named to be located at the top of the results list, or the seeded file may be named to be located in one or more locations among the actual files. The files seeded in a directory may vary based on the directory in which the file is seeded. For example, a directory may be profiled to determine what types of files are present along with the names of the files. Files may be seeded based on the profile of the directory such that the profile of the seeded file matches the profile of the directory. The names of the seeded files may be generated to place the seeded files in desired locations. A single file may be seeded in a directory, or multiple files may be seeded. It is possible to seed a file for each actual content file in the directory, with the seeded files named to be lower in alphabetical order compared to the actual file names to ensure that the seeded files are listed before the actual files. Additionally or alternatively, the directory may be monitored to update the seeded files when new actual content files are created and / or existing content files are removed. Dynamically updating the seeded files may be more effective in preventing ransomware attacks, but the processing required may impose an unacceptable processing load on the computer system depending on the processing capabilities of the computer system. In addition to seeding files into the directory results presented to the untrusted process, the ransomware prevention functionality also monitors IO requests from untrusted processes to detect when a process is attempting to access a seeded file and take appropriate action.

[0070] As described above, when providing a result to a process, the trust characteristics of the requesting process may be determined. The determination of the trust characteristics of the process may be based on a number of factors, including from where the application or process was installed, when the process or application was installed, legitimately loaded dynamic libraries, injected dynamic libraries (if any), how often the process or application is executed, and files and directories normally accessed by the application or process. While a particular process may be trusted, not all untrusted processes may be equally untrusted. The appropriate action to take when an untrusted process accesses or attempts to access a seeded file may depend on several factors, including, for example, the particular directory in which the file being accessed resides, the trust level of the requesting process, etc.

[0071] 4A, 4B, and 4C each illustrate a respective method for use in preventing a ransomware attack. As shown in FIG. 4A, method 400 may detect a file read IO request to a seeded file from an untrusted process (402). Upon detecting a file read of a seeded file, any further file system access by the process may be blocked (404). Thus, if the process attempts to read the seeded file, it may be prevented from performing any other file system actions, and therefore, if the process is a ransomware process, it will not be able to encrypt any files. After blocking the process from further file system access, a local user or administrator may be prompted (406) to confirm that the process should be blocked. The prompt may be on the local computer or may be a remote notification to a network administrator or security officer to take appropriate action. Regardless of whether the prompt or notification is provided locally or remotely, the prompt may be to confirm the block, provide notification regarding the silent block, and / or notify an administrator of the action taken. Although shown to occur after blocking file system access, it is possible to prompt the user or administrator to confirm that the process should be blocked before actually blocking the process. Furthermore, prompting the user or administrator may be done in a variety of ways, including, for example, displaying a confirmation box to the user, displaying a list of blocked processes to the user, etc.

[0072] 4B illustrates a method 410 that is similar to method 400, except that rather than detecting a read to the seed file as described above, method 410 detects a write IO request to the seed file (412). An attempt to write to the seed file may block further file system access by the process (414). After blocking file system access by the process as described above, a user or administrator may be prompted to confirm that the process should be blocked, as described above with respect to FIG. 4A.

[0073] FIG. 4C illustrates a further method 420 of restricting file access for untrusted processes. The method 420 detects an IO request from an untrusted process to read a seeded file (422). Upon detecting a read access, the contents of the seed file are stored (424). Note that the seed file may already be stored if it uses a standard format and content. Upon detecting a write to the seed file (426), the content being written to the file is compared (428) to the original content to determine if the file being written is likely to be encrypted (430). It may be possible to determine if the file is encrypted by comparing the content at the beginning of the file, or a location in the file that typically does not change much. For example, a file may have a header section that may not change substantially even when the file content is modified. When a process attempts to encrypt a file, the header may also be encrypted and therefore will change substantially compared to the original file header. If it is determined that the write is likely not encrypting the file ("No" at 430), further file system access by the process may be allowed (432). However, if it is determined that the file write is likely to encrypt content ("Yes" at 430), further file system access by the process may be blocked (434). The user or administrator may be prompted to confirm blocking file system access by the process (436), as described above with respect to Figure 4A.

[0074] 4A-4C, it is possible to restrict file system access to processes in a variety of ways. It will be appreciated that which of methods 400, 410, or 420 is used may be based on the sensitivity of the data on the computer system, the number of processes running on the untrusted computer, and / or other possible factors.

[0075] FIG. 5 illustrates a ransomware attack process and possible prevention of the attack. We will first describe the ransomware process, and then how the ransomware prevention features described above can prevent such ransomware attacks. The process 500 begins with the ransomware process requesting a directory listing (502). The ransomware process may receive the directory listing result and determine if it is a valuable directory (504). Whether the ransomware considers a directory vulnerable may be based, for example, on the type of files present in the directory, the name of the directory, the number of files, etc. If the directory is not considered vulnerable because it contains valuable or sensitive data to the user ("no" at 504), the ransomware process may proceed to the next directory (508). If the directory is considered vulnerable ("yes" at 504), the files may be encrypted (506). Encryption typically begins with the first file in the results list, and for each file (510), the process reads the file's contents (512), encrypts the file (514), writes the encrypted file (516), and then proceeds to the next file in the results list (518). As noted above, without malware prevention, a malware process may encrypt a valuable file and then decrypt the file for a ransom.

[0076] Using the malware prevention function described above, a malware process such as that described in FIG. 5 may be prevented from encrypting any files. As shown in FIG. 5, when a ransomware process requests a directory listing, the malware prevention function inserts the seeded file into the returned directory listing (520). As described above, the seeded file may be named to be at the top of the directory listing. Once the ransomware process starts encrypting files, the first file read will be the seeded file, and the ransomware prevention function may monitor the access and prevent further access to the file system (522). Thus, the ransomware process will not be able to make any further reads or writes to or from the storage. If the ransomware prevention allows the process to read the file, the ransomware process may encrypt the file and then attempt to write the encrypted contents to the file. The ransomware prevention process may detect the attempted write to the seeded file and block further file system access (524), thus preventing any actual files from being encrypted. Alternatively, the ransomware prevention functionality may compare the content being written to the original content of the seeded file to determine if the file is encrypted, and if so, the process may be blocked from making further file system accesses.

[0077] As described above, ransomware prevention prevents processes of unknown trust from encrypting files, while still allowing trusted processes, even legitimate processes of unknown trust, to access the file system.

[0078] 6A illustrates a trusted process accessing a file on a computer system that implements ransomware mitigation functionality. As shown, when a trusted process attempts to access a file, it first requests a directory listing (602), which will return a list of actual files (604). The trusted process may read one of the files (606) and display or otherwise use the content depicted, for example, to display an image 608. The trusted process may then edit and store (610) the file contents 612. In the case of a trusted process, the seeded file is not presented, and the process is presented only with the actual real file content of the directory.

[0079] FIG. 6B illustrates an untrusted process accessing a file on a computer system implementing ransomware mitigation functionality. As shown, the untrusted process may request a directory listing (620) and receive a list of both real and seeded files 622. If the untrusted process is a ransomware process, it will likely begin encrypting files starting at the top of the list, and therefore will attempt to read the first file in the list, which will be the seeded file (624). The seeded file may have dummy content, shown as a checkerboard pattern 626, or may have content copied from other real files. The ransomware process may encrypt a file 630 and then attempt to write the encrypted file (628). The ransomware prevention functionality may detect the attempt to write encrypted content to the seeded file, or any attempt to write to it, and may block the ransomware process from making further file system accesses (632). Thus, the ransomware prevention features described above allow trusted processes to access all files as normal, while malicious untrusted processes will be presented with one or more seeded files that can then be used to identify the malicious activity of the process and block the process from further file system access. Legitimate untrusted processes may be presented with the actual files along with the seeded files, however, the legitimate process will likely not attempt to write to the seeded files and will therefore function as legitimate.

[0080] The ransomware prevention functionality has been described with particular reference to an implementation using MiniFilter provided in the Windows operating system. It will be understood that other operating systems may not use MiniFilter or file filters, but include components that provide similar functionality for monitoring and controlling file system access. Ransomware prevention functionality may be provided in other file system components that manage file system access in different operating systems.

[0081] The ransomware attachment prevention described above attempts to prevent ransomware attacks by presenting possible ransomware processes with seeded files or by otherwise hiding the actual files. However, as described further below, it is also possible to prevent ransomware attacks by ensuring that only trusted processes are permitted to access files. Allowing only trusted processes to access files can be used as an alternative to or in addition to the file seeding described above. Although it is possible to restrict file access to trusted processes, it can be difficult to identify all processes that should be trusted. As described further below, it is possible to automatically identify trusted processes.

[0082] FIG. 7 illustrates the ransomware attack process of FIG. 5 and possible prevention of the attack based on the reliability of the process. As described above, process 500 begins with the ransomware process requesting a directory listing (502). The ransomware process may receive the directory listing result and determine if it is a valuable directory (504). Whether the ransomware considers a directory vulnerable may be based, for example, on the type of files present in the directory, the name of the directory, the number of files, etc. If the directory is not considered vulnerable for containing valuable or sensitive data to the user ("no" at 504), the ransomware process may proceed to the next directory (508). If the directory is considered vulnerable ("yes" at 504), the file may be encrypted (506). Encryption typically begins with the first file in the results list, and for each of the files (510), the process reads the file's contents (512), encrypts the file (514), writes the encrypted file (516), and then proceeds to the next file in the results list (518). As noted above, without malware prevention, a malware process may encrypt a valuable file and then decrypt the file, taking the ransom. When a ransomware process requests a directory listing, the malware prevention inserts the seeded file into the returned directory listing (520). As noted above, the seeded file may be used to prevent the ransomware process from accessing legitimate files. However, if the ransomware process is somehow able to identify legitimate files, the ransomware attack may be prevented by monitoring or mitigating file access based on the process used to access the file. File access monitoring / mitigation (722) may be performed when a process attempts to read the contents of a real file. Additionally or alternatively, file access monitoring / mitigation (724) may be performed when a process attempts to write the contents of a real file.

[0083] FIG. 8 illustrates a process-based attack mitigation method. Method 800 may be implemented by one or a computing device. To allow file access based on a trusted process, it is necessary to determine the processes or executables that may be used to access various files. Once the process is determined, the trust level of the process may be determined, and if the process accessing the file is trusted, the access may proceed. Method 800 generates file type to process mappings (802) for different file types on the computing system. The mappings may be generated automatically from a system structure that maintains which executables or applications may be used to access different file types. For example, in a Windows™ operating system, the system structure may be provided by the registry. The system structure may indicate the location of executables that may be used to access different file types. For example, the system structure may be used to determine that an executable file for editing a Word document using Microsoft™ Word is located at “C:\\Program Files (x86)\\Microsoft Office\\Office16\\WINWORD.EXE”. It will be appreciated that the specific installation locations may vary based on, for example, different versions and / or user settings. Once the file types for process mapping have been determined, the trust level of each of the processes is determined 804. Whether a process, such as WINWORD.EXE, is trusted may be determined in a variety of ways, including, for example, determining whether the executable is signed by a trusted source, whether the executable passes a virus scan, whether the executable is a known executable for accessing file types, whether the executable is known to be malicious, whether a trusted user has indicated that the executable is trusted, etc.Once the trustworthiness of an executable file has been determined, trusted processes may be allowed to access the file.

[0084] After determining the trust level of a process, a file access, such as a write to an existing process, may be detected (806). The detected file write comes from a particular process, referred to as the writing process, and it is determined whether the writing process or the writing process' executable is trusted (808). If the writing process is trusted ("yes" at 808), the file write or access is allowed to proceed. If the writing process is not trusted ("no" at 808), the file write or access is blocked.

[0085] Using system structures to determine which executables can access different file types allows a list of possible executables to be determined and then evaluated for trust. After automatically determining the trust of a process, the information can be used to control file access. If a process is altered after its trust has been evaluated, a previously trusted process may be replaced with a malicious process and allowed to access files. The trust of the modified process may be re-evaluated, as described further below.

[0086] FIG. 9 illustrates a further process-based attack mitigation method. The method 900 begins by generating a file type process mapping (802) as described above with reference to FIG. 8, and then determining the trustworthiness of the processes in the mapping (804). Once the trustworthiness of the process is determined, a fingerprint of the process is determined and stored (906). The fingerprint may be determined as a cryptographic hash or other similar process that allows for detecting modifications to the process. Once the fingerprint of the process is determined and a writing process is detected (908), the fingerprint of the writing process is determined, and then it is determined whether the fingerprint matches the previously determined fingerprint (910). If the fingerprints do not match ("no" at 910), and thus the process attempting to access the file is different from the process whose trustworthiness was evaluated, the trustworthiness of the process is reevaluated and the process fingerprint is determined (912). Fingerprints may be determined only for processes determined to be trusted, in order to store computational fingerprints for untrusted processes. If the fingerprints match ("yes" at 910), or after re-evaluating the process, it is determined (914) whether the write process is trusted, and if the write process is trusted ("yes" at 914), the write may proceed (916). If the process is not trusted ("no" at 914), the write may be blocked (918). Although depicted as determining whether the fingerprints match before determining whether the process is trusted, it is possible to first determine whether the process is trusted and then determine whether the fingerprints match.

[0087] As mentioned above, the trustworthiness of a process can be linked to a fingerprint of the process to ensure that the process has not been modified after it has been trusted. A process can be an executable file (.exe, .osx, .out), a dynamic link library (.dll), an application (.apk), a binary file (.bin), a command file (.com), etc. If the process is different than what was evaluated, for example as a result of using a different .dll, the process can be re-evaluated. By fingerprinting the process, it is possible to ensure that all of the components of the process are the same as when the trustworthiness was evaluated.

[0088] Determining processes that may be used in accessing different file types may be performed using system structures of the computing device's operating system. The system structure(s) may vary from operating system to operating system. For example, in Windows, the system structure may be the registry. In macOS, the system structure may include Uniform Type Identifiers (UTI) and Property List (PLIST) files. As described further below, the system structures or files may be processed to identify registered applications, file types associated with the registered applications, and executable file locations for file actions such as open, edit, save, print, etc.

[0089] FIG. 10 illustrates a method for determining the trustworthiness of a process associated with a file type. Method 1000 is described with particular reference to determining the trustworthiness of a process in a Windows operating system environment. In Windows, a system structure that may be processed to automatically identify processes that may be used to access a file is the Windows registry. The method begins by searching the system structure for applications that are registered with the operating system (1002). When an application is installed, it may be registered with the operating system and information about the application may be stored in the registry, including information about the application, such as the file types that may be used to access, as well as the location of executable files for different file actions. Once the registered applications are determined from the registry, each of the registered applications may be processed (1004) to determine the associated file types of the registered application (1006). For each of the file types, a location in the system structure that provides an executable file is determined for different file actions (1008). At the location in the system structure, the location of the executable file in the computer's file system is determined for different file type actions (1010). Once the location of the executable file is determined, it is added to a process list (1012). Once the executable file locations for the different file types of the application have been determined and added to the process list, the registered application may then be processed 1014. The executable files on the process list may then be evaluated 1016 to determine if the process is trusted, and possibly a fingerprint of the process may be determined.

[0090] FIG. 11 illustrates a system structure used in determining a process associated with a file type. The system structure 1100 may be, for example, a Windows registry. As shown, a first location 1102 may provide information about registered applications. Although only a single registered application is shown in FIG. 1, it will be understood that multiple applications may be registered. Each registered application may have a key:value 1104 pair that specifies a second location in the system structure 1106. The second location may provide information about a file type associated with the application. Each associated file type may include a key:value 1108 pair that specifies a third location in the system structure 1110. The third location in the system structure may specify one or more action commands for the file type, and for each action command, there may be a key:value pair 1112 that specifies a file system location of an executable file for the file action.

[0091] As an example, a first location in the Windows registry that specifies registered applications may be "\HKEY_LOCAL_MACHINE\SOFTWARE\RegisteredApplications", which may have multiple key:value pairs for each registered application that specifies a registry location. For example, one key:value pair may be "Word.Application.16:SOFTWARE\Clients\Word Processing\Microsoft Word\Capabilities", which provides an additional location in the system structure. In the system structure location, a key:value pair may be specified for each of the file types associated with the application and a third location in the system structure. For example, in "\HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Word Processing\Microsoft Word\Capabilities", the key pair may be ".doc:Word.Document.8". For example, the location "\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Word.Document.8" may specify shell commands for editing, opening, creating new, etc. documents of a particular file type, with the commands specified as key:value pairs that provide the file system location of the command. For example, "\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Word.Document.8\shell\New\command" may have a key:value pair of "(Default):'C:\Program Files(x86)\Microsoft Office\Office16\WINWORD.EXE' / n / f'%1'", which specifies that the location of the executable for new .doc documents is located at "C:\Program Files(x86)\Microsoft Office\Office16\WINWORD.EXE" in the file system. The executable is added to the process list and evaluated to determine whether it is trustworthy.For example, WINWORD.EXE may be evaluated to determine whether it is from a trusted location, whether it is signed by a trusted entity, and so on.

[0092] Although described above as searching for registered applications in a single location within the system structure, it is possible that registered applications may be located in other locations within the system structure. The same process may be applied to these different root locations, including, for example, "\HKEY_LOCAL_MACHINE\SOFTWARE\WOW64Node\RegisteredApplications", which may contain information about 32-bit applications on a 64-bit version of Windows, as well as "\HKEY_USERS\<USER_GUID> \SOFTWARE\RegisteredApplications".

[0093] Above, the system structure has been described as the Windows Registry. It will be understood that other operating systems may provide similar information in different system structures. For example, Apple™ macOS and other Apple operating systems utilize Uniform Type Identifiers (UTIs) to configure entity associations with programs. UTIs are essentially just a reverse DNS notation specification defined as CoreFoundation strings that uniquely identify abstract type information about in-memory or on-disk entities such as files, directories, frameworks, bundles, etc., and UTIs are used to accomplish various tasks. For example, applications use UTIs to register their associations with the Launch Service (through the Launch Service API), Pasteboard Manager uses UTIs to define correlations of persisted items and allow different applications to retrieve pasteboard items in desired formats, Navigation Services uses UTIs for file type filtering, and QuickLook uses UTIs to offload file previews to the QuickLook generator. Examples of UTIs include "com.apple.ical.ics", "com.microsoft.word.excel.xlt", and "public.jpeg". These examples allow for the association of three file types: iCal ics files, Microsoft Excel xlt files, and jpeg files. UTIs that are specific to a given vendor utilize the reverse DNS naming scheme to associate them with an organization, i.e., com.apple or com.microsoft, while public standards that are not associated with an organization utilize public domain identifiers.

[0094] Standard UTIs are defined by Core Services in / System / Library / CoreService / CoreTypes.bundle / Contents / Info.plist. Take the Microsoft Excel xlt UTI as an example of one defined by a Core Service. <dict> <key> UTTypeIconFiles< / key> <array> <string> excel_20x20.png< / string> <string> excel_20x20@2x.png< / string> <string> excel_145x145.png< / string> <string> excel_145x145@2x.png< / string> < / array> <key> UTTypeIdentifier< / key> <string> com.microsoft.excel.xlt< / string> <key> UTTypeDescription< / key> <string> Microsoft Excel 97-2004 template< / string> <key> UTTypeConformsTo< / key> <array> <string> public.data< / string> <string> public.spreadsheet< / string> < / array> <key> UTTypeTagSpecification< / key> <dict> <key> com.apple.ostype< / key> <string> sLS8< / string> <key> public.mime-type< / key> <array> <string> application / vnd.ms-excel< / string> <string> application / msexcel< / string> < / array> <key> public.filename-extension< / key> <string> xlt< / string> < / dict> < / dict>

[0095] QuickLook, introduced in macOS X 10.5, enables quick previews from Finder for various file types. It offloads preview lookups to qlgenerator plugin extensions (i.e. bundles) installed system-wide ( / System / Library / QuickLook) or per-user (~ / Library / QuickLook). Take for example the com.adobe.PDF.qlgenerator extension which maps to the bundle installed at / System / Library / QuickLook / PDF qlgenerator. From the bundle's Info.plist, the CFBundleDocumentTypes array contains the specified UTI. <key> CFBundleDocumentTypes< / key> <array> <dict> <key> CFBundleTypeRole< / key> <string> QLGenerator< / string> <key> LSItemContentTypes< / key> <array> <string> com.adobe.pdf< / string> < / array> < / dict> < / array>

[0096] Additionally, the bundle is declared as a QuickLookGeneratorPluginFactory, which defines the .qlgenerator extension. <key> CFPlugInFactories< / key> <dict> <key> 0D5B252D-0B33-4E7A-88E2-C77728B9C565< / key> <string> QuickLookGeneratorPluginFactory< / string> < / dict>

[0097] Info.plist also declares other QuickLook settings per plugin, including QLNeedsToBeRunInMainThread, QLSupportsConcurrentRequests, and QLThumbnailMinimumSize. The .qlgenerator extension is a specially compiled program that implements the QuickLookGeneratorPluginFactory entry point. The mappings of a QuickLook plugin can be dumped via the qlmanage utility.

[0098] UTIs are supported in macOS X 10.3 and later, iOS 3.0 and later, tvOS 9.0 and later, and watchOS 2.0 and later. They can be queried programmatically through UTType, which is part of the ApplicationServices framework for macOS X and the MobileCoreServices framework for iOS, tvOS, and watchOS. Using this API, it is possible to process system structures to identify all specified UTIs on a given host, identify the default handler for a given UTI, correlate UTI mappings to registered applications or bundles that support them, identify registered UTIs for a specified application or bundle, and set UTI handlers.

[0099] Using the command, it is possible to quickly identify all information about a given UTI, such as com.apple.ical.ics. % . / uti -e com.apple.ical.ics

[0100] This returns: identifier: com.apple.ical.ics description: ICS File declaration: { UTTypeTagSpecification = { public.mime-type = [ text / calendar ] public.filename-extension = [ ics ] } UTTypeConformsTo = [ public.text public.item public.calendar-event ] UTTypeIdentifier = com.apple.ical.ics }

[0101] Note that the above output mirrors the specification in the Core Services Info.plist mentioned above.

[0102] Consider an example where you want to know all of the bundles that are registered to handle the com.apple.ical.ics UTI. % . / uti -l com.apple.ical.ics

[0103] This returns: com.apple.CalendarFileHandler com.apple.iCal com.apple.TextEdit com.apple.dt.Xcode com.apple.Notes

[0104] To determine the default handler for the com.apple.ical.ics UTI, do the following: % . / uti -d com.apple.ical.ics

[0105] This returns: com.apple.CalendarFileHandler

[0106] It is also possible to identify a default UTI mapping for a specified file extension to a supported bundle handler. % . / uti -x ics

[0107] This returns: CalendarFileHandler.app / System / Library / CoreServices / CalendarFileHandler.app com.apple.CalendarFileHandler

[0108] Alternatively, for jpeg files, use: % . / uti -x jpg Preview.app / System / Applications / Preview.app com.apple.Preview

[0109] From the above, it will be appreciated that different operating systems have respective system structures, which may include one or more files, databases, etc. that allow different applications on a computer system to be determined along with the file types that may be opened or edited by the applications. The trustworthiness of the determined applications may then be determined and used in determining whether to allow or block file access. As described above, it is possible to automatically determine the different applications / processes that may be used to access different file types and simply block file access based on which processes are trusted.

[0110] Those skilled in the art will appreciate that the systems and components shown in Figures 1-11 may include components not shown in the drawings. For simplicity and clarity of illustration, the elements in the figures are not necessarily to scale and are merely schematic and are not intended to limit the element structures. It will be apparent to those skilled in the art that certain variations and modifications can be made without departing from the scope of the invention as defined in the claims.

[0111] Each element in the embodiment of the present disclosure may be implemented as hardware, software / program, or any combination thereof. The software code may be stored in a computer-readable medium or memory, or a non-transitory memory (e.g., a ROM, e.g., a non-volatile memory such as a flash memory, a CD ROM, a DVD ROM, a Blu-ray (trademark), a semiconductor ROM, a USB, or a magnetic recording medium such as a hard disk), either in its entirety or in part. The program may be in the form of a code intermediate source and object code, such as a source code, an object code, a partially compiled form, or in other forms. [Explanation of symbols]

[0112] 100 Computer Systems 102 CPU 104 Memory 106 Instructions 108 Hard Disk Drive 110 Files 112 OS 114 User Mode 116 Kernel Mode 118 Process 120 IO Manager 122 File System 124 Filter Manager 126 Mini Filter 128 Ransomware Mini Filter 130 File Filters 132 File System Driver 134 Storage Driver Stack 136 Process Judgment Function 138 Reliability Judgment Function 200 Ransomware Prevention Methods Different methods to use when mitigating a 300a ransomware attack Different methods to use when mitigating a 300b ransomware attack 400 Different Methods to Use When Preventing Ransomware Attacks 410 Different methods to use when preventing ransomware attacks 420 Different methods to use when preventing ransomware attacks 500 ransomware attack process and possible prevention methods of the attack 604 Actual File Listing 608 images 612 File Content 622 List of both real and seeded files 626 Checkerboard Pattern 630 Files 800 Process-Based Attack Mitigation Methods 900 Further process-based attack mitigation methods How to determine the trustworthiness of a process associated with a file type 1100 System Structure 1102 First Place 1104 key:value 1106 System Structure 1108 key:value 1110 System Structure 1112 key:value

Claims

1. 1. A method for preventing ransomware attacks, comprising: Receiving an input / output (IO) request from a requesting process at a file system; determining a trust classification of the requesting process based on whether the requesting process is a trusted process; modifying a result for the IO request based on the reliability classification of the request process; and monitoring one or more further IO requests for the modified results from the requesting process when the requesting process is determined to have an untrusted trust classification; Modifying the result, if the requesting process is not trusted, including a seeded file in the results provided to the requesting process; if the requesting process is trusted, excluding the seeded file from the results provided to the requesting process; The seeded file is A defined naming convention, a list of seeded file names; and method.

2. restricting further file access of an untrusted process when the process attempts to access one or more files of the modified result; and isolating the requesting process.

3. Further restricting file access is possible. Preventing the untrusted process from reading the file; and Preventing the untrusted process from writing files; and Preventing the untrusted process from deleting files; and and preventing the untrusted process from moving files.

4. The method of claim 1 , wherein the seeded file is stored in a storage medium and is removed from results presented to the requesting process if the requesting process is trusted.

5. The method of claim 1 , wherein the seeded file is added to the results presented to the requesting process if the requesting process is not trusted.

6. The method of claim 5 , wherein only the seeded file is presented as the result to the requesting process if the requesting process is not trusted.

7. 2. The method of claim 1, wherein the file system operates in kernel mode and the requesting process operates in user mode or kernel mode.

8. monitoring the one or more further IO requests for the modified result; Detecting a writing process for one or more of the modified results; determining whether the content being written by the writing process is likely to be encrypted; and blocking the writing process when it is determined that the content being written is likely encrypted.

9. 1. A system for preventing ransomware attacks, comprising: a processor for executing instructions; and a memory for storing instructions that, when executed by the processor, Receiving an input / output (IO) request from a requesting process at a file system; determining a trust classification of the requesting process based on whether the requesting process is a trusted process; modifying a result for the IO request based on the reliability classification of the request process; and monitoring one or more further IO requests for the modified results from the requesting process when the requesting process is determined to have an untrusted trust classification; Modifying the result, if the requesting process is not trusted, including a seeded file in the results provided to the requesting process; if the requesting process is trusted, excluding the seeded file from the results provided to the requesting process; The seeded file is A defined naming convention, a list of seeded file names; and system.

10. The method according to the instructions further comprises: restricting further file access of an untrusted process when the process attempts to access one or more files of the modified results; and isolating the requesting process.

11. Further restricting file access is possible. Preventing the untrusted process from reading the file; and Preventing the untrusted process from writing files; and Preventing the untrusted process from deleting files; and and preventing the untrusted process from moving files.

12. 10. The system of claim 9, wherein the seeded file is stored in a storage medium and is removed from results presented to the requesting process if the requesting process is trusted.

13. 10. The system of claim 9, wherein the seeded file is added to the results presented to the requesting process if the requesting process is not trusted.

14. 14. The system of claim 13, wherein only the seeded file is presented as the result to the requesting process if the requesting process is not trusted.

15. 10. The system of claim 9, wherein the file system operates in kernel mode and the requesting process operates in user mode or kernel mode.

16. monitoring the one or more further IO requests for the modified result; Detecting a writing process for one or more of the modified results; determining whether the content being written by the writing process is likely to be encrypted; and blocking the writing process when it is determined that the content being written is likely encrypted.

17. A non-transitory computer readable medium having instructions stored therein, the instructions, when executed by a processor of a computer system, Receiving an input / output (IO) request from a requesting process at a file system; determining a trust classification of the requesting process based on whether the requesting process is a trusted process; modifying a result for the IO request based on the reliability classification of the request process; monitoring one or more further IO requests for the modified result from the requesting process when the requesting process is determined to have an untrusted trust classification; Modifying the result, if the requesting process is not trusted, including a seeded file in the results provided to the requesting process; if the requesting process is trusted, excluding the seeded file from the results provided to the requesting process; The seeded file is A defined naming convention, a list of seeded file names; and Non-transitory computer-readable medium.

18. The method according to the instructions further comprises: restricting further file access of an untrusted process when the process attempts to access one or more files of the modified result; and isolating the requesting process.

19. Further restricting file access is possible. Preventing the untrusted process from reading the file; and Preventing the untrusted process from writing files; and Preventing the untrusted process from deleting files; and and preventing the untrusted process from moving files.

20. 20. The non-transitory computer-readable medium of claim 17, wherein the seeded file is stored in a storage medium and removed from results presented to the requesting process if the requesting process is trusted.

21. 20. The non-transitory computer-readable medium of claim 17, wherein the seeded file is added to the results presented to the requesting process if the requesting process is not trusted.

22. 22. The non-transitory computer-readable medium of claim 21, wherein only the seeded file is presented as the result to the requesting process if the requesting process is not trusted.

23. 20. The non-transitory computer-readable medium of claim 17, wherein the file system operates in kernel mode and the requesting process operates in user mode or kernel mode.

24. monitoring the one or more further IO requests for the modified result; Detecting a writing process for one or more of the modified results; determining whether the content being written by the writing process is likely to be encrypted; and blocking the writing process when it is determined that the content being written is likely encrypted.

25. A system for preventing ransomware attacks, comprising: a processor for executing instructions; and a memory for storing instructions that, when executed by the processor, storing the seeded file on a storage medium; Receiving an input / output (IO) request from a requesting process at a file system; receiving a result for the IO request, the result including an actual file and the seeded file; determining a trust classification of the requesting process based on whether the requesting process is a trusted process; modifying the result for the IO request based on the reliability classification of the request process; and monitoring one or more further IO requests for the modified result from the requesting process when the requesting process is determined to have an untrusted trust classification; Modifying the result, if the requesting process is not trusted, including the seeded file in the results provided to the requesting process; and if the requesting process is trusted, removing the seeded file from the results presented to the requesting process. system.

26. A method comprising the steps of: restricting further file access of an untrusted process when the process attempts to access one or more files of the modified result; and isolating the requesting process.

27. The method of claim 20, further comprising: Preventing the untrusted process from reading the file; and Preventing the untrusted process from writing files; and Preventing the untrusted process from deleting files; and and preventing the untrusted process from moving files.

28. The seeded file, A defined naming convention, 28. The system of claim 25, wherein the file names are identified using one or more of: a list of seeded file names; and 29. The system of claim 28, wherein if the requesting process is not trusted, the seeded file is added to the results presented to the requesting process.

30. The system of claim 28, wherein only the seeded file is presented as the result to the requesting process if the requesting process is not trusted.

31. A system as described in any one of claims 25 to 30, wherein the file system operates in kernel mode and the requesting process operates in user mode or kernel mode.

32. The method of claim 31, further comprising: monitoring the one or more further IO requests for the modified result. Detecting a writing process for one or more of the modified results; determining whether the content being written by the writing process is likely to be encrypted; and blocking the writing process when it is determined that the content being written is likely encrypted.

33. A non-transitory computer-readable medium having instructions stored therein, the instructions, when executed by a processor of a computer system, storing the seeded file on a storage medium; Receiving an input / output (IO) request from a requesting process at a file system; receiving a result for the IO request, the result including an actual file and the seeded file; determining a trust classification of the requesting process based on whether the requesting process is a trusted process; modifying the result for the IO request based on the reliability classification of the request process; monitoring one or more further IO requests for the modified result from the requesting process when the requesting process is determined to have an untrusted trust classification; Modifying the result, if the requesting process is not trusted, including the seeded file in the results provided to the requesting process; and if the requesting process is trusted, removing the seeded file from the results presented to the requesting process. Non-transitory computer-readable medium.

34. A method comprising the steps of: restricting further file access of an untrusted process when the process attempts to access one or more files of the modified results; and isolating the requesting process.

35. Restricting further file access, Preventing the untrusted process from reading the file; and Preventing the untrusted process from writing files; and Preventing the untrusted process from deleting files; and and preventing the untrusted process from moving files.

36. The seeded file, A defined naming convention, and a list of seeded file names.

37. The non-transitory computer-readable medium of claim 36, wherein if the requesting process is not trusted, the seeded file is added to the results presented to the requesting process.

38. The non-transitory computer-readable medium of claim 36, wherein only the seeded file is presented as the result to the requesting process if the requesting process is not trusted.

39. The non-transitory computer-readable medium of any one of claims 33 to 38, wherein the file system operates in kernel mode and the requesting process operates in user mode or kernel mode.

40. The method of claim 40, further comprising: monitoring the one or more further IO requests for the modified result. Detecting a writing process for one or more of the modified results; determining whether the content being written by the writing process is likely to be encrypted; and blocking the writing process when it is determined that the content being written is likely encrypted.

Citation Information

Patent Citations

  • System and method for aggregating knowledge base of antivirus software applications

    JP2006134307A

  • System and method for virtual machine monitor-based anti-malware security

    JP2014514651A

  • Systems and methods for malware detection and remediation

    US20160180087A1