US20080005797A1 - Identifying malware in a boot environment - Google Patents

Identifying malware in a boot environment Download PDF

Info

Publication number
US20080005797A1
US20080005797A1 US11/480,774 US48077406A US2008005797A1 US 20080005797 A1 US20080005797 A1 US 20080005797A1 US 48077406 A US48077406 A US 48077406A US 2008005797 A1 US2008005797 A1 US 2008005797A1
Authority
US
United States
Prior art keywords
malware
computer
boot
scan
recited
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US11/480,774
Inventor
Scott A Field
Rohan R. Phillips
Alexey A. Polyakov
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Priority to US11/480,774 priority Critical patent/US20080005797A1/en
Assigned to MICROSOFT CORPORATION reassignment MICROSOFT CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: FIELD, SCOTT A., POLYAKOV, ALEXEY A., PHILLIPS, ROHAN R.
Priority to EP07751409A priority patent/EP2038753A4/en
Priority to PCT/US2007/004643 priority patent/WO2008005067A1/en
Priority to JP2009518096A priority patent/JP2009543186A/en
Priority to CN2007800245100A priority patent/CN101479709B/en
Priority to KR1020087031665A priority patent/KR20090023644A/en
Publication of US20080005797A1 publication Critical patent/US20080005797A1/en
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICROSOFT CORPORATION
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot

