Method and system for detecting a keylogger on a computer

Information

  • Patent Grant
  • 7721333
  • Patent Number
    7,721,333
  • Date Filed
    Wednesday, January 18, 2006
    18 years ago
  • Date Issued
    Tuesday, May 18, 2010
    14 years ago
Abstract
A method and system for detecting a keylogger on a computer is described. One illustrative embodiment creates, in a memory of the computer, a hidden window; generates a unique, unpredictable data pattern; inputs, to the hidden window, the unique, unpredictable data pattern in a manner that mimics keyboard input from a user; scans running processes in the memory other than a keylogger detection process for the unique, unpredictable data pattern; and performs a secondary scan of a suspect process, the suspect process having an associated buffer that contains the unique, unpredictable data pattern.
Description
RELATED APPLICATIONS

The present application is related to U.S. application Ser. No. 11/334,306, “Systems and Methods for Neutralizing Unauthorized Attempts to Monitor User Activity,” now abandoned, which is herein incorporated by reference in its entirety.


FIELD OF THE INVENTION

The present invention relates generally to the detection of pestware or malware on computers. In particular, but without limitation, the present invention relates to methods and systems for detecting keyloggers.


BACKGROUND OF THE INVENTION

Protecting personal computers from a never-ending onslaught of pestware or malware has become increasingly important and challenging. Some types of pestware or malware can compromise a user's privacy by sending sensitive information about the user or the user's computer to a remote destination without the user's knowledge or permission. Such malware is commonly referred to as “spyware.” One particular type of spyware, a “keylogger,” secretly records a user's keystrokes as the user types on a keyboard and captures the resulting text in a data file, which is often encrypted. The keylogger may also secretly send the captured data file to a remote destination by e-mail or some other communication protocol. Such a keylogger can be used by a remote party to acquire information such as credit card numbers, social security numbers, and other sensitive information.


Clearly, computer users have a strong motivation to detect and remove unwanted keyloggers from their systems. Many computer users rely on anti-spyware programs to detect and remove such threats. Since keyloggers are usually designed to be difficult to detect, however, conventional anti-spyware programs may fail to detect them quickly and effectively. It is thus apparent that there is a need in the art for an improved method and system for detecting a keylogger on a computer.


SUMMARY OF THE INVENTION

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 a keylogger on a computer. One illustrative embodiment is a method comprising creating, in a memory of the computer, a hidden window; generating a unique, unpredictable data pattern; inputting, to the hidden window, the unique, unpredictable data pattern in a manner that mimics keyboard input from a user; scanning running processes in the memory other than a keylogger detection process for the unique, unpredictable data pattern; and performing a secondary scan of a suspect process, the suspect process having an associated buffer that contains the unique, unpredictable data pattern. Another illustrative embodiment is a system to detect a keylogger on a computer. A detection module of the system may be configured to create, in a memory of the computer, a hidden window; generate a unique, unpredictable data pattern; input, to the hidden window, the unique, unpredictable data pattern in a manner that mimics keyboard input from a user; scan running processes in the memory other than a keylogger detection process for the unique, unpredictable data pattern; and perform a secondary scan of a suspect process, the suspect process having an associated buffer that contains the unique, unpredictable data pattern. These and other embodiments are described in more detail herein.





BRIEF DESCRIPTION OF THE DRAWINGS

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:



FIG. 1 is a block diagram of a computer protected by a system for detecting a keylogger, in accordance with an illustrative embodiment of the invention;



FIG. 2 is a flowchart of a method for detecting a keylogger on a computer, in accordance with an illustrative embodiment of the invention;



FIG. 3 is a flowchart of a secondary scan to confirm that a suspect process is likely to be a keylogger, in accordance with an illustrative embodiment of the invention;



FIG. 4A is an illustration of a computer-readable storage medium, in accordance with an illustrative embodiment of the invention; and



FIG. 4B is a diagram of the elements of a computer-readable storage medium, in accordance with an illustrative embodiment of the invention.





DETAILED DESCRIPTION

