The present application is related to the following commonly owned and assigned applications: U.S. application Ser. No. 11/334,307, “Method and System for Detecting Dependent Pestware Objects on a Computer,” filed herewith; U.S. application Ser. No. 11/105,978, “System and Method for Scanning Obfuscated Files for Pestware”; U.S. application Ser. No. 11/105,977, “System and Method for Scanning Memory for Pestware Offset Signatures”; U.S. application Ser. No. 11/106,122, “System and Method for Scanning Memory for Pestware”; and U.S. application Ser. No. 11/259,706, “System and Method for Neutralizing Pestware That Is Loaded by a Desirable Process”; each of which is incorporated herein by reference in its entirety.
The invention relates generally to the detection of pestware or malware in computers. More specifically, but without limitation, the invention relates to methods and systems for detecting pestware or malware that employs obfuscation techniques to avoid detection.
Protecting personal computers against a never-ending onslaught of “pestware” such as viruses, Trojan horses, spyware, adware, and downloaders on personal computers has become vitally important to computer users. Some pestware is merely annoying to the user or degrades system performance. Other pestware is highly malicious. Many computer users depend on anti-pestware software that attempts to detect and remove pestware automatically.
Anti-pestware software typically scans running processes in memory and files contained on storage devices such as disk drives, comparing them, at expected locations, against a set of “signatures” that identify specific, known types of pestware. Some kinds of pestware avoid detection, however, by using polymorphic obfuscation techniques, metamorphic obfuscation techniques, or both. Polymorphic obfuscation may involve, for example, changing the order of segments (e.g., modules or subroutines) of the pestware's program code during execution. Metamorphic obfuscation may involve, for example, changing specific program instructions to different but equivalent instructions during execution.
One possible solution to the problem of polymorphic and metamorphic obfuscation is to scan memory exhaustively for pestware signatures rather than relying on signatures being at expected locations within executable objects. Scanning memory exhaustively for every known type of pestware, however, can render a computer virtually inoperable for long periods due to the heavy processing burden. Due to the impracticality of scanning memory exhaustively, current anti-pestware software is not always able to detect pestware that employs polymorphic or metamorphic obfuscation techniques.
It is thus apparent that there is a need in the art for an improved method and system for detecting obfuscatory pestware in a computer memory.
Illustrative embodiments of the present invention that are shown in the drawings are summarized below. These and other embodiments are more fully described in the Detailed Description section. It is to be understood, however, that there is no intention to limit the invention to the forms described in this Summary of the Invention or in the Detailed Description. One skilled in the art can recognize that there are numerous modifications, equivalents and alternative constructions that fall within the spirit and scope of the invention as expressed in the claims.
Embodiments of the invention include methods and systems for detecting obfuscatory pestware in a computer memory. One illustrative embodiment is a method comprising the steps of identifying, within an executable object, a reference to a known procedure, the known procedure having a fixed address in the computer memory; and searching for a predetermined check value at a known offset relative to an address, in the computer memory, of the reference to the known procedure. Another illustrative embodiment is a system for detecting pestware in a computer memory. In this embodiment, a detection module of the system for detecting pestware is configured to identify, within an executable object, a reference to a known procedure, the known procedure having a fixed address in the computer memory; and to search for a predetermined check value at a known offset relative to an address, in the computer memory, of the reference to the known procedure. These and other embodiments are described in more detail herein.
Various objects and advantages and a more complete understanding of the present invention are apparent and more readily appreciated by reference to the following Detailed Description and to the appended claims when taken in conjunction with the accompanying Drawings, wherein:
“Pestware,” as used herein, refers to any program that damages or disrupts a computer system or that collects or reports information about a person or an organization. Examples include, without limitation, viruses, worms, Trojan horses, spyware, adware, and downloaders. Though pestware may employ polymorphic obfuscation techniques, metamorphic obfuscation techniques, or both to avoid detection, pestware typically contains one or more calls to procedures whose addresses in memory are fixed (“known procedures”). Examples of known procedures include, but are not limited to, application program interfaces (APIs), memory management routines, and computational procedures. Since the addresses of known procedures are unchanging, they can be located within an executing pestware process in spite of the changeability of other aspects of the pestware. One way to identify calls to known procedures is to examine an executable object's import address table (IAT). The address at which a call to a known procedure occurs within a pestware executable object can then serve as a reference or “primer location” from which to begin a scan for an expected, identifying value (“check value”). For example, a predetermined check value may be found at a known offset relative to the address in memory at which the call to the known procedure occurs. A “check value” may be, for example, algorithm code, a string (e.g., a name or uniform resource locator—URL), or any other data that identifies a particular type of pestware.
Referring now to the drawings, where like or similar elements are designated with identical reference numerals throughout the several views,
In
In
In conclusion, the present invention provides, among other things, a method and system for detecting obfuscatory pestware in a computer memory. 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 illustrative forms. Many variations, modifications and alternative constructions fall within the scope and spirit of the disclosed invention as expressed in the claims.
| Number | Name | Date | Kind |
|---|---|---|---|
| 5623600 | Ji et al. | Apr 1997 | A |
| 5696822 | Nachenberg | Dec 1997 | A |
| 5832208 | Chen et al. | Nov 1998 | A |
| 6069628 | Farry et al. | May 2000 | A |
| 6073241 | Rosenberg et al. | Jun 2000 | A |
| 6092194 | Touboul | Jul 2000 | A |
| 6154844 | Touboul | Nov 2000 | A |
| 6167520 | Touboul | Dec 2000 | A |
| 6310630 | Kulkarni et al. | Oct 2001 | B1 |
| 6324650 | Ogilvie | Nov 2001 | B1 |
| 6367012 | Atkinson et al. | Apr 2002 | B1 |
| 6397264 | Stasnick et al. | May 2002 | B1 |
| 6460060 | Maddalozzo, Jr. et al. | Oct 2002 | B1 |
| 6480962 | Touboul | Nov 2002 | B1 |
| 6535931 | Celi, Jr. | Mar 2003 | B1 |
| 6611878 | De Armas et al. | Aug 2003 | B2 |
| 6633835 | Moran et al. | Oct 2003 | B1 |
| 6667751 | Wynn et al. | Dec 2003 | B1 |
| 6701441 | Balasubramaniam et al. | Mar 2004 | B1 |
| 6785732 | Bates et al. | Aug 2004 | B1 |
| 6804780 | Touboul | Oct 2004 | B1 |
| 6813711 | Dimenstein | Nov 2004 | B1 |
| 6829654 | Jungek | Dec 2004 | B1 |
| 6965968 | Touboul | Nov 2005 | B1 |
| 7058822 | Edery et al. | Jun 2006 | B2 |
| 7093239 | van der Made | Aug 2006 | B1 |
| 7134141 | Crosbie et al. | Nov 2006 | B2 |
| 7231667 | Jordan | Jun 2007 | B2 |
| 7334262 | Szor | Feb 2008 | B2 |
| 7370360 | van der Made | May 2008 | B2 |
| 7418729 | Szor | Aug 2008 | B2 |
| 7552479 | Conover et al. | Jun 2009 | B1 |
| 7624449 | Perriot | Nov 2009 | B1 |
| 7647633 | Edery et al. | Jan 2010 | B2 |
| 20030065926 | Schultz | Apr 2003 | A1 |
| 20030115479 | Edwards | Jun 2003 | A1 |
| 20030159070 | Mayer | Aug 2003 | A1 |
| 20030174841 | Nault et al. | Sep 2003 | A1 |
| 20030217287 | Kruglenko | Nov 2003 | A1 |
| 20040030914 | Kelley et al. | Feb 2004 | A1 |
| 20040034794 | Mayer et al. | Feb 2004 | A1 |
| 20040064736 | Obrecht et al. | Apr 2004 | A1 |
| 20040080529 | Wojcik | Apr 2004 | A1 |
| 20040143763 | Radatti | Jul 2004 | A1 |
| 20040187023 | Alagna et al. | Sep 2004 | A1 |
| 20040199827 | Muttik | Oct 2004 | A1 |
| 20040225877 | Huang | Nov 2004 | A1 |
| 20050027686 | Shipp | Feb 2005 | A1 |
| 20050138433 | Linetsky | Jun 2005 | A1 |
| 20050268338 | Made | Dec 2005 | A1 |
| 20060117387 | Gunsalus et al. | Jun 2006 | A1 |
| Number | Date | Country |
|---|---|---|
| PCTUS0760711 | Oct 2007 | WO |
| PCTUS2006008883 | Oct 2007 | WO |
| PCTUS2007067082 | Nov 2007 | WO |
| Entry |
|---|
| Vasudevan, Amit; Yerraballi, Ramesh. Cobra: Fine-grained Malware Analysis using Stealth Localized-executions. 2006 IEEE Symposium on Security and Privacy. Pub. Date: 2006. Found on the World Wide Web at: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1624017. |
| U.S. Appl. No. 11/105,978, filed Apr. 14, 2005, J. Horne. |
| U.S. Appl. No. 11/105,977, filed Apr. 14, 2005, J. Horne. |
| U.S. Appl. No. 11/106,122, filed Apr. 14, 2005, J. Horne. |
| U.S. Appl. No. 11/259,706, filed Oct. 26, 2005, Jefferson D. Horne. |
| U.S. Appl. No. 11/258,711, filed Oct. 26, 2005, Jefferson D. Horne et al. |
| U.S. Appl. No. 11/334,307, filed Jan. 18, 2006, Jefferson D. Horne. |
| Codeguru, Three Ways to Inject Your Code Into Another Process, by Robert Kuster, Aug. 4, 2003, 22 pgs. |
| Codeguru, Managing Low-Level Keyboard Hooks With the Windows API for VB .Net, by Paul Kimmel, Apr. 18, 2004, 10 pgs. |
| Codeguru, Hooking the Keyboard, by Anoop Thomas, Dec. 13, 2001, 6 pgs. |
| Illusive Security, Wolves in Sheep's Clothing: malicious DLLs Injected Into trusted Host Applications, Author Unknown, http://home.arcor.de/scheinsicherheit/dll.htm 13 pgs. |
| DevX.com, Intercepting Systems API Calls, by Seung-Woo Kim, May 13, 2004, 6 pgs. |
| Microsoft.com, How to Subclass a Window in Windows 95, Article ID 125680, Jul. 11, 2005, 2 pgs. |
| MSDN, Win32 Hooks by Kyle Marsh, Jul. 29, 1993, 15 pgs. |
| PCT Search Report, PCT/US05/34874, Jul. 5, 2006, 7 Pages. |
| Hruska J; “Virus Detection” European Conference on Security and Detection, XX, XX, Apr. 1997; pp. 128-131; XP000828109. |
| Yi-Min Wang et al.; “Detecting Stealth Software with Strider Ghostbuster” Dependable Systems and Networks, 2005, DSN 2005, Proceedings, International Conference on Yokohama, Japan 28-0 Jun. 2005, Piscatay, NJ, USA, IEE, Jun. 28, 2005; pp. 368-377; XP010817813; ISBN: 0-7695-2282-3. |
| Endrijonas, Janet; Chapter 3, “Microcom Virex for the PC version 2.0”; RxPC The Anti-Virus Handbook; 1993; pp. 25-43; TAB Books; Blue Ridge Summit, PA. |
| Number | Date | Country | |
|---|---|---|---|
| 20070168982 A1 | Jul 2007 | US |