The present disclosure relates to a system and method for monitoring system calls to an operating system kernel. A performance monitoring unit is used to monitor system calls and to gather information about each system call. The information is gathered upon interrupting the system call and can include system call type, parameters, and information about the calling thread/process, in order to determine whether the system call was generated by malicious software code. Potentially malicious software code is nullified by a malicious code counter-attack module.
As computing devices become increasingly complex, malicious code such as viruses or malware also is becoming increasingly complex and difficult to detect and prevent. Continuous improvements are needed to identify and nullify such malicious code.
Processor 110 runs operating system 130 (such as Windows, Linux, OSX, iOS, and Android) and software applications 160. Operating system 130 comprises kernel 140. Among other things, kernel 140 serves as an interface between other portions of operating system 130 and software applications 160 one the one hand and the actual hardware of processor 110 on the other hand. Kernel 140 also manages system resources for processor 110.
Processor 110 also comprises performance monitoring unit (PMU) 150. Performance monitoring unit 150 is used in many modern processor architectures, including ARM and Intel x86 processor architectures. Performance monitoring unit 150 is currently used for nonintrusive debugging and introspection, offering engineers or operating system 130 the ability to measure performance criteria of processor 110 such as CPU clock cycles, cache efficiency, or branch prediction efficiency and to help drive code optimizations. Performance monitoring unit 150 can be viewed as a counter of events within processor 110 using architecture-specific controls. Performance monitoring unit 150 can be configured to provide the data it captures to operating system 130 or software applications 160.
In
In
Operating system 130 and certain software applications 160 currently provide some mechanisms to monitor system calls 210. These mechanisms, however, are limited in their efficacy. Kernel patch protection exists in many operating systems 130 to prevent attackers from modifying and hooking system call dispatch tables. As a result, those software applications 160 that are intended to identify suspicious system calls are limited to user-space injection and hooking and do not operate at the level of kernel 140. Thus, while kernel patch protection attempts to restrict the capabilities of malicious code, it also limits the ability to monitor and detect malicious system calls.
What is needed is a mechanism to monitor system calls 210 and/or other interrupts and to gather information about each system call 210 and other interrupt in a way that avoids the kernel patch protection and the limitations of existing mechanisms. What is further needed to a mechanism to analyze the gathered information and to counter-attack potentially malicious code.
In one aspect of the invention, performance monitoring unit 150 is used to monitor system calls 210 and to gather information about each system call 210. In the prior art, performance monitoring unit 150 has not been configured and used for this purpose. The data gathered by performance monitoring unit 150 can be analyzed to identify system calls 210 that potentially have been generated by malicious software code 310.
An embodiment is shown in
If processor 110 follows an ARM architecture, performance monitoring unit 150 can be configured to count and trap supervisor call instructions (which is an example of system call 210). The supervisor call exception vector is typically utilized by many operating systems (e.g. Android) to service system calls. As a result, trapping supervisor call instructions can effectively trap all system calls.
If processor 110 follows an Intel x86 architecture, performance monitoring unit 150 can be configured to count Far branches that are destined for kernel 140. This effectively encapsulates the Intel SYSCALL instruction (which generates system call 210) as well as various other hardware driven interrupts such as page faults. This enables the trapping and analyses of critical operating system events.
Returning to
With reference to
Monitoring data 420 is provided to data analysis module 510, which is a software application 160. Data analysis module 510 uses known data analysis algorithms (such as machine learning algorithms, artificial intelligence algorithms, pattern recognition algorithms, or other known data analysis techniques) to analyze monitoring data 420 in light of previously stored data. Data analysis module 510 has the ability to learn from the previously stored data and monitoring data 420. Data analysis module 510 can generate alert 520 if it determines that system call 211 likely has been generated by malicious software code 310.
Alert 520 is provided to malware counter-attack module 530, which also is a software application 160. Malware counter-attack module 530 can perform one or more of the following actions:
An example of a specific use case of the above embodiments is shown in
An example of a specific use case of the above embodiments is shown in
In another use case, monitoring of system calls 210 can be utilized to detect malicious software code 310 at various stages ranging from early shellcode to advanced persistent malware. The embodiments can be used to not only detect an initial malicious attack, but also to counter-attack malware that is running on a system that has already been infected.
In another use case, trapping Far branches in processor 110 (when processor 110 follows the Intel x86 architecture) allows the system to interrupt the page fault handler running within operating system 130 (when operating system 130 is Windows). This will allow malware detection to apply memory protection policies that could detect exploitation attempts prior to any control-flow hijack even taking place.
The embodiments described above provide a new system and method for detecting system calls using a module operating at the kernel level and the performance monitoring unit of a processor. Monitoring data is collected for each system call and analyzed using a data analysis module, which generates alerts that identify potential malicious software code. Any malicious software code can be counteracted by a malicious code counter-attack module.
The foregoing merely illustrates the principles of the disclosure. Various modifications and alterations to the described embodiments will be apparent to those skilled in the art in view of the teachings herein. It will thus be appreciated that those skilled in the art will be able to devise numerous systems, arrangements, and procedures which, although not explicitly shown or described herein, embody the principles of the disclosure and can be thus within the spirit and scope of the disclosure. Various different exemplary embodiments can be used together with one another, as well as interchangeably therewith, as should be understood by those having ordinary skill in the art. In addition, certain terms used in the present disclosure, including the specification, drawings and claims thereof, can be used synonymously in certain instances, including, but not limited to, for example, data and information. It should be understood that, while these words, and/or other words that can be synonymous to one another, can be used synonymously herein, that there can be instances when such words can be intended to not be used synonymously. Further, to the extent that the prior art knowledge has not been explicitly incorporated by reference herein above, it is explicitly incorporated herein in its entirety. All publications referenced are incorporated herein by reference in their entireties.
Number | Name | Date | Kind |
---|---|---|---|
5481684 | Richter | Jan 1996 | A |
7085928 | Schmid et al. | Aug 2006 | B1 |
7640589 | Mashevsky et al. | Dec 2009 | B1 |
8555385 | Bhatkar | Oct 2013 | B1 |
8555386 | Belov | Oct 2013 | B1 |
9055093 | Borders | Jun 2015 | B2 |
9292689 | Chuo | Mar 2016 | B1 |
9356944 | Aziz | May 2016 | B1 |
9407648 | Pavlyushchik | Aug 2016 | B1 |
9509697 | Salehpour | Nov 2016 | B1 |
9690606 | Ha | Jun 2017 | B1 |
10397255 | Bhalotra | Aug 2019 | B1 |
20030200464 | Kidron | Oct 2003 | A1 |
20040199763 | Freund | Oct 2004 | A1 |
20050102601 | Wells | May 2005 | A1 |
20050160313 | Wu | Jul 2005 | A1 |
20060026569 | Oerting et al. | Feb 2006 | A1 |
20060143707 | Song | Jun 2006 | A1 |
20070180509 | Swartz | Aug 2007 | A1 |
20080034429 | Schneider | Feb 2008 | A1 |
20080052468 | Speirs | Feb 2008 | A1 |
20080127292 | Cooper et al. | May 2008 | A1 |
20080201778 | Guo | Aug 2008 | A1 |
20090049550 | Shevchenko | Feb 2009 | A1 |
20090077664 | Hsu et al. | Mar 2009 | A1 |
20090187396 | Kinno et al. | Jul 2009 | A1 |
20090222923 | Dixon | Sep 2009 | A1 |
20100100774 | Ding | Apr 2010 | A1 |
20100293615 | Ye | Nov 2010 | A1 |
20110167434 | Gaist | Jul 2011 | A1 |
20120054299 | Buck | Mar 2012 | A1 |
20120159625 | Jeong | Jun 2012 | A1 |
20120246204 | Nalla et al. | Sep 2012 | A1 |
20130283030 | Drew | Oct 2013 | A1 |
20130332932 | Teruya | Dec 2013 | A1 |
20130347111 | Karta | Dec 2013 | A1 |
20140032915 | Muzammil et al. | Jan 2014 | A1 |
20140137184 | Russello | May 2014 | A1 |
20140310714 | Chan et al. | Oct 2014 | A1 |
20140380477 | Li | Dec 2014 | A1 |
20150150130 | Fiala | May 2015 | A1 |
20150264077 | Berger | Sep 2015 | A1 |
20150278513 | Krasin | Oct 2015 | A1 |
20150295945 | Canzanese, Jr. et al. | Oct 2015 | A1 |
20150339480 | Lutas et al. | Nov 2015 | A1 |
20160180089 | Dalcher | Jun 2016 | A1 |
20160232347 | Badishi | Aug 2016 | A1 |
20160275289 | Sethumadhavan et al. | Sep 2016 | A1 |
20160328560 | Momot | Nov 2016 | A1 |
20160357958 | Guidry | Dec 2016 | A1 |
20160364236 | Moudgill | Dec 2016 | A1 |
20170004309 | Pavlyushchik et al. | Jan 2017 | A1 |
20180307840 | David | Oct 2018 | A1 |
20190018958 | Desimone | Jan 2019 | A1 |
20190018962 | Desimone | Jan 2019 | A1 |
Number | Date | Country |
---|---|---|
2784716 | Oct 2014 | EP |
3652639 | May 2020 | EP |
3652667 | May 2020 | EP |
WO2018026658 | Feb 2018 | WO |
WO2019014529 | Jan 2019 | WO |
WO2019014546 | Jan 2019 | WO |
Entry |
---|
Canzanese et al, System Call-based Detection of Malicious Processes, IEEE, 6 pages (Year: 2015). |
Canzanese et al., System Call-based Detection of Malicious Processes, 6 pages (Year: 2015). |
“International Search Report” and “Written Opinion of the International Searching Authority,” Patent Cooperation Treaty Application No. PCT/US2018/042005, dated Oct. 1, 2018, 7 pages. |
“International Search Report” and “Written Opinion of the International Searching Authority,” Patent Cooperation Treaty Application No. PCT/US2018/041976, dated Sep. 28, 2018, 5 pages. |
“International Search Report” and “Written Opinion of the International Searching Authority,” Patent Cooperation Treaty Application No. PCT/US2017/044478, dated Oct. 10, 2017, 7 pages. |
“Extended European Search Report”, European Patent Application No. 18831224.3, dated Mar. 29, 2021, 8 pages. |
Number | Date | Country | |
---|---|---|---|
20180032728 A1 | Feb 2018 | US |