System and method for scanning memory for pestware

Systems and methods for managing multiple related pestware processes on a protected computer are described. One embodiment is configured to identify a location of each of a plurality of files in at least one file storage device of the protected computer and store a list of the location of each of the plurality of files. The list of the plurality of files is then sorted so as to generate a sorted list. Each of the plurality of files is then sequentially accessed as listed in the sorted list so as to retrieve information from each of the plurality of files. Information from the plurality of files is then analyzed to determine whether any of the plurality of files are potential pestware files. In variations, the files in the file storage device are enumerated, and information from the files is accessed, by circumventing the operating system of the protected computer.

RELATED APPLICATIONS

The present application is related to the following commonly owned and assigned applications: application Ser. No. 11/105,978 (U.S. Pat. No. 7,349,931), entitled: System and Method for Scanning Obfuscated Files for Pestware filed herewith; application Ser. No. 11/105,977, entitled: System and Method for Scanning Memory for Pestware Offset Signatures, filed herewith. Each of which is incorporated by reference in their entirety.

FIELD OF THE INVENTION

The present invention relates to computer system management. In particular, but not by way of limitation, the present invention relates to systems and methods for controlling pestware or malware.

BACKGROUND OF THE INVENTION

Personal computers and business computers are continually attacked by trojans, spyware, and adware, collectively referred to as “malware” or “pestware.” These types of programs generally act to gather information about a person or organization—often without the person or organization's knowledge. Some pestware is highly malicious. Other pestware is non-malicious but may cause issues with privacy or system performance. And yet other pestware is actually beneficial or wanted by the user. Wanted pestware is sometimes not characterized as “pestware” or “spyware.” But, unless specified otherwise, “pestware” as used herein refers to any program that collects and/or reports information about a person or an organization and any “watcher processes” related to the pestware.

Software is available to detect some pestware, but many variations of pestware are difficult to detect with typical techniques. For example, pestware running in memory of a computer is often difficult to detect because it is disguised in such a way that it appears to be a legitimate process that is dependent from a trusted application (e.g., a word processor application). In other cases, pestware is obfuscated with encryption techniques so that a pestware file stored on a system hard drive may not be readily recognizable as a file that has spawned a pestware process. In yet other instances, pestware is known to be polymorphic in nature so as to change its size in memory or to change its starting address in memory. Accordingly, current software is not always able to scan and remove pestware in a convenient manner and will most certainly not be satisfactory in the future.

SUMMARY OF THE INVENTION

Embodiments of the present invention include methods for scanning files of a protected computer for pestware. One embodiment is configured to scan executable memory of a protected computer for pestware by initially enumerating processes and any dependencies related to the processes that are running in the executable memory. A reference point is then identified in the executable memory for each of the processes and dependencies, and the processes and dependencies are then analyzed by scanning one or more portions of memory that are offset from reference points associated with the processes and dependencies so as to identify whether any of the processes or dependencies are pestware.

In another embodiment, the invention may be characterized as a system for managing pestware. In this embodiment, a pestware detection module is configured to initially enumerate any processes and any dependencies related to the processes that are running in executable memory. The pestware detection module then identifies a reference point in the executable memory for each of the processes and dependencies. The processes and dependencies are then analyzed by scanning one or more portions of memory that are offset from the reference points associated with the processes and dependencies so as to identify whether any of the processes or dependencies are pestware.

These and other embodiments are described in more detail herein.

DETAILED DESCRIPTION

Referring first toFIG. 1, shown is a block diagram100of a protected computer/system in accordance with one implementation of the present invention. The term “protected computer” is used herein to refer to any type of computer system, including personal computers, handheld computers, servers, firewalls, etc. This implementation includes a CPU102coupled to memory104(e.g., random access memory (RAM)), a file storage device106and ROM108.

As shown, the storage device106provides storage for a collection of N files124, which includes a pestware file122. The storage device106is described herein in several implementations as hard disk drive for convenience, but this is certainly not required, and one of ordinary skill in the art will recognize that other storage media may be utilized without departing from the scope of the present invention. In addition, one of ordinary skill in the art will recognize that the storage device106, which is depicted for convenience as a single storage device, may be realized by multiple (e.g., distributed) storage devices.

As shown, an anti-spyware application112includes a detection module114, a shield module116and a removal module118, which are implemented in software and are executed from the memory104by the CPU102. The software112can be configured to operate on personal computers (e.g., handheld, notebook or desktop), servers or any device capable of processing instructions embodied in executable code. Moreover, one of ordinary skill in the art will recognize that alternative embodiments, which implement one or more components (e.g., the anti-spyware112) in hardware, are well within the scope of the present invention.

Also shown in the executable memory104are N processes, which in general, are executable programs that may be either known and trusted applications or pestware processes that are being executed by the CPU102. Shown among the N processes for example, are a first process126that is a pestware process and a second process128that is not a pestware process, but it is associated with a pestware dependency130, which has spawned unencrypted pestware code140. As discussed further herein with reference toFIGS. 2 and 3, several embodiments of the present invention effectively and quickly identify and remove the pestware126,130,140.

It should be recognized that an operating system (not shown) of the protected computer100is not limited to any particular type of operating system and may be operating systems provided by Microsoft Corp. under the trade name WINDOWS (e.g., WINDOWS 2000, WINDOWS XP, and WINDOWS NT). Additionally, the operating system may be an open source operating system such operating systems distributed under the LINUX trade name. For convenience, however, embodiments of the present invention are generally described herein with relation to WINDOWS-based systems. Those of skill in the art can easily adapt these implementations for other types of operating systems or computer systems.