Definitions

  • malware While those skilled in the art will recognize that the various computer attacks are technically distinct from one another, for purposes of the present invention and for simplicity in description, all malicious computer programs that spread on computer networks such as the Internet, will be generally referred to hereinafter as computer malware or, more simply, malware.
  • Most antivirus software identifies malware by matching patterns within data to what is referred to as a “signature” of the malware.
  • antivirus software scans for malware signatures when certain events are scheduled to occur, such as when data is going to be written or read from a storage device on the computer.
  • storage devices such as a hard drive.
  • a common operation provided by some software applications is to open a file stored on a hard drive and display the contents of the file on a computer display.
  • antivirus software typically performs a scan or other analysis of the file before the open operation is satisfied. If malware is detected, the antivirus software that performed the scan may prevent the malware from being executed, for example, by causing the open operation to fail.
  • malware is being distributed with one or more programs specifically designed to “hide” the malware from software designed to protect a computer (e.g., antivirus software, anti-spyware software, and the like). Similar to other types of applications installed on a computer, software designed to protect a computer from malware relies on services provided by an operating system. However, if a malware is able to infect components of a computer operating system or other low level components, the malware may control the information that is provided to software designed to protect a computer. Malware that is specifically designed to conceal data that is characteristic of malware on a computer will be generally referred to hereinafter as a “RootKit.”
  • FIG. 1 depicts how a RootKit is able to control the information that is made available to software designed to protect a computer 100 from malware.
  • the computer 100 includes an application program 102 , an operating system 104 , a storage device 106 , and a RootKit 108 .
  • the operating system 104 includes an interface 110 that provides services in the form of an Application Programming Interface (“API”) to application programs installed on the computer 100 .
  • the application program 102 performs actions designed to protect the computer 100 from malware. For example the application program 102 may scan files for malware “on access” when a user attempts to access a file stored on the storage device 106 .
  • FIG. 1 depicts how a RootKit is able to control the information that is made available to software designed to protect a computer 100 from malware.
  • the computer 100 includes an application program 102 , an operating system 104 , a storage device 106 , and a RootKit 108 .
  • the operating system 104 includes an interface 110 that provides services in the form
  • the application program 102 performs operations in user mode and relies on services provided by the operating system 104 that operates, at least partially, in kernel mode.
  • the computer 100 is infected with the RootKit 108 that “hooks” into the operating system 104 , where it intercepts calls used to perform basic functions on the computer 100 .
  • the RootKit 108 acts as a “man-in-the-middle,” monitoring and altering communications between the operating system 104 and application programs installed on the computer 100 . If an application program, such as anti-virus software, attempts to list the contents of a directory containing one or more files used by the RootKit 108 , the RootKit 108 will censor the file name from the list. Similarly, the RootKit 108 may hide entries in the system registry, process list, and the like, thereby controlling all of the information that the RootKit 108 wants hidden.
  • aspects of the present invention are directed at identifying malware that uses program code activated in a boot environment to avoid being detected.
  • a method is provided that performs a search for malware during the boot process. More specifically, the method causes a software module configured to scan for malware to be initialized at computer startup. Then, in response to identifying the occurrence of a scanning event, the method causes the software module to search computer memory for data that is characteristic of malware. If data characteristic of malware is identified, functionality is implemented to prevent the malware from executing on the computer. As a result of performing a scan at computer startup, malware that performs obfuscation techniques to hide from antivirus software are identified.
  • FIG. 1 is a block diagram of software components that are configured to perform functions of a modern computer and a RootKit that is designed to conceal malware;
  • FIG. 2 is a pictorial depiction of the computer with components that are configured to identify malware in a boot environment
  • FIG. 3 is a pictorial depiction of an exemplary timeline that illustrates events performed at computer start up
  • FIG. 4 is an exemplary flow diagram of a software module that identifies malware during the boot process.
  • program modules include routines, programs, applications, widgets, objects, components, data structures, and the like that perform particular tasks or implement particular abstract data types.
  • present invention may be implemented in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network.
  • program modules may be located on local and/or remote computer storage media.
  • FIG. 2 a computer 200 with components that implement aspects of the present invention will be described.
  • the computer 200 may be any one of a variety of devices including, but not limited to, personal computing devices, server-based computing devices, mini- and mainframe computers, laptops, personal digital assistants (“PDAs”), set-top boxes, entertainment and gaming systems, or other electronic devices having some type of memory.
  • the computer 200 illustrated in FIG. 2 contains many of the same components of like-name described above with reference to FIG. 1 .
  • the computer 200 includes an application program 202 , an operating system 204 with an associated interface 205 , and a storage device 206 .
  • FIG. 2 For ease of illustration and because it is not important for an understanding of the present invention, FIG.
  • the computer 200 does not show the typical components of many computers, such as a keyboard, a mouse, a printer, a display, CPU, memory, etc.
  • the computer 200 also includes a scan engine 208 and a boot detection module 210 .
  • the scan engine 208 and the boot detection module 210 collectively provide a way to identify malware, such as a RootKit, that starts executing before the services provided by traditional antivirus software are available.
  • a RootKit or other malware that infects the computer 200 is identified while the computer is being booted so that the RootKit is unable to continue to conceal data that is characteristic of malware.
  • the operating system 204 illustrated in FIG. 2 may be a general-purpose operating system such as a Microsoft® operating system, UNIX® operating system, or Linux® operating system. Also, the operating system 204 may be configured to use non-generic hardware designed for specialized computer systems. In any event, as known to those skilled in the art and others, the operating system 204 controls the general operation of the computer 200 and is responsible for management of hardware and basic system operations as well as executing application programs. More specifically, the operating system 204 insures that computer programs, such as the application program 202 , are able to use resources like the storage device 206 . Modem computers allow application programs to extend the functionality of the operating system 204 by providing mechanisms for code to execute in the memory space reserved for the operating system 204 .
  • modem computers allow application programs to extend the functionality of the operating system 204 by providing mechanisms for code to execute in the memory space reserved for the operating system 204 .
  • RootKit or other malware may be able to compromise the integrity of the data provided by the operating system 204 to application programs such as antivirus software.
  • a RootKit is able to implement obfuscation techniques that prevent antivirus software from identifying the RootKit and/or any other associated malware.
  • a RootKit typically adds itself to Auto Start Extensibility Point (hereinafter “ASEP”) on a computer.
  • ASEPs refer to extensibility points that allow programs to begin executing without explicit user invocation.
  • a RootKit may begin executing during the boot process, once a user performs a “login,” or sometime thereafter.
  • antivirus software uses services provided by an operating system to search for malware and may only protect a computer once the services provided by the operating system are available.
  • a RootKit that infects an operating system or other low-level component of a computer before the services of the operating system are available may be able to conceal data that is characteristic of malware.
  • a boot detection module 210 that causes malware to be identified before the services provided by an operating system are available. Since various aspects of the boot detection module 210 are described in further detail below with reference to FIG. 4 , a detailed description of the boot detection module 210 will not be provided here. However, generally described, the boot detection module 210 causes the scan engine 208 to be loaded into memory and executed during the boot process. If malware is identified, the malware may be removed from the computer or the malware may be “quarantined” so that antivirus software may handle the infection once the computer has booted.
  • the computer 200 also includes a scan engine 208 for determining whether data in computer memory is characteristic of malware. Any currently existing or yet to be developed techniques may be used by the scan engine 208 to identify malware that starts executing before services provided by the operating system 204 are available.
  • the scan engine 208 may employ integrity checking to verify whether program code that implements the operating system is digitally signed by a trusted entity such as an operating system provider.
  • the scan engine 208 may search for suspicious activities such as jump instructions in unexpected locations, hidden processes, references to memory addresses that are outside of a range allocated to the operating system 204 , and the like. For example, some operating systems maintain a data structure, sometimes referred to as a process table, with a list of programs that are currently executing.
  • Removing an entry from a process table or a similar data structure may be a strong heuristic indicator that a RootKit is present.
  • the scan engine 208 may employ traditional signature-based techniques in a boot environment to detect malware.
  • file data that implements a malware may be identified by matching patterns within the data to what is referred to as a “signature” of the malware.
  • signature data that is known to implement a malware, or a characteristic subset of the data, is processed with a function that converts the data into a signature which uniquely identifies the malware.
  • the scan engine 208 may search data in the memory for a match.
  • FIG. 2 is a simplified example of one computer 200 capable of implementing aspects of the present invention. Actual embodiments of the computer 200 will have additional components not illustrated in FIG. 2 or described in the accompanying text. Also, FIG. 2 shows one component architecture capable of performing a search for malware in a boot environment. Thus, the software components illustrated in FIG. 2 should be construed as exemplary and not limiting
  • timeline 300 that illustrates events performed when a computer is booted will be described.
  • the timeline 300 is a highly simplified example of a generalized and non-exclusive set of events that may occur at computer start up. In other embodiments, additional or fewer events may occur or events may occur in a different order than the description provided below.
  • the timeline 300 illustrated in FIG. 3 is merely illustrative and should be construed as exemplary.
  • BIOS Basic Input/Output System
  • BIOS Basic Input/Output System
  • the BIOS code contains computer instructions that enable the computer to perform functions for initializing the computer's hardware.
  • a hardware check commonly referred to as a Power-On Self Test (POST) to determine whether the support hardware is present and working correctly.
  • POST Power-On Self Test
  • BIOS provides low-level input/output control.
  • the BIOS contains the computer instructions required to control the keyboard, display screen, disk drives, perform basic input/output (“I/O”), and other miscellaneous functions.
  • instructions in the BIOS direct control to an operating system loader.
  • the operating system loader performs hardware detection, loads the operating system into a computer's volatile memory, e.g., a bank of random access memory (RAM) memory devices, and begins initializing the operating system.
  • the operating system “kernel” is loaded and is available to provide services to other components.
  • initialization of a component of the operating system known as an I/O manager initiates the process of loading and initializing boot drivers, at event 308 .
  • a prioritized list of the boot drivers is assembled by the I/O manager and each driver on the list is loaded into memory.
  • Boot drivers typically provide services that enable optimized access to the resources of hardware devices such as video cards, printers, disk drives, and the like.
  • the user mode subsystem provides support services to the user mode application space.
  • launching the user mode subsystem may include establishing a local security authority and eventually presenting a “login” prompt to the user.
  • a login is performed and user mode services are made available.
  • SMB Server Message Block
  • SMB is a protocol for sharing files, printers, serial ports, and communication abstractions between computers that becomes available when the login is performed.
  • the user-mode application space may be accessed to execute programs.
  • programs designed to perform specific tasks on a general purpose computer may be executed.
  • an operating system may cause program code associated with the selected program to be loaded from a storage device (e.g., hard drive) into memory where the program code is accessible to a CPU.
  • aspects of the present invention cause a search for malware to be performed during the boot process. More specifically, at any number of different locations in the timeline 300 , a software module (e.g., the scan engine 208 ) may be loaded into memory. Then, a search for data that is characteristic of malware may be performed. In this regard, components that execute during the boot process may be continually scanned until traditional antivirus software is available to protect the computer once the boot process is complete.
  • a software module e.g., the scan engine 208
  • a search for data that is characteristic of malware may be performed.
  • components that execute during the boot process may be continually scanned until traditional antivirus software is available to protect the computer once the boot process is complete.
  • aspects of the present invention may be implemented in a BIOS, operating system loader, or boot driver.
  • the scan engine 208 may be loaded into memory and begin executing at events 304 , 306 , or 310 .
  • the resources available to the malware may not be sufficient to avoid detection.
  • a boot environment is restricted and the ability of a malware to conceal itself and/or perform malicious acts on a computer that implements the present invention is limited.
  • the location in the timeline 300 or boot process where protection from malware is provided may depend on the configuration of the computer. For example, those skilled in the art and others will recognize that computer vendors may each provide a different BIOS for initializing the hardware on a computer. Thus, services provided by the BIOS may not be standardized so that a single implementation of the present invention could be provided regardless of the computer platform. Stated differently, implementing aspects of the present invention in the BIOS may more readily be performed if the services provided by the BIOS are standardized across computer platforms. More generally, the location in the boot process where the scan engine 208 is loaded into memory and begins executing may depend on any number of factors that affect how a computer can be configured.
  • the boot detection module 210 provides a way to identify malware, such as RootKit, that becomes active during the boot process. By becoming active during the boot process, a malware is more readily able to implement obfuscation techniques to filter data that is communicated to traditional antivirus software. As an initial matter, prior to the boot detection module 210 being executed, a power supply is switched “on” so that power is available to the computer.
  • malware such as RootKit
  • the boot detection module 210 begins at block 400 where a determination is made regarding whether one or more scans for malware will be performed in the current boot. As mentioned previously, when power is applied to a computer, a sequence of events occur that cause the computer to boot. In one embodiment, the boot detection module 210 may be configured to scan for malware each time the computer is booted. However, depending on the techniques used, scanning for malware may be a resource-intensive process. Thus, in other embodiments, a scan for malware is selectively performed based on whether a prerequisite was satisfied to minimize the use of computer resources.
  • a first prerequisite that may be used to differentiate between instances when a scan for malware will or will not be performed is the identification of “suspicious” activity.
  • Antivirus software may identify activity that could be characteristic of malware but have insufficient information to definitively declare that a malware infection exists.
  • a computer or computer network may transition into a heightened state in which extensive searching for malware is conducted. The transition to the heightened state may cause a scan for malware to be performed during each boot of a computer.
  • a variable that persists across boots may be set when the suspicious activity is identified to indicate that a scan for malware will be performed at computer start up.
  • the boot detection module 210 checks the value of the variable, at block 400 , to determine whether a scan for malware will be performed.
  • controls may be integrated into antivirus software that enable a user to generate input that causes a scan for malware to be performed during the boot process. Also, a user may be prompted during the boot process to provide input regarding whether scan should be performed. Similar to the description provided above, a variable that persists may be set when the appropriate user input is received to indicate that a scan will be performed.
  • a scan for malware may be scheduled automatically without the identification of suspicious activity or receipt of user input.
  • aspects of the present invention may be configured to perform a scan for malware at regular intervals such as every five (5) times the computer is booted, or other arbitrarily established value.
  • the determination as to whether a scan for malware will occur may be made randomly.
  • a hardware device such as an Advanced Programmable Interrupt Controller (“APIC”) may be used to generate a random value.
  • APIC Advanced Programmable Interrupt Controller
  • a determination as to whether a scan for malware will be performed in the current boot may be based on this value.
  • the boot detection module 210 proceeds to block 414 , where it terminates. Conversely, if a determination is made that a scan will be performed, the boot detection module 210 proceeds to block 402 .
  • the scan engine 208 ( FIG. 2 ) is initialized and starts executing at a predetermined location in the boot process.
  • aspects of the present invention may start searching for malware at potentially different locations as a computer is being booted.
  • program code that implements the present invention may be integrated into a BIOS, an operating system loader, or boot driver.
  • the initialization of the scan engine 208 at block 402 , may occur at different locations in the timeline 300 ( FIG. 3 ).
  • initialization of the scan engine 208 may, and typically will, be assigned the highest priority within the component in which it is integrated. For example, as mentioned previously, a prioritized list is used to identify the order in which boot drivers are initialized.
  • the scan engine 208 is initialized by a boot driver
  • the boot driver is assigned the highest priority when compared to other boot drivers.
  • subsequently initialized boot drivers are scanned for malware as they are loaded into memory. In this way, the possibility that a malware could conceal itself during the boot process is minimized.
  • the boot detection module 210 remains idle until a scanning event occurs.
  • a scan for malware is automatically performed as soon as the scan engine 208 is initialized.
  • scanning events may be defined that cause additional scans for malware to be performed during the boot process. Similar to an “on-access” scan performed by existing antivirus software, each piece of software loaded into memory during the boot process may be scanned by the scan engine 208 before being allowed to execute. For example, as each boot driver is loaded into memory, at event 310 ( FIG. 3 ), a scanning event may be generated so that the boot driver is scanned for malware.
  • scanning events may be generated in other instances once the scan engine 208 is initialized without departing from the scope of the claimed subject matter.
  • the boot detection model 210 Upon a scanning event being identified, the boot detection model 210 causes a scan for malware to be performed at block 406 .
  • any currently existing or yet to be developed techniques may be used to search for malware.
  • the scan engine 208 may implement an integrity check to determine whether program code in the memory address space allocated to the operating system originated from a trusted entity. Also, in addition to an integrity check, it is contemplated that signature-based techniques and/or search for “suspicious modifications” may be performed in the scan.
  • the scan performed at block 406 searches for a subset of the known malware.
  • scanning for malware may be a resource-intensive process.
  • the services requested by the scan engine 208 when performing a scan may not be satisfied quickly in a boot environment when compared to a non-boot environment.
  • performing a scan for all known malware in a boot environment may negatively impact the user experience.
  • a scan may be performed, at block 406 , to identify the type of malware that is most likely to start executing in a boot environment (e.g., RootKits).
  • RootKits e.g., RootKits
  • the boot detection module 210 causes the malware infection to be handled. If block 410 is reached, data characteristic of malware was identified during the boot process.
  • handling the infection at block 412 includes attempting to remove the malware from the computer by killing processes, deleting files, removing entries in configuration files that are associated with the malware, and the like.
  • the resources available in a boot environment are limited, successfully removing all components of a malware, at block with 412 , may be difficult or impossible.
  • some malware implement self-preservation techniques in which the malware's resources (e.g., files, processes, entries in configuration files, and the like) are monitored.
  • handling the malware infection may also include “quarantining” the component of the malware that is active in the boot environment.
  • a “stub” module may be used as a placeholder for the malware.
  • the stub module may be configured to sustain a malware process, accept and/or return valid data in response to being called, or perform any other action to prevent triggering of a malware self-preservation technique.
  • data will typically be communicated to antivirus software that executes once the computer boots so that all of the components of the malware may be removed.
  • aspects of the present invention identify malware that becomes active in a boot environment, before traditional antivirus software is able to provide protection. However, once the boot process is complete and traditional antivirus software is available. Functionality by the present invention is dormant until the boot process is again initiated.
  • the boot detection model 210 proceeds to block 414 , where terminates. However, if a determination is made at block 412 that the boot process is not complete, the boot protection module proceeds back to block 404 , and blocks 404 - 412 repeat until the boot process does complete.