A keylogger may be detected quickly and effectively by generating a unique, unpredictable data pattern; inputting the unique, unpredictable data pattern to a hidden window in memory in a manner that mimics keyboard input from a user; scanning data buffers associated with running processes to determine whether any running processes (other than a keylogger detection process) have intercepted the unique, unpredictable data pattern; and performing a secondary scan of any such suspect processes. During the secondary scan of a suspect process, heuristic techniques may be employed to confirm that the suspect process is likely to be a keylogger. For example, it may be determined that the suspect process uses particular application program interfaces (APIs) in a manner that is characteristic of a keylogger.


Referring now to the drawings, where like or similar elements are designated with identical reference numerals throughout the several views, FIG. 1 is a block diagram of a computer 100 protected by a system for detecting a keylogger, in accordance with an illustrative embodiment of the invention. In FIG. 1, processor 105 may communicate with read-only memory (ROM) 110 (e.g., a ROM BIOS), file storage system 115 (e.g., magnetic or optical disk drives), display 120, and random-access memory (RAM) 125. RAM 125 may contain both executable program code and data. In FIG. 1, only relevant running processes and data structures are shown for simplicity. That is, RAM 125 may contain other executing processes and data structures in addition to those shown in FIG. 1.


Among the running processes in RAM 125 is keylogger detection process 130. Keylogger detection process 130 comprises a system for detecting a keylogger on computer 100. In some embodiments, keylogger detection process 130 may be part of a more general anti-spyware detection and removal system. Detection module 135 is an aspect of keylogger detection process 130 that focuses on detecting keyloggers on computer 100 and, optionally, notifying a user that a suspected keylogger has been found. Though shown as a process running on computer 100 in RAM 125 in FIG. 1, keylogger detection process 130 may, in general, be implemented in hardware, firmware, software, or any combination thereof. In one illustrative embodiment, keylogger detection process 130 comprises software that resides on file storage system 115 and that is loaded into RAM 125 and executed by processor 105.


Detection module 135 may be configured to generate a unique, unpredictable data pattern (“data pattern”) 140 and to input data pattern 140 to hidden window 142. In FIG. 1, data pattern 140 is shown as the simple string, “THIS IS THE BAIT.” As illustrated in FIG. 1, data pattern 140 may be input to hidden window 142 multiple times. In one illustrative embodiment, data pattern 140 may be input to hidden window 142 on the order of 100,000 times. In one embodiment, detection module 135 may generate data pattern 140 by using the current time as a seed to a random number generator. Those skilled in the art will recognize that there are many other ways to generate a string of unique, unpredictable data. For example, multiple pieces of proprietary data and a hashing function may be used to generate data pattern 140.


In one illustrative embodiment, hidden window 142 may be a single-pixel window on display 120 so as not to be noticeable to a user. In that case, hidden window 142 lies within display buffer (video RAM) 145. Despite its tiny size, those skilled in the art will recognize that data pattern 140 may be input to such a single-pixel window in RAM 125. In a different embodiment, detection module 135 may create hidden window 142 entirely outside of display buffer 145 in RAM 120. Regardless of how hidden window 142 is created, detection module 135 may input data pattern 140 to hidden window 142 in a manner that mimics keyboard input from a user. That is, data pattern 140 is input to hidden window 142 in a manner that appears to keylogger 150 to be keyboard input, thereby inducing keylogger 150 to capture it. Those skilled in the art will recognize that there are a variety of ways in which keyboard input may be mimicked. In one illustrative embodiment, detection module 135 may use built-in keyboard extension libraries (APIs) resident in an operating system of computer 100. In another illustrative embodiment, keylogger detection process 130 may include its own integrated keyboard driver for mimicking keyboard input.


Though not shown in FIG. 1, keylogger detection process 130 may include other modules for, e.g., removing discovered keyloggers from computer 100.


Keylogger 150 includes program code 155 and buffer 160. As keylogger 150 intercepts user keystrokes, it records them to buffer 160. Keylogger 150 typically writes the contents of buffer 160 to a data file that resides on data storage system 115. This data file is usually encrypted and, thus, difficult to detect with conventional anti-spyware scanning techniques. When detection module 135 scans buffers associated with running processes such as buffer 160, it detects data pattern 140 in buffer 160 and flags keylogger 150 as a “suspect process” (i.e., one that might be a keylogger). Detection module 135 may then perform a secondary scan to confirm that the suspect process is likely to be a keylogger. At that point, the user may be given the option to remove keylogger 150 from computer 100.