Referring next toFIG. 2, shown is a flowchart depicting steps traversed in accordance with a method for scanning processes (e.g., the N processes) in executable memory for pestware. In the exemplary embodiment, the steps enumerated inFIG. 2are carried out by the detection module114of the anti-spyware application112. As shown inFIG. 2, blocks of memory associated with the N processes and any dependencies associated with each process are initially enumerated (Blocks202,204). In addition, the base address of each of the N processes and any dependencies associated with each of the N processes are enumerated (Block206). With respect to the exemplary processes depicted inFIG. 1, blocks of memory and the base addresses associated with the N processes and the pestware dependency130are enumerated.

As shown inFIG. 2, once the base addresses for the processes and dependencies are identified, portable execution (PE) headers for the processes and dependencies are obtained (Block208), and the original entry point (OEP) for each process and each dependency are obtained from the processes' and dependencies' respective portable execution headers (Block210). Next, the start address of each process and each dependency is calculated by adding the OEP and base address of each process and each dependency together (Block212).

Referring toFIG. 1, for example, a start address132of the first pestware process126is calculated and another start address134of the pestware dependency130is calculated. Advantageously, the steps outlined with reference to blocks202-212allow a reference point in executable memory (e.g., memory104) to be established relative to processes and dependencies that have neither a corresponding file in the file storage device106nor have a process identifier (PID). For example, the pestware dependency130may be a dynamic link library (DLL), that does not have a process PID, but several embodiments of the present invention enable the block of memory associated with the DLL to be enumerated and allow a base reference point (e.g., the start address134) for the dependency130to be identified.

After calculating the start addresses of the processes (e.g., the N processes) and any dependencies (e.g., the dependency130) each of the processes and any dependencies are scanned utilizing their respective start addresses (Block214). It should be recognized that, due to various techniques (e.g., morphing techniques) the calculated starting address discussed above with reference to block212may not yield a viable base location from which to scan the associated process/dependency. To address this situation, some embodiments of the present invention also locate one or more API implementations, which are then utilized as a reference point to scan the associated process.

Referring next toFIG. 3, shown is a flowchart depicting steps carried out in accordance with a dynamic offset scanning technique in accordance with several embodiments of the present invention. In general, the offset scanning technique in these embodiments scans, utilizing offsets from a base location (e.g., a start address and/or an API implementation) only portions of the executable memory that are associated with each of the processes (e.g., the N processes) so as to scan the processes quickly. But the portions of the executable memory that are scanned are selected so as to provide for very effective scanning. Moreover, in many variations of the present invention, the information obtained from the selected portions of the executable memory is op code that provides very specific information about the processes so as to avoid false positives.

As shown inFIG. 3with simultaneous reference toFIG. 1, in several embodiments, portions of the files in storage device106are scanned along with portions of the N processes and the dependency130in memory104so as to provide an initial assessment the types of processes that are residing in the executable memory104(Blocks302,304,306).

Based upon the information gathered with the initial scans (Blocks304,306), specific offsets are selected for scanning each of the N processes and the dependency130(Block308). For example, a partial scan of the pestware dependency130reveals that it is a loader for encrypted code, and as a consequence, a specific offset144from the start address134of the pestware dependency130to a memory location146that is outside of the memory block for the pestware dependency130is selected in order to scan for unencrypted pestware code known to be located at the offset144from its associated loader when running in memory.

As another example, a first offset136and a second offset138are selected relative to the start address132of the first pestware process126. As shown, these offsets136,138from the start address132point to portions of the executable memory104where two specific subroutines for the first pestware process reside. These offsets136and138are selected based upon known pestware of the type matching the first pestware process126.

It should be recognized that other base reference locations may be utilized for the processes and dependencies in addition to (or instead of) a start address. For example, it is often the case that a relative offset between portions of code within a pestware process is static even though the start address of the process may vary. In some embodiments for example, API implementations are located and utilized as base reference points when the start address is not a viable reference point. In such a case, one or more offsets from the API implementation may be scanned for code that is known to be associated with particular pestware.

As shown inFIG. 3, for each process and each dependency, portions of code are retrieved from locations in memory that are located at the selected offsets from the base reference location associated with each process and each dependency (Block310). The code that is retrieved from memory at the locations that are offset from a reference base of a particular process/dependency is then compared with code associated with known pestware so as to determine whether the particular process/dependency is pestware (Block312).

In several embodiments, the code retrieved at the offsets is op code (e.g., X86 assembly instructions) as opposed to strings or flat Unicode text. In this way, the identification of pestware is much more accurate because the op code associated with known pestware is very specific to the pestware. As a consequence, the frequency of false positive identifications of the process as pestware is substantially reduced.

It should be recognized that the process depicted inFIG. 3is exemplary only and that one of ordinary skill in the art will appreciate that one or more steps may be varied and or omitted without departing from the scope of the present invention. For example, the steps enumerated by blocks304and306may be varied or omitted, and each process/dependency may be scanned by scanning memory associated with each process/dependency with various offsets from the base reference point of the process/dependency without the benefit of narrowing the number of offsets utilized.

In conclusion, the present invention provides, among other things, a system and method for managing pestware. Those skilled in the art can readily recognize that numerous variations and substitutions may be made in the invention, its use and its configuration to achieve substantially the same results as achieved by the embodiments described herein. Accordingly, there is no intention to limit the invention to the disclosed exemplary forms. Many variations, modifications and alternative constructions fall within the scope and spirit of the disclosed invention as expressed in the claims.