Abstract

Generally described, the present invention is directed at identifying malware. In one embodiment, a method is provided that performs a search for malware during the boot process. More specifically, the method causes a software module configured to scan for malware to be initialized at computer start up. Then, in response to identifying the occurrence of a scanning event, the method causes the software module to search computer memory for data that is characteristic of malware. If data characteristic of malware is identified, the method handles the malware infection.

Description

    BACKGROUND
  • As more and more computers and other computing devices are interconnected through various networks such as the Internet, computer security has become increasingly more important, particularly from invasions or attacks delivered over a network or over an information stream. As those skilled in the art and others will recognize, these attacks come in many different forms, including, but certainly not limited to, computer viruses, computer worms, system component replacements, Trojans, RootKits, spyware, denial of service attacks, even misuse/abuse of legitimate computer system features, all of which exploit one or more computer system vulnerabilities for illegitimate purposes. While those skilled in the art will recognize that the various computer attacks are technically distinct from one another, for purposes of the present invention and for simplicity in description, all malicious computer programs that spread on computer networks such as the Internet, will be generally referred to hereinafter as computer malware or, more simply, malware.
  • When a computer system is attacked or “infected” by computer malware, the adverse results are varied, including disabling system devices; erasing or corrupting firmware, applications, or data files; transmitting potentially sensitive data to another location on the network; shutting down the computer system; or causing the computer system to crash. Yet another pernicious aspect of many, though not all, computer malware is that an infected computer system is used to infect other computer systems that are communicatively connected by a network connection.
  • A traditional defense against computer malware and, particularly, against computer viruses and worms, is antivirus software. Most antivirus software identifies malware by matching patterns within data to what is referred to as a “signature” of the malware. Typically, antivirus software scans for malware signatures when certain events are scheduled to occur, such as when data is going to be written or read from a storage device on the computer. As known to those skilled in the art and others, computer users have ongoing needs to read and write data to storage devices such as a hard drive. For example, a common operation provided by some software applications is to open a file stored on a hard drive and display the contents of the file on a computer display. However, since opening a file may cause malware associated with the file to be executed, antivirus software typically performs a scan or other analysis of the file before the open operation is satisfied. If malware is detected, the antivirus software that performed the scan may prevent the malware from being executed, for example, by causing the open operation to fail.
  • Increasingly, malware is being distributed with one or more programs specifically designed to “hide” the malware from software designed to protect a computer (e.g., antivirus software, anti-spyware software, and the like). Similar to other types of applications installed on a computer, software designed to protect a computer from malware relies on services provided by an operating system. However, if a malware is able to infect components of a computer operating system or other low level components, the malware may control the information that is provided to software designed to protect a computer. Malware that is specifically designed to conceal data that is characteristic of malware on a computer will be generally referred to hereinafter as a “RootKit.”
  • For illustrative purposes and by way of example only, FIG. 1 depicts how a RootKit is able to control the information that is made available to software designed to protect a computer 100 from malware. As illustrated in FIG. 1, the computer 100 includes an application program 102, an operating system 104, a storage device 106, and a RootKit 108. Also, the operating system 104 includes an interface 110 that provides services in the form of an Application Programming Interface (“API”) to application programs installed on the computer 100. The application program 102 performs actions designed to protect the computer 100 from malware. For example the application program 102 may scan files for malware “on access” when a user attempts to access a file stored on the storage device 106. However, as illustrated in FIG. 1, the application program 102 performs operations in user mode and relies on services provided by the operating system 104 that operates, at least partially, in kernel mode. Moreover, the computer 100 is infected with the RootKit 108 that “hooks” into the operating system 104, where it intercepts calls used to perform basic functions on the computer 100. Stated differently, the RootKit 108 acts as a “man-in-the-middle,” monitoring and altering communications between the operating system 104 and application programs installed on the computer 100. If an application program, such as anti-virus software, attempts to list the contents of a directory containing one or more files used by the RootKit 108, the RootKit 108 will censor the file name from the list. Similarly, the RootKit 108 may hide entries in the system registry, process list, and the like, thereby controlling all of the information that the RootKit 108 wants hidden.
  • SUMMARY
  • This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This summary is not intended to identify key features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
  • Generally described, aspects of the present invention are directed at identifying malware that uses program code activated in a boot environment to avoid being detected. In accordance with one embodiment, a method is provided that performs a search for malware during the boot process. More specifically, the method causes a software module configured to scan for malware to be initialized at computer startup. Then, in response to identifying the occurrence of a scanning event, the method causes the software module to search computer memory for data that is characteristic of malware. If data characteristic of malware is identified, functionality is implemented to prevent the malware from executing on the computer. As a result of performing a scan at computer startup, malware that performs obfuscation techniques to hide from antivirus software are identified.
  • DESCRIPTION OF THE DRAWINGS
  • The foregoing aspects and many of the attendant advantages of this invention will become more readily appreciated as the same become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:
  • FIG. 1 is a block diagram of software components that are configured to perform functions of a modern computer and a RootKit that is designed to conceal malware;
  • FIG. 2 is a pictorial depiction of the computer with components that are configured to identify malware in a boot environment;
  • FIG. 3 is a pictorial depiction of an exemplary timeline that illustrates events performed at computer start up; and
  • FIG. 4 is an exemplary flow diagram of a software module that identifies malware during the boot process.
  • DETAILED DESCRIPTION
  • Aspects of the present invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally described, program modules include routines, programs, applications, widgets, objects, components, data structures, and the like that perform particular tasks or implement particular abstract data types. Moreover, the present invention may be implemented in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located on local and/or remote computer storage media.
  • Now with reference to FIG. 2, a computer 200 with components that implement aspects of the present invention will be described. Those skilled in the art and others will recognize that the computer 200 may be any one of a variety of devices including, but not limited to, personal computing devices, server-based computing devices, mini- and mainframe computers, laptops, personal digital assistants (“PDAs”), set-top boxes, entertainment and gaming systems, or other electronic devices having some type of memory. The computer 200 illustrated in FIG. 2 contains many of the same components of like-name described above with reference to FIG. 1. In this regard, the computer 200 includes an application program 202, an operating system 204 with an associated interface 205, and a storage device 206. For ease of illustration and because it is not important for an understanding of the present invention, FIG. 2 does not show the typical components of many computers, such as a keyboard, a mouse, a printer, a display, CPU, memory, etc. However, in this embodiment, the computer 200 also includes a scan engine 208 and a boot detection module 210. As described in further detail below, the scan engine 208 and the boot detection module 210 collectively provide a way to identify malware, such as a RootKit, that starts executing before the services provided by traditional antivirus software are available. In this regard, a RootKit or other malware that infects the computer 200 is identified while the computer is being booted so that the RootKit is unable to continue to conceal data that is characteristic of malware.
  • The operating system 204 illustrated in FIG. 2 may be a general-purpose operating system such as a Microsoft® operating system, UNIX® operating system, or Linux® operating system. Also, the operating system 204 may be configured to use non-generic hardware designed for specialized computer systems. In any event, as known to those skilled in the art and others, the operating system 204 controls the general operation of the computer 200 and is responsible for management of hardware and basic system operations as well as executing application programs. More specifically, the operating system 204 insures that computer programs, such as the application program 202, are able to use resources like the storage device 206. Modem computers allow application programs to extend the functionality of the operating system 204 by providing mechanisms for code to execute in the memory space reserved for the operating system 204. The problem with these types of systems is that a RootKit or other malware may be able to compromise the integrity of the data provided by the operating system 204 to application programs such as antivirus software. As a result, a RootKit is able to implement obfuscation techniques that prevent antivirus software from identifying the RootKit and/or any other associated malware.
  • Those skilled in the art and others will recognize that a RootKit typically adds itself to Auto Start Extensibility Point (hereinafter “ASEP”) on a computer. Generally described, ASEPs refer to extensibility points that allow programs to begin executing without explicit user invocation. As a result of being added to an ASEP, a RootKit may begin executing during the boot process, once a user performs a “login,” or sometime thereafter. Typically, antivirus software uses services provided by an operating system to search for malware and may only protect a computer once the services provided by the operating system are available. As a result, a RootKit that infects an operating system or other low-level component of a computer before the services of the operating system are available may be able to conceal data that is characteristic of malware. In one embodiment of the present invention, a boot detection module 210 is provided that causes malware to be identified before the services provided by an operating system are available. Since various aspects of the boot detection module 210 are described in further detail below with reference to FIG. 4, a detailed description of the boot detection module 210 will not be provided here. However, generally described, the boot detection module 210 causes the scan engine 208 to be loaded into memory and executed during the boot process. If malware is identified, the malware may be removed from the computer or the malware may be “quarantined” so that antivirus software may handle the infection once the computer has booted.
  • As further illustrated in FIG. 2, the computer 200 also includes a scan engine 208 for determining whether data in computer memory is characteristic of malware. Any currently existing or yet to be developed techniques may be used by the scan engine 208 to identify malware that starts executing before services provided by the operating system 204 are available. In this regard, the scan engine 208 may employ integrity checking to verify whether program code that implements the operating system is digitally signed by a trusted entity such as an operating system provider. Moreover, the scan engine 208 may search for suspicious activities such as jump instructions in unexpected locations, hidden processes, references to memory addresses that are outside of a range allocated to the operating system 204, and the like. For example, some operating systems maintain a data structure, sometimes referred to as a process table, with a list of programs that are currently executing. Removing an entry from a process table or a similar data structure may be a strong heuristic indicator that a RootKit is present. Also, the scan engine 208 may employ traditional signature-based techniques in a boot environment to detect malware. In this regard, file data that implements a malware may be identified by matching patterns within the data to what is referred to as a “signature” of the malware. In this instance, data that is known to implement a malware, or a characteristic subset of the data, is processed with a function that converts the data into a signature which uniquely identifies the malware. Once a signature for the malware is available, the scan engine 208 may search data in the memory for a match.
  • As known to those skilled in the art and others, FIG. 2 is a simplified example of one computer 200 capable of implementing aspects of the present invention. Actual embodiments of the computer 200 will have additional components not illustrated in FIG. 2 or described in the accompanying text. Also, FIG. 2 shows one component architecture capable of performing a search for malware in a boot environment. Thus, the software components illustrated in FIG. 2 should be construed as exemplary and not limiting
  • Now with reference to FIG. 3, an exemplary timeline 300 that illustrates events performed when a computer is booted will be described. Those skilled in the art and others will recognize that the timeline 300 is a highly simplified example of a generalized and non-exclusive set of events that may occur at computer start up. In other embodiments, additional or fewer events may occur or events may occur in a different order than the description provided below. Thus, the timeline 300 illustrated in FIG. 3 is merely illustrative and should be construed as exemplary.
  • As illustrated in FIG. 3, at event 302 a power supply is switched “on” so that power is applied to the computer. When sufficient power is available, a CPU begins executing Basic Input/Output System (“BIOS”) code, at event 304. The BIOS code contains computer instructions that enable the computer to perform functions for initializing the computer's hardware. Typically, once a computer is powered on, the computer's BIOS conducts a hardware check, commonly referred to as a Power-On Self Test (POST) to determine whether the support hardware is present and working correctly. Those skilled in the art and others will recognize that the BIOS is typically located in non-volatile memory to ensure that the BIOS is always available and will not be damaged by failures affecting volatile memory or mass data storage. Moreover, those skilled in the art and others will recognize that a BIOS provides low-level input/output control. For example, in a personal computer, the BIOS contains the computer instructions required to control the keyboard, display screen, disk drives, perform basic input/output (“I/O”), and other miscellaneous functions.
  • At event 306, instructions in the BIOS direct control to an operating system loader. Typically, the operating system loader performs hardware detection, loads the operating system into a computer's volatile memory, e.g., a bank of random access memory (RAM) memory devices, and begins initializing the operating system. At event 307, the operating system “kernel” is loaded and is available to provide services to other components. In this regard, initialization of a component of the operating system known as an I/O manager initiates the process of loading and initializing boot drivers, at event 308. In this regard, a prioritized list of the boot drivers is assembled by the I/O manager and each driver on the list is loaded into memory. Boot drivers typically provide services that enable optimized access to the resources of hardware devices such as video cards, printers, disk drives, and the like. Once all of the boot drivers have been loaded, the user mode subsystem is launched, at event 310. Generally described, the user mode subsystem provides support services to the user mode application space. In this regard, launching the user mode subsystem may include establishing a local security authority and eventually presenting a “login” prompt to the user. At event 312, a login is performed and user mode services are made available. For example, Server Message Block (“SMB”) is a protocol for sharing files, printers, serial ports, and communication abstractions between computers that becomes available when the login is performed. Once the user mode services are available, at event 314, the user-mode application space may be accessed to execute programs. Once event 314 is reached, programs designed to perform specific tasks on a general purpose computer may be executed. In this regard, when a program is selected for execution in the user mode application space, an operating system may cause program code associated with the selected program to be loaded from a storage device (e.g., hard drive) into memory where the program code is accessible to a CPU.
  • As described in further detail below, aspects of the present invention cause a search for malware to be performed during the boot process. More specifically, at any number of different locations in the timeline 300, a software module (e.g., the scan engine 208) may be loaded into memory. Then, a search for data that is characteristic of malware may be performed. In this regard, components that execute during the boot process may be continually scanned until traditional antivirus software is available to protect the computer once the boot process is complete.
  • Depending on the configuration of the computer, aspects of the present invention may be implemented in a BIOS, operating system loader, or boot driver. In this regard and as illustrated FIG. 3, the scan engine 208 may be loaded into memory and begin executing at events 304, 306, or 310. Generally stated, it is desirable to start scanning for malware as early as possible in the boot process to prevent malware that infects a previous component from having the opportunity to implement obfuscation techniques. However, even if a malware is able to implement obfuscation techniques during the boot process, the resources available to the malware may not be sufficient to avoid detection. In this regard, a boot environment is restricted and the ability of a malware to conceal itself and/or perform malicious acts on a computer that implements the present invention is limited.
  • The location in the timeline 300 or boot process where protection from malware is provided may depend on the configuration of the computer. For example, those skilled in the art and others will recognize that computer vendors may each provide a different BIOS for initializing the hardware on a computer. Thus, services provided by the BIOS may not be standardized so that a single implementation of the present invention could be provided regardless of the computer platform. Stated differently, implementing aspects of the present invention in the BIOS may more readily be performed if the services provided by the BIOS are standardized across computer platforms. More generally, the location in the boot process where the scan engine 208 is loaded into memory and begins executing may depend on any number of factors that affect how a computer can be configured.
  • Now with reference to FIG. 4, an exemplary boot detection module 210 mentioned briefly above with reference to FIG. 2 will be described in more detail. Generally described, the boot detection module 210 provides a way to identify malware, such as RootKit, that becomes active during the boot process. By becoming active during the boot process, a malware is more readily able to implement obfuscation techniques to filter data that is communicated to traditional antivirus software. As an initial matter, prior to the boot detection module 210 being executed, a power supply is switched “on” so that power is available to the computer.
  • As illustrated in FIG. 4, the boot detection module 210 begins at block 400 where a determination is made regarding whether one or more scans for malware will be performed in the current boot. As mentioned previously, when power is applied to a computer, a sequence of events occur that cause the computer to boot. In one embodiment, the boot detection module 210 may be configured to scan for malware each time the computer is booted. However, depending on the techniques used, scanning for malware may be a resource-intensive process. Thus, in other embodiments, a scan for malware is selectively performed based on whether a prerequisite was satisfied to minimize the use of computer resources.
  • A first prerequisite that may be used to differentiate between instances when a scan for malware will or will not be performed is the identification of “suspicious” activity. Antivirus software may identify activity that could be characteristic of malware but have insufficient information to definitively declare that a malware infection exists. In this instance, a computer or computer network may transition into a heightened state in which extensive searching for malware is conducted. The transition to the heightened state may cause a scan for malware to be performed during each boot of a computer. In this regard, a variable that persists across boots may be set when the suspicious activity is identified to indicate that a scan for malware will be performed at computer start up. In this instance, the boot detection module 210 checks the value of the variable, at block 400, to determine whether a scan for malware will be performed.
  • Another prerequisite that may be used to differentiate between instances when a scan will or will not be performed is based on user input. In this regard, controls may be integrated into antivirus software that enable a user to generate input that causes a scan for malware to be performed during the boot process. Also, a user may be prompted during the boot process to provide input regarding whether scan should be performed. Similar to the description provided above, a variable that persists may be set when the appropriate user input is received to indicate that a scan will be performed.
  • By way of additional examples, a scan for malware may be scheduled automatically without the identification of suspicious activity or receipt of user input. In this regard, aspects of the present invention may be configured to perform a scan for malware at regular intervals such as every five (5) times the computer is booted, or other arbitrarily established value. Moreover, the determination as to whether a scan for malware will occur may be made randomly. For example, those skilled in the art and others will recognize that a hardware device such as an Advanced Programmable Interrupt Controller (“APIC”) may be used to generate a random value. In this regard, a determination as to whether a scan for malware will be performed in the current boot may be based on this value. If a determination is made at block 400 that a scan for malware will not be performed since the appropriate prerequisite was not satisfied, the boot detection module 210 proceeds to block 414, where it terminates. Conversely, if a determination is made that a scan will be performed, the boot detection module 210 proceeds to block 402.
  • At block 402, the scan engine 208 (FIG. 2) is initialized and starts executing at a predetermined location in the boot process. As mentioned previously, aspects of the present invention may start searching for malware at potentially different locations as a computer is being booted. In this regard, program code that implements the present invention may be integrated into a BIOS, an operating system loader, or boot driver. As a result, the initialization of the scan engine 208, at block 402, may occur at different locations in the timeline 300 (FIG. 3). Moreover, initialization of the scan engine 208 may, and typically will, be assigned the highest priority within the component in which it is integrated. For example, as mentioned previously, a prioritized list is used to identify the order in which boot drivers are initialized. If the scan engine 208 is initialized by a boot driver, the boot driver is assigned the highest priority when compared to other boot drivers. As a result, subsequently initialized boot drivers are scanned for malware as they are loaded into memory. In this way, the possibility that a malware could conceal itself during the boot process is minimized.
  • As illustrated in FIG. 4, at decision block 404, the boot detection module 210 remains idle until a scanning event occurs. In one embodiment, a scan for malware is automatically performed as soon as the scan engine 208 is initialized. However, scanning events may be defined that cause additional scans for malware to be performed during the boot process. Similar to an “on-access” scan performed by existing antivirus software, each piece of software loaded into memory during the boot process may be scanned by the scan engine 208 before being allowed to execute. For example, as each boot driver is loaded into memory, at event 310 (FIG. 3), a scanning event may be generated so that the boot driver is scanned for malware. Moreover, those skilled in the art and others will recognize that scanning events may be generated in other instances once the scan engine 208 is initialized without departing from the scope of the claimed subject matter.
  • Upon a scanning event being identified, the boot detection model 210 causes a scan for malware to be performed at block 406. As mentioned briefly above with reference to FIG. 2, any currently existing or yet to be developed techniques may be used to search for malware. In this regard, the scan engine 208 may implement an integrity check to determine whether program code in the memory address space allocated to the operating system originated from a trusted entity. Also, in addition to an integrity check, it is contemplated that signature-based techniques and/or search for “suspicious modifications” may be performed in the scan.
  • In one embodiment, the scan performed at block 406 searches for a subset of the known malware. As mentioned previously, scanning for malware may be a resource-intensive process. Moreover, the services requested by the scan engine 208 when performing a scan may not be satisfied quickly in a boot environment when compared to a non-boot environment. In this regard, performing a scan for all known malware in a boot environment may negatively impact the user experience. Thus, a scan may be performed, at block 406, to identify the type of malware that is most likely to start executing in a boot environment (e.g., RootKits). However, those skilled in the art and others will recognize that this is merely an optimization technique and should not be construed as limiting on the claimed subject matter. Then, at decision block 408, a determination is made regarding whether malware was identified as a result of the scan performed at block 406. If a malware was not identified, the boot detection module 210 proceeds to block 412, described in further detail below. Conversely, if a malware infection was identified, the boot detection module 210 proceeds to block 410.
  • As illustrated in FIG. 4, at block 410, the boot detection module 210 causes the malware infection to be handled. If block 410 is reached, data characteristic of malware was identified during the boot process. In one embodiment, handling the infection at block 412 includes attempting to remove the malware from the computer by killing processes, deleting files, removing entries in configuration files that are associated with the malware, and the like. However, since the resources available in a boot environment are limited, successfully removing all components of a malware, at block with 412, may be difficult or impossible. For example, some malware implement self-preservation techniques in which the malware's resources (e.g., files, processes, entries in configuration files, and the like) are monitored. When an attempt to remove the malware is identified, functionality designed to preserve the malware's resources and maintain the infection are performed. Thus, handling the malware infection may also include “quarantining” the component of the malware that is active in the boot environment. In this regard, a “stub” module may be used as a placeholder for the malware. For example, the stub module may be configured to sustain a malware process, accept and/or return valid data in response to being called, or perform any other action to prevent triggering of a malware self-preservation technique. In this embodiment, when the malware is quarantined, data will typically be communicated to antivirus software that executes once the computer boots so that all of the components of the malware may be removed.
  • As illustrated in FIG. 4, at block 412, a determination is made regarding whether the computer successfully booted. As mentioned previously, aspects of the present invention identify malware that becomes active in a boot environment, before traditional antivirus software is able to provide protection. However, once the boot process is complete and traditional antivirus software is available. Functionality by the present invention is dormant until the boot process is again initiated. When the boot process is complete, the boot detection model 210 proceeds to block 414, where terminates. However, if a determination is made at block 412 that the boot process is not complete, the boot protection module proceeds back to block 404, and blocks 404-412 repeat until the boot process does complete.
  • While illustrative embodiments have been illustrated and described, it will be appreciated that various changes can be made therein without departing from the spirit and scope of the invention.