FIG. 2 is a flowchart of a method for detecting a keylogger 150 on computer 100, in accordance with an illustrative embodiment of the invention. At 205, detection module 135 may create hidden window 142 in RAM 125, as explained above. Detection module 135 may, at 210, generate data pattern 140 and, at 215, input data pattern 140 to hidden window 142 in a manner that mimics keyboard input from a user. At 220, detection module 135 may scan running processes in RAM 125 to determine whether any associated data buffers contain data pattern 140. If, at 225, data pattern 140 is found in a buffer associated with a process other than keylogger detection process 130, detection module 135 may perform a secondary scan of any such suspect processes at 230. At 235, the process may terminate.



FIG. 3 is a flowchart of a secondary scan to confirm that a suspect process is likely to be a keylogger 150, in accordance with an illustrative embodiment of the invention (see Step 230 in FIG. 2). The secondary scan shown in FIG. 3 may be helpful in avoiding false positives from keylogger detection process 130. At 305, detection module 135 may identify at least one API used by the suspect process. Since usage of a particular API or set of APIs may be insufficient to confirm that the suspect process is a keylogger 150, detection module 135 may, at 310, scrutinize the manner in which the suspect process uses those APIs. Keyloggers tend to use particular APIs in particular ways that are known to those skilled in the spyware detection art. For example, a suspect process may use a particular API, invoke a dynamic link library (DLL) inside of a system-level application such as a Web browser, and write to a disk file. Thus, heuristic techniques may be developed to confirm that a suspect process is likely to be a keylogger. If detection module 135 determines, at 315, that the suspect process is likely to be a keylogger, detection module may report the suspected keylogger to a user at 320. Even if detection module 135 determines that a suspect process is likely a keylogger 150, keylogger detection process 130 may ask the user to confirm removal of a suspect process. At 325, the process may terminate.



FIG. 4A is an illustration of a computer-readable storage medium 400 containing program instructions to detect a keylogger 150 on computer 100, in accordance with an illustrative embodiment of the invention. Though FIG. 4A depicts, by way of illustration, an optical disc such as a CD-ROM, computer-readable storage medium 400 may be any kind of non-volatile, computer-readable storage medium capable of storing program instructions, including, without limitation, flash memory, ROM, optical discs, and magnetic disks.



FIG. 4B is a diagram of the elements of a computer-readable storage medium 400 containing program instructions to detect a keylogger 150 on computer 100, in accordance with an illustrative embodiment of the invention. Computer-readable storage medium 400 may comprise a first instruction segment 405 that creates, in a memory of the computer (e.g., RAM 125), a hidden window 142; a second instruction segment 410 that generates a unique, unpredictable data pattern (data pattern 140); a third instruction segment 415 that inputs, to the hidden window 142, data pattern 140 in a manner that mimics keyboard input from a user; a fourth instruction segment 420 that scans running processes in the memory (other than keylogger detection process 130) for data pattern 140; and a fifth instruction segment 425 that performs a secondary scan of a suspect process, the suspect process having an associated buffer that contains data pattern 140. Optionally, computer-readable storage medium 400 may further comprise a sixth instruction segment 430 that reports the suspect process as a suspected keylogger, when the secondary scan confirms that the suspect process is likely to be a keylogger (see FIG. 3).


In conclusion, the present invention provides, among other things, a method and system for detecting a keylogger on a computer. 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.

