WO2004075060A1 - コンピュータウィルス検出装置 - Google Patents

コンピュータウィルス検出装置 Download PDF

Info

Publication number
WO2004075060A1
WO2004075060A1 PCT/JP2004/001663 JP2004001663W WO2004075060A1 WO 2004075060 A1 WO2004075060 A1 WO 2004075060A1 JP 2004001663 W JP2004001663 W JP 2004001663W WO 2004075060 A1 WO2004075060 A1 WO 2004075060A1
Authority
WO
WIPO (PCT)
Prior art keywords
breakpoint
application program
program
computer virus
execution
Prior art date
Application number
PCT/JP2004/001663
Other languages
English (en)
French (fr)
Inventor
Koji Tabei
Original Assignee
Tabei, Hikaru
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 Tabei, Hikaru filed Critical Tabei, Hikaru
Priority to JP2005502696A priority Critical patent/JPWO2004075060A1/ja
Publication of WO2004075060A1 publication Critical patent/WO2004075060A1/ja

Links

Classifications

    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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
    • 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/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

Definitions

  • the present invention provides a program that can be executed by being introduced from the outside of a computer, such as the Internet, by using e-mail, web, file exchange software of peer 'to' peers, and the like. It relates to monitoring execution, detecting the behavior of computer viruses or behavior similar to computer viruses, and taking measures such as stopping program execution.
  • a computer such as the Internet
  • viruses the mainstream technology for detecting computer viruses (hereinafter sometimes simply referred to as “viruses”) uses pattern matching.
  • This technology is disclosed in, for example, Japanese Patent Application Laid-Open No. 2003-21064, Japanese Patent Application Laid-Open No. 2002-1966942, It is disclosed.
  • Pattern matching focuses on computer memory and files on the hard disk, and detects viruses by comparing them with signatures of viruses found in the past. Pattern matching is a technology with few false positives, but can only detect known viruses.
  • virus detection techniques include hysteretic scans.
  • the heuristic scan executes the code in a simulated manner and determines whether it behaves like a virus based on the emulation.
  • it is not always possible to emulate all the installations in the executable file. Also, it takes a long time to emulate a virus with a large program size and / or a complicated encryption. Disclosure of the invention
  • the present invention it is possible to create a new process or attach to a running process on a computer, attach the process to an object to be monitored, and make important changes to the computer.
  • Monitor behavior by monitoring possible system calls. It then compares the behavior of the monitored process with the characteristic behavior of past computer viruses. When a characteristic behavior of the virus is detected, the user is notified so that the monitored process can be stopped.
  • the monitored process mainly refers to a process that connects to the Internet.
  • Figure 1 is a diagram conceptually explaining the execution of a process on a computer.
  • Applications 101, 102, electronic mail, air 103, and WEB browser 104 operate in upper layers.
  • the user can connect to the Internet and execute programs to install programs from outside the computer, such as by connecting to the Internet, e-mail software, e-mail software and e-mail. It is a process.
  • a security layer according to the present invention is provided between these processes and the system call API layer 105. This security layer monitors calls to system calls.
  • Beneath the system call API layer 105 is a kernel layer 106 that implements an operating system (hereinafter sometimes abbreviated as “OS”). There are 107 layers of hardware.
  • OS operating system
  • the processing is divided into kernel mode and user mode.
  • the part 108 above the system call API layer 105 is a part where processing is performed in the user mode, and the part 109 below the system call API layer 105 is the kernel mode. This is where the processing is performed.
  • a process running in user mode has its own context and virtual address space. Therefore, processes running in the same user mode cannot access the memory of another process.
  • the present invention relates to a position of a breakpoint to be set when executing an application program, and a stack of the application program when the execution of the application program reaches the breakpoint.
  • the application program has a judgment program that determines whether or not the application program has a computer virus, and maintains the application program by setting a breakpoint in the application program.
  • Program execution reaches a breakpoint When it reaches, it provides a computer virus detection device that executes a judgment program held in association with the position of the breakpoint.
  • the computer virus detection device holds the application program, and sets a breakpoint in the application program when executing the held application program. May be.
  • the position of the breakpoint may be determined based on the system call API function. By doing so, the security layer of FIG. 1 is realized.
  • the computer virus detector will create a copy of the system resource before executing the system call. It may be.
  • the computer virus detection device may be configured to prevent the execution of the system call API function when it is determined that the application program has computer virus properties. .
  • the computer virus detection device outputs an instruction to an external communication device (for example, a router) to cause the communication to fail. It may be. Further, whether or not the application program has a computer virus property may be determined based on a history of breakpoints reached by the application program.
  • the application program is a parchment for executing a program described in a language such as JaVa (registered trademark).
  • the virtual machine may operate on a mobile phone.
  • the behavior monitoring in the present invention is characterized in that all of the behavior monitoring is performed in the user mode, that is, in the application layer. As a result, there is no fatal error such as a system down which is often caused when a kernel driver is used.
  • FIG. 2 exemplifies the relationship between a process 201 for executing an application program and a debugger 202.
  • the debugger 202 attaches to the process 201. By the attachment, the relationship between the process 201 and the depacker 202 is managed by the OS. That is, the OS associates the process 201 with the debugger 202. For example, when a change occurs in the state of the process 201, the debugger 202 is notified.
  • the debugger 202 sets a breakpoint in the process 201. “Breakpoint” indicates a memory address at which execution of the CPU is stopped when the program counter of process 201 reaches a predetermined value. Specifying such a memory address is called setting a breakpoint. How to set breakpoints For example, the memory address value indicated by the breakpoint is set in the CPU, or the instruction at the memory address indicated by the program counter value of the breakpoint is replaced with a special instruction. (For example,
  • process 201 starts to hang out and reaches the breakpoint
  • (2) OS is notified that execution has stopped.
  • This notification is sent to the processing routine for handling the interrupt, because the execution of the process reaches the breakpoint and the CPU is interrupted rather than the process 201 executes. More done.
  • the processing routine is appropriately set by, for example, initializing OS.
  • the debugger 202 is notified, and the debugger 202 knows that the execution of the process 201 has reached the breakpoint.
  • the operation of the user of the debugger 202 performs (5) the debugging operation of the process 201.
  • a typical debug operation involves reading the contents of a process stack, examining the sequence of calls to functions and procedures, and examining the values of arguments and variables.
  • breakpoints are set for each process. Therefore, the description "set a breakpoint in the process that runs the application program” is accurate, but the description is long, so the application program and the application program In some cases, a process that executes a program is equated with "setting a breakpoint in an application program”.
  • Figure 3 shows that in the prior art, calls to functions and procedures in high-level languages Illustrate how it is compiled.
  • the call of a function or procedure such as ⁇ f (argument 1, argument 2,..., argument n); It is assumed that When this is compiled, it is converted into a machine installation as shown by reference numeral 302. That is, the arguments are stacked on the stack by the push instruction, and finally, f is called by “ca 11 f”.
  • the execution of a machine instruction that calls a function such as callf, stacks the value set to the program counter when returning from the processing of the called function. Piled up.
  • Figure 4 illustrates the compilation result of function f.
  • the value of the frame pointer (fp) before the call to f is stacked on the stack by a machine instruction called pushfp J.
  • the “frame pointer” is a CPU register that indicates the part of the stack for function calls.
  • the frame pointer plays an important role in obtaining a function call sequence (call sequence), as described later.
  • the value of the stack pointer (sp) is set to the frame pointer. (Fp) by "movesp ⁇ fp". This causes the frame pointer (fp) to point to the currently called stack portion of f. Thereafter, the processing of f is performed.
  • the value of the frame pointer (fp) before the call to f is set by ⁇ ⁇ ⁇ ⁇ fp, and the call is returned from the call to f by “ret”. I do.
  • the value of the program counter loaded on the stack is set as the program counter.
  • Figure 5 illustrates the stack with values.
  • the value stacked at the top of the stack 501 ie, the value stored at the top of the stack
  • Area 5 0 1 is the value of the argument.
  • a program counter after the function call is loaded.
  • the value of the frame pointer (fp) before the function call is loaded.
  • Area 505 stores the values of automatic variables defined in the function.
  • the frame pointer (fp) points to the top of area 504, and the value loaded in area 504 was loaded on stack 501 at the time of the previous function call. Pointing above the position where the frame pointer (f) is stored.
  • the computer virus detection device monitors the behavior of the process by using such a function of the debugger.
  • the debugger according to the prior art while a human operates a depacker to investigate a process to be debugged, monitoring of the process behavior by the computer virus detection device according to the present invention is automatically performed. Done.
  • Spyware is an application program that sends information to its creator or caller via the Internet. Spyware behaves similarly to Pack Door's virus. Malicious spyware steals user information and keystrokes and sends the information to other machines through specific communication channels.
  • many antivirus companies do not detect commercial software such as Spy Air as their policy. This is because there is commercial software that erases the data used when destroying a hard disk, which may be sent as e-mail from a friend. Programs that erase data as intended by the user are not detected by anti-virus
  • the admittancer authority has access to all resources in the system. In other words, it can alter important files necessary for the system to operate. Running a virus in such an environment can alter important files on your computer, and infect computers all over the world through the Internet. The execution environment of the program should be better protected for the user.
  • FIG. 1 is a diagram conceptually illustrating the execution of a process on a computer according to the related art.
  • FIG. 2 illustrates the relationship between a process for executing an application program and a debugger according to the related art.
  • Figure 3 illustrates how calls to functions and procedures in high-level languages are compiled in the prior art.
  • FIG. 4 illustrates the result of compiling a function in the prior art.
  • FIG. 5 illustrates a state where a value is stacked on a stack according to the related art.
  • FIG. 6 illustrates a state in which a DLL file is mapped in a virtual process space in the related art.
  • Figure 7 shows the virtual memory space of the process in the prior art.
  • FIG. 8 illustrates a flowchart of the process according to the present invention.
  • FIG. 9 illustrates a functional block diagram of a computer virus detection device according to the first embodiment of the present invention.
  • FIG. 10 shows an example of a state in which the break byte information is held.
  • Figure 11 illustrates how breakpoint information is provided for each application program.
  • FIG. 12 illustrates a flowchart of the process of the computer virus detection device.
  • FIG. 13 illustrates a display screen of the computer virus detection device according to the second embodiment of the present invention.
  • FIG. 14 exemplifies a functional block diagram for a combinator virus detection device according to Embodiment 2 of the present invention.
  • FIG. 15 illustrates a flowchart of the process of the computer virus detection device.
  • FIG. 16 illustrates breakpoint information according to the third embodiment of the present invention.
  • FIG. 17 illustrates a flowchart of the process of the computer virus detection device.
  • FIG. 18 illustrates a functional block diagram of a computer virus detection device according to Embodiment 7 of the present invention.
  • FIG. 19 illustrates a flowchart of the process of the computer virus detection device.
  • FIG. 20 illustrates an overview of Embodiment 8 of the present invention.
  • FIG. 21 illustrates a functional block diagram of a computer virus detection device according to Embodiment 8 of the present invention.
  • FIG. 22 shows an example of the communication blocking instruction.
  • FIG. 23 illustrates a flowchart of the process of the computer virus detection device.
  • FIG. 24 illustrates a functional block diagram of a communication device according to Embodiment 8 of the present invention.
  • FIG. 25 is a flowchart of the communication device processing.
  • FIG. 26 illustrates a functional block diagram of a computer virus detection device according to Embodiment 9 of the present invention.
  • FIG. 27 illustrates a flowchart of the process of the computer virus detection device.
  • FIG. 28 illustrates a mode of use of the computer virus detection device according to Embodiment 10 of the present invention.
  • FIG. 29 illustrates a mode of use of the computer virus detection device according to Embodiment 11 of the present invention.
  • the present invention focuses on the behavior of a program and determines whether or not the program is a virus.
  • the process embodying the present invention and the process to be monitored have a relationship similar to the relationship between the debugger (Debugger) and the debugger (Debuggee).
  • the debugger corresponds to a process that embodies the present invention, and the debugger corresponds to a process to be monitored.
  • the process being debugged is called Debatsugi.
  • the present invention executes the process to be monitored as a debugger. To monitor a running process, attach to the running process.
  • a process embodying the present invention sets a breakpoint (Breakpoints) in a system call (or API function) that makes significant changes to the system in order to check the behavior of the monitored process.
  • a breakpoint can be realized by arranging the hardware interrupt instruction of Int3 at the memory address indicated by the breakpoint.
  • the computer virus detection device investigates the contents of the stack of the process and the like, and conducts the behavior of the monitored process. And the characteristic behavior of past computer viruses.
  • the present invention compares the API call of the monitored process with the past computer virus behavior, etc., and stops the monitored process and issues a warning to the user.
  • WINDOWS registered trademark
  • API for manipulating files and directories is included in a file called KERNEL32.DLL.
  • API related to the registry is included in ADVAPI32.DLL.
  • APIs that operate on shared drives in the network are included in MPR.DLL.
  • DLL files are referred to as DLL files.
  • the following describes how to determine which API is being called by the monitored process.
  • the DLL file is mapped into the virtual process space.
  • FIG. 6 shows an example of a state in which Kerne 13 2.D 11, MRP. D 11, and Ad V api 3 2.D 11 are mapped to the virtual process space 60 1.
  • the monitoring target Seth can, for example, call functions such as RegCreateKeyEx defined in Advapi 32.D11.
  • FIG. 7 shows the virtual memory space of the process.
  • the virtual memory space 700 is composed of the portion of the instruction, the portion of the heap, the portion of the heap, and the portion where the DLL file is mapped, starting from the smaller memory address. 703, and a stack portion 704.
  • Portion 703 is located between portion 702 of the heap and portion 704 of the stack, and the DLL file is mapped. That is, when reference is made to the memory address of the portion 703, the contents of the DLL file stored as a file can be obtained.
  • the map address of the DLL file (the first address of the part where the DLL file is mapped to the virtual memory space) is called the image base, and is uniquely determined for each DLL so that it does not overlap with the others. ing.
  • RegOpEnKeyExA which operates the registry
  • ADVAPI32.DLL For example, API called RegOpEnKeyExA, which operates the registry, is included in ADVAPI32.DLL.
  • RVA R Reg A Pen Key E x A RVA.
  • RVA is an abbreviation for “RelatevieVirtrtuaalAdddresss”. That is, the relative position where the definition of API appears in the DLL finale.
  • this step creates a backup. Stop the process when virus characteristics are detected, or report to the user. To If not detected, the process continues.
  • RegSetValueExA ... Set the value.
  • AD VA PI 32. DLL The above two APIs are included in AD VA PI 32. DLL.
  • the image base of ADVAPI 32. DLL is 0x77D8 ⁇ 00 '.
  • the number 0 X indicates that it is a hexadecimal number.
  • RVA of RegCreateKeyExA is 0x294427
  • RVA of RegSetValueExA is 0x2C58D.
  • WIND OW S (TM) as long as the program to be run automatically at startup, R e g C reate K ey E x A breakpoint emissions Togahi Tsu Tosuru of.
  • the stack is analyzed. This is because compilers such as the C language generate machine instruc- tions in which arguments are passed through the stack.
  • the second argument is the location of the registry.
  • the location of the memory address 4 1 f 0 2 8 registry is entered. Then, check the memory address 4 If 0 28.
  • detection rules The correspondence between the API that monitors calls and the arguments (hereinafter referred to as detection rules) can be added or changed by reading a file describing the detection rules externally, for example, from the Internet, rather than by hard coding. Is desirable.
  • Figure 8 shows an example of the flow chart.
  • the breakpoint position information is associated with a determination program to be executed when the application program reaches the breakpoint indicated by the breakpoint position information.
  • a computer virus detection device that executes a judgment program by setting a breakpoint in an application program
  • FIG. 9 illustrates a functional block diagram of the computer virus detection device according to the present embodiment.
  • the computer virus detection device 900 has a breakpoint information holding unit 901, a breakpoint setting unit 902, and a judgment program execution unit 903.
  • a computer virus detection device having these units can be realized as a program that runs on a computer. Therefore, FIG. 9 can be interpreted as a diagram showing the module configuration of such a program. That is, such a program includes a breakpoint information holding step for realizing a breakpoint information holding unit by a program and a breakpoint information holding step for realizing a breakpoint setting unit by a program.
  • breakpoint information holding unit 901 holds breakpoint information.
  • breakpoint information is stored in a hard disk or a semiconductor memory.
  • "Breakpoint information” is information including breakpoint position information and a judgment program. Since the word “includes”, the components of the breakpoint information may not be limited to the breakpoint position information and the judgment program.
  • '"Breakpoint position information is information indicating the position of a breakpoint to be set when executing an application program.
  • the location of the breakpoint is indicated, for example, by the memory address of the application program. It may also be indicated by the name of a function, procedure, or method called by the application program (hereafter, “function, etc.”).
  • “Judgment program” means that when the execution of the application program reaches the breakpoint, the application program is executed based on the contents of the stack referred to by the execution of the application program. This is a program for determining whether or not an application program has a virus. "What is the application program?" This means an application program in which a breakpoint is set at a position indicated by the breakpoint position information by a breakpoint setting unit 902 described later. The “breakpoint” means a breakpoint set at the position indicated by the breakpoint position information.
  • the case where the application program has a computer virus property is not only when the application program itself is a computer virus but also when the application program is infected with a computer virus. This includes cases in which operations that were not anticipated at the time of design are performed by using a pugs security hole of a gram. For example, a malicious person might take advantage of a bug in a web server program to obtain the contents of a file that cannot be obtained through normal operations.
  • determining whether or not the application program has a computer virus property based on the contents of the stack referred to in the execution of the application program. For example, determine whether the stack referenced in the execution of the application program can be traced from the top of the stack to the bottom of the stack by following the frame pointer. Some computer viruses destroy the contents of the stack and call system calls, etc. in such a manner that they are not called if the application program runs properly. Therefore, it is determined whether the contents of the stack have been destroyed. One of the decisions is to trace the frame pointer and determine whether it is possible to follow the call to the first function called in the execution of the program (for example, the function named —startup). Thus, it is determined whether the application program has a computer virus property.
  • the application program when the application program reaches a breakpoint, it checks whether the application program has reached through a call sequence such as a function, and determines whether or not the application program has a computer virus. Is also good. If the breakpoint is reached after a sequence of calls, such as an unexpected function, it is suspected that it has computer virus. '
  • the application program may be determined whether or not the application program has computer virus properties. For example, a computer virus that uses email to infect other computers with itself accesses the email address book to obtain the email address. Thus, the determination may be made based on whether an argument for accessing the address book is specified.
  • the process of executing a program for realizing a computer virus detection device and the process of executing an application program are different processes, and usually a computer virus detection device.
  • a program that implements the application program cannot read the contents of the memory space of the process that executes the application program, especially the contents of the stack.
  • operating systems have the ability to allow one process to read or modify the memory space or registers of another process between processes in a particular relationship. It is usually that.
  • Examples of the “specific relationship” here include a parent-child relationship and a process executed by the same user, and a predetermined system call (for example, a ttach) is made to another process. There is a relationship of execution. Therefore, when a computer virus detector is implemented by a program, the process of executing the program and the process There must be a specific relationship between the process that runs the relocation program.
  • the determination program may be executed by, for example, an interpreter.
  • the judgment program may be described in a language such as Lisp, Per1, Ruby, or the like.
  • the judgment program may consist of a sequence of machine instructions that can be directly executed by the computer.
  • the judgment program may be incorporated as a part of the program for realizing the computer virus detection device.
  • the judgment program may be dynamically loaded into a program for realizing a computer virus detection device, for example, as a dynamic library. When the judgment program is executed by the interpreter or dynamically loaded, the judgment program can be easily replaced.
  • FIG. 10 shows an example of a state in which the breakpoint information is held by the breakpoint information holding unit 901.
  • breakpoint information is held in a table.
  • Column 1001 stores breakpoint position information
  • column 1002 stores a judgment program.
  • FIG. 10 (b) shows an example of a state in which a pointer to the judgment program is stored in a tape. The pointer points to a specific location in the memory space of a process that executes a program that realizes the computer virus detection device.
  • Figure 11 illustrates how breakpoint information is provided for each application program.
  • the breakpoint information holding unit 901 may hold the breakpoint information for each application program.
  • the “breakpoint setting section” 902 sets the breakpoint information in the application program based on the breakpoint information held in the breakpoint information holding section 901.
  • a breakpoint is set at the position indicated by the breakpoint position information included in the breakpoint information, which is set using a system call or special device provided by the operating system.
  • “based on” means that when the breakpoint position information is expressed using the name of a function or the like, the address of the function or the like is obtained from the name of the function or the like.
  • Means The correspondence between the name of a function, etc., and its address can be obtained, for example, by reading the symbol table of the application program.
  • the “judgment program executing section” 903 is configured to execute the breakpoint information when the execution of the application program reaches the breakpoint set by the breakpoint setting section 902. Execute the judgment program included in.
  • the “application program” is an application program in which a breakpoint has been set by the breakpoint setting section 902.
  • the computer virus detection device waits until the execution of the application program in which the breakpoint is set reaches the breakpoint. To do this, for example, the wait system call is called.
  • the processing of the computer virus detector restarts from the (1) wait system call, and (2) which breakpoint (3) Cause the judgment program execution unit 903 to execute the judgment program. To determine which breakpoint the application program has reached, each time the program counter value obtained in the register of the process that executes the application program is obtained.
  • FIG. 12 illustrates a flowchart of the process of the computer virus detection device.
  • step S122 a breakpoint is set in the application program at the position indicated by the breakpoint position information. For example, this processing is performed by the breakpoint setting unit 902.
  • step S122 the execution of the application program waits until a breakpoint is reached. This processing is realized, for example, by executing the w ait system call.
  • step S123 a judgment program corresponding to the breakpoint at which the execution of the application program has been reached is executed. For example, this processing is performed by the judgment program execution unit 903.
  • step S124 it is determined whether or not to end the processing. For example, if it is determined that the application program has a computer virus by executing the determination program in step S123, the process ends. If it is determined that the processing is not to be ended, the processing moves to step S125.
  • step S125 the execution of the application program is continued.
  • execution of the application program is stopped, and processing is resumed from where it stopped. For example, running an application program Send a signal to the process (eg, SIG_CONT). After that, the processing shifts to step S122.
  • SIG_CONT Send a signal to the process
  • the computer virus detection device is considered to be a device for using a computer virus detection method including a breakpoint information holding step, a breakpoint setting step, and a judgment program execution step.
  • the “breakpoint information holding step” is a step for holding the breakpoint information
  • the ⁇ breakpoint setting step J is a step for holding the breakpoint information in the application program. Is a step for setting a breakpoint based on the breakpoint information held in the step.
  • the “judgment program execution step” means that the execution of the application program is a breakpoint setting step. This is the step to execute the judgment point program included in the breakpoint and information when the breakpoint set in step is reached.
  • the breakpoint information holding step is a step for operating the breakpoint information holding section
  • the breakpoint setting step is a step for operating the breakpoint setting section
  • the execution of the judgment program is performed.
  • the step is a step of executing the judgment program execution unit.
  • the behavior of the process that executes the application program can be monitored by the computer virus detection device without modifying the inside of the operating system kernel. It is possible to avoid occurrence of a down.
  • the behavior of computer viruses is very similar in many cases, so that pattern viruses, which are necessary in conventional antivirus software, are used. The need to keep the files updated to the latest version is reduced, and the pattern files need not be updated.
  • Second Embodiment As a second embodiment of the present invention, a computer virus detection device that holds an application program will be described.
  • FIG. 13 illustrates a display screen by the computer virus detection device according to the present embodiment.
  • a window 1301 is a window displayed by the computer virus detection device according to the present embodiment.
  • the icon of the application program is displayed in the subwindow 13 02 of that window. If necessary, drag the icon displayed outside of the window 1301 (for example, the icon 1304) to the inside of the subwindow 1302. Can be moved.
  • the process of executing an application program by double-clicking an icon (for example, icon 133) displayed inside the subwindow 13 02 Is spawned as a child process of the process that runs the computer virus detector, and its behavior is monitored.
  • FIG. 14 illustrates a functional block diagram of the computer virus detection device according to the present embodiment.
  • the computer virus detector 140 is composed of a pre-point information storage unit 901, a breakpoint setting unit 902, a judgment program execution unit 903, and an application program storage unit 1. It has a program execution start unit 1402, a program execution start unit 1442, and a breakpoint setting instruction unit 1403.
  • the computer virus detection device is different from the computer virus detection device according to the first embodiment in that the computer virus detection device further includes an application program holding unit 1441, and a program execution start unit. 1 4 0 2 and And a breakpoint setting instruction section 1403.
  • the computer virus detection device further includes an application program holding unit 1441, and a program execution start unit. 1 4 0 2 and And a breakpoint setting instruction section 1403.
  • parts to which the same definition applies are assigned the same reference numerals as much as possible. The fact that the same reference numerals are assigned does not mean that the same configuration or the like is obtained in actual manufacturing or the like.
  • the “application program holding unit” 1401 holds the application program. There are various forms of retention. For example, there is a form in which the entire application program is stored. Further, there may be a form for storing a location where the application program is stored, for example, a location represented by a path in a file system.
  • the “program execution start unit” 1402 starts execution of the application program held by the application program holding unit 1441. For example, the execution of an application program is started as a child process of a process that executes a program that implements a computer virus detection device.
  • breakpoint setting instruction section 1443 is provided to the breakpoint setting section 902 for the application program whose execution is started by the program execution start section 1442. ⁇ Instruct a breakpoint setting, for example, call a function that implements the breakpoint setting section 902.
  • FIG. 15 illustrates a flowchart of the processing of the computer virus detection device according to the present embodiment.
  • step S1501 the application program is held. This processing is performed by the application program holding unit 1401. For example, in Figure 13 the icon 134 ⁇ ⁇ Detects that it has been dragged inside 1302, and holds the application program represented by icon 1344.
  • step S1502 the process waits until an application program is selected. For example, in FIG. 13, the user waits until the icon inside the subwindow 1302 is double-clicked.
  • step S1503 a command is issued to set the breakpoint at the position indicated by the breakpoint position information in the selected application. This processing is performed by the breakpoint setting instruction section 1443.
  • step S1504 the process waits for the completion of the breakpoint setting. For example, it waits until it returns from the call of the function or the like that realizes the breakpoint setting section 902.
  • step S155 the selected application program is executed. More precisely, it causes a process to execute the selected application program.
  • step S1505 execute steps S122, S123, S122, and S125 in the flow chart of Fig. 12. It becomes.
  • the execution of step S122, step S122, step S122, and step S125 is equivalent to the thread that executes the flowchart in Fig. 15. It may be performed by another thread.
  • step S1506 it is determined whether or not to end the processing. For example, whether the operator of the computer virus detection device has pressed the end button is determined by the force. If not, return to step S1502. (Embodiment 2: Main effects)
  • Third Embodiment As a third embodiment of the present invention, a computer virus detection device that sets a breakpoint in a system call API function and monitors the behavior of a process will be described.
  • the computer virus detection device uses the breakpoint information held by the breakpoint information storage unit 91 of the computer virus detection device according to the first or second embodiment as an application program system.
  • library functions usually stack arguments for system calls and execute trap instructions. By executing the trap instruction, the interrupt routine set in the CPU by the operating system is started. The internal processing of the operating system is started. Since it is difficult to directly express the process of stacking arguments and executing trap instructions in a high-level language, library functions that perform such processes are provided.
  • FIG. 16 illustrates breakpoint information in the present embodiment.
  • RegCreateKeExA is the name of the system connection API function. Therefore, when the breakpoint setting section sets a breakpoint, it is necessary to convert the name of the system call API function into an address. The conversion process is as described in the overview section.
  • Computer viruses often use the system call API functions to infect themselves, so detecting calls to the system call API functions causes the application program to have computer virus properties. By judging whether or not it is possible, it is possible to make an accurate judgment with a small number of breakpoints.
  • the computer virus detection device has the same structure as that of the computer virus detection device according to the third embodiment, except that the judgment program includes a system call inspection program.
  • System call inspection program refers to whether or not the application program has a virus based on the inspection of the arguments of the system call API function called by the application program. This is a program for making decisions.
  • the application program means an application program for which a breakpoint has been set by the breakpoint setting section 902.
  • the application program When execution reaches a breakpoint, the arguments of the system call API functions of the application program are examined. Based on the results of this test, it is determined whether the application program has computer virus potential.
  • the system call API function whose argument is checked is not limited to a function in which a breakpoint is set.
  • all the machine instructions of the application program may be checked so that all system call API function arguments are checked.
  • the computer virus is determined based on the inspection of the argument of the system call API function, so that the determination can be made more accurately.
  • a computer virus detection device for inspecting an argument of a system call API function at a reached breakpoint will be described.
  • the computer virus detection device is different from the computer virus detection device according to the fourth embodiment in that the breakpoint information storage unit 901 holds the argument to be checked by the system call detection program. It is the argument of the system call API function determined by the breakpoint position information to be executed. For example, as shown in Figure 16, a system call API function called Reg Regate Key Ex A. A breakpoint is set, and execution of the application program is executed at that breakpoint. If the value reaches the limit, the system call inspection program checks the argument of RegCreateKeyExA. Examples of the inspection are as described in the summary of the present invention.
  • the computer virus determination is made based on the inspection of the argument of the called system call API function, the determination can be made more accurately.
  • Embodiment 6 of the present invention a computer virus detection device that generates a copy of a changed system resource when a system call API function that changes the system resource is called explain.
  • the computer virus detection device is configured such that, in the computer virus detection device according to the fourth or fifth embodiment, the judgment program includes a replication program.
  • the “replica creation program” generates a copy of the changed system resource when the system resource is changed by the system call API function of the application program.
  • the "application program” is an application program in which breakpoints have been set by the breakpoint setting section 902.
  • breakpoint emissions DOO position information is n Kodei power sale system resources to be a child that indicates the position of the system call API functions to change the system resources, for example, registry Ri Aisle, etc., refers to resources that can be duplicated among resources used by a computer.
  • a breakpoint is set in the system call API function that changes the registry, and when the execution of the application program reaches the breakpoint, the registry is duplicated.
  • the copy creation program is executed.
  • the registry is changed by a system call.
  • duplicating the registry the entire registry may be duplicated, or only the portion that is changed may be duplicated.
  • the changed part of the registry can be determined by the arguments of the system call API function.
  • the execution of the replication program may be performed when it is determined that the application program has a computer virus property. This can reduce the amount of duplicates created.
  • FIG. 17 illustrates a flowchart of a process of the computer virus detection device according to the present embodiment.
  • step S1701 a breakpoint is set in the application program at the position indicated by the breakpoint position information.
  • step S1702 the process waits until the execution of the application program reaches a break point.
  • step S1703 a judgment program is executed.
  • step S1744 it is determined whether the result of the execution of the determination program is whether the application program has a computer virus property. If it has computer virus properties, the process shifts to step S1755; The process is skipped to step S1707.
  • step S1755 it is determined whether the application program is about to change a system resource. This determination can be made by examining the type of the system call API function related to the reached breakpoint and its argument. If the system resource is to be changed, the process proceeds to step S 176, otherwise, the process is skipped to step S 177. In step S1766, a copy of the system resource is created by the copy creation program.
  • step S1700'7 it is determined whether to end the entire process. If it is determined that the processing is not to be ended, the processing shifts to step S1708.
  • step S1708 the execution of the application program is continued, and the process proceeds to step S1702. If the application program is a computer virus and the system resources are changed to an unauthorized one, the system can be restored using the replica created in step S1766. .
  • FIG. 18 illustrates a functional block diagram of the computer virus detection device according to the present embodiment.
  • the configuration of the computer virus detection device according to the present embodiment is such that the computer virus detection device according to any one of the first to sixth embodiments has an execution blocking unit. Therefore, for example, the computer virus detection device 1800 includes a breakpoint information storage unit 901, a breakpoint setting unit 902, a judgment program execution unit 903, And a blocking unit 1801.
  • the computer virus detection device 1800 may include an application program holding unit, a program execution start unit, and a breakpoint setting instruction unit.
  • the “execution blocking unit” 1801 determines whether the application program that has been determined to have a virus-consumer status as a result of the determination by the determination program execution unit 903 This is a section to prevent the execution of the system call API function of the compiler.
  • the execution blocking unit 1801 stores the value of the frame pointer (fp) in the portion 504 using the value of the frame pointer (fp). Get the value of the frame pointer before calling the function, set the value in the frame pointer (fp), set the value of the program counter to the value stored in part 503, and execute the system call API function. Try not to let them.
  • FIG. 19 illustrates a flowchart of the process of the computer virus detection device according to the present embodiment.
  • step S1901 a breakpoint is set in the application program at the position indicated by the breakpoint position information.
  • step S1902 execution of the application program is stopped. Wait until you reach the breakpoint.
  • step S1903 a judgment program is executed.
  • step S 1904 as a result of the determination program, it is determined whether or not the application program has a computer virus property. If the application program has a computer virus property, step S 1905 Otherwise, the process is skipped to step S1906.
  • step S 1905 execution of the system call API function is prevented.
  • the execution blocking unit 1801 is used.
  • step S1906 it is determined whether to end the entire process. If the processing is not to be terminated, the processing shifts to step S1907.
  • step S 1907 execution of the application program is continued. After that, the process shifts to step S1902.
  • execution of a dangerous system call is prevented.
  • a macro program of a specific word processor has a combat virus function
  • the function of the card processor is disabled. Without stopping, execution of the dangerous macro program can be prevented, and execution of the application program can be continued while preventing execution of the dangerous system call.
  • a description will be given of a computer virus detection device that blocks communication of an application program having a computer virus property, and a communication device.
  • FIG. 20 illustrates an outline of the present embodiment.
  • Computer 2 0 1 It is connected to an external communication network 203 via a communication device 2002.
  • a typical example of the communication device 2002 is a router.
  • a process 204 for executing an application program and a process 205 for realizing a computer virus detection device operate, and the process 205 is a process 205.
  • the behavior of 04 is being monitored.
  • the application program executed by the process 204 has a computer virus property, and attempts to communicate with an external device.
  • the process 2005 considers that the process 204 is performing harmful communication to the outside, and the communication device 200 Outputs a communication blocking instruction 2 0 7 to 2.
  • FIG. 21 illustrates a functional block diagram of the computer virus detection device according to the present embodiment.
  • the configuration of the computer virus detection device according to the present embodiment is such that the computer virus detection device according to any one of Embodiments 1 to 7 has a communication blocking instruction output unit.
  • the computer virus detection device 210 has a breakpoint information holding unit 901, a breakpoint setting unit 902, a judgment program execution unit 903, and a communication blocking instruction output. And a part 2 101.
  • the ⁇ communication blocking instruction output unit '' 2101 when the judgment program execution unit 903 judges that the application program determined to be judged has computer virus, When the application program executes the communication system call API function, it outputs a communication blocking instruction.
  • Communication blocking instruction means, This is an instruction to fail communication by the communication system call API function executed by the application program.
  • FIG. 22 shows an example of the communication blocking instruction.
  • the communication blocking instruction is described as a structured document such as XML.
  • the IP address of the computer 201 is 192.16.18.13.03.03
  • the process 204 is an IP address.
  • the force S10.13.9.20.10.24 is a communication blocking instruction output when an attempt is made to perform communication with port 25.
  • Such a communication blocking command may be output to an external communication device by, for example, SOAP (Simle Object Access Protocol). .
  • FIG. 23 illustrates a flowchart of the process of the computer virus detection device according to the present embodiment.
  • step S2301 a breakpoint is set in the application program at the position indicated by the breakpoint position information.
  • step S2302 the process waits until the execution of the application program reaches a breakpoint.
  • step S2303 the judgment program is executed.
  • step S2304 it is determined whether the application program has a computer virus property. If the combi If it is determined to have viral properties, the process proceeds to step S2305, otherwise, the process is skipped to step S2307. In step S2305, it is determined whether or not the reached breakpoint is a communication system call API function. If it is a communication system call API function, the process shifts to step S2306; otherwise, the process is skipped to step S2307.
  • step S2306 a communication blocking instruction is output to an external communication device. This process is performed by the communication blocking instruction output unit '2101. In step S2307, it is determined whether to end the entire process. If not, the process moves to step S2308.
  • step S2308 the execution of the application program is continued. Even if the execution continues and harmful communication is performed, the communication is blocked by the communication blocking instruction output in step S2306.
  • FIG. 24 illustrates a functional block diagram of the communication device according to the present embodiment.
  • the communication device 2400 has a communication blocking command receiving section 2401 and a communication blocking section 2402.
  • the “communication blocking command receiving section” 2401 receives the communication blocking command.
  • the communication blocking instruction is output, for example, by the communication blocking command output unit 2101, and is described in FIG. 22 when described in XML.
  • a port for receiving the communication blocking instruction is prepared, and the communication blocking command receiving unit 2401 waits until the communication blocking command is transmitted to this port. Also, if necessary, a process for authenticating that the program that has output the communication blocking instruction is a legitimate program may be performed.
  • the “communication blocking unit” 2402 blocks communication based on the communication blocking command received by the communication blocking command receiving unit 2401. For example, if the communication blocking instruction is as shown in FIG. 22, the IP address power of 19.2.169.19.33.063 indicates that 100.139.20.20.2. 54 Performs processing such as not relaying communication packets going to port 25 of the com- puter with the IP address of 4.
  • FIG. 25 is a flowchart of processing of the communication device according to the present embodiment.
  • the communication device repeatedly executes the process indicated by the flowchart.
  • step S2501 the process waits until a communication blocking instruction is received. This processing is performed by the communication blocking instruction receiving section 2401.
  • step S2502 communication is blocked based on the communication blocking command. This processing is performed by the communication blocking unit 2402.
  • a ninth embodiment of the present invention describes a computer virus detection device that determines whether an application program has a computer virus property based on a history of breakpoints reached by the application program. .
  • FIG. 26 is a functional block diagram of the computer virus detection device according to the present embodiment. An example of a lock diagram is shown.
  • the computer virus detection device 260 is composed of a breakpoint information storage unit 901, a breakpoint setting unit 902, a judgment program execution unit 903, and a history storage unit 26. 0 1 and Therefore, the computer virus detection device of which the functional block diagram is illustrated in FIG. 26 has a configuration in which the computer virus detection device according to the first embodiment includes the history holding unit 2601.
  • the computer virus detection device according to the present embodiment is the same as the computer virus detection device according to the other embodiments, that is, the computer virus detection device according to any one of the second to eighth embodiments. It may have 0 1.
  • the “history holding unit” 2601 holds the history of the application program reaching the breakpoint set by the breakpoint setting unit 902.
  • the “application program” refers to an application program for which a breakpoint has been set by the breakpoint setting unit 902. .
  • the execution of the application program reaches a breakpoint, for example, which breakpoint has been reached
  • the date and time of the breakpoint, and the breakpoint are determined by the system call API function If so, add its argument, etc. as a history.
  • This processing may be performed by a determination program, or may be performed by a program included in the determination program or a part of the computer virus detection device 260.
  • the history holding unit 2601 holds the history of breakpoints reached by a plurality of application programs, the identification information for identifying the application program is also added as a history. Is preferred.
  • the determination program has a history inspection program.
  • the “history inspection program” refers to the history stored in the history storage unit 2601 Based on the history, determine whether the application program has computer virus viability.
  • daemon program is an abbreviated program that resides inside a computer, waits for a request to be received, and provides a service to the request.
  • the contents of the services provided by such a daemon program are fixed; (The daemon program is almost constant in operation.
  • application programs that return the requested web page for example, a popular program named Apache
  • Open a file that stores the requested web page read the file, return the result of the read, close the file, and write it to the log file.
  • the application program Judge as having virus.
  • the breakpoint is a system call API function
  • the rule of the argument is extracted based on the history, and if an argument that does not match the rule is given, the application Judge that the program has computer virus properties. For example, a file path rule specified when opening a file is extracted as a wildcard or regular expression, and a file with a path that does not conform to the wildcard or regular expression is opened. If this is the case, it is determined that the application program has computer virus properties. Note that the present embodiment can be applied not only to a daemon program but also to other application programs.
  • code processors and the like by ordinary people are standard. Therefore, when a system call other than a routine call is invoked, the word processor may be determined to have a computer virus.
  • the code processor is used as an example, the present invention can be applied to application programs such as a spreadsheet program, a presentation program, a mailer, and a browser.
  • FIG. 27 illustrates a flowchart of a process of the computer virus detection device according to the present embodiment. '
  • step S2701 a breakpoint is set in the application program at the position indicated by the breakpoint position information.
  • step S2702 the process waits until the execution of the application program reaches a breakpoint.
  • step S2703 the history at which the breakpoint has been reached is added.
  • step S2704 a judgment program is executed.
  • the history inspection program is also executed.
  • step S2705 it is determined whether or not to end. If not, the process moves to step S2706. In step S2706, the execution of the application program is continued. After that, the processing shifts to Step S2702.
  • step S2703 may be performed after the execution of the judgment program.
  • the computer virus is determined based on whether or not the operation of the application program shows a different tendency from before, so that a daemon program or the like that repeatedly performs a certain operation is used. Useful for monitoring behavior. In addition, if there is a history of normal operation, it is possible to determine the virus nature of the computer, which makes it easy to create a judgment program.
  • Embodiment 10 of the present invention a computer virus detection device in which the application program is a partial machine will be described.
  • FIG. 28 illustrates an example of the use of the computer virus detection device S according to the present embodiment.
  • a computer virus detector 280 2 and a virtual machine 280 3 are operating.
  • the computer virus detection device 282 is a program for realizing the computer virus detection device according to any one of the first to ninth embodiments.
  • the computer virus detection device 282 sets a breakpoint in the virtual machine 2803 and monitors its behavior.
  • a "virtual machine” is an application program that runs another program 2805. Normally, the other program 285 is written in a machine instruction on a computer of the assumed architecture.
  • a typical example is written in Java (registered trademark), Some run compiled programs. Since Java (registered trademark) programs are expected to be downloaded from the Internet, their origins are often unknown and may be dangerous. . Thus, for example, the Java (registered trademark) virtual machine restricts a program to be executed from using a free API (2804) to access computer resources. It is designed in such a way. However, there are cases where a program 285 running on a virtual machine can freely access computer resources by using a bug in the virtual machine.
  • the computer virus detection device 282 of the present embodiment sets a breakpoint in the virtual machine 2803, detects the behavior of the virtual machine 2803, and 803 determines whether it is running a program that has a virus.
  • that the virtual machine has the computer virus property also means that the virtual machine executes a program having the computer virus property.
  • Embodiment 11 of the present invention an embodiment in which the computer in Embodiment 10 is a mobile phone will be described.
  • FIG. 29 exemplifies a mode of use of the computer virus detection device according to the present embodiment.
  • the computer 280 1 in Figure 28 has been replaced by a mobile phone 290 1.
  • a program for realizing the computer virus detection device of the present invention is operated inside a mobile phone, and a breakpoint is set in the virtual machine to detect the behavior, thereby causing a bug. ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ It is possible to prevent computer viruses that have exploited security holes etc. from operating.
  • the execution of the monitored process can be stopped or roll-packed to the state before execution depending on whether or not the registered instruction is executed. It can reduce the burden on the user, prevent virus infection, and clean up the system.
  • the signature scan does not require preprocessing such as decompression of the compressed file before scanning and decryption of the encrypted file.
  • the present invention is useful as a computer virus detection device.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本発明は、悪意のあるプログラムやコンピュータウィルスが実行されることによるデータ改ざん、情報漏洩などのリスクからコンピュータを保護することに関する。コンピュータウィルスなどの検出技術としては、従来、パターンマッチングを用いる技術が主流である。一方、本発明においては、アプリケーションプログラムの実行中の振る舞いをチェックすることにより、コンピュータウィルスなど、悪意のあるプログラムの検出を行なう。すなわち、コンピュータ上で新規に生成されたプロセスや実行中のプロセスにアタッチを行ない、ブレークポイントを設定し、コンピュータに重要な変更を加えることができるシステムコールの呼び出しを監視することにより、監視対象プロセスの振る舞いと、過去のコンピュータウィルスの特徴的な振る舞いを比較する。

Description

明細書 コ ンピュータ ウィルス検出装置 技術分野
この発明は、 電子メール、 WE B、 ピア ' ツー ' ピアのフ ァイル交換 ソフ ト ウェア等によ り 、 イ ンターネッ トなどコ ンピュータの外部から導 入されるなどして実行可能となったプログラムの実行をモニタ リ ングし て、 コンピュータ ウィルスの振る舞い、 若しく は、 コンピュータ ウィル スに類似した振る舞いを検出し、 プログラムの実行停止等の対応をする こ と に関する。 背景技術
現在、 コンピュータ ウィルス (以下、 単に 「ウィルス」 とい う場合が ある。) の検出技術は、 パターンマッチングを用いる ものが主流である。 この技術は、 例えば、 特開 2 0 0 3 — 2 1 6 4 4 4、 特開 2 0 0 2 — 1 9 6 9 4 2、 WO 0 2 / 0 8 6 7 1 7 A 1 などによ り 開示されてい る。 パターンマッチングは、 コンピュータのメモリや、 ハー ドディスク 上のファイルに着目 し、 過去に発見されたウィルスの特徴的なシグネチ ャ と比較してウィルスを検出する。 パターンマッチングは誤検出が少な い技術であるが、 既知のウィルス しか検出できない。
現在、一日 に、約 1 0〜 2 0種類の新しいウィルスが見つかつている。 一般ユーザが使用するコンピュータが、 そのよ う な新しいウィルスを検 出し、 対処するこ と ができるよ う にするためには、 頻繁にァップデー ト される ウィルス · シグネチヤ · フ ァイルを速やかにアンチウィルス会社 から入手して、 コンピュータにイ ンス ト一ルしなければいけない。 と こ ろで、 新しいウィルスは、 過去のウィルスをほんの少し変えたものが多 い。 このため、 実際のウィルスの振る舞いは、 どれも非常に似ている と いう特徴がある。 それにもかかわらず、 ウィルスのプログラムとい う情 報と してのパターンは異なるので、 ウィルスが発見されるごとに、 ウイ ルス . シグネチヤ . ファイルをイ ンス トールする必要がある。
ウィルスの検出技術には、 パターンマ ッチングの他に、 ヒ ユーリ ステ イ ツ ク スキャ ンがある。 ヒ ュー リ スティ ッ ク スキャンは、 擬似的にコー ドを実行し、 ウィルスに似た挙動をしないかを、 エミ ユ レーシヨ ンに基 づいて判断を行な う。 しかし、 実行フ ァイルのイ ンス トラクシヨ ンを全 てエミ ユ レーシヨ ンできる とは限らない。 また、 プロ グラムサイズが大 き く 、 又は/及び、 複雑に暗号化されたウィルスのエミ ユ レ一シヨ ンに は、 非常に時間がかかる。 発明の開示
本発明では、 コンピュータ上で、 新規にプロセスを生成するか、 また は実行中のプロセスにアタ ッチ (A t t a c h ) して、 プロセスを監視 対象と し、 コンピュータに重要な変更を加えるこ とができるシステムコ ールなどの呼び出しを監視するこ とで、 振る舞いを監視する。 そして、 監視対象であるプロセスの振る舞いと、 過去のコンピュータ ウィルスの 特徴的な振る舞いと、 を比較する。 ウィルスの特徴的な振る舞いが検出 される と、 監視対象であるプロセスを中止できるよ う に、 ユーザに通知 などをする。 ここで、 監視対象プロセスは、 主に、 イ ンターネッ トに接 続するプロセスを指す。
図 1 は、 コ ンピュータでのプロセスの実行を概念的に説明する図であ る。 上位の層にアプリ ケーショ ン 1 0 1 、 1 0 2、 電子メ ^ ~ルソフ ト ゥ エア 1 0 3 、 W E Bブラ ウザ 1 0 4が動作する。 この う ち、 アプリ ケー シヨ ン 1 0 2 、 電子メールソフ ト ウェア 1 0 3、 W E Bブラ.ゥザ 1 0 4 が、 イ ンタ一ネッ トに接続などして、 コンピュータの外部からプロダラ ムを導入するプロ グラムを実行するプロセスである とする。本発明では、 それらのプロセス と、 システムコール A P I 層 1 0 5 と、 の間に、 本発 明によるセキュ リ ティ層を設ける。 こ のセキュ リ ティ層は、 システムコ ールの呼び出しを監視する層である。
システムコール A P I 層 1 0 5 の下には、 オペレーティ ングシステム (以下では、 「 O S」 と略記する場合がある。) を実現するカーネル層 1 0 6があ り 、 その下層に、 デパイス ドライバ/ハー ドウェア 1 0 7 の層 がある。
通常のコンピュータにおける o S においては、 カーネルモー ドと、 ュ 一ザモー ドと、 に分かれて処理が行なわれる。 システムコール A P I 層 1 0 5 よ り上の部分 1 0 8 は、 ユーザモー ドで処理が行なわれる部分で あ り、 システムコール A P I 層 1 0 5 よ り 下の部分 1 0 9 は、 カーネル モ ドで処理が行なわれる部分である。
ユーザモー ドで実行するプロセスは、 個別のコンテキス ト と、 仮想ァ ドレス空間を持っている。 そのため、 同 じユーザモー ドで実行するプロ セス同士が、 他のプロセスのメモリ をアクセスできないよ う になってい る。
本発明は、 アプリ ケーショ ンプログラムの実行に際して設定するべき ブレークポイ ン トの位置と、 そのアプリ ケーショ ンプログラムの実行が そのプレークポイ ン トに到達したときに、 そのアプリ ケーショ ンプロ グ ラムのスタ ックの内容に基づいて、 そのアプリ ケーショ ンプログラムが コンピュータ ウィルス性を有するかど う かを判断する判断プロ グラムと を関違付けて保持し、 アプリ ケーショ ンプロ グラムにブレークポイ ン ト を設定し、 アプリ ケーショ ンプログラムの実行がブレークポイ ン トに到 達した時には、 そのブレークポイ ン トの位置と関連付けて保持された判 断プロ グラムを実行するコ ンピュータ ウィルス検出装置を提供する。 また、 コ ンピュータ ウ ィ ルス検出装置は、 アプリ ケーショ ンプロ グラ ムを保持し、保持されたアプリ ケーショ ンプロ グラムを実行する と きに、 ブレークポイ ン トをアプリ ケーショ ンプログラムに設定するよ う になつ ていてもよい。
また、 ブレークポイ ン トの位置は、 システムコール A P I 関数に基づ いて定められていても よい。 このよ う にするこ とによ り 、 図 1 のセキュ リティ層が実現される。
また、 アプリ ケーショ ンプログラムの実行が、 プレークポイ ン ト に到 達したと きには、 システムコール A P I 関数の引数を検査してもよい。
さ らに、 システムコール A P I 関数が、 システム リ ソースを変更する ものである場合には、 システムコールの実行の前に、 コンピュータ ウイ ルス検出装置がシステムリ ソースの複製が生成されるよ う になっていて もよい。
また、 コ ンピュータ ウィ ルス検出装置は、 アプリ ケーショ ンプロ グラ ムがコ ンピュータ ウ ィルス性を有する と判断された際には、 システムコ ール A P I 関数の実行を阻止するよ う になつていてもよい。
また、システムコール A P I 関数が通信を行な う ものである場合には、 コ ンピュータ ウィルス検出装置は、 その通信を失敗させる よ う外部の通 信機器 (例えば、 ルータ) に命令を出力する よ う になっていてもよい。 また、 アプリ ケーショ ンプログラムがコンピュータ ウィルス性を有す るかどう かは、 アプリ ケーショ ンプロ グラムが到達したブレークポイン トの履歴に基づいて判断されるよ う になつていてもよい。
また、 本発明において、 アプリ ケーショ ンプログラムは、 J a V a (登 録商標) などの言語で記述されたプロ グラムを実行するためのパーチヤ ルマシンであっても よい。 また、 そのバーチャルマシンは、 携帯電話で 動作するものであってもよい。
W I N D OW S (登録商標) を含めた O S においては、 プロセスの振 る舞いをコン ト ロールする方法と して、 カーネル ドライバを書き、 シス テムコールをフックする方法がある (例えば、 コンピュータァソシエイ ッ社の e T r u s t A c c e s s C o n t r o l " S o f t h o o k "で用いられている方法)。 一方、 本発明によるプロセスの振る舞 いの監視は、 デバッガとい う ソフ ト ウエア開発で使われる機能を使用し て行なわれる。
本発明における振る舞いの監視は、 全てユーザモー ド、 つま り アプリ ケーシヨ ン層で行なわれる とい う特徴を有する。 これによ り 、 カーネル ドライバを用いる場合にしばしば引き起こ されるシステムダウンなどの 致命的なエラ一の発生が無い。
以下では、 本発明の理解を助けるために、 従来におけるデバッガの機 能について概説を行な う。 .
図 2は、 アプリ ケーショ ンプログラムを実行するプロセス 2 0 1 と、 デバッガ 2 0 2 と、 の関係を例示する。 ( 1 ) まず、 デバッガ 2 0 2 が、 プロセス 2 0 1 にアタ ッチする。 アタ ッチによ り、 プロセス 2 0 1 とデ パッガ 2 0 2 と の関係が O Sによ り管理されるよ う になる。 すなわち、 O Sは、 デバッガ 2 0 2 にプロセス 2 0 1 を関連付け、 例えば、 プロセ ス 2 0 1 の状態に変化が発生する と、 デバッガ 2 0 2 に通知が行なわれ るよ う になる。 ( 2 ) 次に、 デバッガ 2 0 2 は、 プロセス 2 0 1 にプレー クポイ ン トを設定する。 「ブレークポイ ン ト」 は、 プロセス 2 0 1 のプロ グラムカウンタが所定の値になった場合に、 C P Uの実行を停止させる メモ リ ア ドレスを示す。 そのよ う なメモリ ア ドレスを指定するこ と を、 ブレークポイ ン トの設定という。 ブレークポイ ン トの設定を行な う方法 と しては、 ブレークポイ ン トが示すメモリ ア ドレス値を C P Uに設定し た り 、 プレークポイ ン トのプロ グラムカ ウンタ値が示すメモリ ア ドレス の命令を特殊な命令に置換した りする こ とによ り実現される (例えば、
J o n a t h a n B . R o s e n b e r g著、 n o w D e b u g g e r s W o r k、 A l g o r i t h m s , D a t a S t r u c t u r e s , a n d A r c h i t e c t u r e〃、 W i l e y C o m p u t e r P u b 1 i s h i n g 、 1 9 9 7年参照。)。 その後、 プロ セス 2 0 1 が矣行を開始し、 ブレークポイ ン トに到達する と、 ( 2 ) 実行 が停止したこ とが O S に通知される。 こ の通知は、 プロセス 2 0 1 が行 な う という よ り も、 プロセスの実行がブレークポイン トに到達する こ と によ り C P Uに割り込みが発生し、 その割り込みを処理するための処理 ルーチンによ り行なわれる。 なお、 処理ルーチンは、 O Sの初期化など によ り適宜設定されている。 O Sが通知を受ける と、 ( 4 ) デバッガ 2 0 2 に通知が行き、 デバッガ 2 0 2 はプロセス 2 0 1 の実行がプレークポ イ ン トに到達したこと を知る。 その後、 デバッガ 2 0 2の利用者の操作 によ り 、 ( 5 ) プロセス 2 0 1 のデバッグの操作が行なわれる。 デバッグ 操作の代表的なものと しては、 プロセスのスタ ックの内容を読み、 関数 や手続きが呼ばれたシーケンスを調べた り 、 引数や変数の値などを調べ た りする。
なお、 ブレークポイ ン トはプロセスごと に設定されるもの'である。 し たがって、 「アプリ ケーショ ンプロ グラムを実行するプロセスにプレー クポイ ン トを設定する」 という記述が正確であるが、 記述が長く なるの で、 以降では、 アプリ ケーショ ンプログラムと、 アプリ ケーショ ンプロ グラムを実行するプロセス と、を同一視して、 「アプリ ケーショ ンプログ ラムにブレークポイン トを設定する」 などと記述する場合がある。
図 3 は、 従来技術において、 高級言語での関数や手続きの呼び出しが どのよ う にコンパイルされるかを例示する。 高級言語において、 符号 3 0 1 に示すよ う な Γ f (引数 1 , 引数 2 , …, 引数 n ) ; 」 という 関数な いし手続き (以後、 「関数」 と省略する。) の呼び出しが記述されている とする。 これを ンパイルする と、 符号 3 0 2 に示すよ う なマシンイ ン ス ト ラ タ シヨ ンに変換される。 すなわち、 p u s h命令によ り 引数をス タ ックに積み、 最後に、 「 c a 1 1 f 」 によ り 、 f を呼び出す。 多く の C P Uでは、 c a l l f のよ う な、 関数を呼び出すマシンイ ンス ト ラ ク ショ ンの実行によ り 、 呼び出された関数の処理から戻る際にプロ グラ ムカウンタへ設定される値がスタ ックに積まれる。
図 4 は、 関数 f のコ ンパイル結果を例示する。 f の呼び出しが行なわ れる と、 まず、 「 p u s h f p J とい う マシンイ ンス ト ラク ショ ンによ り、 f の呼び出しの前のフ レームポイ ンタ ( f p ) の値がスタ ック に積 まれる。 「フ レームポイ ンタ」 は、 関数呼び出しのためのスタ ックの部分 を示すための C P Uのレジスタである。 フ レームポイ ンタは、 後述する よ う に、 関数の呼び出し列 (コールシーケンス) を得るために重要な役 割をする。 次に、 「m o v e s p→ f p」 によ り スタ ッ クポイ ンタ ( s p ) の値をフ レームポイ ンタ .( f p ) にセッ トする。 これによ り 、 現在 呼び出されている f のスタ ック の部分をフ レームポイ ンタ ( f p ) が指 すよ う になる。 その後、 f の処理が行なわれる。 f の呼び出しから復帰 する際には、 Γ ρ ο ρ f p」 によ り 、 f の呼び出しの前のフ レームポィ ンタ ( f p ) の値が設定され、 「 r e t 」 によ り 、 f の呼び出しから復帰 する。 例えば、 スタ ックに積まれているプログラムカウンタの値が、 プ ログラムカ ウンタ 設定される。
図 5 は、 スタ ックに値が積まれた状態を例示する。 スタ ック 5 0 1 の 一番上の部分に積まれている値 (すなわち、 スタ ック の一番上の部分に 格納されている値) が、 現在実行中の関数に係るものであり 、 エリ ア 5 0 1 の部分には、 引数の値が積まれている。 エリ ア 5 0 3 には、 関数呼 び出し後のプログラムカ ウンタが積まれている。 エリ ア 5 0 4 には、 関 数呼び出し前のフ レームポイ ンタ ( f p ) の値が積まれている。 エ リ ア 5 0 5 には、 関数の中で定義されている 自動変数の値などが格納されて いる。 フ レームポイ ンタ ( f p ) は、 エリ ア 5 0 4の上部を指してお り 、 エリ ァ 5 0 4 に積まれている値は、 前の関数呼び出しの時にスタ ック 5 0 1 に積まれたフ レームポイ ンタ ( f ) が格納されている位置の上を 指している。 したがって、 フ レームポイ ンタの値をたどるこ とによ り 、 どのよ う な呼び出し列を経て、 関数が呼び出されたかを知るこ とができ る。 また、 スタ ックに積まれたプログラムカウンタの値を調べるこ とに よ り 、関数がプロ グラムのどの位置から呼ばれたかを知るこ とができ る。 また、 スタ ックに積まれた引数を調べるこ とによ り 、 関数にどのよ う な 値が与えられたかを知るこ とができる。
本発明に係るコンピュータ ウィルス検出装置は、 このよ う なデバッガ の機能を利用する こ とによ り 、プロセスの振る舞いを監視する。ただし、 従来技術におけるデバッガにおいては、 人間がデパッガを操作してデパ ッグ対象のプロセスを調査するのに対して、 本発明に係る コ ンピュータ ゥィルス検出装置によるプロセスの振る舞いの監視は、 自動的に行なわ れる。
また、 本発明は、 商用ソフ ト ウェアにまつわる課題を解決するもので ある。 以下、 スパイ ウェアを例に用いて説明する。 スパイ ウェアは、 ィ ンターネッ ト経由でその作成者または発信者に情報を送信するアプリ ケ ーシヨ ンプログラムである。 スパイ ウェアは、 パック ドア ' ウィルス と 似た振る舞いをする。 悪質なスパイ ウェアは、 ユーザ情報や、 キース ト ロークを盗み、 特定の通信チャネルを通して、 他のマシンへ情報を送信 する。 しかし、 アンチウィルス企業の多く は、 そのポリ シーと してスパイ ゥ エアなどの商用ソフ ト ウエアを検出しない。 ハー ドディスク を破棄する 際に使用するデータを消去する商用ソフ ト ウエアがあ り 、 それが友人か ら電子メールと して送られてく るかも知れないからである。 ユーザの意 図通り にデータを消去するプログラムは、 アンチウィルスでは検出 しな い
したがって、 プロ グラムを実行した結果が、 コンピュータや、 ユーザ のビジネスにイ ンパク トを与えるものであっても、 現在のアンチウィル ス技術では、 それらの脅威を完全に防ぐこ とは不可能である。
現在のウィルスは、 わずかに L i n u x (登録商標) で活動する もの があるが、 圧倒的に W I N D OW S (登録商標) で活動する。 その一つ の原因と して、 W I N D OW S (登録商標) を使う ほとんどの人々は、 ァ ドミ ニス ト レータ権限をロ グオン · ュ一ザに加えているこ とが挙げら れる。 ア ドミニス ト レータ権限は、 アプリ ケーショ ンをイ ンス トールす る際に必要だが、 U N I X (登録商標) のよ う にシステム管理者のため に一時的に、 r o o t (特権ユーザ) になる習慣が W I N D OW S (登 録商標) にはない。 W I N D OW S (登録商標) では、 ア ド ミ ニス ト レ ータのよ う な特権ユーザのまま、 メールで送られてきた不審なファイル がしばしば実行される。
ァ ドミ ニス ト レータ権限は、システムの全ての資源にアクセスでき る。 つま り はシステムが稼動するために必要な重要なファイルを改ざんでき る。 こ ういった環境で、 ウィルスを実行する と、 コ ンピュータの重要な ファイルが改ざんされ、 さ らにはインターネッ トを通して、 世界中のコ ンピュータがウィルスに感染するこ とがある。プロダラムの実行環境は、 ユーザのためにもっ と適切に保護されるべきである。 図面の簡単な説明
図 1 は、 従来技術における、 コ ンピュータでのプロセスの実行を概念 的に説明する図である。
図 2 は、 従来技術における、 アプリ ケーショ ンプロ グラムを実行する プロセスと、 デバッガと、 の関係を例示する。
図 3 は、 従来技術において、 高級言語での関数や手続きの呼び出 しが どのよ う にコンパイルされるかを例示する。
図 4は、 従来技術における関数のコンパイル結果を例示する。
図 5 は、従来技術において、スタ ックに値が積まれた状態を例示する。 図 6 は、 従来技術において、 仮想プロセス空間に D L L ファイルがマ ッ ビングされた状態を例示する。
図 7は、 従来技術におけるプロセスの仮想メモ リ空間を示す。
図 8 は、 本発明における処理のフローチヤ一 トを例示する。
図 9 は、 本発明の実施形態 1 に係る コ ンピュータ ウ ィルス検出装置の 機能ブロ ック図を例示する。
図 1 0は、ブレークボイ ト情報が保持されている状態の一例を示す。 図 1 1 は、 アプリ ケーショ ンプロ グラムごとにブレークポイ ン ト情報 が提供されている様子を例示する。
図 1 2 は、 コンピュータ ウィルス検出装置の処理のフローチャー トを 例示する。
図 1 3 は、 本発明の実施形態 2 に係るコンピュータ ウイルス検出装置 による表示画面を例示する。
図 1 4は、 本発明の実施形態 2 に係る コンビユ ー.タ ウイルス検出装置 め機能プロ ック図を例示する。
図 1 5は、 コンピュータ ウィルス検出装置の処理のフローチャー トを 例示する。 図 1 6 は、 本発明の実施形態 3 におけるブレークポイ ン ト情報を例示 する。
図 1 7は、 コンピュータ ウィルス検出装置の処理のフローチャー トを 例示する。
図 1 8 は、 本発明の実施形態 7 に係る コンピュータ ウィルス検出装置 の機能プロ ック図を例示する。
図 1 9 は、 コンピュータ ウィルス検出装置の処理のフローチャー トを 例示する。
図 2 0は、 本発明の実施形態 8 の概要を例示する。
図 2 1 は、 本発明の実施形態 8 に係る コンピュータ ウイルス検出装置 の機能ブロ ック図を例示する。
図 2 2は、 通信阻止命令の一例を示す。
図 2 3 は、 コンピュータ ウィルス検出装置の処理のフローチャー トを 例示する。
図 2 4は、 本発明の実施形態 8 に係る通信機器の機能ブロ ック図を例 示する。
図 2 5 は、 通信機器の処理のフローチャー トである。
図 2 6 は、 本発明の実施形態 9 に係る コ ンピュータ ウィルス検出装置 の機能プロ ック図を例示する。
図 2 7は、 コンピュータ ウィルス検出装置の処理のフロ ^"チャー トを 例示する。
図 2 8 は、 本発明の実施形態 1 0 に係るコ ンピュータ ウィルス検出装 置の使用の形態を例示する。
図 2 9 は、 本発明の実施形態 1 1 に係るコンピュータ ウィルス検出装 置の使用の形態を例示する。 発明を実施するための最良の形態
以下、 本発明を実施するための最良の形態について、 図を用いて実施 形態と して説明する。 なお、 本発明は、 これら実施形態に何ら限定され るものではなく 、 その要旨を逸脱しない範囲において、 種々なる態様で 実施し得る。
(本発明の概要)
本発明は、 プロ グラムの振る舞いに着目 し、 プロ グラムがウィルスか ど う かを判断する。 本発明を具現化したプロセス と 、 監視対象のプロセ スは、 デバッガ ( D e b u g g e r ) と、 デパツギ ( D e b u g g e e ) の関係に類似した関係を持つ。 デバッガは、 本発明を具現化したプロセ スに対応し、 デバツギは、 監視対象のプロセスに対応する。
デバッグされるプロセスをデバツギという。 本発明は、 監視対象プロ セスをデバツギと して実行する。実行中のプロセスを監視する場合には、 実行中のプロセスにアタ ッチする。
本発明を具現化するプロセスは、 監視対象プロセスの振る舞いをチェ ックするため、 システムに重要な変更を加えるシステムコール (または A P I 関数) にブレークポイ ン ト (B r e a k p o i n t s ) を設定す る。
ブレークポイン トは、 I n t e l (登録商標) C P Uの場合には、 I n t 3のハー ドウェア割り 込みイ ンス トラクシヨ ンを、 プレークポイ ン トが示すメモリ ア ドレスに配置するこ とによ り 実現できる。 プロセスの 実行がプレークポイ ン トに到達する と、 そのプロセスの実行は停止し、 本発明に係るコンピュータ ウィルス検出装置が、 そのプロセスのスタ ッ クの内容などを調査して、 監視対象のプロセスの振る舞いと、 過去のコ ンピュータ ウイルスの特徴的な振る舞いを比較する。
ウィルスの特徴的な振る舞いと しては、 以下のものを挙げるこ とがで さる。
• 自分自身をシステムフォルダに; ^ピーする。
• ネッ ト ワークで共有されたディ レク ト リ を採す。 そして、 自分自 身をコ ピーする。
' メールのア ドレス帳にアクセス し、 ウィルスを添付したメールを 大量に送信する。
• ファイル交換ソフ ト ウェアがイ ンス トールされていれば、 それを 使って自分自身をばらま く 。
* 重要なシステムファイルを消す。 または改ざんする。
' 再起動しても、 自分自身が実行されるよ う に、 システムを変更す る。
本発明は、 監視対象プロセスの A P I 呼び出しを過去のコ ンピュータ ウィルスの振る舞いなどと比較し、 監視対象プロセスの停止や、 ユーザ への警告を発する。
以下、 W I N D OW S (登録商標) を例に具体的に述べる。 W I N D O W S (登録商標) では、 フ ァイルやディ レク ト リ を操作する A P I は、 K E R N E L 3 2. D L L とい う ファイルに含まれている。 レジス ト リ に関違する A P I は、 AD VA P I 3 2. D L Lに含まれている。 ネッ ト ワークの共有 ドライブを操作する A P I は、 MP R . D L Lに含まれ ている。 以下、 これらを D L Lファイルと呼ぶ。
監視対象のプ口セスがどの A P I を呼び出そ う と しているか判断する 方法を以下に述べる。 監視対象プロセスが実行を開始する と きに、 D L Lファイルは、 仮想プロセス空間にマッピングされる。
図 6 は、 仮想プロセス空間 6 0 1 に、 K e r n e 1 3 2. D 1 1 、 M R P . D 1 1 、 A d V a p i 3 2. D 1 1 がマッ ピングされた状態を例 示する。 このよ う にマッピングが行なわれるこ とによ り 、 監視対象プロ セスは、 例えば、 A d v a p i 3 2. D 1 1 で定義されている R e g C r e a t e K e y E x などの関数を呼び出すことができる。
図 7 は、プロセスの仮想メ モ リ 空間を示す。仮想メ モ リ空間 7 0 0 は、 メモ リ ア ドレスの小さい方力 ら、 イ ンス ト ラ ク ショ ンの部分 7 0 1 、 ヒ ープの部分 7 0 2、 D L Lファイルがマッ ピングされる部分 7 0 3 、 ス タ ッ ク の部分 7 0 4を有する。 部分 7 0 3は、 ヒープの部分 7 0 2 と ス タ ック の部分 7 0 4 と の間に位置し、 D L Lファイルがマッピングされ る。 すなわち、 部分 7 0 3 のメ モ リ ア ドレスに対して参照を行な う と、 ファイルと して格納されている D L Lファイルの内容が得られる。
D L Lファイルのマ ップア ドレス (D L Lファイルが仮想メ モ リ 空間 へマッ ピングされた部分の最初のア ドレス) は、 イ メージベース と呼ば れ、 各 D L Lでユニークに、 他と重複しないよ う決められている。
例えば、 レジス ト リ を操作する R e g O p e n K e y E x Aとい う A P I は、 AD VA P I 3 2. D L Lに含まれている。
R e g O p e n K e y E x Aのア ドレスを、 「 AD V A P I 3 2 . D L
Lのイ メージべース」 + 「 R e g O p e n K e y E x Aの R V A」 によ り求める。なお、 「 R V A」とは、 R e l a t i v e V i r t u a l A d d r e s s の略である。 すなわち、 D L Lフアイノレの中に、 A P I の 定義が現れる相対的な位置である。
ア ドレスが求められたら、 デバッガ用 A P I などを使用 してブレーク ポイ ン トを設定する。
監視対象プロセスの実行が、 ブレーク ポイ ン トにヒ ッ ト した ら、 A P I の引数などを解析する。
監視対象プロセスが、 レジス ト リゃシステムファイルに変更を加える A P I を呼び出した 合、 このステップで、 バックアップを作成する。 ウィルスの特徴を検出したらプロセスの停止、 またはユーザにレポ一 トする。 検出しなければ処理を続ける。
具体例を説明する。 多く の W I ND OW S (登録商標) ウィルスは実 行する と再起動時に、 システムに常駐するために、 以下のレジス ト リ へ 値を追加する。
H K E Y_L O C A L_MA C H I N E ¥ S O F TWA R E ¥M I
C R O S O F T ¥W i n d o w s ¥ C u r r e n t V e r s i o n ¥ R u n
参考と して、 このキーに値を追加するメ ジャーなウィルスを以下に挙げ る。
N I MD A, L O V E L A T T E R , T R O J _M A T R I X , W
3 2一 MAG I S T R , T R O J _HY B R I S,WO RM一 K L E Z, WO RM_B U G B E A R , W O R M一 B A D T R A N S , J S _ E X C E P T I O N, WO RM—L I R B A
メールで受け取った不明なプログラムがシステムに常駐する必要はない と考えられる。
上記レジス ト リ を追加するには、 次の 2ステップの A P I 呼び出しが 必要である。
R e g C r e a t e K e y E x A ··· R u nの下に新しいキーを 作る。
R e g S e t V a l u e E x A … 値をセッ トする。
上の 2つの A P I は、 AD VA P I 3 2. D L Lに含まれている。 こ こでは、 AD V A P I 3 2. D L Lのイ メージベースが 0 x 7 7 D 8 〇 0 0 0 である とする'。数字の 0 Xは、 1 6進数であるこ と を示す。 また、 R e g C r e a t e K e y E x Aの R V Aが 0 x 2 9 4 2 7、 R e g S e t V a l u e E x Aの R VAが 0 x 2 C 5 8 Dである とする。
R e g C r e a t e K e y E x Aのア ドレスは、 0 x 7 7 D 8 0 0 0 0 + 0 x 2 9 4 2 7 = 0 x 7 D A 9 4 2 7 R e g S e t V a 1 u e E x Aのア ドレスは、
O x 7 7 D 8 0 0 0 0 + O x 2 C 5 8 D = O x 7 7 D A C 5 8 D で求め られる。 これらは仮想ァ ドレス空聞であるから同時に複数のプロ セスが実行されていても、 同じ仮想ァ ドレスで D L Lフ ァイルがマ ップ される。
ァ ドレスを求めたら、 それらへプレークポイ ン トを設定する。
も し、 監視対象のプロセスが、 W I N D OW S (登録商標) 起動時に 自動実行するプログラムであれば、 R e g C r e a t e K e y E x Aの ブレークポイ ン トがヒ ッ トする。 次にスタ ックを解析する。 C言語など のコンパイ ラでは、 スタ ック を介して引数が受け渡されるよ う なマシン イ ンス ト ラクシヨ ンが生成されるためである。
8 0 0 0 0 0 0 2 0 0 4 1 f 0 2 8 AD V A P I 3 2 ! R e g C r e a t e K e y E x A
例えば、 上記の数値が得られたとする。 R e g C r e a t e K e y E x Aを呼ぶ際には、 2番目の引数はレジス ト リ の位置である。 この例で は、 メ モ リ ア ドレス 4 1 f 0 2 8ヘレジス ト リ の位置が入っている。 そ こで、 メ モ リ ア ドレス 4 I f 0 2 8 をチェ ックする。
> 4 1 f 0 2 8
4 1 f 0 2 8 S O F TWAR E ¥M i c r o s o
4 1 f 0 3 8 f t ¥W i n d o w s ¥ C u r r e
4 1 f 0 4 8 n t V e r s i o n ¥ R u n ¥V i
4 1 f 0 5 8 u s
A P I と引数から 監視プロセスは、 R u nの下に V i r s という キーを作ろう と しているこ とが分かる。
プロ グラム実行前の状態に復帰する場合には、 V i r u s キーを削除 すればよい。 そこで、 システムコールの実行の前にレジス ト リ などのシ ステム リ ソースの変更の履歴や、 システム リ ソースの複製、 などを保持 するよ う にしてもよい。
同様に、 プロ グラムの振る舞いを把握するために必要な A P I をチェ ック し、 その呼び出しの傾向を解析する。
呼び出しを監視する A P I と、 引数の対応 (以下これを検出ルールと 呼ぶ) は、 ハー ドコーディ ングではなく 、 検出ルールを記したファイル を外部、 例えばイ ンターネッ トから読み込むこ とで追加、 変更できるこ とが望ま しい。
この方法では、ファイルをスキャンするオーバーへッ ドは、一切無い。 ゥィルスの特徴的な振る舞いを検出したら、 監視対象のプロセスをユー ザの意思によ り 、 中止させられるよ う に、 ダイアログボックス等を表示 するのが好適である。
または、 プロ グラムを中止せずに、 続けて実行する。 フローチャー ト を図 8 に例示する。
(実施形態 1 )
本発明の実施形態 1 と して、 ブレークポイ ン ト位置情報と、 アプリ ケ ーショ ンプログラムがそのプレークポイ ン ト位置情報で示すブレークポ イ ン トに到達した場合に実行する判断プロ グラムと、 を関連付けて保持 し、 ブレークポイ ン トをアプリ ケーショ ンプロ グラムに設定して、 判断 プログラムを実行する コ ンピュータ ウィルス検出装置について説明する ,
(実施形態 1 : 構成)
図 9 は、 本実施形態に係るコンピュータ ウィルス検出装置の機能プロ ック図を例示する。 コ ンピュータ ウィ ルス検出装置 9 0 0 は、 ブレーク ポイ ン ト情報保持部 9 0 1 と、 ブレークポイン ト設定部 9 0 2 と、 判断 プログラム実行部 9 0 3 と、 を有する。 なお、 以下の説明から明らかになる よ う に、 これらの部を有する コン ピュータ ウィルス検出装置は、 コ ンピュータで動作するプログラム と し て実現が可能である。 したがって、 図 9 は、 そのよ う なプロ グラムのモ ジュール構成を示す図である と解釈する こ と もできる。 すなわち、 その よ う なプログラムは、 ブレークポイ ン ト情報保持部をプログラムによ り 実現するブレークポイ ン ト情報保持ステップと、 ブレークポイ ン ト設定 部をプロ グラムによ り 実現するブレークポイ ン ト設定ステップと、 判断 プロ グラム実行部をプログラムによ り 実現する判断プログラム実行ステ ップと、 をコンピュータに実行させるためのプロ グラムである。
「ブレークポイ ン ト情報保持部」 9 0 1 は、 ブレークポイ ン ト情報を 保持する。 例えば、 ハー ドディスクや半導体メモリ などに、 プレークポ イ ン ト情報を保持する。 「ブレークポイ ン ト情報」 と は、 ブレークポイ ン ト位置情報と、 判断プロ グラムと、 を含む情報である。 「含む」 とあるの で、 ブレークポイ ン ト情報の成分は、 ブレークポイ ン ト位置情報と判断 プログラムとに限られない場合がある。
'「ブレークポイ ン ト位置情報」 と は、 アプリ ケーショ ンプロ グラムの 実行に際して設定するべきブレークポイ ン ト の位置を示す情報である。 ブレークポイ ン トの位置は、 例えば、 アプリ ケーショ ンプロ グラムのメ モリ ア ドレスによって示される。 また、 アプリ ケーショ ンプロ グラムが 呼び出す関数、 手続き、 メ ソッ ド (以下、 「関数など」 とい う。) の名前 によつても示される場合がある。
「判断プロ グラム」 とは、 そのアプリ ケーショ ンプログラムの実行が 前記ブレークポイン トに到達したと きに、 そのアプリ ケーショ ンプログ ラムの実行で参照されるスタ ックの内容に基づいて、 そのアプリ ケーシ ョ ンプログラムがコ ンビユ^ "タ ウィルス性を有するかどうかの判断を行 な うためのプロ グラムである。 「そのアプリ ケーショ ンプログラム」とは. 後で説明されるブレークポイ ン ト設定部 9 0 2 によ り ブレークポイ ン ト 位置情報で示される位置にブレークポイ ン トが設定されるアプリ ケーシ ヨ ンプロ グラムを意味する。 「前記プレークポイ ン ト」 とは、 プレークポ イ ン ト位置情報が示す位置に設定されたブレークポイ ン トを意味する。
「アプリ ケーショ ンプロ グラムがコ ンピュータ ウィルス性を有する」 場合とは、 アプリ ケーショ ンプログラム自身がコ ンピュータ ウィルスで ある場合のみならず、 アプリ ケーショ ンプロ グラムがコ ンピュータ ウイ ルスに感染した場合、 アプリ ケーショ ンプロ グラムのパグゃセキユ リ テ ィホールなどが利用 されて設計時には想定されていなかった動作をする 場合、 などを含む。例えば、 ウェブサーバプロ グラムのバグを利用 して、 悪意を持った人間が、 通常の操作では得るこ とができないファイルの内 容を得るなどの動作をする場合である。
そのアプリ ケーショ ンプロ グラムの実行で参照されるスタ ックの内容 に基づいて、 そのアプリ ケーショ ンプロ グラムがコンピュータ ウィルス 性を有するかどう かの判断を行なう 方法と しては、 種々のものがある。 例えば、 そのアプリ ケーショ ンプロ グラムの実行で参照されるスタ ック を、 スタ ッ ク の上部からフ レームポイ ンタをたどってスタ ッ クの下部ま でたどるこ とができるかどう かを判断する。 コンピュータ ウィルスの中 には、 スタ ッ ク の内容を破壊するこ と によ り 、 アプリ ケーシ ョ ンプロ グ ラムが正常に動作する'ならば呼び出さない態様でシステムコ一ルなどを 呼び出す。 そこで、 スタ ッ クの内容が破壊されていないかどうかを判断 する。 その判断の一つと して、 フ レームポイ ンタをたど り、 プロ グラム の実行において最初に呼ばれる関数など (例えば、 — s t a r t u p と いう名前の関数など) の呼び出しまでたどるこ とができるかどうカ^こよ り 、 アプリ ケーショ ンプログラムがコ ンピュータ ウィルス性を有するか どうかの判断を行なう。 また、 アプリ ケーショ ンプログラムが、 ブレークポイ ン トに到達した 際、 どのよ う な関数などの呼び出し系列を経て到達したかを調べる こ と で、コンピュータ ウィルス性を有するかどう かの判断を行なっても よい。 も し、 想定されない関数などの呼び出しの系列の後にブレークポイ ン ト に到達している場合には、 コ ンピュータ ウィルス性を有するこ とが疑わ れ.る。 '
また、 ブレークボイ ン トが設定された関数などの引数を調べるこ とに よ り 、 アプリ ケーショ ンプログラムがコンピュータ ウィルス性を有する かどう かを判断してもよい。 例えば、 電子メールを用いて他のコンビュ ータに自 らを感染させる コ ンピュータ ウィルスは、 電子メールア ドレス を取得するために電子メ ールア ドレスのァ ドレス帳をアクセスする。 そ こで、 ァ ドレス帳へのアクセスを行な うための引数が指定されているか どう かに基づいて、 判断を行なう よ う になっていてもよい。
なお、 多く の場合、 コ ンピュータ ウ ィルス検出装置を実現するプログ ラムを実行するプロセス と、 アプリ ケーショ ンプロ グラムを実行するプ 口セス とは、 異なるプロセスであ り 、 通常は、 コンピュータ ウィルス検 出装置を実現するプロ グラムが、 アプリ ケーシ ョ ンプロ グラムを実行す るプロセスのメモ リ 空間の內容、 特にスタ ックの內容を読むこ とはでき ない。 しかし、 オペレーティ ングシステムは、 特定の関係にあるプロセ ス間であれば、 あるプロセスが他のプロセスのメモ リ 空間やレジスタの 内容を読んだり 、 変更した りするこ と を許可する機能を有しているのが 通常である。 ここでいう 「特定の関係」 の例と しては、 親子関係や、 同 じユーザが実行しているプロセスであ り 、 他のプロセスに対して所定の システムコール (例えば、 a t t a c hなど) を実行したという 関係、 などがある。 したがって、 コンピュータ ウィルス検出装置をプロ グラム によ り実現する場合には、 そのプログラムを実行するプロセス と、 アブ リ ケーシヨ ンプログラムを実行するプロセス と、 は特定の関係になつて いる必要がある。
なお、 ほとんどのオペレーティ ングシステムでは、 他のプロセスのメ モ リ 空間やレジスタの内容を読んだり 、 変更したりするためのシステム コールが提供されている。 あるいは、 Z d e V / r o c とい うスぺシ ャルデバイスを用いて、 他のプロセスのメモ リ 空間やレジスタの內容を 読んだり 、 変更したりするこ とができるよ う になつている場合もある。 判断プログラムは、 例えば、 イ ンタープリ タによって実行される もの であってもよい。 例えば、 判断プログラムが L i s p 、 P e r 1 、 R u b yなどの言語によ り記述されていても よい。また、判断プログラムは、 コ ンピュータが直接実行でき るマシンィ ンス トラク ショ ンの列からなつ ていてもよい。 この場合には、 コンピュータ ウ ィルス検出装置を実現す るプロ グラムの一部と して、判断プロ グラムが組み込まれていても よい。 あるいは、 判断プロ グラムが、 例えば、 動的ライプヲ リ などと して、 動 的にコ ンピュータ ウィルス検出装置を実現するプロ グラムにロー ドされ るよ う になっていてもよい。 なお、 判断プロ グラムが、 イ ンタープリ タ で実行されるものであったり 、 動的にロー ドされるものであったり する 場合には、 判断プログラムを差し替えるこ とが容易に行なえる。
図 1 0は、 ブレークポイ ン ト情報がブレークポイ ン ト情報保持部 9 0 1 によ り保持されている状態の一例を示す。 図 1 0 ( a ) においては、 ブレークポイン ト情報がテーブルに保持されている。 列 1 0 0 1 には、 ブレークポイン ト位置情報が格納され、 列 1 0 0 2 には、 判断プロ ダラ ムが格納される。 図 1 0 ( b ) は、 判断プログラムへのポイ ンタがテー プルに格納されている状態の一例を示す。 そのポイ ンタは、 コ ンビユ ー タ ウ ィルス検出装置を実現するプログラムを実行するプロセスのメ モ リ 空間内部における特定の場所を指す。 図 1 1 は、 アプリ ケ シヨ ンプロ グラムごと にブレークポイン ト情報 が提供されている様子を例示する。 ブレークポイン ト情報保持部 9 0 1 は、 このよ う に、 アプリ ケーショ ンプロ グラムごと にブレ^"クポイ ン ト 情報を保持していてもよい。
「ブレークポイ ン ト設定部」 9 0 2 は、 アプリ ケーショ ンプロ グラム に、 ブレークポイン ト情報保持部 9 0 1 で保持されたブレークポイ ン ト 情報に基づいて、 ブレ^ "クポイ ン ト情報を設定する。 すなわち、 ブレー クポィ ン ト情報に含まれるブレークボイ ン ト位置情報が示す位置にブレ ークポイ ン トを設定する。 この設定は、 オペレーティ ングシステムが提 供するシステムコールやスペシャルデパイ スを用いて行な う。 「基づい て」 と は、 例えば、 ブレークポイ ン ト位置情報が関数などの名前を用い て表現されている場合には、 関数などの名前から、 その関数などのア ド レスを得る こ とを意味する。 関数などの名前と、 そのア ド レス と、 の対 応付けは、 アプリ ケーショ ンプロ グラムのシンボルテーブルを読むこ と などによって得るこ とができる。
「判断プロ グラム実行部」 9 0 3 は、 前記ァプリ ケーショ ンプロ ダラ ムの実行が、 ブレークポイ ン ト設定部 9 0 2で設定されたプレークポィ ン トに到達したと き、 前記ブレークポイ ン ト情報に含まれる判断プロ グ ラムを実行する。 「前記アプリ ケーショ ンプログラム」 とは、 ブレークポ イ ン ト設定部 9 0 2 によ り ブレークポイ ン トが設定されたアプリ ケーシ ヨ ンプログラムである。 コンピュータ ウィルス検出装置は、 ブレークポ イ ン トが設定されたアプリ ケーショ ンプログラムの実行がブレークポィ ン トに到達するまで待つこ と を行な う。 このためには、 例えば、 w a i t システムコールが呼び出される。 アプリ ケーショ ンプロ グラムの実行 がブレークポイン トに到達する と、 ( 1 ) w a i t システムコールからコ ンピュータ ウィルス検出装置の処理が再開し、 ( 2 )どのブレークポイ ン トに到達したかを判断し、 ( 3 ) 判断プロ グラム実行部 9 0 3 に、 判断プ ログラムを実行させる。 アプリケーショ ンプロ グラムがどのブレークポ イ ン トに到達したかを判断するには、 アプリ ケーショ ンプログラムを実 行するプロセスのレジスタに保持されているプログラムカ ウンタの値を 取得するごとによ り判断する。
(実施形態 1 : 処理)
図 1 2は、 コ ンピュータ ウ ィルス検出装置の処理のフ ローチャー トを 例示する。
ステ ップ S 1 2 0 1 において、 ブレークポイ ン ト位置情報が示す位置 に、 ブレークポイ ン トを、 アプリ ケーショ ンプロ グラムに設定する。 例 えば、 この処理はプレークポイン ト設定部 9 0 2 によ り行なわれる。 ステップ S 1 2 0 2において、アプリ ケーショ ンプログラムの実行が、 ブレークポイ ン トに到達するまで待つ。 この処理は、 例えば、 w a i t システムコールを実行するこ とによ り 、 実現される。
ステップ S 1 2 0 3 において、 アプリ ケーショ ンプログラムの実行が 到達したブレークポイ ン トに対応する判断プロ グラムを実行する。 例え ば、 この処理は判断プログラム実行部 9 0 3によ り行なう ώ
ステップ S 1 2 0 4において、 処理を終了するかどう かを判断する。 例えば、 ステップ S 1 2 0 3 における判断プロ グラムの実行によ り 、 ァ プリ ケーシヨ ンプロ グラムがコンピュータ ウィルス性を有する と判断さ れた場合には、 処理を終了する。 も し、 処理を終了しないと判断された 場合には、 ステップ S 1 2 0 5へ処理を移行する。
ステップ S 1 2 0 5 において、 アプリ ケーショ ンプログラムの実行を 続ける。アプリ ケーショ ンプログラムがブレークポイン トに到達する と、 アプリ ケーショ ンプログラムの実行が停止するので、 停止したと ころか ら処理を再開させる。 例えば、 アプリ ケーショ ンプログラムを実行する プロセスにシグナル (例えば、 S I G _ C O N T ) を送る。 その後、 ス テツプ S 1 2 0 2へ処理を移行する。
なお、 コ ンピュータ ウィルス検出装置は、 ブレークポイン ト情報保持 ステップと、 ブレークポイ ン ト設定ステップと、 判断プログラム実行ス テツプと、 を含むコ ンピュータ ウ ィルス検出方法を使用するための装置 と考えるこ とができ る。 「ブレークポイ ン ト情報保持ステップ」 は、 ブレ ーク ポイ ン ト情報を保持するステ ップであ り 、 Γブレークポイ ン ト設定 ステップ J は、 アプリ ケーショ ンプログラムに、 ブレークポイン ト情報 保持ステップで保持されたブレークポイ ン ト情報に基づいて、 ブレーク ポイ ン トを設定するステップであ り 、 「判断プログラム実行ステップ」と は、 アプリ ケーショ ンプログラムの実行が、 ブレークポイ ン ト設定ステ ップで設定されたブレークポイン トに到達したと き、 ブレークポイ ン ト, 情報に含まれる判断プロ グラムを実行するステップである。 すなわち、 ブレークポイ ン ト情報保持ステップは、 ブレークポイ ン ト情報保持部を 動作するステップであ り 、 ブレークポイン ト設定ステップは、 ブレーク ポイ ン ト設定部を動作するステップであり 、 判断プロ グラム実行ステッ プは判断プロ グラム実行部を実行するステップである。 なお、 本発明に 係る コ ンピュータ ウィルス検出方法の使用は、 本発明に係るコンビユ ー タ ウィルス検出装置に限定されるこ とはない。
(実施形態 1 : 主な効果)
本実施形態によ り 、 オペレーティ ングシステムのカーネル内部に修正 を加えるこ となく 、 アプリ ケーショ ンプロ グラムを実行するプロセスの 振る舞いを、 コンピュータ ウィルス検出装置によ り監視するこ とができ るので、 システムダウンの発生を回避することが可能となる。 また、 コ ンピュータ ウィルスの振る舞いは非常に似ている場合が多いので、 従来 のアンチウィルスソフ ト ウエアにおいて必要であった、 パターンフアイ ルを最新のものに更新し続けるこ との必要性が低く なった り 、 パターン ファイルの更新が不要となったりする。
(実施形態 2 )
本発明の実施形態 2 と して、 アプリ ケーショ ンプロ グラムを保持する コ ンピュータ ウィルス検出装置を説明する。
図 1 3 は、 本実施形態に係るコンピュータ ウィルス検出装置による表 示画面を例示する。 ウィ ン ドウ 1 3 0 1 は、 本実施形態に係る コ ンビュ ータ ウィルス検出装置が表示する ウィ ン ドウである。 そのウィ ン ドウの サブウィ ン ドウ 1 3 0 2 に、 アプリ ケーショ ンプロ グラムのアイ コンが 表示されている。 必要に応じて、 ウィ ン ドウ 1 3 0 1 の外に表示されて いるアイ コ ン (例えば、 アイ コ ン 1 3 0 4 ) を ドラ ッグして、 サブウイ ン ドウ 1 3 0 2の内部に移動させるこ とができる。 サブウィ ン ドウ 1 3 0 2 の内部に表示されたアイ コ ン (例えば、 アイ コ ン 1 3 0 3 ) をダブ ルク リ ックなどするこ と によ り 、 アプリ ケーショ ンプログラムを実行す るプロセスが、 コンピュータ ウィルス検出装置を実行するプロセスの子 プロセスと して生成され、 その振る舞いが監視される。
(実施形態 2 : 構成)
図 1 4は、 本実施形態に係る コ ンピュータ ウィルス検出装置の機能ブ ロ ック図を例示する。 コンピュータ ウィルス検出装置 1 4 0 0 は、 プレ —クポイ ン ト情報保持部 9 0 1 と、 ブレークポイ ン ト設定部 9 0 2 と、 判断プログラム実行部 9 0 3 と、 アプリ ケーショ ンプロ グラム保持部 1 4 0 1 と、 プロ グラム実行開始部 1 4 0 2 と、 ブレークポイ ン ト設定命 令部 1 4 0 3 と、 を有する。
したがって、 本実施形態に係るコ ンピュータ ウィルス検出装置は、 実 施形態 1 に係るコ ンピュータ ウ ィ ルス検出装置が、 さ らに、 アプリ ケー ショ ンプログラム保持部 1 4 0 1 と、プログラム実行開始部 1 4 0 2 と、 ブレークポイ ン ト設定命令部 1 4 0 3 と、 を有する構成となっている。 なお、 本明細書においては、 同じ定義が適用される部には、 でき るだけ 同じ符号を割り 当てるこ と にする。 なお、 同じ符号が割り 当てられてい るこ とは、 実際の製造などにおいて、 同一の構成などになるこ と を意味 するものではない。
「アプリ ケーショ ンプロ グラ ム保持部」 1 4 0 1 は、 アプリ ケーショ ンプログラムを保持する。 保持には、 ¾々の形態がある。 例えば、 ァプ リ ケーシヨ ンプログラム全体を格納する形態がある。 また、 アプリ ケー ショ ンプログラムが格納されている場所、 例えばファイルシステムにお けるパスなどで表現される、 を格納する形態もあり得る。
「プロ グラム実行開始部」 1 4 0 2 は、 アプリ ケーショ ンプロ グラム 保持部 1 4 0 1 で保持されたアプリ ケーショ ンプロ グラムの実行を開始 する。 例えば、 コ ン ピュータ ウ ィルス検出装置を実現するプロ グラムを 実行するプロセスの子プロセス と して、 アプリ ケーショ ンプロ グラムの 実行を開始する。
「ブレークポイ ン ト設定命令部」 1 4 0 3 は、 プロ グラム実行開始部 1 4 0 2 で実行が開始されるアプリ ケーショ ンプロ グラムに対して、 ブ レークポイ ン ト設定部 9 0 2 に、 プ„レークポイ ン トの設定を命令する。 例えば、 ブレークポイ ン ト設定部 9 0 2 を実現する関数などの呼び出し を行なう。
(実施形態 2 : 処理)
図 1 5 は、 本実施形態に係るコ ンピュータ ウィルス検出装置の処理の フローチヤ一トを例示する。
ステップ S 1 5 0 1 において、 アプリ ケーショ ンプログラムを保持す る。 この処理は、 アプリ ケーショ ンプロ グラム保持部 1 4 0 1 によ り行 なわれる。 例えば、 図 1 3 において、 アイ コン 1 3 0 4をサプウィ ン ド ゥ 1 3 0 2の内部に ドラ ッグされたこ と を検出し、 アイ コン 1 3 0 4が 表わすアプリ ケーショ ンプロ グラムを保持する。
ステップ S 1 5 0 2 において、 アプリ ケーショ ンプロ グラムが選択さ れるまで待つ。 例えば、 図 1 3 において、 サプウィ ン ドウ 1 3 0 2 の内 部のアイ コンがダブルク リ ック されるまで待つ。
ステップ S 1 5 0 3 において、 ブレークポイ ン ト位置情報が示す位置 に、 ブレークポイ ン トを、 選択されたアプリ ケーショ ンに設定するこ と を命ずる。 この処理は、 ブレークポイ ン ト設定命令部 1 4 0 3によ り行 なわれる。
ステップ S 1 5 0 4において、ブレークポイ ン トの設定の完了を待つ。 例えば、 ブレークポイン ト設定部 9 0 2 を実現する関数などの呼び出し から戻るまで待つ。
ステップ S 1 5 0 5 において、 選択されたアプリ ケーショ ンプロ ダラ ムを実行する。 よ り正確に述べる と、 選択されたアプリ ケーショ ンプロ グラムを実行するためのプロセスを実行させる。 ステップ S 1 5 0 5 の 後は、 図 1 2 のフローチャー トのステップ S 1 2 0 2、 ステップ S 1 2 0 3、ステップ S 1 2 0 4、ステップ S 1 2 0 5 を実行するこ と となる。 最近のオペレーティ ングシステムにおいては、 一つのプロセスの中で複 数のス レツ ドを並列 / /平行に動作させる こ とが可能となっている。 そこ で、 ステップ S 1 2 0 2、 ステップ S 1 2 0 3 、 ステップ S 1 2 0 4、 ステップ S 1 2 0 5 の実行は、 図 1 5 のフローチャー トを実行するス レ ッ ドとは別のス レツ ドによ り行なわれてもよい。
ステップ S 1 5 0 6 によ り 、 処理を終了するかどう かを判断する。 例 えば、 コンピュータ ウィルス検出装置の操作者が、 終了ポタンを押した かどう 力 によ り判断する。 も し、 終了でなければ、 ステップ S 1 5 0 2 へ戻る。 (実施形態 2 : 主な効果)
本実施形態によ り 、 振る舞いを監視するべきアプリ ケーショ ンプロ グ ラムを実行するプロセスを容易に生成するこ とが可能と なる。 また、 コ ンピュータ ウィルスを外部から導入する虞が無いアプリ ケーショ ンプロ グラムは、 監視の対象と しないよ う にするこ とができるので、 ブレーク ポイ ン トの設定によ り 、 そのよ う なアプリ ケーショ ンプログラムを実行 するス ピー ドを低下させるこ とがない。
(実施形態 3 )
本発明の実施形態 3 と して、 システムコール A P I 関数にブレークポ イ ン ト を設定し、 プロセスの振る舞いを監視するコ ンピュータ ウィルス 検出装置について説明する。
(実施形態 3 : 構成)
本実施形態に係る コ ンピュータ ウイルス検出装置は、 実施形態 1 又は 2のコ ンピュータ ウィルス検出装置のブレークポイ ン ト情報保持部 9 0 1 が保持するブレークポイ ン ト情報を、 アプリ ケーショ ンプロ グラムの システムコール A P I 関数に基づいて定められるよ う にしたものである, 「システム コール A P I 関数」 とは、 システムコールを呼び出すため のライブラ リ 関数などを意味する。 そのよ う なライブラ リ 関数などは、 通常は、 システムコールに対する引数をスタ ックに積み、 トラ ップ命令 を実行するよ う になっている。 トラ ップ命令の実行によ り 、 オペレーテ イ ングシステムによ り C P Uに設定された割り 込みルーチンが起動され. オペレーティ ングシステム内部の処理が開始される。 スタ ックに引数を 積み、 トラ ップ命令を実行する処理を、 直接に高級言語で表現する こ と は困難であるので、 そのよ う な処理を行なう ライブラ リ 関数などが用意 されている。
図 1 6 は、 本実施形態におけるブレークポイ ン ト情報を例示する。 図 1 6 において、 R e g C r e a t e K e y E x Aがシステムコ一ノレ A P I 関数の名前となっている。 したがって、 ブレークポイ ン ト設定部がプ レークポイン トを設定する場合には、 システムコール A P I 関数の名前 をア ドレスに変換する必要がある。 その変換の処理については、 概要の 項で説明した通りである。
(実施形態 3 : 主な効果)
コンピュータ ウィルスは、 システムコール A P I 関数を用いて、 自身 をコ ンピュータに感染させるこ とが多いので、 システムコール A P I 関 数の呼び出しを検出して、 アプリ ケ一ショ ンプログラムがコ ンピュータ ウィルス性を有するかどう かを判断するこ とで、 少ないブレークポイ ン トの設定で的確に判断するこ とが可能となる。
(実施形態 4 )
本発明の実施形態 4 と して、 システムコール A P I 関数の引数の検査 に基づいて、 判断を行なう コ ンピュータ ウィルス検出装置について説明 する。
(実施形態 4 : 構成)
本実施形態に係るコ ンピュータ ウィルス検出装置は、 実施形態 3 に係 るコンピュータ ウィルス検出装置において、 判断プログラムに、 システ ムコール検査プロ グラムを含ませた構成と なっている。 「システムコ一 ル検査プログラム」 とは、 そのアプリ ケーショ ンプロ グラムが呼び出す システムコール A P I 関数の引数の検査に基づいて、 そのアプリ ケーシ ヨ ンプログラムがコ ンビユ ^ ~タ ウィルス性を有するかどう かの判断をす るためのプロ グラムである。 「そのアプリ ケーショ ンプロ グラム」 とは、 ブレークポイ ン ト設定部 9 0 2 によ り ブレークポイ ン トが設定されたァ プリ ケーシヨ ンプログラムを意味する。
したがって、 本実施形態においては、 アプリ ケーショ ンプロ グラムの 実行がブレークポイ ン トに到達する と、 アプリ ケーショ ンプログラムの システムコール A P I 関数の引数が検査されるこ とになる。 この検査の 結果に基づいて、 アプリ ケーショ ンプロ グラムがコンピュータ ウィルス 性を有するかどうかが判断される。
なお、 本実施形態において、 引数が検査されるシステムコール A P I 関数は、ブレ一クポイン トが設定されたものに限定はされない。例えば、 アプリ ケーショ ンプロ グラムのマシンイ ンス ト ラ ク シ ョ ンを全て調べて 全てのシステムコール A P I 関数の引数が検査されるよ う になつていて もよい。 また、 到達したプレークポイ ン トでのシステムコ ^ "ル A P I 関 数の引数を記憶しておき、 後にブレークポイ ン トに到達したときに、 記 憶されたシステムコール A P I 関数に引数を検査するよ う になつていて もよい。
(実施形態 4 : 主な効果)
本実施形態では、システムコール A P I 関数の引数の検査に基づいて、 コ ンピュータ ウィルス性が判断されるので、 よ り 的確に判断を行な う こ とが可能となる。
(実施形態 5 )
本発明の実施形態 5 と して、 到達したブレークポイ ン トにおけるシス テムコール A P I 関数の引数を検査するコ ンピュータ ウィルス検出装置 について説明する。
(実施形態 5 : 構成)
本実施形態に係る コンピュータ ウイルス検出装置は、 実施形態 4 に係 るコ ンピュータ ウィルス検出装置において、 システムコール検查プロ グ ラムによって検査される引数を、 ブレークポイ ン ト情報保持部 9 0 1 が 保持するブレークポイン ト位置情報で定められるシステムコール A P I 関数の引数と したものである。 例えば、 図 1 6 に例示されるよ う に、 R e g C r e a t e K e y E x Aとい う システムコール A P I 関数に.ブレークポイン トが設定され、 ァ プリ ケーショ ンプログラムの実行がそのブレークポイ ン トに到達した場 合には、 システムコール検査プロ グラムは、 その R e g C r e a t e K e y E x Aの引数を検查する。 その検査の例は、 本発明の概要の項で述 ベたとおり である。
(実施形態 5 : 主な効果)
本実施形態によ り 、 呼び出されたシステムコール A P I 関数の引数の 検査に基づいてコ ンピュータ ウィルス性の判断がされるので、 よ り 的確 に判断を行なえる。
(実施形態 6 ) - 本発明の実施形態 6 と して、 システム リ ソースを変更するシステムコ ール A P I 関数が呼ばれた場合、 変更されるシステム リ ソースの複製を 生成する コンピュータ ウィルス検出装置について説明する。
(実施形態 6 : 構成)
本実施形態に係るコンピュータ ウィ ルス検出装置は、 実施形態 4また は 5 のコンピュータ ウィルス検出装置において、 判断プロ グラムに、 複 製作成プロ グラムを含ませた構成となっている。 「複製作成プログラム」 は、 そのアプリ ケーショ ンプログラムのシステムコール A P I 関数によ り システム リ ソースが変更される場合に、 その変更される システム リ ソ ースの複製を生成する。 「そのアプリ ケーショ ンプロ グラム」 と は、 プレ ークポイ ン ト設定部 9 0 2 によ り ブレークポイ ン トの設定が行なわれた アプリ ケーショ ンプログラムである。
したがって、 本実施形態においては、 ブレークポイ ン ト位置情報は、 システム リ ソースを変更するシステムコール A P I 関数の位置を示すこ と となる n こ こでい うシステム リ ソース とは、 例えば、 レジス ト リ 、 フ アイルなど.、 コンピュータが使用する リ ソースの う ち、 複製が可能なリ ソースを意味する。
例えば、 レジス ト リ を変更するシステムコール A P I 関数にブレーク ポイ ン トを設定しておき、 アプリ ケーショ ンプログラムの実行が、 その ブレークポイ ン トに到達した場合には、 レジス ト リ の複製をする複製作 成プログラムが実行される。 複製が作成される と、 システムコールによ り レジス ト リ の変更が行なわれる。レジス ト リ の複製するにあつたては、 レジス ト リ 全体を複製してもよいし、 変更される部分だけを複製しても よい。 レジス ト リ の変更される部分は、 システムコール A P I 関数の引 数によ り判断するこ とができる。
なお、 本実施形態において、 複製作成プロ グラムの実行は、 アプリ ケ ーシヨ ンプロ グラムがコンビュ タ ウィルス性を有する と判断される場 合に行なう よ う にしてもよい。 これによ り 、 作成される複製の量を減ら すこ とができる。
(実施形態 6 : 処理)
図 1 7 は、 本実施形態に係るコンピュータ ウィルス検出装置の処理の フローチヤ一トを例示する。
ステ ップ S 1 7 0 1 において、 ブレークポイ ン ト位置情報が示す位置 に、 ブレークポイン トをアプリ ケーショ ンプログラムに設定する。
ステップ S 1 7 0 2 において、 アプリ ケーショ ンプログラムの実行が ブレークボイ ン トに到達するまで待つ。
ステップ S 1 7 0 3 において、 判断プログラムを実行する。
ステップ S 1 7 0 4 において、 判断プログラムの実行の結果が、 ァプ リ ケーシヨ ンプロ グラムがコンピュータ ウィルス性を有するものである かど う かを判定する。 も し、 コンピュータ ウィルス性を有するものであ れば、 ステップ S 1 7 0 5 へ処理を移行させ、 そ う でなければ、 ステツ プ S 1 7 0 7へ処理をスキップさせる。
ステップ S 1 7 0 5 において、 アプリ ケーシ ョ ンプロ グラムがシステ ム リ ソースを変更しよ う と しているかどう かを判定する。 この判定は、 到達したブレークポイ ン トに係るシステムコール A P I 関数の種類、 そ の引数を調べるこ とによ り行な う こ とができる。 も し、 システム リ ソー スを変更しよ う と している場合には、 ステップ S 1 7 0 6へ処理を移行 させ、 そうでなければ、 ステップ S 1 7 0 7へ処理をスキップさせる。 ステップ S 1 7 0 6 において、 複製作成プロ グラムによ り 、 システム リ ソースの複製を作成する。
ステップ S 1 7 0 ' 7 において、 全体の処理を終了するかどう かを判断 する。 も し、 終了 しないと判断される と、 ステップ S 1 7 0 8 へ処理を 移行させる。
ステップ S 1 7 0 8 において、 アプリ ケーショ ンプログラムの実行を 続け、 ステップ S 1 7 0 2へ処理を移行させる。 も し、 アプリ ケーショ ンプログラムがコンピュータ ウィルスであ り 、 システム リ ソースが不正 なものに変更されても、 ステップ S 1 7 0 6で作成された複製によ り シ ステムを復元するこ とができる。
(実施形態 6 : 主な効果)
本実施形態においては、 変更されるシステム リ ソースの複製が作成さ れるので、 アプリ ケーショ ンプログラムがコンピュータ ウィルスであり コ ンピュータが感染したと しても、 システムリ ソースの複製を用いてシ ステムの復旧が可能となる。
(実施形態 7 )
本発明の実施形態 7 と して、 アプリ ケーショ ンプロ グラムがコンビュ —タ ウ ィ ルス性を有する と判断された場合に、 システムコール A P I 関 数の実行をさせないコ ンピュータ ウィルス検出装置について説明する。 (実施形態 7 : 構成)
図 1 8 は、 本実施形態に係るコ ンピュータ ウィルス検出装置の機能ブ 口 ック図を例示する。 本実施形態に係る コンピュータ ウイルス検出装置 の構成は、 実施形態 1 から 6 のいずれかのコ ンピュータ ウィルス検出装 置が、 実行阻止部を有する構成となっている。 したがって、 例えば、 コ ンピュータ ウィルス検出装置 1 8 0 0 は、 ブレークポイ ン ト情報保持部 9 0 1 と、 ブレークポイ ン ト設定部 9 0 2 と、 判断プロ グラム実行部 9 0 3 と、 矣行阻止部 1 8 0 1 と、 を有する。 コ ンピュータ ウィルス検出 装置 1 8 0 0 は、 このほかに、 アプリ ケーショ ンプロ グラム保持部、 プ ログラム実行開始部、ブレークポイ ン ト設定命令部を有していてもよい。
「実行阻止部」 1 8 0 1 は、 判断プログラム実行部 9 0 3 による判断 の結果、 判断の対象となったアプリ ケーショ ンプログラムがコ ンビユー タ ウィルス性を有すると判断された場合に、 アプリ ケーショ ンプロ ダラ ムのシステムコール A P I 関数の実行をさせないための部である。
スタ ッ ク の使用が図 5 に例示されたものである'場合には、 実行阻止部 1 8 0 1 は、 フ レームポイ ンタ ( f p ) の値を用いて、 部分 5 0 4 に格 納されている関数呼び出し前のフ レームポイ ンタの値を取得してフ レー ムポイ ンタ ( f p ) に設定し、 プログラムカ ウンタの値を部分 5 0 3 に 格納されている値にして、 システムコール A P I 関数の実行をさせない よ う にする。
(実施形態 7 : 処理)
図 1 9 は、 本実施形態に係るコ ンピュータ ウィルス検出装置の処理の フローチヤ一 トを例示する。
ステップ S 1 9 0 1 において、 ブレークポイ ン ト位置情報が示す位置 に、 ブレークポイン トを、 アプリ ケーショ ンプログラムに設定する。 ステップ S 1 9 0 2において、 アプリ ケーショ ンプロ グラムの実行が ブレークポイン トに到達するまで待つ。
ステップ S 1 9 0 3 において、 判断プログラムを実行する。
ステップ S 1 9 0 4 において、 判断プロ グラムの結果、 アプリ ケーシ ヨ ンプロ グラムがコンピュータ ウィルス性を有するかどうかを判定する , も し、 コ ンピュータ ウィルス性を有するのであれば、 ステップ S 1 9 0 5 へ処理を移行させ、 そ うでなければ、 ステップ S 1 9 0 6 へ処理をス キップさせる。
ステップ S 1 9 0 5 において、 システムコール A P I 関数の実行をさ せないよ う にする。 この処理において、 実行阻止部 1 8 0 1 を用いる。 ステップ S 1 9 0 6 において、 全体の処理を終了させるかどう かを判 断する。 も し、 終了させないのであれば、 ステップ S 1 9 0 7へ処理を 移行させる。
ステップ S 1 9 0 7 において、 アプリ ケーショ ンプロ グラムの実行を 続ける。 その後、 ステップ S 1 9 0 2 処理を移行させる。
(実施形態 7 : 主な効果)
本実施形態においては、 危険なシステムコールの実行が阻止されるの で、 例えば、 特定のワ ^ " ドプロセッサのマク ロプログラムがコンビ タ ウィ ルス性を有する場合に、 ヮー ドプロセ ッサの機能を停止させるこ となく 、 危険なマク ロプロ グラムの実行を阻止するこ とが可能とな り 、 危険なシステム コールの実行を阻止しつつ、 アプリ ケーショ ンプログラ ムの実行を継続するこ とができ る。
(実施形態 8 )
本発明の実施形態 8 と して、 コ ンピュータ ウイルス性を有するアプリ ケーシヨ ンプログラムの通信を阻止する コンビユ ^ "タ ウィルス検出装置 と、 通信機器と、 について説明する。
図 2 0 は、 本実施形態の概要を例示する。 コ ンピュータ 2 0 0 1 が、 通信機器 2 0 0 2を介して外部の通信網 2 0 0 3に接続されている。 通 信機器 2 0 0 2の代表的な例と しては、 ルータがある。 コンピュータ 2 0 0 1の内部では、 アプリ ケーショ ンプロ グラムを実行するプロセス 2 0 0 4 と、 コ ンピュータ ウィルス検出装置を実現するプロセス 2 0 0 5 が動作し、 プロセス 2 0 0 5は、 プロセス 2 0 0 4の振る舞いを監視し ている。 も し、 プロセス 2 0 0 4が実行するアプリ ケーショ ンプロダラ ムがコ ンピュータ ウ ィルス性を有し、 外部に対して通信 2 0 0 6 を行な お う と した とする。 この場合、 プロセス 2 0 0 5は、 プロセス 2 0 0 4 が外部に対して有害な通信を行な う と している とみなして、 その有害な 通信を阻止するために、 通信機器 2 0 0 2に対して通信阻止命令 2 0 0 7を出力する。通信機器 2 0 0 2は、通信阻止命令 2 0 0 7に基づいて、 プロセス 2 0 0 4が行なおう とする通信のパケッ トを中継しないなどし て、 通信を阻止する。
(実施形態 8 : コ ンピュータ ウィルス検出装置の構成)
図 2 1 は、 本実施形態に係るコ ンピュータ ウィルス検出装置の機能プ ロ ック図を例示する。 本実施形態に係るコ ンピュータ ウィルス検出装置 の構成は、 実施形態 1ないし 7のいずれか一におけるコ ンピュータ ウイ ルス検出装置が、 通信阻止命令出力部を有する構成となっている。 例え ば、 コンピュータ ウィルス検出装置 2 1 0 0は、 ブレークポイ ン ト情報 保持部 9 0 1 と、 ブレークポイ ン ト設定部 9 0 2 と、 判断プログラム実 行部 9 0 3 と、 通信阻止命令出力部 2 1 0 1 と、 を有する。
「通信阻止命令出力部」 2 1 0 1 は、 判断プロ グラム実行部 9 0 3に よる判断の結果、 判断の対象となったアプリ ケーショ ンプログラムがコ ンピュータ ウィルス性を有する と判断された場合、 そのアプリ ケーショ ンプログラムが通信システムコール A P I 関数を実行する と きに、 通信 阻止命令を出力する。 「通信阻止命令」 とは、 外部の通信機器に対して、 アプリ ケーショ ンプロ グラムが実行する通信システムコール A P I 関数 による通信を失敗させるための命令である。
例えば、 コンピュータ ウィルス性を持つと判断されたアプリ ケーショ ンプロ グラムが、 コンピュータの外部に対してデータを送信しよ う と し た り 、コンピュータの外部からデータを受信しょ う と した りするために、 通信のためのシステムコール A P I 関数を実行する と、外部の通信機器、 例えばルータ、 に対して、 その通信を失敗させる命令が出力される。 図 2 2 は、 通信阻止命令の一例を示す。 この例では、 通信阻止命令は XM Lなどの構造化文書と して記述されている。 図 2 2 は、 例えば図 2 0 において、 コンピュータ 2 0 0 1 の I Pア ドレスが 1 9 2 . 1 6 8 . 1 9 3 . 0 6 3 であ り 、 プロセス 2 0 0 4が、 I Pア ドレス力 S 1 0 . 1 3 9. 2 1 0. 2 5 4であ り 、 ポー トが 2 5番である通信を行なお う と した場合に出力される通信阻止命令を示している。 このよ う な通信阻止 命令は、 例えば、 S O A P ( S i m l e O b j e c t A c c e s s P r o t o c o l ) によ り 、 このよ う な通信阻止命令が外部の通信 機器に出力されるよ う になつていてもよい。
(実施形態 8 : コ ンピュータ ウィルス検出装置の処理)
図 2 3 は、 本実施形態に係るコ ンピュータ ウ ィルス検出装置の処理の フローチヤ一トを例示する。
ステップ S 2 3 0 1 において、 ブレークポイ ン ト位置情報が示す位置 に、 ブレークポイン トを、 アプリ ケーショ ンプロ グラムに設定する。 ステップ S 2 3 0 2 において、 アプリ ケーショ ンプログラムの実行が プレークポイン トに到達するまで待つ。
ステップ S 2 3 0 3 において判断プログラムを実行する。
ステップ S 2 3 0 4 において、 アプリ ケーショ ンプログラムが、 コン ピュータ ウィルス性を有するかどうかの判定を行な う。 も し、 コンビュ —タ ウィルス性を有する と判定される と、 ステップ S 2 3 0 5 へ処理を 移行させ、そ うでなければ、ステップ S 2 3 0 7 へ処理をスキップする。 ステップ S 2 3 0 5において、 到達したブレークポイ ン トが通信シス テムコール A P I 関数かどう かを判断する。 も し、 通信システムコール A P I 関数であれば、 処理をステップ S 2 3 0 6へ移行させ、 そ うでな ければ、 ステップ S 2 3 0 7へ処理をスキップさせる。
ステップ S 2 3 0 6 において、 外部の通信機器に通信阻止命令を出力 する。 この処理は、 通信阻止命令出力部 ' 2 1 0 1 によ り行なわれる。 ステップ S 2 3 0 7 において、 全体の処理を終了するかどう か判定す る。 も し、 終了しないのであれば、 処理をステップ S 2 3 0 8 へ移行さ せる。
ステップ S 2 3 0 8 において、 アプリ ケーショ ンプログラムの実行を 続ける。 も し、 実行が続いて、 有害な通信が行なわれたと しても、 ステ ップ S 2 3 0 6 において出力された通信阻止命令によ り 、 通信が阻止さ れるこ とになる。
(実施形態 8 : 通信機器の構成)
図 2 4は、 本実施形態に係る通信機器の機能プロ ック図を例示する。 通信機器 2 4 0 0 は、 通信阻止命令受信部 2 4 0 1 と、 通信阻止部 2 4 0 2 と、 を有する。
「通信阻止命令受信部」 2 4 0 1 は、 通信阻止命令を受信する。 通信 阻止命令は、 例えば、 通信阻止命令出力部 2 1 0 1 によ り 出力される も のであ り 、 X M Lで記述された場合には、図 2 2 に例示したものと なる。 通信阻止命令を受信するためのポー トを用意しておき、 通信阻止命令受 信部 2 4 0 1 は、 このポー トに通信阻止命令が送信されるまで待つ。 ま た、 必要に応じて、 通信阻止命令を出力 したプログラムが正当なプロ グ ラムであるこ とを認証するための処理を行なってもよい。 「通信阻止部」 2 4 0 2は、 通信阻止命令受信部 2 4 0 1 で受信され た通信阻止命令に基づいて、 通信を阻止する。 例えば、 通信阻止命令が 図 2 2 に示すものである場合、 1 9 2. 1 6 9 . 1 9 3. 0 6 3 の I P ア ドレス力 ら、 1 0 . 1 3 9 . 2 1 0 . 2 5 4 の I Pア ドレスのコ ンビ ユータ の 2 5番ポー トへ行く 通信パケッ トの中継をしないなどの処理を 行な う。
(実施形態 8 : 通信機器の処理) '
図 2 5 は、本実施形態に係る通信機器の処理のフローチヤ一 トである。 通信機器は、 このブ ローチヤー トによ り示される処理を繰り 返し実行す る。
ステップ S 2 5 0 1 において、 通信阻止命令が受信されるまで待つ。 この処理は、 通信阻止命令受信部 2 4 0 1 によ り行なう。
ステップ S 2 5 0 2において、 通信阻止命令に基づいて通信を阻止す る。 この処理は、 通信阻止部 2 4 0 2 によ り行なう。
(実施形態 8 : 主な効果)
本実施形態によれば、 いわゆるスパイ ウェアなどのプログラムがコン ピュータのデータを外部に送信するこ と を防止するこ とが可能となる。 また、 電子メールを介して感染が広がるコンピュータ ウィルスが送信す る電子メールの送信を阻止するこ とが可能となる。
(実施形態 9 )
本発明の実施形態 9 と して、 アプリ ケーショ ンプロ グラムが到達した ブレークポイ ン トの履歴に基づいて、 アプリ ケーショ ンプロ グラムがコ ンピュータ ウィルス性を有するかどう か判断するコンピュータ ウィルス 検出装置について説明する。
(実施形態 9 : 構成)
図 2 6 は、 本実施形態に係るコ ンピュータ ウィルス検出装置の機能ブ ロ ック図を例示する。 コ ンピュータ ウ ィルス検出装置 2 6 0 0は、 ブレ ークポイ ン ト情報保持部 9 0 1 と、 ブレークポイ ン ト設定部 9 0 2 と、 判断プロ グラム実行部 9 0 3 と、 履歴保持部 2 6 0 1 と、 を有する。 し たがって、 図 2 6 に機能ブロ ック図が例示されたコ ンピュータ ウィルス 検出装置は、 実施形態 1 に係るコンピュータ ウィルス検出装置が履歴保 持部 2 6 0 1 を有する構成となっている。 なお、 本実施形態に保るコ ン ピュータ ウィルス検出装置は、 他の実施形態、 すなわち、 実施形態 2 か ら実施形態 8 のいずれか一に係る コ ンピュータ ウィルス検出装置が、 履 歴保持部 2 6 0 1 を有するものであってもよい。
「履歴保持部」 2 6 0 1 は、 ブレークポイン ト設定部 9 0 2 で設定さ れたブレークボイ ン トに前記アプリ ケーショ ンプログラムが到達した履 歴を保持する。 「前記アプリ ケーショ ンプロ グラム」 とは、 ブレークボイ ン ト設定部 9 0 2 によ り ブレークポイ ン トが設定されたアプリ ケーショ ンプロ グラムを意眛する。 .
したがって、 本実施形態においては、 アプリ ケーショ ンプロ グラムの 実行がブレークポイ ン トに到達する と、 例えば、 どのブレークポイ ン ト に到達したか、 その日時、 ブレ^クポイ ン トがシステムコール A P I 関 数であれば、 その引数、 などを履歴と して追加する。 この処理は、 判断 プログラムが行なっても よいし、 あるいは、 判断プログラムに含まれる プログラムや、 コ ンピュータ ウ ィルス検出装置 2 6 0 0 の部によって行 なわれてもよい。 なお、 履歴保持部 2 6 0 1 が複数のアプリ ケーショ ン プログラムが到達したブレークポイ ン トの履歴を保持する場合には、 ァ プリ ケーショ ンプログラムを識別する識別情報も履歴と して追加される のが好ま しい。
本実施形態においては、 判断プログラムは、 履歴検査プログラムを有 する。 「履歴検査プログラム」 と は、 履歴保持部 2 6 0 1 で保持された履 歴に基づいて、 そのアプリ ケーショ ンプログラムがコンピュータ ウィル ス性を有するかどう かを判断する。
例えば、 いわゆるデーモンプログラムと呼ばれるアプリ ケーショ ンプ ログラムがある。デーモンプログラムは、コ ンピュータ内部に常駐して、 要求が受信でき るのを待ち、 その要求に対してサービスを提供するアブ リ ケ ショ ンプロ グラムである。 このよ う なデーモンプロ グラムが提供 するサービスの内容は定型; (匕されてお り 、 したがって、 デーモンプログ ラムの動作はほぼ一定である。 例えば、 デーモンプロ グラムの う ち、 ゥ エブページの送信要求に対して、 要求されたウェブページを返信するァ プリ ケーシヨ ンプロ グラム (例えば、 A p a c h e と名前が付けられた プログラムが有名である) は、 特定のポー トに要求が送信されるのを待 ち、 要求されたウェブページを格鈉するファイルをオープンし、 そのフ アイルに対して r e a dを行ない、 r e a d の結果を返信し、 ファイル をク ローズして、 ロ グファイルに書き込む、 とい う処理を繰り 返し行な う。 また、 オープンするべきファイルの場所は、 特定のディ レク ト リ 下 である とい う特性を持つ。 したがって、 このよ う な一定の処理から逸脱 した処理を行な う と、 そのデーモンプロ グラムがコ ンピュータ ウィルス やワームに感染した可能性が高い。 本実施形態では、 このよ う にして、 アプリ ケーショ ンプロ グラムがコンピュータ ウィルス性を有するかど う かを判断する。
よ り具体的な例と しては、 ブレークポイ ン ト ごと に、 到達した回数を 記録しておき、 これまで到達したことがないプレークポイ ン トに到達し たならば、 アプリ ケーショ ンプロ グラムがコンピュータ ウィルス性を有 する と判断する。 あるいは、 ブレークポイ ン ト の位置がシステムコール A P I 関数である場合には、履歴に基づいて、その引数の規則を抽出し、 その規則に合致しない引数が与えられた場合には、 アプリ ケーショ ンプ ログラムがコ ンピュータ ウ ィルス性を有する と判断する。 例えば、 ファ ィルをオープンする際に指定されるフ ァイルのパスに関する規則を、 ヮ ィル ドカー ドや正規表現と して抽出し、 そのワイル ドカー ドや正規表現 に適合しないパスのファイルをオープンしょ う と した場合には、 アプリ ケーショ ンプログラムがコ ンピュータ ウィルス性を有する と ¾断する。 なお、 本実施形態は、 デーモンプロ グラムにのみ適用できるのみなら ず、 他のアプリ ケーショ ンプログラムにも適用が可能である。 例えば、 一般人による ヮー ドプロセッサなどの使用は定型的なものである。 そこ で、定型的な使用で呼び出されるシステムコール以外が呼び出される と、 そのワー ドプロセッサがコ ンピュータ ウィルス性を有する と判断される よ う になつていても よい。 ヮー ドプロセッサを例に用いたが、 表計算プ ログラム、 プレゼンテーショ ンプロ グラム、 メーラ、 ブラ ウザなどのァ プリ ケーショ ンプロ グラムにも適用ができる。
(実施形態 9 : 処理)
図 2 7 は、 本実施形態に係る コ ンピュータ ウ ィルス検出装置の処理の フローチャー トを例示する。 '
ステップ S 2 7 0 1 において、 ブレークポイ ン ト位置情報が示す位置 に、 ブレークポイ ン トを、 アプリケーショ ンプログラムに設定する。 ステップ S 2 7 0 2 において、 アプリ ケーショ ンプロ グラムの実行が ブレークポイン トに到達するまで待つ。
ステップ S 2 7 0 3 において、 ブレークポイ ン トに到達した履歴を追 加する。
ステップ S 2 7 0 4において、 判断プログラムを実行する。 ここで、 履歴検査プログラムも実行されるこ とになる。
ステップ S 2 7 0 5 において、 終了するべきかどう かを判定する。 も し、 終了しないのであれば、 ステップ S 2 7 0 6へ処理を移行させる。 ステップ S 2 7 0 6 において、 アプリ ケーショ ンプロ グラムの実行を 続ける。 その後、 ステップ S 2 7 0 2 に処理を移行させる。
なお、 ステ ップ S 2 7 0 3 の処理は、 判断プロ グラ ムを実行した後で 行なわれるよ う になっていてもよい。
(実施形態 9 : 主な効果)
本実施形態によれば、 アプリ ケーショ ンプロ グラムの動作がこれまで と異なる傾向を示すかどう かに基づいて、 コンピュータ ウィルス性を判 断するので、 一定の動作を繰り返し行な うデーモンプロ グラムなどの振 る舞いの監視に有用である。 また、 正常な動作の履歴があればコンビュ ータ ウィルス性の判断が行なえるので、 判断プログラムの作成が容易と なる。
(実施形態 1 0 )
本発明の実施形態 1 0 と して、 アプリ ケーショ ンプログラムがパーチ ャルマシンであるコンピュータ ウィルス検出装置について説明する。
(実施形態 1 0 : 構成)
図 2 8 は、 本実施形態に係るコ ンピュータ ウィルス検出装 Sの使用の 形態を例示する。 .コンピュータ 2 8 0 1 の内部で、 コンピュータ ウィル ス検出装置 2 8 0 2 とパーチャルマシン 2 8 0 3が動作している。 コン ピュータ ウィルス検出装置 2 8 0 2 は、 実施形態 1 ないし 9 のいずれか 一のコンピュータ ウィルス検出装置を実現するプロ グラムである。 コン ピュータ ウィルス検出装置 2 8 0 2 は、 パーチャルマシン 2 8 0 3 にブ レークポイン トを設定し、 振る舞いを監視する。
「パーチャルマシン」 とは、 他のプロ グラム 2 8 0 5 を実行するァプ リ ケーシヨ ンプロ グラムである。 通常は、 他のプログラム 2 8 0 5 は、 想定されたアーキテクチャのコンピュータのマシンイ ンス ト ラクショ ン で記述される。 代表的な例と しては、 J a v a (登録商標) で記述され、 コンパイルされたプロ グラムを実行するものがある。 J a v a (登録商 標) のプロ グラムは、 インターネッ トからダウンロー ドされるこ とが想 定されているので、 多く の場合、 その出所 素性が不明であ り 、 危険な プログラムである場合がある。 そこで、 例えば、 J a v a (登録商標) のパーチャルマシンは、 実行するプロ グラムが O Sへの A P I ( 2 8 0 4 ) を自 由に使ってコ ンピュータの リ ソースにアクセスする こ とを制限 するよ う に設計されている。 しかし、 バーチャルマシンのバグを利用 し て、 バーチャルマシン上で動く プログラム 2 8 0 5がコンピュータのリ ソースに自由にアクセスする場合がある。
そこで、 本実施形態のコンピュータ ウィルス検出装置 2 8 0 2が、 パ 一チャルマシン 2 8 0 3にブレークポイ ン トを設定して、 パーチャルマ シン 2 8 0 3 の振る舞いを検出し、 パーチャルマシン 2 8 0 3 がコ ンビ ユータ ウィルス性を有するプログラムを実行していないかど う かを判断 する。 なお、 本実施形態においては、 パーチャルマシンがコンピュータ ウィルス性を有する とは、 コンピュータ ウィルス性を有するプログラム をパーチャルマシンが実行するこ と をも意味するものとする。
(実施形態 1 0 : 主な効果)
'本実施形態によ り 、 バーチャルマシンのバグなどを利用するプロ グラ ムの実行を阻止するこ とができる。
(実施形態 1 1 )
本発明の実施形態 1 1 と して、 実施形態 1 0 におけるコンピュータを 携帯電話と した実施形態について説明する。
(実施形態 1 1 : 構成)
図 2 9 は、 本実施形態に係るコンピュータ ウィルス検出装置の使用の 形態を例示する。 図 2 8 のコンピュータ 2 8 0 1 が携帯電話 2 9 0 1 に 置き換わっている。 (実施形態 1 1 : 主な効果)
携帯電話の高機能化にはめざま しいものがある。 例えば、 イ ンターネ ッ ト用のブラ ウザは言う に及ばず、 J a v a (登録商標) のバーチャル マシンも携帯電話の内部で動作するよ う になっている。 また、 従来はパ —ソナルコンピュータで動作していたオペレーティ ングシステムが携帯 電話の内部でも動作するよ う になってきており 、 携帯電話で動作するプ ログラムが複雑化している。
しかし、 携帯電話の販売が開始された後に、 パグゃセキュ リ ティ ホー ルが見つかる場合がある。 一方、 携帯電話はパーソナルコンピュータ以 上の台数が巿場に出回り 、 携帯端末の回収にはコス トがかかる う え、 時 間も要する。 このため、 携帯電話で動作するバーチャルマシンなどのバ グゃセキュ リ ティ ホールを悪用 したコンピュータ ウィルスが作成される と、その感染規模は予想もっかないこ と とな り 、社会的な影響が大きい。 例えば、 パーチャルマシンのバグなどを利用 して、 あらゆる携帯電話の ア ドレス帳のデータが収集され、 プライバシ情報の漏洩につながる。 そこで、 本発明のコ ンピュータ ウィルス検出装置を実現するプロ ダラ ムを、 携帯電話の内部で動作させておき、 パーチャルマシンにブレーク ポイン トを設定して振る舞いを検出するこ とによ り 、 バグゃセキユ リ テ ィホールなどを.悪用 したコンピュータ ウィルスの動作を未然に防ぐこ と が可能となる。
産業上の利用可能性
上記のよ う に本発明によれば、 登録された命令の実行有無によ り 監視 対象プロセスの実行を中止、 あるいは実行前の状態にロールパックでき るよ う にな り 、 従来に比してユーザの負担を軽減してウィ ルスへの感染 予防、 及ぴ、 システムのク リ ^"ンアップができ る。
また、 本癸明は、 プログラム実行時の振る舞いを検出するため、 従来 のシグネチヤスキャ ンでは必要であったスキャ ン前の圧縮ファイルの解 凍や、 暗号化フアイルの復号化等の前処理を必要と しない。
したがって、 本発明は、 コ ンピュータ ウ ィルス検出装置と して有用であ る。

Claims

請求の範囲
1 . アプリ ケーショ ンプロ グラムの実行に際して設定するべきプレーク ポイ ン トの位置を示す情報であるプレークポイ ン ト位置情報と、 そのァ プリ ケーショ ンプロ グラムの実行が前記ブレークポイ ン トに到達したと きに、 そのアプリ ケーショ ンプロ グラムの実行で参照されるスタ ックの 内容に基づいて、 そのアプリ ケーショ ンプログラムがコンピュータ ウイ ルス性を有するかどう かの判断を行な う ための判断プログラムと、 を含 む情報であるブレークポイ ン ト情報を保持するブレークポイ ン ト情報保 持部と、
アプリ ケーショ ンプログラムに、 前記ブレークボイ ン ト情報保持部で 保持されたプレークポイ ン ト情報に基づいて、 ブレークポイ ン トを設定 するためのブレークポイン ト設定部と、
前記アプリ ケーショ ンプログラムの実行が、 前^ブレークポイ ン ト設 定部で設定されたブレークポイ ン トに到達したと き、 前記ブレークボイ ン ト情報に含まれる判断プログラムを実行する判断プログラム実行部と . を有するコ ンピュータ ウィルス検出装置。
2 . アプリ ケーショ ンプログラムを保持するアプリ ケーショ ンプロダラ ム保持部と、
アプリ ケーショ ンプログラム保持部で保持されたアプリ ケーショ ンプ ログラムの実行を開始するプログラム実行開始部と、
前記プログラム実行開始部で実行が開始されるアプリ ケーショ ンプロ グラムに対して、 前記ブレークポイ ン ト設定部にプレークポイン トの設 定を命令するブレークポイ ン ト設定命令部と、
を有する請求の範囲第 1項に記載のコ ンピュータウイルス検出装置。
3 . 前記ブレークポイ ン ト情報保持部が保持する前記ブレークポイン ト 位置情報は、 前記アプリ ケーショ ンプロ グラムのシステムコール A P I 関数に基づいて定め られる請求の範囲第 1 項に記載のコ ン ピュータ ウイ ルス検出装置。
4 . 前記判断プロ グラムは、 そのアプリ ケーショ ンプロ グラムのシステ ムコール A P I 関数の引数の検査に基づいてそのアプリ ケーショ ンプロ グラムがコンピュータウィルス性を有するかどう かの判断をするための システムコール検査プロ グラムを含む請求の範囲第 3項に記載のコ ンビ ユータ ウィルス検出装置。 '
5 . 前記システムコール検査プロ グラムによって検査される引数は、 前 記ブレークポイン ト情報保持部が保持するプレークポイン ト位置情報で 定め られるシステム コール A P I 関数の引数である請求の範囲第 4項に 記載のコ ンピュータ ウィルス検出装置。
6 . 前記判断プログラムは、
そのアプリ ケーショ ンプロ グラムのシステムコール A P I 関数の実行 によ り システム リ ソースが変更される場合に、 その変更されるシステム リ ソースの複製を作成する複製作成プロ グラムを含む請求の範囲第 4項 または請求の範囲第 5項に記載のコ ンピュータ ウィルス検出装置。
7 . 前記判断プロ グラム実行部による判断の結果、 判断の対象となった アプリ ケーショ ンプロ グラ ムがコ ンピュータ ウ ィルス性を有する と判断 された場合に、 コ ンピュータ ウィルス性を有する と判断されたアプリ ケ ーシヨ ンプログラムのシステムコール A P I 関数の実行をさせないため の実行阻止部を有する請求の範囲第 4項または請求の範囲第 5項に記載 のコ ンピュータ ウィルス検出装置。
8 . 前記判断プロ グラム実行部による判断の結果、 判断の対象となった アプリ ケーショ ンプログラムがコ ンピュータ ウ ィルス性を有する と判断 された場合に、 アプリ ケーショ ンプロ グラムが通信を行な う通信システ ムコール A P I 関数を実行する と きに、 外部の通信機器に対してアプリ ケーショ ンプロ グラ ムが実行する通信システムコール A P I 関数による 通信を失敗させるための命令である通信阻止命令を出力する通信阻止命 令出力部を有する請求の範囲第 4項に記載のコ ンピュータ ウ ィルス検出 装置。
9 . 前記ブレークポイ ン ト設定部で設定されたブレークポイ ン トに前記 アプリ ケーショ ンプログラムが到達した履歴を保持する履歴保持部を有 し、
前記判断プログラムは、前記履歴保持部で保持された履歴に基づいて、 そのアプリ ケーショ ンプロ グラムがコンピュータ ウィルス性を有するか どう かを判断する履歴検査プロ グラムを有する請求の範囲第 1 項に記载 のコ ンピュータ ウイルス検出装置。
1 0 . 前記アプリ ケーショ ンプロ グラムは、 パーチャルマシンである請 求の範囲第 1項に記載のコンピュータウィルス検出装置。
1 1 . 前記パーチャルマシンは、 携帯電話内で動作する請求の範囲第 1 0項に記載のコンピュータ ウィルス検出装置。
1 2 . 前記通信阻止命令を受信する通信阻止命令受信部と、
前記通信阻止命令受信部で受信された通信阻止命令に基づいて、 通信 を阻止する通信阻止部を有する通信機器。
1 3 . アプリ ケーショ ンプログラムの実行に際して設定するべきブレー クポイン トの位置を示す情報であるブレークポイ ン ト位置情報と、 その アプリ ケーショ ンプログラムの実行が前記ブレークポイ ン トに到達した ときに、 前記アプリ ケーショ ンプロ グラ ムの実行で参照されるスタ ッ ク の内容に基づいて、 前記アプリ ケーショ ンプロ グラムがコンピュータ ゥ ィルス性を有するかどうかの判断を行な うための判断プログラムと、 を 含む情報であるブレークポイン ト情報を保持するブレークボイ ン ト情報 保持ステップと、
アプリ ケーショ ンプログラムに、 前記ブレークポイン ト情報保持ステ ップによ り保持されたブレークポイ ン ト情報に基づいて、 ブレークボイ ントを設定するためのブレークポイ ン ト設定ステップと、
前記アプリ ケーショ ンプログラムの実行が、 前記ブレークポイン ト設 定ステップにて'設定されたブレークポイ ン トに到達したとき、 前記プレ ークポイン ト情報に含まれる判断プロ グラムを実行する判断プロ グラム 実行ステップと 、
をコンピュータに実行させるためのコ ンピュータ ウィルス検出プロ グラ ム。
1 4 . アプリ ケーショ ンプログラムの実行に際して設定するべきプレー クポイ ン トの位置を示す情報であるブレークポイ ン ト位置情報と、 その アプリ ケーショ ンプログラムの実行が前記ブレークポイ ン トに到達した ときに、 前記アプリ ケーショ ンプロ グラムの実行で参照されるスタ ック の内容に基づいて、 前記アプリ ケ一ショ ンプログラムがコンピュータ ゥ ィルス性を有するかどうかの判断を行な うための判断プログラムと、 を 含む情報であるブレークポイン ト情報を保持するブレークポイ ン ト情報 保持ステップと、
アプリ ケーショ ンプログラムに、 前記ブレークボイ ン ト情報保持ステ ップによ り保持されたブレーク ポイ ン ト情報に基づいて、 ブレークポィ ン トを設定するためのブレークポイン ト設定ステップと、
前記アプリ ケーショ ンプログラムの実行が、 前記ブレークポイン ト設 定ステップにて設定されたブレークポイ ン トに到達したと き、 前記ブレ ークポイン ト情報に含まれる判断プログラムを実行する判断プログラム 実行ステップと、
を含むコンピュータ ウィルス検出方法。
PCT/JP2004/001663 2003-02-21 2004-02-16 コンピュータウィルス検出装置 WO2004075060A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005502696A JPWO2004075060A1 (ja) 2003-02-21 2004-02-16 コンピュータウィルス判断方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003092702 2003-02-21
JP2003-092702 2003-02-21

Publications (1)

Publication Number Publication Date
WO2004075060A1 true WO2004075060A1 (ja) 2004-09-02

Family

ID=32905961

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2004/001663 WO2004075060A1 (ja) 2003-02-21 2004-02-16 コンピュータウィルス検出装置

Country Status (2)

Country Link
JP (1) JPWO2004075060A1 (ja)
WO (1) WO2004075060A1 (ja)

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007102311A (ja) * 2005-09-30 2007-04-19 Fujitsu Ltd ワーム感染装置の検出装置
JP2007148818A (ja) * 2005-11-28 2007-06-14 Ntt Docomo Inc ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法
JP2008129707A (ja) * 2006-11-17 2008-06-05 Lac Co Ltd プログラム分析装置、プログラム分析方法、及びプログラム
JP2008176352A (ja) * 2007-01-16 2008-07-31 Lac Co Ltd コンピュータプログラム、コンピュータ装置、及び動作制御方法
JP2008176753A (ja) * 2007-01-22 2008-07-31 National Institute Of Information & Communication Technology データ類似性検査方法及び装置
JP2009037545A (ja) * 2007-08-03 2009-02-19 National Institute Of Information & Communication Technology マルウェアの類似性検査方法及び装置
JP2009509273A (ja) * 2005-09-22 2009-03-05 モカナ・コーポレーション 組み込みパッチの管理
JP2009064414A (ja) * 2007-09-07 2009-03-26 Korea Electronics Telecommun 非正常プロセスの探知方法及び装置
JP2009539177A (ja) * 2006-06-02 2009-11-12 マイクロソフト コーポレーション ウィルスチェックと複製フィルタの組合せ
JP2010092174A (ja) * 2008-10-06 2010-04-22 Nippon Telegr & Teleph Corp <Ntt> 不正検知方法、不正検知装置、不正検知プログラムおよび情報処理システム
JP2010176167A (ja) * 2009-01-27 2010-08-12 Fujitsu Ltd 最小権限違反検出プログラム
JP2013510361A (ja) * 2009-11-03 2013-03-21 アンラブ,インコーポレイテッド 悪性サイト検出装置及び方法
JP5326063B1 (ja) * 2012-09-11 2013-10-30 アンラブ,インコーポレイテッド デバッグイベントを用いた悪意のあるシェルコードの検知装置及び方法
JP2013239172A (ja) * 2012-05-11 2013-11-28 Ahnlab Inc 非実行ファイル検査装置及び方法
CN103902891A (zh) * 2012-12-24 2014-07-02 珠海市君天电子科技有限公司 一种通过Android模拟器检测病毒程序的方法及系统
WO2014116025A1 (ko) * 2013-01-24 2014-07-31 (주)잉카인터넷 행위 기반 프로세스 검사 시스템 및 방법
JP2016038745A (ja) * 2014-08-07 2016-03-22 パナソニックIpマネジメント株式会社 決済処理装置
JP2016522511A (ja) * 2013-06-12 2016-07-28 ソフトキャンプ カンパニー,リミテッド システムを保護するためのファイルセキュリティ用の管理装置と管理方法
CN107690645A (zh) * 2015-06-12 2018-02-13 比特梵德知识产权管理有限公司 使用解释器虚拟机的行为恶意软件检测
JP2019036278A (ja) * 2017-08-17 2019-03-07 エーオー カスペルスキー ラボAO Kaspersky Lab ファイルの実行をエミュレートするシステム及び方法
US10776486B2 (en) 2015-06-16 2020-09-15 Nec Corporation Analysis system, analysis method, analysis device, and storage medium for analyzing operation of a program executed in an analysis environment

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04107646A (ja) * 1990-08-28 1992-04-09 Nippon Telegr & Teleph Corp <Ntt> オンライン中タスク処理時間分析方式
JPH05108487A (ja) * 1991-10-11 1993-04-30 Seiji Murakami コンピユータウイルス侵入防止装置と侵入防止方式
JPH0793184A (ja) * 1993-09-24 1995-04-07 Nec Corp デバッグ装置
WO2001037095A1 (en) * 1999-11-14 2001-05-25 Clicknet Software, Inc. Method and system for intercepting an application program interface
WO2001092981A2 (en) * 2000-05-28 2001-12-06 Yaron Mayer System and method for comprehensive general generic protection for computers against malicious programs that may steal information and/or cause damages
JP2003067210A (ja) * 2001-08-22 2003-03-07 Just Syst Corp プログラム実行防止装置、プログラム実行防止方法、その方法をコンピュータに実行させるプログラムおよびそのプログラムを記録したコンピュータ読み取り可能な記録媒体

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04107646A (ja) * 1990-08-28 1992-04-09 Nippon Telegr & Teleph Corp <Ntt> オンライン中タスク処理時間分析方式
JPH05108487A (ja) * 1991-10-11 1993-04-30 Seiji Murakami コンピユータウイルス侵入防止装置と侵入防止方式
JPH0793184A (ja) * 1993-09-24 1995-04-07 Nec Corp デバッグ装置
WO2001037095A1 (en) * 1999-11-14 2001-05-25 Clicknet Software, Inc. Method and system for intercepting an application program interface
WO2001092981A2 (en) * 2000-05-28 2001-12-06 Yaron Mayer System and method for comprehensive general generic protection for computers against malicious programs that may steal information and/or cause damages
JP2003067210A (ja) * 2001-08-22 2003-03-07 Just Syst Corp プログラム実行防止装置、プログラム実行防止方法、その方法をコンピュータに実行させるプログラムおよびそのプログラムを記録したコンピュータ読み取り可能な記録媒体

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"Program jikkoji no furumai kanshi ni yoru computer virus kenshutsu gijustu", GIJUTSU BUNSHO, 1 May 2003 (2003-05-01), XP002904032, Retrieved from the Internet <URL:http://www.securevm.com/japan/whitepaper/svm_wp.html> [retrieved on 20040506] *
ANDO KAZUMA: "Personal firewall ni shinkino: mitoroku apuri no kido o kinshi shite virus no outbreak o fusegu", NIKKEI INTERNET SOLUTION, vol. 67, 22 January 2003 (2003-01-22), pages 60 - 63, XP002904033 *
ANDO KAZUMA: "Security 'Virus Taisaku': Kenchi, kansen keiro no shadan o yori hayaku; Akushitsu virus taisaku gijutsu ga shinka", NIKKEI INTERNET TECHNOLOGY, vol. 61, 22 July 2002 (2002-07-22), pages 54 - 55, XP002904034 *
SYNSECURE INC. NEWS RELEASE, 18 November 2003 (2003-11-18), XP002904035, Retrieved from the Internet <URL:http://www.synsecure.co.jp/news/20031118.html> [retrieved on 20040506] *

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009509273A (ja) * 2005-09-22 2009-03-05 モカナ・コーポレーション 組み込みパッチの管理
JP2007102311A (ja) * 2005-09-30 2007-04-19 Fujitsu Ltd ワーム感染装置の検出装置
US8015609B2 (en) 2005-09-30 2011-09-06 Fujitsu Limited Worm infection detecting device
JP2007148818A (ja) * 2005-11-28 2007-06-14 Ntt Docomo Inc ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法
JP4732874B2 (ja) * 2005-11-28 2011-07-27 株式会社エヌ・ティ・ティ・ドコモ ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法
JP2009539177A (ja) * 2006-06-02 2009-11-12 マイクロソフト コーポレーション ウィルスチェックと複製フィルタの組合せ
JP2008129707A (ja) * 2006-11-17 2008-06-05 Lac Co Ltd プログラム分析装置、プログラム分析方法、及びプログラム
JP2008176352A (ja) * 2007-01-16 2008-07-31 Lac Co Ltd コンピュータプログラム、コンピュータ装置、及び動作制御方法
JP2008176753A (ja) * 2007-01-22 2008-07-31 National Institute Of Information & Communication Technology データ類似性検査方法及び装置
JP2009037545A (ja) * 2007-08-03 2009-02-19 National Institute Of Information & Communication Technology マルウェアの類似性検査方法及び装置
JP2009064414A (ja) * 2007-09-07 2009-03-26 Korea Electronics Telecommun 非正常プロセスの探知方法及び装置
US8091133B2 (en) 2007-09-07 2012-01-03 Electronics And Telecommunications Research Institute Apparatus and method for detecting malicious process
JP2010092174A (ja) * 2008-10-06 2010-04-22 Nippon Telegr & Teleph Corp <Ntt> 不正検知方法、不正検知装置、不正検知プログラムおよび情報処理システム
JP2010176167A (ja) * 2009-01-27 2010-08-12 Fujitsu Ltd 最小権限違反検出プログラム
JP2013510361A (ja) * 2009-11-03 2013-03-21 アンラブ,インコーポレイテッド 悪性サイト検出装置及び方法
JP2013239172A (ja) * 2012-05-11 2013-11-28 Ahnlab Inc 非実行ファイル検査装置及び方法
JP5326063B1 (ja) * 2012-09-11 2013-10-30 アンラブ,インコーポレイテッド デバッグイベントを用いた悪意のあるシェルコードの検知装置及び方法
CN103902891A (zh) * 2012-12-24 2014-07-02 珠海市君天电子科技有限公司 一种通过Android模拟器检测病毒程序的方法及系统
WO2014116025A1 (ko) * 2013-01-24 2014-07-31 (주)잉카인터넷 행위 기반 프로세스 검사 시스템 및 방법
JP2016522511A (ja) * 2013-06-12 2016-07-28 ソフトキャンプ カンパニー,リミテッド システムを保護するためのファイルセキュリティ用の管理装置と管理方法
JP2016038745A (ja) * 2014-08-07 2016-03-22 パナソニックIpマネジメント株式会社 決済処理装置
CN107690645A (zh) * 2015-06-12 2018-02-13 比特梵德知识产权管理有限公司 使用解释器虚拟机的行为恶意软件检测
KR20180018531A (ko) * 2015-06-12 2018-02-21 비트데펜더 아이피알 매니지먼트 엘티디 인터프리터 가상 머신을 이용한 행동 멀웨어 탐지
JP2018517985A (ja) * 2015-06-12 2018-07-05 ビットディフェンダー アイピーアール マネジメント リミテッド インタープリタ仮想マシンを用いた挙動マルウェア検出
KR102206115B1 (ko) * 2015-06-12 2021-01-22 비트데펜더 아이피알 매니지먼트 엘티디 인터프리터 가상 머신을 이용한 행동 멀웨어 탐지
US10776486B2 (en) 2015-06-16 2020-09-15 Nec Corporation Analysis system, analysis method, analysis device, and storage medium for analyzing operation of a program executed in an analysis environment
US12013939B2 (en) 2015-06-16 2024-06-18 Nec Corporation Analysis system, analysis method, analysis device, and storage medium for analyzing operation of a program executed in an analysis environment
JP2019036278A (ja) * 2017-08-17 2019-03-07 エーオー カスペルスキー ラボAO Kaspersky Lab ファイルの実行をエミュレートするシステム及び方法
US10437618B2 (en) 2017-08-17 2019-10-08 AO Kaspersky Lab System and method of emulating execution of files
US10838748B2 (en) 2017-08-17 2020-11-17 AO Kaspersky Lab System and method of emulating execution of files based on emulation time

Also Published As

Publication number Publication date
JPWO2004075060A1 (ja) 2006-06-01

Similar Documents

Publication Publication Date Title
US12130919B2 (en) Detection of exploitative program code
Egele et al. A survey on automated dynamic malware-analysis techniques and tools
Sun et al. Android rooting: Methods, detection, and evasion
Guo et al. A study of the packer problem and its solutions
Lam et al. A general dynamic information flow tracking framework for security applications
Lanzi et al. K-Tracer: A System for Extracting Kernel Malware Behavior.
WO2004075060A1 (ja) コンピュータウィルス検出装置
US12001554B2 (en) Just in time memory analysis for malware detection
US9804948B2 (en) System, method, and computer program product for simulating at least one of a virtual environment and a debugging environment to prevent unwanted code from executing
Srivastava et al. Automatic discovery of parasitic malware
Kawakoya et al. Api chaser: Anti-analysis resistant malware analyzer
Vokorokos et al. Application security through sandbox virtualization
Maffia et al. Longitudinal study of the prevalence of malware evasive techniques
Srivastava et al. Operating system interface obfuscation and the revealing of hidden operations
US10902122B2 (en) Just in time memory analysis for malware detection
Bagheri et al. Automated dynamic enforcement of synthesized security policies in android
US11222122B2 (en) Method and system for runtime instrumentation of software methods
Kawakoya et al. Api chaser: Taint-assisted sandbox for evasive malware analysis
Filho et al. Evasion and countermeasures techniques to detect dynamic binary instrumentation frameworks
Neugschwandtner et al. d Anubis–Dynamic Device Driver Analysis Based on Virtual Machine Introspection
Ruggia et al. Unmasking the Veiled: A Comprehensive Analysis of Android Evasive Malware
Brodbeck Covert android rootkit detection: Evaluating linux kernel level rootkits on the android operating system
Kawakoya et al. Stealth loader: Trace-free program loading for analysis evasion
Aboughadareh et al. Mixed-mode malware and its analysis
Chiaramida et al. AppSeer: discovering flawed interactions among Android components

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): BW GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2005502696

Country of ref document: JP

122 Ep: pct application non-entry in european phase