Claims (20)

1. In a computer that employs a boot process at computer start up, a computer-implemented method of identifying malware that becomes active during the boot process, the method comprising:
(a) causing a software module that is configured to perform a scan for malware to be initialized during the boot process;
(b) in response to identifying the occurrence of a scanning event:
(i) causing the software module to scan computer memory for data that is characteristic of malware; and
(ii) if data characteristic of malware is identified, handling the malware infection.
2. The method as recited in claim 1, wherein the software module that is configured to perform a scan for malware is initialized at the stage in the boot process in which the BIOS executes.
3. The method as recited in claim 1, wherein the software module that is configured to perform a scan for malware is initialized at the stage in the boot process in which the operating system loader executes.
4. The method as recited in claim 1, wherein the software module that is configured to perform a scan for malware is implemented in a boot driver.
5. The method as recited in claim 1, wherein scans for malware are selectively performed at computer start up when a prerequisite is satisfied.
6. The method as recited in claim 5, wherein user input is the prerequisite used to determine whether a scan will be performed during the current boot.
7. The method as recited in claim 1, wherein the scan for malware is selectively performed at regularly scheduled boots of the computer.
8. The method as recited in claim 1, wherein scans for malware are performed at randomly selected boots of the computer.
9. The method as recited in claim 1, wherein causing the software module to scan computer memory for data that is characteristic of malware includes comparing data in memory with signatures that are associated with malware.
10. The method as recited in claim 1, wherein causing the software module to scan computer memory for data that is characteristic of malware includes performing an integrity check to determine whether program code in the memory space allocated to the operating system originates from a trusted entity.
11. The method as recited in claim 1, wherein the scan is configured to identify a subset of all known malware that are likely to be active in a boot environment.
12. The method as recited in claim 1, wherein handling the malware infection includes killing processes, deleting files, and removing entries in configuration files that are associated with the malware.
13. The method as recited in claim 1, wherein handling the malware infection includes using a stub module as a placeholder to prevent triggering of a malware self-reservation technique.
14. A computer-readable medium containing computer-readable instructions which, when executed in a computer that implements a boot environment at start up, performs a method of determining whether the computer is infected with malware, the method comprising:
(a) integrating a malware scan engine into a component of the boot environment;
(b) determining whether a scan for malware will be performed during the current boot; and
(c) if a determination is made that a scan for malware will be performed during the current boot, causing the scan engine to search components of the boot environment for malware.
15. The computer readable-medium as recited in claim 14, wherein the malware scan engine is integrated into a BIOS, operating system loader, or boot driver.
16. The computer readable-medium as recited in claim 14, wherein the determination whether a scan for malware will be performed during the current boot is made by receiving user input in response to a prompt.
17. The computer readable-medium as recited in claim 14, wherein causing the scan engine to search components of the boot environment for malware includes searching for suspicious activity characteristic of RootKit.
18. The computer readable-medium as recited in claim 17, wherein performing the search for suspicious activities that are characteristic of RootKit includes:
(a) identifying jump instructions in unexpected locations;
(b) identifying processes that are hidden; and
(c) identifying references to memory addresses that are outside of a range allocated to the operating system.
19. A computer-readable medium having computer executable components for identifying malware in a boot environment, comprising:
(a) a scanning component configured to search computer memory for data that is characteristic of malware;
(b) a boot detection component for initializing the scanning component during the boot process; and
(c) an optimization component that causes the scanning component to search memory for a subset of known malware.
20. The computer readable-medium as recited in claim 19, wherein the boot detection component is further configured to handle the malware infection by replacing malware program code with a stub module.
US11/480,774 2006-06-30 2006-06-30 Identifying malware in a boot environment Abandoned US20080005797A1 (en)