Claims
  • 1. A method for detecting a keylogger on a computer, comprising: creating, in a memory of the computer, a hidden window;generating a unique, unpredictable data pattern;inputting, to the hidden window, the unique, unpredictable data pattern in a manner that mimics keyboard input from a user;scanning running processes in the memory other than a keylogger detection process for the unique, unpredictable data pattern; andperforming a secondary scan of a suspect process, the suspect process having an associated buffer that contains the unique, unpredictable data pattern.
  • 2. The method of claim 1, further comprising reporting the suspect process as a suspected keylogger, when the secondary scan confirms that the suspect process is likely to be a keylogger.
  • 3. The method of claim 1, wherein the hidden window comprises a single-pixel window on a display of the computer.
  • 4. The method of claim 1, wherein the hidden window is created outside of a display buffer of the computer.
  • 5. The method of claim 1, wherein the unique, unpredictable data pattern is based on a random value.
  • 6. The method of claim 1, wherein the unique, unpredictable data pattern is input to the hidden window multiple times.
  • 7. The method of claim 1, wherein inputting, to the hidden window, the unique, unpredictable data pattern in a manner that mimics keyboard input from a user comprises using an application program interface (API) of an operating system of the computer.
  • 8. The method of claim 1, wherein inputting, to the hidden window, the unique, unpredictable data pattern in a manner that mimics keyboard input from a user comprises using a keyboard driver that is integral to the keylogger detection process.
  • 9. The method of claim 1, wherein performing the secondary scan of the suspect process comprises: identifying at least one application program interface (API) used by the suspect process; anddetermining whether the suspect process uses the at least one API in a manner that is characteristic of a keylogger.
  • 10. A system, comprising: a processor; anda memory connected with the processor, the memory containing a plurality of program instructions to detect a keylogger on a computer, the plurality of program instructions being configured to cause the processor to: create, in the memory, a hidden window;generate a unique, unpredictable data pattern;input, to the hidden window, the unique, unpredictable data pattern in a manner that mimics keyboard input from a user;scan running processes in the memory other than a keylogger detection process for the unique, unpredictable data pattern; andperform a secondary scan of a suspect process, the suspect process having an associated buffer that contains the unique, unpredictable data pattern.
  • 11. The system of claim 10, wherein the plurality of program instructions are further configured to cause the processor to report the suspect process as a suspected keylogger, when the secondary scan confirms that the suspect process is likely to be a keylogger.
  • 12. The system of claim 10, wherein the hidden window comprises a single-pixel window on a display of the computer.
  • 13. The system of claim 10, wherein the plurality of program instructions are configured to cause the processor to create the hidden window outside of a display buffer of the computer.
  • 14. The system of claim 10, wherein the unique, unpredictable data pattern is based on a random value.
  • 15. The system of claim 10, wherein the plurality of program instructions are configured to cause the processor to input the unique, unpredictable data pattern to the hidden window multiple times.
  • 16. The system of claim 10, wherein the plurality of program instructions are configured to cause the processor to input, to the hidden window, the unique, unpredictable data pattern in a manner that mimics keyboard input from a user by using an application program interface (API) of an operating system of the computer.
  • 17. The system of claim 10, wherein the plurality of program instructions are configured to cause the processor to input, to the hidden window, the unique, unpredictable data pattern in a manner that mimics keyboard input from a user by using a keyboard driver that is integral to the keylogger detection process.
  • 18. The system of claim 10, wherein, during the secondary scan of the suspect process, the plurality of program instructions are configured to cause the processor to: identify at least one application program interface (API) used by the suspect process; anddetermine whether the suspect process uses the at least one API in a manner that is characteristic of a keylogger.
  • 19. A computer-readable storage medium containing program instructions to detect a keylogger on a computer, comprising: a first instruction segment to create, in a memory of the computer, a hidden window;a second instruction segment to generate a unique, unpredictable data pattern;a third instruction segment to input, to the hidden window, the unique, unpredictable data pattern in a manner that mimics keyboard input from a user;a fourth instruction segment to scan running processes in the memory other than a keylogger detection process for the unique, unpredictable data pattern; anda fifth instruction segment to perform a secondary scan of a suspect process, the suspect process having an associated buffer that contains the unique, unpredictable data pattern.
  • 20. The computer-readable storage medium of claim 19, further comprising a sixth instruction segment to report the suspect process as a suspected keylogger, when the secondary scan confirms that the suspect process is likely to be a keylogger.
US Referenced Citations (38)
Number Name Date Kind
5596714 Connell Jan 1997 A
5623600 Ji et al. Apr 1997 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
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
6782527 Kouznetsov et al. Aug 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
7328457 Mister Feb 2008 B1
20030115479 Edwards Jun 2003 A1
20030159070 Mayer Aug 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
20040225877 Huang Nov 2004 A1
20050138433 Linetsky Jun 2005 A1
20050204165 Nason et al. Sep 2005 A1
20050273858 Zadok et al. Dec 2005 A1
20060282890 Gruper et al. Dec 2006 A1
Foreign Referenced Citations (2)
Number Date Country
PCT2007067082 Nov 2007 WO
PCTUS200760700 Jul 2008 WO
Related Publications (1)
Number Date Country
20070180520 A1 Aug 2007 US