Ransomware prevention
Ransomware attacks may be prevented by monitoring file access requests. When a process requests a directory listing, the results provided may be modified based on whether the process is trusted or not. For trusted processes, the results provided are the actual directory listing, while the results provided to processes that aren't trusted may be modified to include seeded files. Access to the seeded files may be monitored to determine if the process is associated with a ransomware attack, and steps taken to mitigate an attempted ransomware attack. Ransomware may also be prevented by ensuring that only trusted processed are allowed to access certain files. In order to provide an improved user experience, the processes can be determined automatically from a system structure and their trustworthiness determined.
1 . A method of preventing a ransomware attack comprising:
processing a system structure to automatically determine a file type to process mapping between a plurality of file types and processes used in accessing respective ones of the plurality of file types, wherein processing the system structure to automatically determine the file type to process mapping comprises:
using an API to identify a plurality of Uniform Type Identifiers (UTIs) on a given host; and
correlating UTI mappings to the registered applications or bundles that support them;
for each of the processes in the file type to process mapping, evaluating a trustworthiness of the process;
receiving at a file system an input/output (IO) request from a requesting process;
determining if the requesting process is a trusted process; and
allowing or blocking the IO request based on the determination of if the requesting process is trusted.
2 . The method of claim 1 , further comprising:
for each of the processes in the file type to process mapping generating a fingerprint of the process that was evaluated for trust; and
when determining if the requesting process is trusted:
determining a requesting process fingerprint of the requesting process; and
comparing the requesting process fingerprint with the previously
determined fingerprint of the process that was evaluated for trust,
wherein allowing or blocking the IO request is further based on the comparison of the requesting process fingerprint and the previously determined fingerprint.
3 . The method of claim 2 , wherein, responsive to a failed match between the requesting process fingerprint and the previously determined fingerprint, the method further comprises re-evaluating the trustworthiness of the requesting process.
4 . The method of claim 1 , wherein the system structure comprises a macOS system structure.
5 . A system for preventing a ransomware attack 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 comprising:
processing a system structure to automatically determine a file type to process mapping between a plurality of file types and processes used in accessing respective ones of the plurality of file types, wherein processing the system structure to automatically determine the file type to process mapping comprises:
using an API to identify a plurality of Uniform Type Identifiers (UTIs) on a given host; and
correlating UTI mappings to the registered applications or bundles that support them;
for each of the processes in the file type to process mapping, evaluating a trustworthiness of the process;
receiving at a file system an input/output (IO) request from a requesting process;
determining if the requesting process is a trusted process; and
allowing or blocking the IO request based on the determination of if the requesting process is trusted.
6 . The system of claim 5 , wherein the method configured by executing the instructions further comprises:
for each of the processes in the file type to process mapping generating a fingerprint of the process that was evaluated for trust; and
when determining if the requesting process is trusted:
determining a requesting process fingerprint of the requesting process; and
comparing the requesting process fingerprint with the previously
determined fingerprint of the process that was evaluated for trust, wherein allowing or blocking the IQ request is further based on the comparison of the requesting process fingerprint and the previously determined fingerprint.
7 . The system of claim 6 , wherein, responsive to a failed match between the requesting process fingerprint and the previously determined fingerprint, the method further comprises re-evaluating the trustworthiness of the requesting process.
8 . The system of claim 5 , wherein the system structure comprises a macOS system structure.
9 . A non-transitory computer readable media having encoded thereon instructions that, when executed by a processor of a computer system, configure the computer system to perform a method comprising:
processing a system structure to automatically determine a file type to process mapping between a plurality of file types and processes used in accessing respective ones of the plurality of file types, wherein processing the system structure to automatically determine the file type to process mapping comprises:
using an API to identify a plurality of Uniform Type Identifiers (UTIs) on a given host; and
correlating UTI mappings to the registered applications or bundles that support them;
for each of the processes in the file type to process mapping, evaluating a trustworthiness of the process;
receiving at a file system an input/output (IO) request from a requesting process;
determining if the requesting process is a trusted process; and
allowing or blocking the IO request based on the determination of if the requesting process is trusted.
10 . The non-transitory computer readable media of claim 9 , wherein the method configured by the instructions further comprises:
for each of the processes in the file type to process mapping generating a fingerprint of the process that was evaluated for trust; and
when determining if the requesting process is trusted:
determining a requesting process fingerprint of the requesting process; and
comparing the requesting process fingerprint with the previously determined fingerprint of the process that was evaluated for trust,
wherein allowing or blocking the IO request is further based on the comparison of the requesting process fingerprint and the previously determined fingerprint.
11 . The non-transitory computer readable media of claim 10 , wherein, responsive to a failed match between the requesting process fingerprint and the previously determined fingerprint, the method further comprises re-evaluating the trustworthiness of the requesting process.
12 . The non-transitory computer readable media of claim 9 , wherein the system structure comprises a macOS system structure.