Priority Applications (6)

Application Number Priority Date Filing Date Title
US11/480,774 US20080005797A1 (en) 2006-06-30 2006-06-30 Identifying malware in a boot environment
EP07751409A EP2038753A4 (en) 2006-06-30 2007-02-21 Identifying malware in a boot environment
PCT/US2007/004643 WO2008005067A1 (en) 2006-06-30 2007-02-21 Identifying malware in a boot environment
JP2009518096A JP2009543186A (en) 2006-06-30 2007-02-21 Identifying malware in the boot environment
CN2007800245100A CN101479709B (en) 2006-06-30 2007-02-21 Identifying malware in a boot environment
KR1020087031665A KR20090023644A (en) 2006-06-30 2007-02-21 Identifying malware in a boot environment

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/480,774 US20080005797A1 (en) 2006-06-30 2006-06-30 Identifying malware in a boot environment

Publications (1)

Publication Number Publication Date
US20080005797A1 true US20080005797A1 (en) 2008-01-03

Family

ID=38878431

Family Applications (1)

Application Number Title Priority Date Filing Date
US11/480,774 Abandoned US20080005797A1 (en) 2006-06-30 2006-06-30 Identifying malware in a boot environment

Country Status (6)

Country Link
US (1) US20080005797A1 (en)
EP (1) EP2038753A4 (en)
JP (1) JP2009543186A (en)
KR (1) KR20090023644A (en)
CN (1) CN101479709B (en)
WO (1) WO2008005067A1 (en)

Cited By (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080256635A1 (en) * 2007-04-13 2008-10-16 Computer Associates Think, Inc. Method and System for Detecting Malware Using a Secure Operating System Mode
US20090044276A1 (en) * 2007-01-23 2009-02-12 Alcatel-Lucent Method and apparatus for detecting malware
US7917952B1 (en) * 2007-10-17 2011-03-29 Symantec Corporation Replace malicious driver at boot time
US20120255029A1 (en) * 2011-04-04 2012-10-04 Markany Inc. System and method for preventing the leaking of digital content
US20120255002A1 (en) * 2011-03-31 2012-10-04 Mcafee, Inc. System and method for below-operating system trapping of driver loading and unloading
RU2472215C1 (en) * 2011-12-28 2013-01-10 Закрытое акционерное общество "Лаборатория Касперского" Method of detecting unknown programs by load process emulation
US8370941B1 (en) * 2008-05-06 2013-02-05 Mcafee, Inc. Rootkit scanning system, method, and computer program product
US8417962B2 (en) 2010-06-11 2013-04-09 Microsoft Corporation Device booting with an initial protection component
US8479292B1 (en) * 2010-11-19 2013-07-02 Symantec Corporation Disabling malware that infects boot drivers
US8495741B1 (en) * 2007-03-30 2013-07-23 Symantec Corporation Remediating malware infections through obfuscation
US20130239214A1 (en) * 2012-03-06 2013-09-12 Trusteer Ltd. Method for detecting and removing malware
WO2013147825A1 (en) * 2012-03-30 2013-10-03 Intel Corporation Providing an immutable antivirus payload for internet ready compute nodes
US8572742B1 (en) * 2011-03-16 2013-10-29 Symantec Corporation Detecting and repairing master boot record infections
US20130312095A1 (en) * 2012-05-21 2013-11-21 Mcafee, Inc. Identifying rootkits based on access permissions
US8813227B2 (en) 2011-03-29 2014-08-19 Mcafee, Inc. System and method for below-operating system regulation and control of self-modifying code
US20140244191A1 (en) * 2013-02-28 2014-08-28 Research In Motion Limited Current usage estimation for electronic devices
US8863283B2 (en) 2011-03-31 2014-10-14 Mcafee, Inc. System and method for securing access to system calls
US8918879B1 (en) * 2012-05-14 2014-12-23 Trend Micro Inc. Operating system bootstrap failure detection
US8925089B2 (en) 2011-03-29 2014-12-30 Mcafee, Inc. System and method for below-operating system modification of malicious code on an electronic device
US8959638B2 (en) 2011-03-29 2015-02-17 Mcafee, Inc. System and method for below-operating system trapping and securing of interdriver communication
US8966624B2 (en) 2011-03-31 2015-02-24 Mcafee, Inc. System and method for securing an input/output path of an application against malware with a below-operating system security agent
US9032525B2 (en) 2011-03-29 2015-05-12 Mcafee, Inc. System and method for below-operating system trapping of driver filter attachment
US9038176B2 (en) 2011-03-31 2015-05-19 Mcafee, Inc. System and method for below-operating system trapping and securing loading of code into memory
US9058488B2 (en) 2013-08-14 2015-06-16 Bank Of America Corporation Malware detection and computer monitoring methods
WO2015100158A1 (en) * 2013-12-23 2015-07-02 The Trustees Of Columbia University In The City Of New York Implementations to facilitate hardware trust and security
US9087199B2 (en) 2011-03-31 2015-07-21 Mcafee, Inc. System and method for providing a secured operating system execution environment
US9110595B2 (en) 2012-02-28 2015-08-18 AVG Netherlands B.V. Systems and methods for enhancing performance of software applications
US9122872B1 (en) 2014-06-20 2015-09-01 AO Kaspersky Lab System and method for treatment of malware using antivirus driver
US9195832B1 (en) * 2014-12-05 2015-11-24 Kaspersky Lab Ao System and method for providing access to original routines of boot drivers
US9262246B2 (en) 2011-03-31 2016-02-16 Mcafee, Inc. System and method for securing memory and storage of an electronic device with a below-operating system security agent
US9317690B2 (en) 2011-03-28 2016-04-19 Mcafee, Inc. System and method for firmware based anti-malware security
US20170048779A1 (en) * 2008-06-19 2017-02-16 Interdigital Patent Holdings, Inc. Optimized serving dual cell change
US20170374196A1 (en) * 2015-10-01 2017-12-28 Securus Technologies, Inc. Inbound calls to intelligent controlled-environment facility resident media and/or communications devices
US11797682B2 (en) * 2021-07-14 2023-10-24 Dell Products L.P. Pre-OS resiliency
US11936666B1 (en) 2016-03-31 2024-03-19 Musarubra Us Llc Risk analyzer for ascertaining a risk of harm to a network and generating alerts regarding the ascertained risk

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8904536B2 (en) 2008-08-28 2014-12-02 AVG Netherlands B.V. Heuristic method of code analysis
US8949989B2 (en) 2009-08-17 2015-02-03 Qualcomm Incorporated Auditing a device
US8544089B2 (en) * 2009-08-17 2013-09-24 Fatskunk, Inc. Auditing a device
US9087188B2 (en) 2009-10-30 2015-07-21 Intel Corporation Providing authenticated anti-virus agents a direct access to scan memory
CN101976319B (en) * 2010-11-22 2012-07-04 张平 BIOS firmware Rootkit detection method based on behaviour characteristic
CN102867148B (en) * 2011-07-08 2015-03-25 北京金山安全软件有限公司 Safety protection method and device for electronic equipment
CN103617069B (en) * 2011-09-14 2017-07-04 北京奇虎科技有限公司 Malware detection methods and virtual machine
CN102867141B (en) * 2012-09-29 2016-03-30 北京奇虎科技有限公司 The method that Main Boot Record rogue program is processed and device
KR101412202B1 (en) * 2012-12-27 2014-06-27 주식회사 안랩 Device and method for adaptive malicious diagnosing and curing
US9519775B2 (en) * 2013-10-03 2016-12-13 Qualcomm Incorporated Pre-identifying probable malicious behavior based on configuration pathways
US9213831B2 (en) 2013-10-03 2015-12-15 Qualcomm Incorporated Malware detection and prevention by monitoring and modifying a hardware pipeline
CN104008340B (en) * 2014-06-09 2017-02-15 北京奇虎科技有限公司 Virus scanning and killing method and device
CN106126291B (en) * 2016-06-28 2019-08-13 珠海豹趣科技有限公司 A kind of method, apparatus and electronic equipment for deleting malicious file
US10645107B2 (en) * 2017-01-23 2020-05-05 Cyphort Inc. System and method for detecting and classifying malware
CN110199290B (en) * 2017-02-01 2024-03-22 惠普发展公司,有限责任合伙企业 Intrusion detection system utilizing ambient light sensor and super input/output circuitry
US10496822B2 (en) * 2017-12-21 2019-12-03 Mcafee, Llc Methods and apparatus for securing a mobile device
US10757087B2 (en) * 2018-01-02 2020-08-25 Winbond Electronics Corporation Secure client authentication based on conditional provisioning of code signature

Citations (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5421006A (en) * 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5440723A (en) * 1993-01-19 1995-08-08 International Business Machines Corporation Automatic immune system for computers and computer networks
US5802277A (en) * 1995-07-31 1998-09-01 International Business Machines Corporation Virus protection in computer systems
US20030079145A1 (en) * 2001-08-01 2003-04-24 Networks Associates Technology, Inc. Platform abstraction layer for a wireless malware scanning engine
US20030212821A1 (en) * 2002-05-13 2003-11-13 Kiyon, Inc. System and method for routing packets in a wired or wireless network
US20040236960A1 (en) * 2003-05-19 2004-11-25 Zimmer Vincent J. Pre-boot firmware based virus scanner
US20040250105A1 (en) * 2003-04-22 2004-12-09 Ingo Molnar Method and apparatus for creating an execution shield
US20050015606A1 (en) * 2003-07-17 2005-01-20 Blamires Colin John Malware scanning using a boot with a non-installed operating system and download of malware detection files
US20050120242A1 (en) * 2000-05-28 2005-06-02 Yaron Mayer System and method for comprehensive general electric protection for computers against malicious programs that may steal information and/or cause damages
US20050204205A1 (en) * 2004-02-26 2005-09-15 Ring Sandra E. Methodology, system, and computer readable medium for detecting operating system exploitations
US20050268112A1 (en) * 2004-05-28 2005-12-01 Microsoft Corporation Managing spyware and unwanted software through auto-start extensibility points
US20050268079A1 (en) * 2004-05-17 2005-12-01 Intel Corporation Input/output scanning
US20060101277A1 (en) * 2004-11-10 2006-05-11 Meenan Patrick A Detecting and remedying unauthorized computer programs
US20060130101A1 (en) * 2004-12-13 2006-06-15 Wessel Van Rooyen Pieter G Method and system for mobile receiver antenna architecture for handling various digital video broadcast channels
US20060130141A1 (en) * 2004-12-15 2006-06-15 Microsoft Corporation System and method of efficiently identifying and removing active malware from a computer
US7096501B2 (en) * 2001-08-01 2006-08-22 Mcafee, Inc. System, method and computer program product for equipping wireless devices with malware scanning capabilities
US7152240B1 (en) * 2000-07-25 2006-12-19 Green Stuart D Method for communication security and apparatus therefor
US20070113062A1 (en) * 2005-11-15 2007-05-17 Colin Osburn Bootable computer system circumventing compromised instructions
US7231637B1 (en) * 2001-07-26 2007-06-12 Mcafee, Inc. Security and software testing of pre-release anti-virus updates on client and transmitting the results to the server
US7237123B2 (en) * 2000-09-22 2007-06-26 Ecd Systems, Inc. Systems and methods for preventing unauthorized use of digital content
US20070289019A1 (en) * 2006-04-21 2007-12-13 David Lowrey Methodology, system and computer readable medium for detecting and managing malware threats
US7310818B1 (en) * 2001-10-25 2007-12-18 Mcafee, Inc. System and method for tracking computer viruses
US20080016339A1 (en) * 2006-06-29 2008-01-17 Jayant Shukla Application Sandbox to Detect, Remove, and Prevent Malware

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09288577A (en) * 1996-04-24 1997-11-04 Nec Shizuoka Ltd Method and device for monitoring computer virus infection
US6715074B1 (en) * 1999-07-27 2004-03-30 Hewlett-Packard Development Company, L.P. Virus resistant and hardware independent method of flashing system bios

Patent Citations (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5421006A (en) * 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5440723A (en) * 1993-01-19 1995-08-08 International Business Machines Corporation Automatic immune system for computers and computer networks
US5802277A (en) * 1995-07-31 1998-09-01 International Business Machines Corporation Virus protection in computer systems
US20050120242A1 (en) * 2000-05-28 2005-06-02 Yaron Mayer System and method for comprehensive general electric protection for computers against malicious programs that may steal information and/or cause damages
US7152240B1 (en) * 2000-07-25 2006-12-19 Green Stuart D Method for communication security and apparatus therefor
US7237123B2 (en) * 2000-09-22 2007-06-26 Ecd Systems, Inc. Systems and methods for preventing unauthorized use of digital content
US7231637B1 (en) * 2001-07-26 2007-06-12 Mcafee, Inc. Security and software testing of pre-release anti-virus updates on client and transmitting the results to the server
US20040010703A1 (en) * 2001-08-01 2004-01-15 Networks Associates Technology, Inc. Persistent storage access system and method for a wireless malware scan engine
US20030079145A1 (en) * 2001-08-01 2003-04-24 Networks Associates Technology, Inc. Platform abstraction layer for a wireless malware scanning engine
US7096501B2 (en) * 2001-08-01 2006-08-22 Mcafee, Inc. System, method and computer program product for equipping wireless devices with malware scanning capabilities
US7096368B2 (en) * 2001-08-01 2006-08-22 Mcafee, Inc. Platform abstraction layer for a wireless malware scanning engine
US7310818B1 (en) * 2001-10-25 2007-12-18 Mcafee, Inc. System and method for tracking computer viruses
US20030212821A1 (en) * 2002-05-13 2003-11-13 Kiyon, Inc. System and method for routing packets in a wired or wireless network
US20040250105A1 (en) * 2003-04-22 2004-12-09 Ingo Molnar Method and apparatus for creating an execution shield
US20040236960A1 (en) * 2003-05-19 2004-11-25 Zimmer Vincent J. Pre-boot firmware based virus scanner
US7549055B2 (en) * 2003-05-19 2009-06-16 Intel Corporation Pre-boot firmware based virus scanner
US20050015606A1 (en) * 2003-07-17 2005-01-20 Blamires Colin John Malware scanning using a boot with a non-installed operating system and download of malware detection files
US20050204205A1 (en) * 2004-02-26 2005-09-15 Ring Sandra E. Methodology, system, and computer readable medium for detecting operating system exploitations
US20050268079A1 (en) * 2004-05-17 2005-12-01 Intel Corporation Input/output scanning
US7370188B2 (en) * 2004-05-17 2008-05-06 Intel Corporation Input/output scanning
US20050268112A1 (en) * 2004-05-28 2005-12-01 Microsoft Corporation Managing spyware and unwanted software through auto-start extensibility points
US20060101277A1 (en) * 2004-11-10 2006-05-11 Meenan Patrick A Detecting and remedying unauthorized computer programs
US20060130101A1 (en) * 2004-12-13 2006-06-15 Wessel Van Rooyen Pieter G Method and system for mobile receiver antenna architecture for handling various digital video broadcast channels
US20060130141A1 (en) * 2004-12-15 2006-06-15 Microsoft Corporation System and method of efficiently identifying and removing active malware from a computer
US20070113062A1 (en) * 2005-11-15 2007-05-17 Colin Osburn Bootable computer system circumventing compromised instructions
US20070289019A1 (en) * 2006-04-21 2007-12-13 David Lowrey Methodology, system and computer readable medium for detecting and managing malware threats
US20080016339A1 (en) * 2006-06-29 2008-01-17 Jayant Shukla Application Sandbox to Detect, Remove, and Prevent Malware

Cited By (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090044276A1 (en) * 2007-01-23 2009-02-12 Alcatel-Lucent Method and apparatus for detecting malware
US8112801B2 (en) * 2007-01-23 2012-02-07 Alcatel Lucent Method and apparatus for detecting malware
US8495741B1 (en) * 2007-03-30 2013-07-23 Symantec Corporation Remediating malware infections through obfuscation
US20080256635A1 (en) * 2007-04-13 2008-10-16 Computer Associates Think, Inc. Method and System for Detecting Malware Using a Secure Operating System Mode
US8225394B2 (en) * 2007-04-13 2012-07-17 Ca, Inc. Method and system for detecting malware using a secure operating system mode
US7917952B1 (en) * 2007-10-17 2011-03-29 Symantec Corporation Replace malicious driver at boot time
US8370941B1 (en) * 2008-05-06 2013-02-05 Mcafee, Inc. Rootkit scanning system, method, and computer program product
US20170048779A1 (en) * 2008-06-19 2017-02-16 Interdigital Patent Holdings, Inc. Optimized serving dual cell change
US8938618B2 (en) 2010-06-11 2015-01-20 Microsoft Corporation Device booting with an initial protection component
US8417962B2 (en) 2010-06-11 2013-04-09 Microsoft Corporation Device booting with an initial protection component
US8479292B1 (en) * 2010-11-19 2013-07-02 Symantec Corporation Disabling malware that infects boot drivers
US8572742B1 (en) * 2011-03-16 2013-10-29 Symantec Corporation Detecting and repairing master boot record infections
US9317690B2 (en) 2011-03-28 2016-04-19 Mcafee, Inc. System and method for firmware based anti-malware security
US9747443B2 (en) 2011-03-28 2017-08-29 Mcafee, Inc. System and method for firmware based anti-malware security
US8925089B2 (en) 2011-03-29 2014-12-30 Mcafee, Inc. System and method for below-operating system modification of malicious code on an electronic device
US8813227B2 (en) 2011-03-29 2014-08-19 Mcafee, Inc. System and method for below-operating system regulation and control of self-modifying code
US8959638B2 (en) 2011-03-29 2015-02-17 Mcafee, Inc. System and method for below-operating system trapping and securing of interdriver communication
US9032525B2 (en) 2011-03-29 2015-05-12 Mcafee, Inc. System and method for below-operating system trapping of driver filter attachment
US9392016B2 (en) 2011-03-29 2016-07-12 Mcafee, Inc. System and method for below-operating system regulation and control of self-modifying code
US8863283B2 (en) 2011-03-31 2014-10-14 Mcafee, Inc. System and method for securing access to system calls
US9262246B2 (en) 2011-03-31 2016-02-16 Mcafee, Inc. System and method for securing memory and storage of an electronic device with a below-operating system security agent
US20120255002A1 (en) * 2011-03-31 2012-10-04 Mcafee, Inc. System and method for below-operating system trapping of driver loading and unloading
US9087199B2 (en) 2011-03-31 2015-07-21 Mcafee, Inc. System and method for providing a secured operating system execution environment
US9038176B2 (en) 2011-03-31 2015-05-19 Mcafee, Inc. System and method for below-operating system trapping and securing loading of code into memory
US8966629B2 (en) * 2011-03-31 2015-02-24 Mcafee, Inc. System and method for below-operating system trapping of driver loading and unloading
US8966624B2 (en) 2011-03-31 2015-02-24 Mcafee, Inc. System and method for securing an input/output path of an application against malware with a below-operating system security agent
US9239910B2 (en) * 2011-04-04 2016-01-19 Markany Inc. System and method for preventing the leaking of digital content
US20120255029A1 (en) * 2011-04-04 2012-10-04 Markany Inc. System and method for preventing the leaking of digital content
US8365297B1 (en) 2011-12-28 2013-01-29 Kaspersky Lab Zao System and method for detecting malware targeting the boot process of a computer using boot process emulation
EP2610774A1 (en) * 2011-12-28 2013-07-03 Kaspersky Lab Zao System and method for detecting malware targeting the boot process of a computer
RU2472215C1 (en) * 2011-12-28 2013-01-10 Закрытое акционерное общество "Лаборатория Касперского" Method of detecting unknown programs by load process emulation
US9110595B2 (en) 2012-02-28 2015-08-18 AVG Netherlands B.V. Systems and methods for enhancing performance of software applications
US20130239214A1 (en) * 2012-03-06 2013-09-12 Trusteer Ltd. Method for detecting and removing malware
US9251347B2 (en) * 2012-03-30 2016-02-02 Intel Corporation Providing an immutable antivirus payload for internet ready compute nodes
WO2013147825A1 (en) * 2012-03-30 2013-10-03 Intel Corporation Providing an immutable antivirus payload for internet ready compute nodes
US20140025941A1 (en) * 2012-03-30 2014-01-23 Mallik Bulusu Providing an immutable antivirus payload for internet ready compute nodes
US8918879B1 (en) * 2012-05-14 2014-12-23 Trend Micro Inc. Operating system bootstrap failure detection
US20130312095A1 (en) * 2012-05-21 2013-11-21 Mcafee, Inc. Identifying rootkits based on access permissions
US9317687B2 (en) * 2012-05-21 2016-04-19 Mcafee, Inc. Identifying rootkits based on access permissions
US20140244191A1 (en) * 2013-02-28 2014-08-28 Research In Motion Limited Current usage estimation for electronic devices
US9552479B2 (en) 2013-08-14 2017-01-24 Bank Of America Corporation Malware detection and computer monitoring methods
US9058488B2 (en) 2013-08-14 2015-06-16 Bank Of America Corporation Malware detection and computer monitoring methods
US10055587B2 (en) 2013-12-23 2018-08-21 The Trustees Of Columbia University In The City Of New York Implementations to facilitate hardware trust and security
WO2015100158A1 (en) * 2013-12-23 2015-07-02 The Trustees Of Columbia University In The City Of New York Implementations to facilitate hardware trust and security
US10599847B2 (en) 2013-12-23 2020-03-24 The Trustees Of Columbia University In The City Of New York Implementations to facilitate hardware trust and security
US9122872B1 (en) 2014-06-20 2015-09-01 AO Kaspersky Lab System and method for treatment of malware using antivirus driver
CN105678160A (en) * 2014-12-05 2016-06-15 卡巴斯基实验室股份制公司 System and method for providing access to original routines of boot drivers
US9195832B1 (en) * 2014-12-05 2015-11-24 Kaspersky Lab Ao System and method for providing access to original routines of boot drivers
US20170374196A1 (en) * 2015-10-01 2017-12-28 Securus Technologies, Inc. Inbound calls to intelligent controlled-environment facility resident media and/or communications devices
US11936666B1 (en) 2016-03-31 2024-03-19 Musarubra Us Llc Risk analyzer for ascertaining a risk of harm to a network and generating alerts regarding the ascertained risk
US11797682B2 (en) * 2021-07-14 2023-10-24 Dell Products L.P. Pre-OS resiliency

Also Published As

Publication number Publication date
CN101479709B (en) 2011-06-22
EP2038753A4 (en) 2010-03-31
EP2038753A1 (en) 2009-03-25
CN101479709A (en) 2009-07-08
KR20090023644A (en) 2009-03-05
JP2009543186A (en) 2009-12-03
WO2008005067A1 (en) 2008-01-10

Similar Documents

Publication Publication Date Title
US20080005797A1 (en) Identifying malware in a boot environment
US7647636B2 (en) Generic RootKit detector
US7853999B2 (en) Trusted operating environment for malware detection
US8104088B2 (en) Trusted operating environment for malware detection
US8661541B2 (en) Detecting user-mode rootkits
Wang et al. Detecting stealth software with strider ghostbuster
RU2531861C1 (en) System and method of assessment of harmfullness of code executed in addressing space of confidential process
US9754102B2 (en) Malware management through kernel detection during a boot sequence
US8677491B2 (en) Malware detection
US8590045B2 (en) Malware detection by application monitoring
US8719924B1 (en) Method and apparatus for detecting harmful software
US20080016339A1 (en) Application Sandbox to Detect, Remove, and Prevent Malware
US9588829B2 (en) Security method and apparatus directed at removable storage devices
CN110119619B (en) System and method for creating anti-virus records
RU2724790C1 (en) System and method of generating log when executing file with vulnerabilities in virtual machine
Min et al. Antivirus security: naked during updates
US9251350B2 (en) Trusted operating environment for malware detection
RU101233U1 (en) SYSTEM OF RESTRICTION OF RIGHTS OF ACCESS TO RESOURCES BASED ON THE CALCULATION OF DANGER RATING
KR101588542B1 (en) Malware risk scanner
US8201253B1 (en) Performing security functions when a process is created
US9342694B2 (en) Security method and apparatus

Legal Events

Date Code Title Description
AS Assignment

Owner name: MICROSOFT CORPORATION, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:FIELD, SCOTT A.;PHILLIPS, ROHAN R.;POLYAKOV, ALEXEY A.;REEL/FRAME:018098/0982;SIGNING DATES FROM 20060701 TO 20060801

Owner name: MICROSOFT CORPORATION, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:FIELD, SCOTT A.;PHILLIPS, ROHAN R.;POLYAKOV, ALEXEY A.;SIGNING DATES FROM 20060701 TO 20060801;REEL/FRAME:018098/0982

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034766/0001

Effective date: 20141014