WO2015045043A1 - プロセス検査装置、プロセス検査プログラムおよびプロセス検査方法 - Google Patents

プロセス検査装置、プロセス検査プログラムおよびプロセス検査方法 Download PDF

Info

Publication number
WO2015045043A1
WO2015045043A1 PCT/JP2013/075945 JP2013075945W WO2015045043A1 WO 2015045043 A1 WO2015045043 A1 WO 2015045043A1 JP 2013075945 W JP2013075945 W JP 2013075945W WO 2015045043 A1 WO2015045043 A1 WO 2015045043A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory area
memory
executable
file
inspection
Prior art date
Application number
PCT/JP2013/075945
Other languages
English (en)
French (fr)
Inventor
匠 山本
河内 清人
鐘治 桜井
Original Assignee
三菱電機株式会社
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 三菱電機株式会社 filed Critical 三菱電機株式会社
Priority to JP2015538689A priority Critical patent/JP6000465B2/ja
Priority to PCT/JP2013/075945 priority patent/WO2015045043A1/ja
Priority to US15/024,649 priority patent/US10073973B2/en
Publication of WO2015045043A1 publication Critical patent/WO2015045043A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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
    • 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
    • G06F21/53Monitoring 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 by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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
    • G06F21/54Monitoring 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 by adding security routines or objects to programs
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2101Auditing as a secondary aspect

Definitions

  • the present invention relates to a technique for inspecting a memory area reserved for a process for executing an executable file.
  • anti-virus software detects malware based on a known pattern of program code included in the malware, it cannot detect packed malware, that is, compressed or encrypted malware.
  • malware encrypts communication data, it is difficult to detect communication data including data generated by malware or confidential information stored in a computer.
  • malware impersonate legitimate programs so that they are not detected early.
  • a method of using a legitimate program execution file name (b) a method of replacing a legitimate program execution file with an illegal program execution file, and (c) a memory area for a legitimate program process.
  • impersonation methods such as methods of use.
  • the memory area for the process is simply referred to as “memory area”.
  • static information of a legitimate program is registered in advance, the registered static information is compared with static information of a program to be inspected, and whether or not the program to be inspected is malware. Is to determine.
  • the static information includes information on API (Application Programming Interface) and DLL (Dynamic Link Library), program size, program code hash value, and the like. These static information is stored on the hard disk.
  • API Application Programming Interface
  • DLL Dynamic Link Library
  • APIs and DLLs used by legitimate program processes are registered in advance, and the registered APIs and DLLs are compared with the APIs and DLLs used by the process of the program to be inspected. Is to determine whether or not it is malware.
  • this conventional technology can detect malware that dynamically uses the same API and DLL as the legitimate program even though it can detect malware that dynamically uses an API or DLL that is different from the legitimate program. I can't.
  • This prior art pre-registers the program code stored in the memory area for the process of the legitimate program, compares the registered program code with the program code stored in the memory area of the program to be inspected, and In other words, an illegal program code injected into a memory area of a program to be inspected is detected.
  • an illegal program code injected into a memory area by malware is referred to as an “incorrect code”.
  • dynamic memory area a dynamically secured memory area
  • the conventional technology cannot detect this malicious code. This is because the address of the dynamic memory area changes every time the memory area is secured, so that the dynamic memory area cannot be specified and the dynamic memory areas cannot be compared. Further, since there is a regular program (Just In Time Compiler) that dynamically rewrites the program code, there is a possibility that an incorrect code is erroneously detected when comparing program codes stored in the memory areas.
  • Malware analysts quickly identify the malicious code injected into the memory area, and what function the identified malicious code has in order to quickly report what damage was caused by the security incident caused by the malware It is necessary to analyze. In many conventional techniques, it is necessary to prepare in advance a template that lists static information and dynamic information (API and DLL used by a process) of a regular program (or its process).
  • API and DLL static information and dynamic information
  • An object of the present invention is to enable detection of a program code (injection code) that may be generated in a memory area by, for example, malware.
  • a first memory image representing the contents of the first memory area reserved for the first process for executing the execution file in the memory area of the first computer executing the execution file is acquired.
  • Memory image acquisition unit of A second computer that is not infected with malware that generates malicious program code is caused to execute the executable file, and is reserved for the second process for executing the executable file in the memory area of the second computer.
  • a program code injection code that may be generated in the memory area by malware can be detected.
  • FIG. 2 is a functional configuration diagram of a process inspection apparatus 100 according to Embodiment 1.
  • FIG. 3 is a flowchart showing a process inspection method in the first embodiment.
  • 3 is a functional configuration diagram of a test memory extraction unit 110 according to Embodiment 1.
  • FIG. 4 is a flowchart showing an inspection memory extraction process (S110) in the first embodiment.
  • 6 is a diagram illustrating an example of executable file information 103 according to Embodiment 1.
  • FIG. 6 is a diagram illustrating an example of executable file information 103 according to Embodiment 1.
  • FIG. 3 is a functional configuration diagram of a template memory extraction unit 120 according to Embodiment 1.
  • FIG. 5 is a flowchart showing template memory extraction processing (S120) in the first embodiment.
  • FIG. 6 is a diagram illustrating an example of an installation list 104 according to Embodiment 1.
  • FIG. 6 is a diagram illustrating an example of an installation list 104 according to Embodiment 1.
  • FIG. 3 is a functional configuration diagram of an injection code detection unit 130 according to Embodiment 1.
  • FIG. 6 is a flowchart illustrating an injection code detection process (S130) by a static memory area comparison unit 131 according to the first embodiment.
  • 6 is a diagram illustrating an example of an address list 139 according to Embodiment 1.
  • FIG. 6 is a flowchart showing an injection code detection process (S130) by the dynamic memory area comparison unit 132 in the first embodiment.
  • 3 is an example of a pair list 138 according to the first embodiment. It is a figure which shows an example of injection
  • FIG. 6 is a diagram illustrating an example of an inspection rule list 194 according to Embodiment 1.
  • FIG. 6 is a diagram illustrating an example of an unauthorized code list 195 according to Embodiment 1.
  • FIG. 3 is a functional configuration diagram of a template system update unit 160 according to Embodiment 1.
  • FIG. 5 is a flowchart showing template system update processing by a template system update unit 160 in the first embodiment.
  • FIG. 6 is a diagram illustrating an example of an executable file list 169 according to Embodiment 1.
  • FIG. 2 is a diagram illustrating an example of a hardware configuration of a process inspection apparatus 100 according to Embodiment 1.
  • FIG. It is a block diagram of the process inspection system 200 in Embodiment 2.
  • FIG. 6 is a functional configuration diagram of a process inspection server 220 according to Embodiment 2.
  • FIG. 10 is a flowchart showing a process inspection method in the second embodiment.
  • Embodiment 1 A mode for detecting an illegal program code generated in a memory area by malware will be described.
  • FIG. 1 is a functional configuration diagram of a process inspection apparatus 100 according to the first embodiment. A functional configuration of the process inspection apparatus 100 according to the first embodiment will be described with reference to FIG.
  • the process inspection apparatus 100 is a computer that detects an illegal program code generated in a memory area by malware.
  • the process inspection apparatus 100 includes an inspection memory extraction unit 110 (an example of a first memory image acquisition unit), a template memory extraction unit 120 (an example of a second memory image acquisition unit), an injection code detection unit 130, and an injection code inspection unit. 140.
  • the process inspection apparatus 100 includes an inspection result output unit 150, a template system update unit 160 (an example of a second computer update unit), an inspection rule update unit 170, a template system control unit 180, and an apparatus storage unit 190.
  • the apparatus storage unit 190 stores data used or generated by the process inspection apparatus 100.
  • the device storage unit 190 stores the following data.
  • the process designation information 101 is information designated for specifying a process to be inspected among processes executed by a computer (or computer system) to be inspected.
  • the computer (or computer system) to be inspected is referred to as “target system”.
  • a process to be inspected is referred to as a “target process”.
  • the execution process list 102 is a list of processes executed by the target system to be inspected.
  • the execution file information 103 is information indicating the execution file that is the source of the target process.
  • An executable file is an executable program.
  • the execution file that is the source of the target process is referred to as a “target execution file”.
  • the target execution file is executed using hardware resources (CPU, memory area, etc.) allocated for the target process.
  • the target process is generated by an OS (Operating System) when the target execution file is executed.
  • OS Operating System
  • the installation list 104 is a list of executable files installed on a computer (or a computer system) that is not infected with malware.
  • a computer or computer system that is not infected with malware is referred to as a “template system”.
  • the inspection memory image 191 (an example of the first memory image) is data representing the contents of the memory area reserved for the target process in the memory area of the target system (an example of the first computer).
  • the template memory image 192 (an example of the second memory image) is data representing the contents of the memory area reserved for the process corresponding to the target process in the memory area of the template system (an example of the second computer). .
  • the process corresponding to the target process is a process for executing the target execution file among the processes executed by the template system.
  • the injection code list 193 is a list of information for specifying program codes (hereinafter referred to as injection codes) that are included in the memory area represented by the test memory image 191 but are not included in the memory area represented by the template memory image 192. It is.
  • the inspection rule list 194 is a list of inspection rules.
  • the inspection rule is a rule satisfied by an illegal program code (hereinafter referred to as an illegal code) generated in the memory area by malware.
  • the illegal code list 195 is a list of illegal codes.
  • the inspection memory extraction unit 110 generates an inspection memory image 191 and execution file information 103 based on the process designation information 101 and the execution process list 102.
  • the template memory extraction unit 120 generates a template memory image 192 based on the execution file information 103 and the installation list 104.
  • the injection code detection unit 130 generates an injection code list 193 based on the inspection memory image 191 and the template memory image 192.
  • the injection code inspection unit 140 generates an unauthorized code list 195 based on the injection code list 193 and the inspection rule list 194.
  • the inspection result output unit 150 generates an inspection result file 196 based on the unauthorized code list 195.
  • the template system update unit 160 periodically operates as follows. Based on the execution file information 103 and the installation list 104, the template system update unit 160 identifies an execution file that is installed in the target system but not installed in the template system. The template system update unit 160 installs the identified execution file in the template system, and updates the installation list 104.
  • the inspection rule update unit 170 updates the inspection rule list 194 according to the user's specification.
  • the template system control unit 180 operates a virtual machine that functions as a template system.
  • the process inspection apparatus 100 is a computer that functions as a target system and a template system and inspects a target process of the target system.
  • FIG. 2 is a flowchart showing the process inspection method according to the first embodiment. The process inspection method in Embodiment 1 is demonstrated based on FIG.
  • the inspection memory extraction unit 110 extracts the inspection memory image 191 from the memory of the target system based on the process designation information 101 (S110).
  • the template memory extraction unit 120 extracts the template memory image 192 corresponding to the inspection memory image 191 from the template system (S120).
  • the injection code detection unit 130 compares the inspection memory image 191 and the template memory image 192, and generates an injection code list 193 (S130).
  • the injection code inspection unit 140 generates an unauthorized code list 195 based on the injection code list 193 and the inspection rule list 194 (S140).
  • the inspection result output unit 150 generates an inspection result file 196 based on the unauthorized code list 195 (S150).
  • S ⁇ b> 110 the user inputs the process designation information 101 to the process inspection apparatus 100.
  • the inspection memory extraction unit 110 extracts the inspection memory image 191 from the memory of the target system based on the process designation information 101. After S110, the process proceeds to S120.
  • FIG. 3 is a functional configuration diagram of the test memory extraction unit 110 according to the first embodiment.
  • the inspection memory extraction unit 110 includes a process monitoring unit 111 and a memory image extraction unit 112.
  • the process monitoring unit 111 identifies the process ID of the target process based on the process designation information 101 and the execution process list 102.
  • the process ID is an example of an identifier for identifying a process.
  • the process ID may be replaced with a process name.
  • the process monitoring unit 111 may specify the process ID of the target process without using the execution process list 102.
  • the memory image extraction unit 112 extracts the inspection memory image 191 from the memory of the target system based on the process ID specified by the process monitoring unit 111. Further, the memory image extraction unit 112 generates executable file information 103.
  • FIG. 4 is a flowchart showing the inspection memory extraction process (S110) in the first embodiment.
  • the inspection memory extraction process (S110) in the first embodiment will be described with reference to FIG.
  • the process monitoring unit 111 determines whether the process designation information 101 indicates a port number or a process ID.
  • the process designation information 101 is information designated for specifying a target process to be inspected. If the process designation information 101 indicates a port number, the process proceeds to S112. If the process designation information 101 indicates a process ID, the process proceeds to S113.
  • the process monitoring unit 111 acquires the process ID of the process that performs communication using the port identified by the port number based on the port number indicated by the process designation information 101.
  • the process monitoring unit 111 acquires a process ID by executing, for example, netstat, process monitor, or TCP view.
  • netstat is a function of Windows
  • Process Monitor and “TCP View” are tools provided by Windows.
  • Windows is a registered trademark (the same applies hereinafter).
  • the execution process list 102 includes a process ID and a port number associated with each execution process, and the process monitoring unit 111 acquires a process ID associated with the corresponding port number from the execution process list 102. After S112, the process proceeds to S113.
  • the memory image extraction unit 112 extracts the inspection memory image 191 from the memory of the target system based on the process ID indicated by the process designation information 101 or the process ID acquired in S112.
  • the inspection memory image 191 is data representing the contents of the memory area reserved for the target process in the memory area of the target system.
  • the inspection memory image 191 includes usage information and protection information of the corresponding memory area.
  • the inspection memory image 191 includes the PE header of the target process.
  • the usage information of the memory area indicates an address range such as a program area, a data area, a stack area, and a heap area constituting the memory area.
  • the program area and the data area are memory areas allocated to a process when an OS (Operating System) loads a program (executable file).
  • the program area, the data area, and the stack area are examples of static memory areas that are secured at the start of execution of the execution file.
  • the heap area is an example of a dynamic memory area secured during execution of the execution file.
  • the protection information of the memory area indicates the protection attribute of the memory area for each address unit (for example, every 4 bytes). “Readable” in which reading is permitted, “writable” in which writing is permitted, and “executable” in which execution is permitted are examples of protection attributes.
  • the PE header is rewritten by the OS after the program (executable file) is loaded.
  • the memory image extraction unit 112 extracts the inspection memory image 191 by executing ReadProcessMemory, Volatility, or LoadPE.
  • ReadProcessMemory is an API (Application Program Interface) provided by Windows.
  • Volatility or LoadPE is a free memory dump tool.
  • the execution process list 102 includes a process ID and a memory image in association with each execution process, and the memory image extraction unit 112 stores the memory image (inspection memory image 191) associated with the corresponding process ID. 102. After S113, the process proceeds to S114.
  • the memory image extraction unit 112 generates the execution file information 103 based on the process ID indicated by the process designation information 101 or the process ID acquired in S112.
  • the execution file information 103 is information indicating the target execution file that is the source of the target process.
  • the execution file information 103 includes the name, path, version, message digest, and the like of the target execution file (see FIG. 5).
  • the memory image extraction unit 112 calculates a message digest by calculating a hash function such as MD5, SHA1, or SHA256.
  • the executable file information 103 includes information on the shared library (.dll) in addition to the information on the target executable file (.exe) (see FIG. 6).
  • these shared libraries are also called target executable files.
  • 5 and 6 are diagrams illustrating examples of the executable file information 103 according to the first embodiment.
  • the template memory extraction unit 120 extracts the template memory image 192 corresponding to the inspection memory image 191 from the memory of the template system. After S120, the process proceeds to S130.
  • FIG. 7 is a functional configuration diagram of the template memory extraction unit 120 according to the first embodiment.
  • the template memory extraction unit 120 includes an installation unit 121, a process execution unit 122, and a memory image extraction unit 123.
  • the installation unit 121 determines whether the target execution file is installed in the template system based on the execution file information 103 and the installation list 104. If the target execution file is not installed in the template system, the installation unit 121 installs the target execution file in the template system and updates the installation list 104.
  • the process execution unit 122 causes the template system to execute the target execution file. At this time, the template system generates a process to execute the target execution file.
  • a process generated by the template system is referred to as a “template process”.
  • the memory image extraction unit 123 extracts a template memory image 192 representing the contents of the memory area reserved for the template process from the memory of the template system.
  • FIG. 8 is a flowchart showing template memory extraction processing (S120) in the first embodiment.
  • the template memory extraction process (S120) in the first embodiment will be described with reference to FIG.
  • the installation unit 121 determines whether the target execution file is installed in the template system based on the execution file information 103 and the installation list 104. That is, the installation unit 121 determines whether or not the target execution file needs to be installed in the template system.
  • the installation unit 121 determines that the target execution file is installed in the template system.
  • the installation list 104 shown in FIG. 9 includes the same information (name, path, version, message digest) as the executable file information 103 shown in FIG. In this case, the installation unit 121 determines that the target execution file (calc.exe) is installed in the template system.
  • the installation unit 121 determines that the target execution file is not installed in the template system.
  • the installation list 104 shown in FIG. 10 includes information that differs from the executable file information 103 shown in FIG.
  • the installation unit 121 determines that the target execution file (calc.exe) is not installed in the template system.
  • 9 and 10 are diagrams illustrating an example of the installation list 104 according to the first embodiment.
  • the process proceeds to S126. If the target execution file is not installed in the template system, that is, if it is necessary to install the target execution file in the template system, the process proceeds to S122.
  • the installation unit 121 acquires the same execution file as the target execution file based on the execution file information 103. For example, the installation unit 121 acquires the same executable file as the target executable file from the file server via the Internet. After S122, the process proceeds to S123.
  • step S123 the installation unit 121 performs a virus check on the execution file acquired in step S122, and determines whether the execution file is infected with a virus. For example, the installation unit 121 performs virus inspection by executing free or commercially available anti-virus software. If it is determined that the executable file is infected with a virus, the installation unit 121 outputs a warning notifying that the executable file to be installed in the template system is infected with the virus. Then, the template memory extraction process (S120) ends. In addition, the process inspection apparatus 100 does not perform the process after the template memory extraction process (S120) and ends the process inspection process. If it is determined that the executable file is not infected with a virus, the process proceeds to S124.
  • the installation unit 121 performs virus inspection by executing free or commercially available anti-virus software. If it is determined that the executable file is infected with a virus, the installation unit 121 outputs a warning notifying that the executable file to be installed in the template system is inf
  • the installation unit 121 installs the execution file acquired in S122 in the template system. However, when an execution file (same name file) having the same name as the execution file acquired in S122 is installed in the template system, the installation unit 121 installs the acquired execution file after uninstalling the same name file.
  • an executable file can be installed in the template system. For example, the vmrun. Of VMware Server via the OS (host OS) of the process inspection apparatus 100 is used. By making exe read the script, the guest OS can be controlled from the host OS.
  • the process proceeds to S125.
  • the installation unit 121 updates the installation list 104 by adding or overwriting the information of the executable file installed in S124.
  • the installation list 104 of FIG. 9 is obtained by overwriting the information of the execution file “calc.exe” included in the installation list 104 of FIG.
  • the process proceeds to S126.
  • the process execution unit 122 causes the template system to execute the target execution file. That is, the process execution unit 122 causes the template system to execute a process (template process) for executing the target execution file. After S126, the process proceeds to S127.
  • the memory image extraction unit 123 identifies the process ID of the template process executed in S126. Then, the memory image extraction unit 123 extracts a template memory image 192 representing the contents of the memory area reserved for the template process from the template system memory based on the specified process ID.
  • the extraction method of the template memory image 192 is the same as the extraction method of the inspection memory image 191 (S113 in FIG. 4). Similar to the test memory image 191, the template memory image 192 includes usage information and protection information of the corresponding memory area.
  • the template memory image 192 includes a PE header of the template process.
  • the injection code detection unit 130 compares the inspection memory image 191 and the template memory image 192 to generate an injection code list 193. After S130, the process proceeds to S140.
  • FIG. 11 is a functional configuration diagram of the injection code detection unit 130 according to the first embodiment.
  • the injection code detection unit 130 includes a static memory area comparison unit 131 and a dynamic memory area comparison unit 132.
  • the static memory area comparison unit 131 compares the static memory area represented by the test memory image 191 with the static memory area represented by the template memory image 192, and generates an injection code list 193 for the static memory area.
  • the static memory area is a memory area secured at the start of execution of the executable file.
  • the dynamic memory area comparison unit 132 compares the dynamic memory area represented by the test memory image 191 with the dynamic memory area represented by the template memory image 192, and generates an injection code list 193 for the dynamic memory area.
  • the dynamic memory area is a memory area secured during execution of the execution file.
  • the injection code list 193 is a list indicating information on continuous memory areas (hereinafter referred to as injection code blocks) in which injection codes are stored in the memory area represented by the inspection memory image 191.
  • FIG. 12 is a flowchart showing the injection code detection process (S130) by the static memory area comparison unit 131 in the first embodiment.
  • the injection code detection process (S130) by the static memory area comparison unit 131 will be described with reference to FIG.
  • step S ⁇ b> 1311 the static memory area comparison unit 131 aligns base addresses (start addresses) of the test memory image 191 and the template memory image 192. After S1311, the process proceeds to S1312.
  • step S1312 the static memory area comparison unit 131 specifies a static memory area among the memory areas represented by the test memory image 191 based on the usage information included in the test memory image 191. Then, the static memory area comparison unit 131 sets the start address of the identified static memory area in the pointer P.
  • the static memory area in the address unit for example, 1 byte or 4 bytes indicated by the pointer P is referred to as “static memory area [P]”.
  • the static memory area comparison unit 131 executes a memory area (executable area) in which the static memory area [P] in the inspection memory image 191 can be executed based on the protection information included in the inspection memory image 191. It is determined whether or not. If the static memory area [P] in the inspection memory image 191 is an executable area, the process proceeds to S1314. If the static memory area [P] in the inspection memory image 191 is not an executable area, the process proceeds to S1316.
  • step S ⁇ b> 1314 the static memory area comparison unit 131 compares the contents of the static memory areas [P] of the inspection memory image 191 and the template memory image 192. That is, the static memory area comparison unit 131 compares the binary code of the static memory area [P] in the inspection memory image 191 with the binary code of the static memory area [P] in the template memory image 192. To do. When the contents of the static memory area [P] of the inspection memory image 191 and the template memory image 192 are the same, the process proceeds to S1316. If the contents of the static memory area [P] of the inspection memory image 191 and the template memory image 192 are different, the process proceeds to S1315.
  • step S1315 the static memory area comparison unit 131 sets the address indicated by the pointer P, that is, the address of a static memory area whose contents are different from the template memory image 192 in the static memory area indicated by the test memory image 191, to the address list 139.
  • FIG. 13 is a diagram illustrating an example of the address list 139 according to the first embodiment.
  • the address list 139 in FIG. 13 includes “address” and “code” in association with each other.
  • “Address” indicates the address indicated by the pointer P
  • “Code” indicates the contents (program code) of the static memory area in address units.
  • the static memory area comparison unit 131 determines whether or not the address indicated by the pointer P is the final address of the static memory area in the test memory image 191 based on the usage information included in the test memory image 191. Determine. When the address indicated by the pointer P is the final address of the static memory area in the test memory image 191, the process proceeds to S1318. If the address indicated by the pointer P is not the final address of the static memory area in the test memory image 191, the process proceeds to S1317.
  • the static memory area comparison unit 131 updates the address set in the pointer P to the next address. For example, the static memory area comparison unit 131 updates the address indicated by the pointer P to the next address “4920B9” by counting up the current address “4920B8” set in the pointer P. After S1317, the process returns to S1313.
  • the static memory area comparison unit 131 generates the injection code list 193S based on the address list 139.
  • the injection code list 193 in the static memory area is referred to as “injection code list 193S”.
  • the injection code list 193S is a list of static memory areas specified by the address list 139 among the static memory areas represented by the inspection memory image 191. That is, the injection code list 193S is a list for specifying program codes (injection codes) that are included in the static memory area represented by the test memory image 191 but are not included in the static memory area represented by the template memory image 192. It is.
  • the static memory area comparison unit 131 generates the injection code list 193S of FIG. 14 based on the address list 139 of FIG.
  • the injection code list 193S of FIG. 14 indicates “block number”, “start address”, and “size” of the injection code block.
  • FIG. 14 is a diagram showing an example of the injection code list 193S in the first embodiment. After S1318, the injection code detection process (S130) by the static memory area comparison unit 131 ends.
  • FIG. 15 is a flowchart showing the injection code detection process (S130) by the dynamic memory area comparison unit 132 in the first embodiment.
  • the injection code detection process (S130) by the dynamic memory area comparison unit 132 will be described with reference to FIG.
  • step S ⁇ b> 1321 the dynamic memory area comparison unit 132 specifies a dynamic memory area among the memory areas represented by the test memory image 191 based on the usage information included in the test memory image 191.
  • the dynamic memory area comparison unit 132 specifies an executable memory area (executable area) among the memory areas represented by the test memory image 191 based on the protection information included in the test memory image 191.
  • the dynamic memory area comparison unit 132 generates a list La of information indicating continuous executable areas in the dynamic memory area represented by the test memory image 191.
  • a continuous executable area in the dynamic memory area is referred to as an “executable block”.
  • the dynamic memory area comparison unit 132 generates an executable block list Lb of the template memory image 192 in the same manner as the executable block list La of the test memory image 191. After S1321, the process proceeds to S1322.
  • the dynamic memory area comparison unit 132 selects one unselected executable block Ba from the list La of the test memory image 191.
  • the executable block indicated by the list La is referred to as “executable block Ba”.
  • the dynamic memory area comparison unit 132 selects the executable block Ba in order from the top of the list La.
  • S1323 to S1327 are executed for each executable block Ba selected in S1322.
  • the dynamic memory area comparison unit 132 selects one unselected executable block Bb from the list Lb of the template memory image 192.
  • the executable block indicated by the list Lb is referred to as “executable block Bb”.
  • the dynamic memory area comparison unit 132 selects the executable block Bb in order from the top of the list Lb.
  • the dynamic memory area comparison unit 132 extracts an operation code from the program code included in the executable block Ba selected in S1322, and generates a list of extracted operation codes.
  • the dynamic memory area comparison unit 132 extracts an operation code from the program code included in the executable block Bb selected in S1323, and generates a list of extracted operation codes.
  • the dynamic memory area comparison unit 132 calculates a distance D between the list of opcodes extracted from the executable block Ba and the list of opcodes extracted from the executable block Bb.
  • the distance D represents the similarity between the operation code list extracted from the executable block Ba and the operation code list extracted from the executable block Bb. The smaller the distance D, the higher the similarity. Examples of the distance D include a Hamming distance and a Levenshtein distance (also referred to as an edit distance).
  • step S1325 the dynamic memory area comparison unit 132 compares the distance D calculated in step S1324 with a predetermined similarity threshold value ⁇ . If the distance D is less than or equal to the threshold ⁇ , the process proceeds to S1326. If the distance D is greater than the threshold ⁇ , the process proceeds to S1327.
  • the dynamic memory area comparison unit 132 sets the information on the executable block Ba selected in S1322, the information on the executable block Bb selected in S1323, and the distance D calculated in S1324 in the pair list 138. .
  • the dynamic memory area comparison unit 132 operates as follows.
  • the information of the executable block Bb and the distance D set in the pair list 138 together with the executable block Ba selected in S1322 are referred to as “executable block Bb ′ information” and “distance D ′”.
  • the dynamic memory area comparison unit 132 compares the distance D ′ set in the pair list 138 with the distance D calculated in S1324. When the distance D is smaller than the distance D ′, the dynamic memory area comparison unit 132 updates the information on the executable block Bb ′ set in the pair list 138 with the information on the executable block Bb selected in S1323.
  • the dynamic memory area comparison unit 132 updates the distance D ′ set in the pair list 138 to the distance D calculated in S1324.
  • the dynamic memory area comparison unit 132 does not update the information on the executable block Bb ′ set in the pair list 138 and the distance D ′. That is, the dynamic memory area comparison unit 132 does not have to set the information of the executable block Bb selected in S1323 and the distance D calculated in S1324 in the pair list 138.
  • FIG. 16 is an example of the pair list 138 according to the first embodiment.
  • the dynamic memory area comparison unit 132 generates a pair list 138 as shown in FIG.
  • the pair list 138 in FIG. 16 indicates a block number for identifying the executable block Ba, a block number for identifying the executable block Bb, and a distance D between the executable block Ba and the executable block Bb.
  • S1326 see FIG. 15
  • the process proceeds to S1327.
  • the dynamic memory area comparison unit 132 determines whether there is an executable block Bb not selected in S1323 for the executable block Ba selected in S1322. If there is an executable block Bb that has not been selected, the process returns to S1323. If there is no executable block Bb not selected, the process proceeds to S1323.
  • the dynamic memory area comparison unit 132 determines whether there is an executable block Ba that has not been selected in S1322. If there is an executable block Ba that has not been selected, the process returns to S1322. If there is no executable block Ba that has not been selected, the process proceeds to S1329.
  • the dynamic memory area comparison unit 132 generates the injection code list 193D based on the list La and the pair list 138 of the inspection memory image 191.
  • the injection code list 193 in the dynamic memory area is referred to as “injection code list 193D”.
  • the injection code list 193D indicates information on the executable blocks Ba that are not set in the pair list 138 among the information on the executable blocks Ba included in the list La of the test memory image 191. That is, the injection code list 193D is a list for specifying dissimilar executable blocks Ba that are not similar to any of the executable blocks Bb included in the template memory image 192 among the executable blocks Ba included in the test memory image 191. It is.
  • the dynamic memory area comparison unit 132 generates the injection code list 193D of FIG. 17 based on the pair list 138 of FIG.
  • the injection code list 193D of FIG. 17 indicates “block number”, “start address”, and “size” of dissimilar executable blocks Ba (injection code block).
  • FIG. 17 is a diagram showing an example of the injection code list 193D in the first embodiment. After S1329, the injection code detection process (S130) by the dynamic memory area comparison unit 132 ends.
  • the injection code inspection unit 140 extracts the injection code from the memory area represented by the inspection memory image 191 based on the injection code list 193. For each extracted injection code, the injection code inspection unit 140 determines whether the injection code matches at least one of the inspection rules included in the inspection rule list 194, that is, an unauthorized program in which the injection code is generated by malware. It is determined whether it is a code (illegal code). Then, the injection code inspection unit 140 generates an unauthorized code list 195 for specifying an unauthorized code.
  • an injection code can be read as an injection code block
  • an illegal code can be read as an illegal code block.
  • the injection code block means the contents of a continuous memory area where the injection code is stored
  • the illegal code block means the contents of a continuous memory area where the illegal code is stored.
  • FIG. 18 is a diagram illustrating an example of the inspection rule list 194 according to the first embodiment.
  • An example of the inspection rule list 194 in the first embodiment will be described with reference to FIG.
  • the inspection rule list 194 indicates a “rule number” for identifying the inspection rule and the content of the “inspection rule”.
  • the inspection rule with the rule number “1” means that an injection code that matches all the rules (1), (2), and (3) is an illegal code.
  • rules (1) to (3) are the following rules.
  • Rule (1) means a feature that includes a program code for deleting an executable file.
  • the rule (2) means a feature that includes a program code for exhaustively searching a stored file.
  • Rule (3) means that the program code for uploading files to the Internet is included. Although the program code meaning each of the rules (1) to (3) performs a normal operation, the lottery code including all these program codes is likely to be an illegal code.
  • FIG. 19 is a diagram showing an example of the unauthorized code list 195 in the first embodiment.
  • An example of the unauthorized code list 195 in the first embodiment will be described with reference to FIG.
  • the incorrect code list 195 indicates the “code number”, “start address”, and “size” of the incorrect code block, and the “rule number” of the inspection rule to which the incorrect code block corresponds.
  • the inspection result output unit 150 generates an inspection result file 196 based on the unauthorized code list 195, and outputs the generated inspection result file 196.
  • the inspection result output unit 150 displays the contents of the inspection result file 196 on the display device.
  • the inspection result file 196 includes a process ID of the target process specified by the process specification information 101, information indicating whether or not the target process includes a malicious code, information of a malicious code included in the target process, and the like.
  • FIG. 20 is a functional configuration diagram of the template system update unit 160 according to the first embodiment. A functional configuration of the template system update unit 160 according to the first embodiment will be described with reference to FIG.
  • the template system update unit 160 includes an execution file list generation unit 161, an installation list confirmation unit 162, an execution file acquisition unit 163, and an installation unit 164.
  • the execution file list generation unit 161 generates a list of execution files installed in the target system.
  • the list of execution files installed in the target system is referred to as “execution file list 169”.
  • the installation list confirmation unit 162 Based on the execution file list 169 and the installation list 104, the installation list confirmation unit 162 identifies an execution file that is installed in the target system but not installed in the template system.
  • the execution file acquisition unit 163 acquires the execution file specified by the installation list confirmation unit 162.
  • the installation unit 164 installs the execution file acquired by the execution file acquisition unit 163 in the template system, and updates the installation list 104.
  • FIG. 21 is a flowchart showing template system update processing by the template system update unit 160 in the first embodiment.
  • the template system update unit 160 periodically executes the template system update process shown in FIG.
  • the executable file list generation unit 161 generates an executable file list 169 indicating information on the executable files installed in the target system.
  • the execution file list 169 includes the name, path, version, message digest, and the like of the execution file installed in the target system (see FIG. 22).
  • the executable file list generation unit 161 calculates a message digest by calculating a hash function such as MD5, SHA1, or SHA256.
  • FIG. 22 is a diagram illustrating an example of the execution file list 169 according to the first embodiment. After S161, the process proceeds to S162.
  • the installation list confirmation unit 162 identifies an execution file that is not included in the installation list 104 among the execution files included in the execution file list 169.
  • the execution file list 169 in FIG. 22 is compared with the installation list 104 in FIG. 10, the execution files “calc.exe”, “netpad.exe”, “explorer.exe” are included in both the execution file list 169 and the installation list 104. "User32.dll” and “kernel32.dll” are included.
  • “calc.exe” included in the execution file list 169 and “calc.exe” included in the installation list 104 have different versions and message digests. Therefore, the installation list confirmation unit 162 identifies an execution file “calc.exe” included in the execution file list 169 as an execution file not included in the installation list 104. After S162, the process proceeds to S163.
  • the executable file acquisition unit 163 acquires the executable file specified in S162.
  • the executable file acquisition unit 163 acquires an executable file from a file server via the Internet. After S163, the process proceeds to S164.
  • the installation unit 164 performs a virus check on the executable file acquired in S163, and determines whether or not the executable file is infected with a virus. For example, the installation unit 164 performs virus inspection by executing free or commercially available anti-virus software. If it is determined that the executable file is infected with a virus, the installation unit 164 outputs a warning notifying that the executable file to be installed in the template system is infected with the virus. Then, the template system update process ends. If it is determined that the executable file is not infected with a virus, the process proceeds to S165.
  • the installation unit 164 installs the execution file acquired in S163 in the template system. However, when an execution file (same name file) having the same name as the execution file acquired in S163 is installed in the template system, the installation unit 121 installs the acquired execution file after uninstalling the same name file. .
  • an executable file can be installed in the template system. For example, the vmrun. Of VMware Server via the OS (host OS) of the process inspection apparatus 100 is used. By making exe read the script, the guest OS can be controlled from the host OS.
  • the process proceeds to S166.
  • the installation unit 164 updates the installation list 104 by adding or overwriting the information of the executable file installed in S165.
  • the installation list 104 of FIG. 9 is obtained by overwriting the information of the execution file “calc.exe” included in the installation list 104 of FIG.
  • the template system update process ends.
  • FIG. 23 is a diagram illustrating an example of a hardware configuration of the process inspection apparatus 100 according to the first embodiment. An example of the hardware configuration of the process inspection apparatus 100 according to the first embodiment will be described with reference to FIG.
  • the process inspection apparatus 100 is a computer including an arithmetic device 901, an auxiliary storage device 902, a main storage device 903, a communication device 904, and an input / output device 905.
  • the arithmetic device 901, auxiliary storage device 902, main storage device 903, communication device 904, and input / output device 905 are connected to the bus 909.
  • the arithmetic device 901 is a CPU (Central Processing Unit) that executes a program.
  • the auxiliary storage device 902 is, for example, a ROM (Read Only Memory), a flash memory, or a hard disk device.
  • the main storage device 903 is, for example, a RAM (Random Access Memory).
  • the communication device 904 performs communication via the Internet, a LAN (local area network), a telephone line network, or other networks in a wired or wireless manner.
  • the input / output device 905 is, for example, a mouse, a keyboard, or a display device.
  • the program is normally stored in the auxiliary storage device 902, loaded into the main storage device 903, read into the arithmetic device 901, and executed by the arithmetic device 901.
  • an operating system OS
  • a program an example of a process inspection program
  • the OS and the program that realizes the functions described as “ ⁇ units” are loaded into the main storage device 903 and executed by the arithmetic device 901. “ ⁇ part” can be read as “ ⁇ processing” and “ ⁇ process”.
  • FIG. 23 shows an example of the hardware configuration of the process inspection apparatus 100 according to the first embodiment, and the hardware configuration of the process inspection apparatus 100 may be different from the configuration shown in FIG. Note that the method according to the first embodiment (an example of a process inspection method) can be realized by a procedure described using a flowchart or the like, or a procedure partially different therefrom.
  • the process inspection apparatus 100 identifies the injection code generated in the memory area (including the dynamic memory area) of the target system by comparing the inspection memory image 191 and the template memory image 192. By analyzing the injection code based on the inspection rule list 194, the process inspection apparatus 100 can identify only a suspicious injection code as an illegal code and reduce false detection of the illegal code. Since the process inspection apparatus 100 periodically updates the template system by the template system update unit 160, correct attribute information regarding the process for executing the execution file is not necessary.
  • Embodiment 2 FIG. In the first embodiment, the form in which the process inspection apparatus 100 functions as the target system and the template system has been described. In the second embodiment, a mode in which a device that functions as a target system and a device that functions as a template system are different will be described. Hereinafter, items different from the first embodiment will be mainly described. Matters whose description is omitted are the same as those in the first embodiment.
  • FIG. 24 is a configuration diagram of the process inspection system 200 according to the second embodiment. The configuration of the process inspection system 200 according to the second embodiment will be described with reference to FIG.
  • the process inspection system 200 includes a process inspection client 210 and a process inspection server 220 (an example of a process inspection apparatus).
  • the process inspection client 210 and the process inspection server 220 communicate with each other via the network 201.
  • the Internet or an in-house LAN (local area network) is an example of the network 201.
  • the process inspection client 210 is a computer that functions as a target system.
  • the process inspection client 210 includes an inspection memory extraction unit 110, a process inspection request unit 211, and a client storage unit 219.
  • the inspection memory extraction unit 110 has the same functional configuration as that of the process inspection apparatus 100 described in the first embodiment.
  • the process inspection request unit 211 transmits the inspection memory image 191 and the execution file information 103 generated by the inspection memory extraction unit 110 to the process inspection server 220 and receives the inspection result file 196 from the process inspection server 220.
  • the client storage unit 219 is a storage unit of the process inspection client 210.
  • FIG. 25 is a functional configuration diagram of the process inspection server 220 according to the second embodiment. A functional configuration of the process inspection server 220 according to the second embodiment will be described with reference to FIG.
  • the process inspection server 220 (an example of a process inspection apparatus) is a computer that functions as a template system.
  • the process inspection server 220 includes a process inspection reception unit 221 and a server storage unit 229. Prepare.
  • the process inspection reception unit 221 (an example of a first memory image acquisition unit) receives the inspection memory image 191 and the execution file information 103 from the process inspection client 210 and transmits the inspection result file 196 to the process inspection server 220.
  • the server storage unit 229 is a storage unit of the process inspection server 220.
  • FIG. 26 is a flowchart showing a process inspection method according to the second embodiment. A process inspection method according to the second embodiment will be described with reference to FIG.
  • the flowchart of FIG. 26 includes S210 to S240 in addition to the processing described in the first embodiment (see FIG. 2).
  • the inspection memory extraction unit 110 of the process inspection client 210 generates the inspection memory image 191 and the execution file information 103.
  • the generation method of the inspection memory image 191 and the execution file information 103 is as described in the first embodiment. After S110, the process proceeds to S210.
  • step S ⁇ b> 210 the process inspection request unit 211 of the process inspection client 210 transmits the inspection memory image 191 and the execution file information 103 to the process inspection server 220. After S210, the process proceeds to S220.
  • the process inspection receiving unit 221 of the process inspection server 220 receives the inspection memory image 191 and the execution file information 103 from the process inspection client 210. After S220, the process proceeds to S130.
  • the process inspection server 220 In S130 to S150, the process inspection server 220 generates an inspection result file 196.
  • the method for generating the inspection result file 196 is as described in the first embodiment. After S150, the process proceeds to S230.
  • the process inspection receiving unit 221 of the process inspection server 220 transmits the inspection result file 196 to the process inspection client 210. After S230, the process proceeds to S240.
  • the process inspection request unit 211 of the process inspection client 210 receives the inspection result file 196 from the process inspection server 220, and outputs the received inspection result file 196.
  • the process inspection request unit 211 displays the contents of the inspection result file 196 on the display device.
  • the process inspection can be performed in the cloud (process inspection server 220) that exists remotely. That is, a single process inspection server 220 can inspect processes of a plurality of process inspection clients 210.
  • the cost required for managing the template system can be reduced.
  • the process of a plurality of computers in the in-house system can be inspected by providing one template system (process inspection server 220) in the in-house system.
  • the computer environment means an OS version, a patch installation state, an installed application, and the like.
  • Each embodiment is an example of the form of the process inspection apparatus 100 and the process inspection system 200. That is, the process inspection apparatus 100 and the process inspection system 200 may not include a part of the function or configuration described in each embodiment. In addition, the process inspection apparatus 100 and the process inspection system 200 may have functions or configurations that are not described in each embodiment. Furthermore, some or all of the embodiments may be combined as long as no contradiction occurs.
  • 100 process inspection device 101 process designation information, 102 execution process list, 103 execution file information, 104 installation list, 110 inspection memory extraction unit, 111 process monitoring unit, 112 memory image extraction unit, 120 template memory extraction unit, 121 installation unit 122, Process execution unit, 123 Memory image extraction unit, 130 Injection code detection unit, 131 Static memory region comparison unit, 132 Dynamic memory region comparison unit, 138 Pair list, 139 address list, 140 Injection code inspection unit, 150 inspection Result output unit, 160 template system update unit, 161 execution file list generation unit, 162 installation list confirmation unit, 163 execution file acquisition unit, 164 installation unit, 1 9 Execution file list, 170 Inspection rule update unit, 180 Template system control unit, 190 Device storage unit, 191 Inspection memory image, 192 Template memory image, 193 Injection code list, 194 Inspection rule list, 195 Invalid code list, 196 Inspection result File, 200 process inspection system, 201 network, 210 process inspection client, 211 process inspection request unit, 219 client storage unit, 220 process inspection server, 221 process inspection

Abstract

 検査メモリ抽出部110は対象システムのメモリ領域から検査メモリイメージ191を抽出する。テンプレートメモリ抽出部120はマルウェアに感染していないテンプレートシステムからテンプレートメモリイメージ192を抽出する。注入コード検出部130は検査メモリイメージ191とテンプレートメモリイメージ192とを比較し、注入コードリスト193を生成する。注入コード検査部140は注入コードリスト193と検査ルールリスト194とに基づいて不正コードリスト195を生成する。検査結果出力部150は不正コードリスト195に基づいて検査結果ファイル196を生成する。

Description

プロセス検査装置、プロセス検査プログラムおよびプロセス検査方法
 本発明は、実行ファイルを実行するためのプロセス用に確保されたメモリ領域を検査する技術に関するものである。
 ウィルスまたはトロイの木馬など、マルウェアと呼ばれる不正なプログラムによって、企業内の機密情報が企業内のコンピュータから外部のコンピュータへ送信されるセキュリティ事故(インシデント)が多発している。
 マルウェアを早期に発見するために、アンチウィルスベンダが提供するウィルス対策ソフトを導入している企業は多い。
 また、通信データの中に不正なプログラムまたは機密情報が含まれていないことを確認することによって、マルウェアの感染および機密情報の漏洩を防止する対策も導入されている。
 しかし、ウィルス対策ソフトは、マルウェアに含まれるプログラムコードの既知のパターンを基にマルウェアの検出を行うため、パッキングされたマルウェア、つまり、圧縮または暗号化されたマルウェアを検出することができない。
 また、マルウェアが通信データを暗号化する場合、マルウェアによって生成されるデータまたはコンピュータに記憶されている機密情報を含む通信データを検出することは困難である。
 さらに、多くのマルウェアは、早期に検知されないように、正規のプログラムになりすましている。
 例えば、(a)正規のプログラムの実行ファイル名を利用する方法、(b)正規のプログラムの実行ファイルを不正なプログラムの実行ファイルに置き換える方法、(c)正規のプログラムのプロセス用のメモリ領域を利用する方法などのなりすまし方法がある。以下、プロセス用のメモリ領域を単に「メモリ領域」という。
 一方、マルウェアを検知するための従来技術がある。
 この従来技術は、正規のプログラムの静的な情報をあらかじめ登録し、登録した静的な情報と検査対象のプログラムの静的な情報とを比較し、検査対象のプログラムがマルウェアであるか否かを判定する、というものである。静的な情報は、API(Application Programming Interface)およびDLL(Dynamic Link Library)に関する情報、プログラムのサイズ、プログラムコードのハッシュ値などの情報である。これらの静的な情報はハードディスクに保存される。
 しかし、この従来技術では、上記(a)(b)の方法によって正規のプログラムになりすますマルウェアを検知することはできても、上記(c)の方法によって正規のプログラムになりすますマルウェアを検知することはできない。上記(c)の方法の場合、ハードディスクに保存される静的な情報が改ざんされないため、ハードディスクに保存される静的な情報が正規のプログラムの静的な情報と一致するためである。
 また、上記(c)の方法に対処することが可能な従来技術がある。
 この従来技術は、正規のプログラムのプロセスが利用するAPIおよびDLLをあらかじめ登録し、登録したAPIおよびDLLと検査対象のプログラムのプロセスが利用しているAPIおよびDLLとを比較し、検査対象のプログラムがマルウェアであるか否かを判定する、というものである。
 しかし、この従来技術では、正規のプログラムと異なるAPIまたはDLLを動的に利用するマルウェアを検知することはできても、正規のプログラムと同じAPIおよびDLLを動的に利用するマルウェアを検知することはできない。
 その他に、以下のような従来技術がある。
 この従来技術は、正規のプログラムのプロセス用のメモリ領域に記憶されるプログラムコードをあらかじめ登録し、登録したプログラムコードと検査対象のプログラムのメモリ領域に記憶されたプログラムコードとを比較し、マルウェアによって検査対象のプログラムのメモリ領域に注入される不正なプログラムコードを検知する、というものである。以下、マルウェアによってメモリ領域に注入される不正なプログラムコードを「不正コード」という。
 しかし、動的に確保されるメモリ領域(以下、「動的なメモリ領域」という)に不正コードが注入される場合、従来技術ではこの不正コードを検知することはできない。動的なメモリ領域のアドレスはメモリ領域が確保されるたびに異なるので、動的なメモリ領域を特定することができず、動的なメモリ領域の比較ができないためである。
 また、プログラムコードを動的に書き換える正規のプログラム(Just In Time Compiler)が存在するため、メモリ領域に記憶されるプログラムコードを比較した際に不正コードを誤って検知する可能性がある。
 マルウェアが引き起こすセキュリティ事故によってどのような被害があったのかを早急に報告するため、マルウェア解析者は、メモリ領域に注入された不正コードを素早く特定し、特定した不正コードがどのような機能を有するかを解析する必要がある。
 また、多くの従来技術では、正規のプログラム(またはそのプロセス)の静的な情報および動的な情報(プロセスが利用しているAPIおよびDLL)をリストアップしたテンプレートを予め用意する必要がある。
特開2008-21274号公報
C. M. Linn, M. Rajagopalan, S. Baker, C. Collberg, S. K. Debray, J. H. Hartman, "Protecting Against Unexpected System Calls", Proceedings of the 2005 Usenix Security Conference, August 2005 David Wagner, Drew Dean, Intrusion detection via static analysis, Proceedings of 2001 IEEE Symposium on Security and Privacy.
 本発明は、例えば、マルウェアによってメモリ領域に生成された可能性があるプログラムコード(注入コード)を検出できるようにすることを目的とする。
 本発明のプロセス検査装置は、
 実行ファイルを実行する第一の計算機のメモリ領域のうち前記実行ファイルを実行するための第一のプロセス用に確保された第一のメモリ領域の内容を表す第一のメモリイメージを取得する第一のメモリイメージ取得部と、
 不正なプログラムコードを生成するマルウェアに感染していない第二の計算機に前記実行ファイルを実行させ、前記第二の計算機のメモリ領域のうち前記実行ファイルを実行するための第二のプロセス用に確保された第二のメモリ領域の内容を表す第二のメモリイメージを取得する第二のメモリイメージ取得部と、
 前記第一のメモリイメージと前記第二のメモリイメージとに基づいて、前記第一のメモリ領域に含まれているが前記第二のメモリ領域に含まれていないプログラムコードである注入コードを検出する注入コード検出部とを備える。
 本発明によれば、例えば、マルウェアによってメモリ領域に生成された可能性があるプログラムコード(注入コード)を検出することができる。
実施の形態1におけるプロセス検査装置100の機能構成図である。 実施の形態1におけるプロセス検査方法を示すフローチャートである。 実施の形態1における検査メモリ抽出部110の機能構成図である。 実施の形態1における検査メモリ抽出処理(S110)を示すフローチャートである。 実施の形態1における実行ファイル情報103の一例を示す図である。 実施の形態1における実行ファイル情報103の一例を示す図である。 実施の形態1におけるテンプレートメモリ抽出部120の機能構成図である。 実施の形態1におけるテンプレートメモリ抽出処理(S120)を示すフローチャートである。 実施の形態1におけるインストールリスト104の一例を示す図である。 実施の形態1におけるインストールリスト104の一例を示す図である。 実施の形態1における注入コード検出部130の機能構成図である。 実施の形態1における静的メモリ領域比較部131による注入コード検出処理(S130)を示すフローチャートである。 実施の形態1におけるアドレスリスト139の一例を示す図である。 実施の形態1における注入コードリスト193Sの一例を示す図である。 実施の形態1における動的メモリ領域比較部132による注入コード検出処理(S130)を示すフローチャートである。 実施の形態1におけるペアリスト138の一例である。 実施の形態1における注入コードリスト193Dの一例を示す図である。 実施の形態1における検査ルールリスト194の一例を示す図である。 実施の形態1における不正コードリスト195の一例を示す図である。 実施の形態1におけるテンプレートシステム更新部160の機能構成図である。 実施の形態1におけるテンプレートシステム更新部160によるテンプレートシステム更新処理を示すフローチャートである。 実施の形態1における実行ファイルリスト169の一例を示す図である。 実施の形態1におけるプロセス検査装置100のハードウェア構成の一例を示す図である。 実施の形態2におけるプロセス検査システム200の構成図である。 実施の形態2におけるプロセス検査サーバ220の機能構成図である。 実施の形態2におけるプロセス検査方法を示すフローチャートである。
 実施の形態1.
 マルウェアによってメモリ領域に生成された不正なプログラムコードを検出する形態について説明する。
 図1は、実施の形態1におけるプロセス検査装置100の機能構成図である。
 実施の形態1におけるプロセス検査装置100の機能構成について、図1に基づいて説明する。
 プロセス検査装置100は、マルウェアによってメモリ領域に生成された不正なプログラムコードを検出するコンピュータである。
 プロセス検査装置100は、検査メモリ抽出部110(第一のメモリイメージ取得部の一例)、テンプレートメモリ抽出部120(第二のメモリイメージ取得部の一例)、注入コード検出部130および注入コード検査部140を備える。
 プロセス検査装置100は、検査結果出力部150、テンプレートシステム更新部160(第二の計算機更新部の一例)、検査ルール更新部170、テンプレートシステム制御部180および装置記憶部190を備える。
 まず、装置記憶部190について説明する。
 装置記憶部190は、プロセス検査装置100が使用または生成するデータを記憶する。
 例えば、装置記憶部190は、以下のようなデータを記憶する。
 プロセス指定情報101は、検査対象である計算機(または計算機システム)によって実行されているプロセスのうちの検査対象であるプロセスを特定するために指定された情報である。
 以下、検査対象である計算機(または計算機システム)を「対象システム」という。また、検査対象であるプロセスを「対象プロセス」という。
 実行プロセスリスト102は、検査対象である対象システムによって実行されているプロセスのリストである。
 実行ファイル情報103は、対象プロセスの元となっている実行ファイルを示す情報である。実行ファイルは実行形式のプログラムである。
 以下、対象プロセスの元になっている実行ファイルを「対象実行ファイル」という。対象実行ファイルは、対象プロセス用に割り当てられるハードウェア資源(CPU、メモリ領域など)を用いて実行される。対象プロセスは、対象実行ファイルが実行されるときにOS(Operating System)によって生成される。
 インストールリスト104は、マルウェアに感染していない計算機(または計算機システム)にインストールされている実行ファイルのリストである。
 以下、マルウェアに感染していない計算機(または計算機システム)を「テンプレートシステム」という。
 検査メモリイメージ191(第一のメモリイメージの一例)は、対象システム(第一の計算機の一例)のメモリ領域のうちの対象プロセス用に確保されたメモリ領域の内容を表すデータである。
 テンプレートメモリイメージ192(第二のメモリイメージの一例)は、テンプレートシステム(第二の計算機の一例)のメモリ領域のうち対象プロセスに相当するプロセス用に確保されたメモリ領域の内容を表すデータである。
 対象プロセスに相当するプロセスとは、テンプレートシステムによって実行されているプロセスのうちの対象実行ファイルを実行するためのプロセスである。
 注入コードリスト193は、検査メモリイメージ191が表すメモリ領域に含まれているがテンプレートメモリイメージ192が表すメモリ領域に含まれていないプログラムコード(以下、注入コードという)を特定するための情報のリストである。
 検査ルールリスト194は、検査ルールのリストである。
 検査ルールとは、マルウェアによってメモリ領域に生成される不正なプログラムコード(以下、不正コードという)が満たすルールである。
 不正コードリスト195は、不正コードのリストである。
 次に、装置記憶部190以外の機能構成について説明する。
 検査メモリ抽出部110は、プロセス指定情報101と実行プロセスリスト102とに基づいて、検査メモリイメージ191と実行ファイル情報103とを生成する。
 テンプレートメモリ抽出部120は、実行ファイル情報103とインストールリスト104とに基づいて、テンプレートメモリイメージ192を生成する。
 注入コード検出部130は、検査メモリイメージ191とテンプレートメモリイメージ192とに基づいて、注入コードリスト193を生成する。
 注入コード検査部140は、注入コードリスト193と検査ルールリスト194とに基づいて、不正コードリスト195を生成する。
 検査結果出力部150は、不正コードリスト195に基づいて、検査結果ファイル196を生成する。
 テンプレートシステム更新部160は、定期的に以下のように動作する。
 テンプレートシステム更新部160は、実行ファイル情報103とインストールリスト104とに基づいて、対象システムにはインストールされているがテンプレートシステムにはインストールされていない実行ファイルを特定する。
 テンプレートシステム更新部160は、特定した実行ファイルをテンプレートシステムにインストールし、インストールリスト104を更新する。
 検査ルール更新部170は、ユーザの指定に従って検査ルールリスト194を更新する。
 テンプレートシステム制御部180は、テンプレートシステムとして機能する仮想マシンを動作させる。
 プロセス検査装置100は、対象システムおよびテンプレートシステムとして機能すると共に、対象システムの対象プロセスを検査するコンピュータである。
 図2は、実施の形態1におけるプロセス検査方法を示すフローチャートである。
 実施の形態1におけるプロセス検査方法について、図2に基づいて説明する。
 まず、プロセス検査方法の概要について説明する。
 検査メモリ抽出部110は、プロセス指定情報101に基づいて、対象システムのメモリから検査メモリイメージ191を抽出する(S110)。
 テンプレートメモリ抽出部120は、検査メモリイメージ191に対応するテンプレートメモリイメージ192をテンプレートシステムから抽出する(S120)。
 注入コード検出部130は、検査メモリイメージ191とテンプレートメモリイメージ192とを比較し、注入コードリスト193を生成する(S130)。
 注入コード検査部140は、注入コードリスト193と検査ルールリスト194とに基づいて、不正コードリスト195を生成する(S140)。
 検査結果出力部150は、不正コードリスト195に基づいて、検査結果ファイル196を生成する(S150)。
 次に、プロセス検査方法の詳細について説明する。
 S110において、ユーザはプロセス指定情報101をプロセス検査装置100に入力する。
 検査メモリ抽出部110は、プロセス指定情報101に基づいて、対象システムのメモリから検査メモリイメージ191を抽出する。
 S110の後、処理はS120に進む。
 以下に、検査メモリ抽出部110による検査メモリ抽出処理(S110)の詳細について説明する。
 図3は、実施の形態1における検査メモリ抽出部110の機能構成図である。
 図3に示すように、検査メモリ抽出部110は、プロセス監視部111と、メモリイメージ抽出部112とを備える。
 プロセス監視部111は、プロセス指定情報101と実行プロセスリスト102とに基づいて、対象プロセスのプロセスIDを特定する。プロセスIDはプロセスを識別する識別子の一例である。例えば、プロセスIDはプロセス名に置き換えても構わない。プロセス監視部111は実行プロセスリスト102を用いずに対象プロセスのプロセスIDを特定しても構わない。
 メモリイメージ抽出部112は、プロセス監視部111によって特定されたプロセスIDに基づいて、対象システムのメモリから検査メモリイメージ191を抽出する。また、メモリイメージ抽出部112は、実行ファイル情報103を生成する。
 図4は、実施の形態1における検査メモリ抽出処理(S110)を示すフローチャートである。
 実施の形態1における検査メモリ抽出処理(S110)について、図4に基づいて説明する。
 S111において、プロセス監視部111は、プロセス指定情報101がポート番号とプロセスIDとのいずれを示しているか判定する。
 プロセス指定情報101は、検査対象である対象プロセスを特定するために指定された情報である。
 プロセス指定情報101がポート番号を示している場合、処理はS112に進む。
 プロセス指定情報101がプロセスIDを示している場合、処理はS113に進む。
 S112において、プロセス監視部111は、プロセス指定情報101が示すポート番号に基づいて、そのポート番号によって識別されるポートを利用して通信を行っているプロセスのプロセスIDを取得する。
 例えば、プロセス監視部111は、netstat、Process MonitorまたはTCP Viewなどを実行することによって、プロセスIDを取得する。netstatはWindowsの機能であり、Process MonitorおよびTCP ViewはWindowsが提供するツールである。「Windows」は登録商標である(以下同様)。
 例えば、実行プロセスリスト102は実行プロセス毎にプロセスIDとポート番号とを対応付けて含み、プロセス監視部111は該当するポート番号に対応付けられたプロセスIDを実行プロセスリスト102から取得する。
 S112の後、処理はS113に進む。
 S113において、メモリイメージ抽出部112は、プロセス指定情報101が示すプロセスIDまたはS112で取得されたプロセスIDに基づいて、対象システムのメモリから検査メモリイメージ191を抽出する。
 検査メモリイメージ191は、対象システムのメモリ領域のうち対象プロセス用に確保されたメモリ領域の内容を表すデータである。
 検査メモリイメージ191は、該当するメモリ領域の用途情報および保護情報を含む。また、検査メモリイメージ191は、対象プロセスのPEヘッダを含む。
 メモリ領域の用途情報は、メモリ領域を構成するプログラム領域、データ領域、スタック領域およびヒープ領域などのアドレスの範囲を示す。プログラム領域およびデータ領域は、OS(Operating System)がプログラム(実行ファイル)をロードする際にプロセスに割り当てるメモリ領域である。プログラム領域、データ領域およびスタック領域は、実行ファイルの実行の開始時に確保される静的メモリ領域の一例である。ヒープ領域は、実行ファイルの実行中に確保される動的メモリ領域の一例である。
 メモリ領域の保護情報は、メモリ領域の保護属性をアドレス単位毎(例えば、4バイト毎)に示す。読み取りが許可される「読み取り可能」、書き込みが許可される「書き込み可能」および実行が許可される「実行可能」は保護属性の一例である。
 PEヘッダは、プログラム(実行ファイル)がロードされた後にOSによって書き換えられるものである。
 例えば、メモリイメージ抽出部112は、ReadProcessMemory、VolatilityまたはLoadPEなどを実行することによって、検査メモリイメージ191を抽出する。ReadProcessMemoryは、Windowsが提供するAPI(Application Program Interface)である。VolatilityまたはLoadPEはフリーで公開されているメモリダンプツールである。
 例えば、実行プロセスリスト102は実行プロセス毎にプロセスIDとメモリイメージとを対応付けて含み、メモリイメージ抽出部112は該当するプロセスIDに対応付けられたメモリイメージ(検査メモリイメージ191)を実行プロセスリスト102から取得する。
 S113の後、処理はS114に進む。
 S114において、メモリイメージ抽出部112は、プロセス指定情報101が示すプロセスIDまたはS112で取得されたプロセスIDに基づいて、実行ファイル情報103を生成する。
 実行ファイル情報103は、対象プロセスの元となっている対象実行ファイルを示す情報である。
 実行ファイル情報103は、対象実行ファイルの名前、パス、バージョン、メッセージダイジェストなどを含む(図5参照)。なお、メモリイメージ抽出部112は、MD5、SHA1またはSHA256などのハッシュ関数を演算することによって、メッセージダイジェストを算出する。
 対象実行ファイルが実行される際に共有ライブラリ(例えば、DLL:Dynamic
 Link Library)が起動される場合、実行ファイル情報103は対象実行ファイル(.exe)の情報の他に共有ライブラリ(.dll)の情報を含む(図6参照)。以下、これらの共有ライブラリも対象実行ファイルと呼ぶ。
 図5、図6は、実施の形態1における実行ファイル情報103の一例を示す図である。
 S114の後、検査メモリ抽出処理(S110)は終了する。
 図2に戻り、S120から説明を続ける。
 S120において、テンプレートメモリ抽出部120は、検査メモリイメージ191に対応するテンプレートメモリイメージ192を、テンプレートシステムのメモリから抽出する。
 S120の後、処理はS130に進む。
 以下に、テンプレートメモリ抽出部120によるテンプレートメモリ抽出処理(S120)の詳細について説明する。
 図7は、実施の形態1におけるテンプレートメモリ抽出部120の機能構成図である。
 図7に示すように、テンプレートメモリ抽出部120は、インストール部121と、プロセス実行部122と、メモリイメージ抽出部123とを備える。
 インストール部121は、実行ファイル情報103とインストールリスト104とに基づいて、対象実行ファイルがテンプレートシステムにインストールされているか否かを判定する。対象実行ファイルがテンプレートシステムにインストールされていない場合、インストール部121は、テンプレートシステムに対象実行ファイルをインストールし、インストールリスト104を更新する。
 プロセス実行部122は、対象実行ファイルをテンプレートシステムに実行させる。このとき、テンプレートシステムは対象実行ファイルを実行するためにプロセスを生成する。以下、テンプレートシステムによって生成されるプロセスを「テンプレートプロセス」という。
 メモリイメージ抽出部123は、テンプレートプロセス用に確保されたメモリ領域の内容を表すテンプレートメモリイメージ192をテンプレートシステムのメモリから抽出する。
 図8は、実施の形態1におけるテンプレートメモリ抽出処理(S120)を示すフローチャートである。
 実施の形態1におけるテンプレートメモリ抽出処理(S120)について、図8に基づいて説明する。
 S121において、インストール部121は、実行ファイル情報103とインストールリスト104とに基づいて、対象実行ファイルがテンプレートシステムにインストールされているか否かを判定する。つまり、インストール部121は、テンプレートシステムに対象実行ファイルをインストールする必要があるか否かを判定する。
 実行ファイル情報103と同じ情報がインストールリスト104に含まれている場合、インストール部121は、対象実行ファイルがテンプレートシステムにインストールされていると判定する。例えば、図9に示すインストールリスト104は、図5に示す実行ファイル情報103と同じ情報(名前、パス、バージョン、メッセージダイジェスト)を含んでいる。この場合、インストール部121は、対象実行ファイル(calc.exe)がテンプレートシステムにインストールされていると判定する。
 実行ファイル情報103と同じ情報がインストールリスト104に含まれていない場合、インストール部121は、対象実行ファイルがテンプレートシステムにインストールされていないと判定する。例えば、図10に示すインストールリスト104は、図5に示す実行ファイル情報103と一部の情報(バージョン、メッセージダイジェスト)が異なる情報を含んでいるが、実行ファイル情報103と同一の情報を含んでいない。この場合、インストール部121は、対象実行ファイル(calc.exe)がテンプレートシステムにインストールされていないと判定する。
 図9、図10は、実施の形態1におけるインストールリスト104の一例を示す図である。
 対象実行ファイルがテンプレートシステムにインストールされている場合、つまり、テンプレートシステムに対象実行ファイルをインストールする必要が無い場合、処理はS126に進む。
 対象実行ファイルがテンプレートシステムにインストールされていない場合、つまり、テンプレートシステムに対象実行ファイルをインストールする必要が有る場合、処理はS122に進む。
 S122において、インストール部121は、実行ファイル情報103に基づいて、対象実行ファイルと同じ実行ファイルを取得する。例えば、インストール部121は、インターネットを介してファイルサーバから対象実行ファイルと同じ実行ファイルを取得する。
 S122の後、処理はS123に進む。
 S123において、インストール部121は、S122で取得した実行ファイルに対してウィルス検査を行い、その実行ファイルがウィルスに感染しているか否かを判定する。
 例えば、インストール部121は、フリーまたは市販のアンチウィルスソフトを実行することによって、ウィルス検査を行う。
 実行ファイルがウィルスに感染していると判定した場合、インストール部121は、テンプレートシステムにインストールすべき実行ファイルがウィルスに感染していることを知らせる警告を出力する。そして、テンプレートメモリ抽出処理(S120)は終了する。また、プロセス検査装置100は、テンプレートメモリ抽出処理(S120)の後の処理を行わず、プロセス検査方法の処理を終了する。
 実行ファイルがウィルスに感染していないと判定した場合、処理はS124に進む。
 S124において、インストール部121は、S122で取得した実行ファイルをテンプレートシステムにインストールする。
 但し、S122で取得した実行ファイルと同じ名前の実行ファイル(同名ファイル)がテンプレートシステムにインストールされている場合、インストール部121はその同名ファイルをアンインストールした後に、取得した実行ファイルをインストールする。
 テンプレートシステムとして機能する仮想マシンのOS(ゲストOS)を制御することによって、テンプレートシステムに実行ファイルをインストールすることができる。例えば、プロセス検査装置100のOS(ホストOS)を介してVMware Serverのvmrun.exeにスクリプトを読ませることによって、ホストOSからゲストOSを制御することができる。
 S124の後、処理はS125に進む。
 S125において、インストール部121は、S124でインストールした実行ファイルの情報を追加または上書きすることによって、インストールリスト104を更新する。
 例えば、図10のインストールリスト104に含まれる実行ファイル「calc.exe」の情報を上書きすることによって、図9のインストールリスト104が得られる。
 S125の後、処理はS126に進む。
 S126において、プロセス実行部122は、対象実行ファイルをテンプレートシステムに実行させる。つまり、プロセス実行部122は、対象実行ファイルを実行するためのプロセス(テンプレートプロセス)をテンプレートシステムに実行させる。
 S126の後、処理はS127に進む。
 S127において、メモリイメージ抽出部123は、S126で実行されたテンプレートプロセスのプロセスIDを特定する。
 そして、メモリイメージ抽出部123は、特定したプロセスIDに基づいて、テンプレートプロセス用に確保されたメモリ領域の内容を表すテンプレートメモリイメージ192をテンプレートシステムのメモリから抽出する。
 テンプレートメモリイメージ192の抽出方法は、検査メモリイメージ191の抽出方法(図4のS113)と同様である。
 テンプレートメモリイメージ192は、検査メモリイメージ191と同様に、該当するメモリ領域の用途情報および保護情報を含む。また、テンプレートメモリイメージ192は、テンプレートプロセスのPEヘッダを含む。
 S127の後、テンプレートメモリ抽出処理(S120)は終了する。
 図2に戻り、S130から説明を続ける。
 S130において、注入コード検出部130は、検査メモリイメージ191とテンプレートメモリイメージ192とを比較し、注入コードリスト193を生成する。
 S130の後、処理はS140に進む。
 以下に、注入コード検出部130による注入コード検出処理(S130)の詳細について説明する。
 図11は、実施の形態1における注入コード検出部130の機能構成図である。
 図11に示すように、注入コード検出部130は、静的メモリ領域比較部131と、動的メモリ領域比較部132とを備える。
 静的メモリ領域比較部131は、検査メモリイメージ191が表す静的メモリ領域とテンプレートメモリイメージ192が表す静的メモリ領域とを比較し、静的メモリ領域の注入コードリスト193を生成する。静的メモリ領域とは、実行ファイルの実行の開始時に確保されるメモリ領域である。
 動的メモリ領域比較部132は、検査メモリイメージ191が表す動的メモリ領域とテンプレートメモリイメージ192が表す動的メモリ領域とを比較し、動的メモリ領域の注入コードリスト193を生成する。動的メモリ領域とは、実行ファイルの実行中に確保されるメモリ領域である。
 注入コードリスト193は、検査メモリイメージ191が表すメモリ領域のうち注入コードが記憶されている連続するメモリ領域(以下、注入コードブロックという)の情報を示すリストである。
 図12は、実施の形態1における静的メモリ領域比較部131による注入コード検出処理(S130)を示すフローチャートである。
 静的メモリ領域比較部131による注入コード検出処理(S130)について、図12に基づいて説明する。
 S1311において、静的メモリ領域比較部131は、検査メモリイメージ191とテンプレートメモリイメージ192とのベースアドレス(先頭アドレス)を揃える。
 S1311の後、処理はS1312に進む。
 S1312において、静的メモリ領域比較部131は、検査メモリイメージ191に含まれる用途情報に基づいて、検査メモリイメージ191が表すメモリ領域のうちの静的メモリ領域を特定する。
 そして、静的メモリ領域比較部131は、特定した静的メモリ領域の先頭アドレスをポインタPに設定する。
 以下、ポインタPが示すアドレス単位(例えば、1バイトまたは4バイト)の静的メモリ領域を「静的メモリ領域[P]」と記す。
 S1312の後、処理はS1313に進む。
 S1313において、静的メモリ領域比較部131は、検査メモリイメージ191に含まれる保護情報に基づいて、検査メモリイメージ191のうちの静的メモリ領域[P]が実行可能なメモリ領域(実行可能領域)であるか否かを判定する。
 検査メモリイメージ191のうちの静的メモリ領域[P]が実行可能領域である場合、処理はS1314に進む。
 検査メモリイメージ191のうちの静的メモリ領域[P]が実行可能領域でない場合、処理はS1316に進む。
 S1314において、静的メモリ領域比較部131は、検査メモリイメージ191とテンプレートメモリイメージ192とのそれぞれの静的メモリ領域[P]の内容を比較する。つまり、静的メモリ領域比較部131は、検査メモリイメージ191のうちの静的メモリ領域[P]のバイナリコードと、テンプレートメモリイメージ192のうちの静的メモリ領域[P]のバイナリコードとを比較する。
 検査メモリイメージ191とテンプレートメモリイメージ192とのそれぞれの静的メモリ領域[P]の内容が同じである場合、処理はS1316に進む。
 検査メモリイメージ191とテンプレートメモリイメージ192とのそれぞれの静的メモリ領域[P]の内容が異なる場合、処理はS1315に進む。
 S1315において、静的メモリ領域比較部131は、ポインタPが示すアドレス、つまり、検査メモリイメージ191が表す静的メモリ領域のうちテンプレートメモリイメージ192と内容が異なる静的メモリ領域のアドレスをアドレスリスト139に設定する(図13参照)。
 図13は、実施の形態1におけるアドレスリスト139の一例を示す図である。図13のアドレスリスト139は「アドレス」と「コード」とを対応付けて含んでいる。「アドレス」はポインタPが示したアドレスを示し、「コード」はアドレス単位の静的メモリ領域の内容(プログラムコード)を示す。
 S1315の後、処理はS1316に進む。
 S1316において、静的メモリ領域比較部131は、検査メモリイメージ191に含まれる用途情報に基づいて、ポインタPが示すアドレスが検査メモリイメージ191のうちの静的メモリ領域の最終アドレスであるか否かを判定する。
 ポインタPが示すアドレスが検査メモリイメージ191のうちの静的メモリ領域の最終アドレスである場合、処理はS1318に進む。
 ポインタPが示すアドレスが検査メモリイメージ191のうちの静的メモリ領域の最終アドレスでない場合、処理はS1317に進む。
 S1317において、静的メモリ領域比較部131は、ポインタPに設定されているアドレスを次のアドレスに更新する。
 例えば、静的メモリ領域比較部131は、ポインタPに設定されている現在のアドレス「4920B8」をカウントアップすることによって、ポインタPが示すアドレスを次のアドレス「4920B9」に更新する。
 S1317の後、処理はS1313に戻る。
 S1318において、静的メモリ領域比較部131は、アドレスリスト139に基づいて注入コードリスト193Sを生成する。ここで、静的メモリ領域の注入コードリスト193を「注入コードリスト193S」と記す。
 注入コードリスト193Sは、検査メモリイメージ191が表す静的メモリ領域のうちアドレスリスト139によって特定される静的メモリ領域のリストである。つまり、注入コードリスト193Sは、検査メモリイメージ191が表す静的メモリ領域には含まれるがテンプレートメモリイメージ192が表す静的メモリ領域には含まれないプログラムコード(注入コード)を特定するためのリストである。
 例えば、静的メモリ領域比較部131は、図13のアドレスリスト139に基づいて、図14の注入コードリスト193Sを生成する。
 図14の注入コードリスト193Sは、注入コードブロックの「ブロック番号」「開始アドレス」「サイズ」を示している。
 図14は、実施の形態1における注入コードリスト193Sの一例を示す図である。
 S1318の後、静的メモリ領域比較部131による注入コード検出処理(S130)は終了する。
 図15は、実施の形態1における動的メモリ領域比較部132による注入コード検出処理(S130)を示すフローチャートである。
 動的メモリ領域比較部132による注入コード検出処理(S130)について、図15に基づいて説明する。
 S1321において、動的メモリ領域比較部132は、検査メモリイメージ191に含まれる用途情報に基づいて、検査メモリイメージ191が表すメモリ領域のうちの動的メモリ領域を特定する。
 動的メモリ領域比較部132は、検査メモリイメージ191に含まれる保護情報に基づいて、検査メモリイメージ191が表すメモリ領域のうちの実行可能なメモリ領域(実行可能領域)を特定する。
 そして、動的メモリ領域比較部132は、検査メモリイメージ191が表す動的メモリ領域のうちの連続する実行可能領域を示す情報のリストLaを生成する。
 以下、動的メモリ領域のうちの連続する実行可能領域を「実行可能ブロック」という。
 動的メモリ領域比較部132は、検査メモリイメージ191の実行可能ブロックのリストLaと同様に、テンプレートメモリイメージ192の実行可能ブロックのリストLbを生成する。
 S1321の後、処理はS1322に進む。
 S1322において、動的メモリ領域比較部132は、検査メモリイメージ191のリストLaから未選択の実行可能ブロックBaを一つ選択する。ここで、リストLaが示す実行可能ブロックを「実行可能ブロックBa」と記す。
 例えば、動的メモリ領域比較部132は、リストLaの先頭から順番に実行可能ブロックBaを選択する。
 S1322の後、処理はS1323に進む。
 S1323からS1327は、S1322で選択された実行可能ブロックBa毎に実行される。
 S1323において、動的メモリ領域比較部132は、テンプレートメモリイメージ192のリストLbから未選択の実行可能ブロックBbを一つ選択する。ここで、リストLbが示す実行可能ブロックを「実行可能ブロックBb」と記す。
 例えば、動的メモリ領域比較部132は、リストLbの先頭から順番に実行可能ブロックBbを選択する。
 S1323の後、処理はS1324に進む。
 S1324において、動的メモリ領域比較部132は、S1322で選択した実行可能ブロックBaに含まれるプログラムコードからオペコードを抽出し、抽出したオペコードのリストを生成する。
 動的メモリ領域比較部132は、S1323で選択した実行可能ブロックBbに含まれるプログラムコードからオペコードを抽出し、抽出したオペコードのリストを生成する。
 そして、動的メモリ領域比較部132は、実行可能ブロックBaから抽出したオペコードのリストと実行可能ブロックBbから抽出したオペコードのリストとの距離Dを算出する。
 距離Dは、実行可能ブロックBaから抽出したオペコードのリストと実行可能ブロックBbから抽出したオペコードのリストとの類似度を表す。距離Dが小さいほど類似度は高い。
 距離Dの一例として、ハミング距離およびレーベンシュタイン距離(編集距離ともいう)が挙げられる。
 S1324の後、処理はS1325に進む。
 S1325において、動的メモリ領域比較部132は、S1324で算出した距離Dと、あらかじめ決められた類似度の閾値θとを比較する。
 距離Dが閾値θ以下である場合、処理はS1326に進む。
 距離Dが閾値θより大きい場合、処理はS1327に進む。
 S1326において、動的メモリ領域比較部132は、S1322で選択した実行可能ブロックBaの情報と、S1323で選択した実行可能ブロックBbの情報と、S1324で算出した距離Dとをペアリスト138に設定する。
 但し、S1322で選択した実行可能ブロックBaの情報が既にペアリスト138に設定されている場合、動的メモリ領域比較部132は以下のように動作する。ここで、S1322で選択した実行可能ブロックBaと共にペアリスト138に設定されている実行可能ブロックBbの情報および距離Dを「実行可能ブロックBb’の情報」「距離D’」と記す。
 動的メモリ領域比較部132は、ペアリスト138に設定されている距離D’とS1324で算出した距離Dとを比較する。
 距離Dが距離D’より小さい場合、動的メモリ領域比較部132は、ペアリスト138に設定されている実行可能ブロックBb’の情報を、S1323で選択した実行可能ブロックBbの情報に更新する。また、動的メモリ領域比較部132は、ペアリスト138に設定されている距離D’を、S1324で算出した距離Dに更新する。
 距離Dが距離D’以上である場合、動的メモリ領域比較部132は、ペアリスト138に設定されている実行可能ブロックBb’の情報および距離D’を更新しない。つまり、動的メモリ領域比較部132は、S1323で選択した実行可能ブロックBbの情報およびS1324で算出した距離Dをペアリスト138に設定しなくてよい。
 図16は、実施の形態1におけるペアリスト138の一例である。
 例えば、動的メモリ領域比較部132は、図16に示すようなペアリスト138を生成する。
 図16のペアリスト138は、実行可能ブロックBaを識別するブロック番号と、実行可能ブロックBbを識別するブロック番号と、実行可能ブロックBaと実行可能ブロックBbとの距離Dとを示している。
 S1326(図15参照)の後、処理はS1327に進む。
 S1327において、動的メモリ領域比較部132は、S1322で選択した実行可能ブロックBaについて、S1323で選択していない実行可能ブロックBbが有るか否かを判定する。
 選択していない実行可能ブロックBbが有る場合、処理はS1323に戻る。
 選択していない実行可能ブロックBbが無い場合、処理はS1323に進む。
 S1323において、動的メモリ領域比較部132は、S1322で選択していない実行可能ブロックBaが有るか否かを判定する。
 選択していない実行可能ブロックBaが有る場合、処理はS1322に戻る。
 選択していない実行可能ブロックBaが無い場合、処理はS1329に進む。
 S1329において、動的メモリ領域比較部132は、検査メモリイメージ191のリストLaとペアリスト138とに基づいて、注入コードリスト193Dを生成する。ここで、動的メモリ領域の注入コードリスト193を「注入コードリスト193D」と記す。
 注入コードリスト193Dは、検査メモリイメージ191のリストLaに含まれる実行可能ブロックBaの情報のうち、ペアリスト138に設定されていない実行可能ブロックBaの情報を示す。つまり、注入コードリスト193Dは、検査メモリイメージ191に含まれる実行可能ブロックBaのうちテンプレートメモリイメージ192に含まれるいずれの実行可能ブロックBbとも類似しない非類似の実行可能ブロックBaを特定するためのリストである。
 例えば、動的メモリ領域比較部132は、図16のペアリスト138に基づいて、図17の注入コードリスト193Dを生成する。
 図17の注入コードリスト193Dは、非類似の実行可能ブロックBa(注入コードブロック)の「ブロック番号」「開始アドレス」「サイズ」を示している。
 図17は、実施の形態1における注入コードリスト193Dの一例を示す図である。
 S1329の後、動的メモリ領域比較部132による注入コード検出処理(S130)は終了する。
 図2に戻り、S140から説明を続ける。
 S140において、注入コード検査部140は、注入コードリスト193に基づいて、検査メモリイメージ191が表すメモリ領域から注入コードを抽出する。
 注入コード検査部140は、抽出した注入コード毎に、注入コードが検査ルールリスト194に含まれる少なくともいずれかの検査ルールに合致するか否か、つまり、注入コードがマルウェアによって生成された不正なプログラムコード(不正コード)であるか否かを判定する。
 そして、注入コード検査部140は、不正コードを特定するための不正コードリスト195を生成する。
 ここで、注入コードは注入コードブロックと読み替えることができ、不正コードは不正コードブロックと読み替えることができる。注入コードブロックは注入コードが記憶されている連続するメモリ領域の内容を意味し、不正コードブロックは不正コードが記憶されている連続するメモリ領域の内容を意味する。
 図18は、実施の形態1における検査ルールリスト194の一例を示す図である。
 実施の形態1における検査ルールリスト194の一例について、図18に基づいて説明する。
 検査ルールリスト194は、検査ルールを識別する「ルール番号」と、「検査ルール」の内容とを示している。
 ルール番号「1」の検査ルールは、ルール(1)とルール(2)とルール(3)との全てのルールに合致する注入コードが不正コードであることを意味する。
 例えば、ルール(1)からルール(3)は以下のようなルールである。
 ルール(1)は、実行ファイルを削除するプログラムコードを含むという特徴を意味する。
 ルール(2)は、記憶されているファイルを網羅的に検索するプログラムコードを含むという特徴を意味する。
 ルール(3)は、インターネットにファイルをアップロードするプログラムコードを含むという特徴を意味する。
 ルール(1)からルール(3)のそれぞれが意味するプログラムコードは通常の動作を行うものであるが、これらのプログラムコードを全て含む抽入コードは不正コードである可能性が高い。
 図19は、実施の形態1における不正コードリスト195の一例を示す図である。
 実施の形態1における不正コードリスト195の一例について、図19に基づいて説明する。
 不正コードリスト195は、不正コードブロックの「コード番号」「開始アドレス」「サイズ」を示し、不正コードブロックが該当する検査ルールの「ルール番号」を示している。
 S140(図2参照)の後、処理はS150に進む。
 S150において、検査結果出力部150は、不正コードリスト195に基づいて検査結果ファイル196を生成し、生成した検査結果ファイル196を出力する。例えば、検査結果出力部150は、検査結果ファイル196の内容を表示装置に表示する。
 検査結果ファイル196は、プロセス指定情報101によって指定された対象プロセスのプロセスID、対象プロセスに不正コードが含まれるか否かを示す情報、対象プロセスに含まれる不正コードの情報などを含む。
 S150の後、プロセス検査方法の処理は終了する。
 図20は、実施の形態1におけるテンプレートシステム更新部160の機能構成図である。
 実施の形態1におけるテンプレートシステム更新部160の機能構成について、図20に基づいて説明する。
 テンプレートシステム更新部160は、実行ファイルリスト生成部161と、インストールリスト確認部162と、実行ファイル取得部163と、インストール部164とを備える。
 実行ファイルリスト生成部161は、対象システムにインストールされている実行ファイルのリストを生成する。以下、対象システムにインストールされている実行ファイルのリストを「実行ファイルリスト169」という。
 インストールリスト確認部162は、実行ファイルリスト169とインストールリスト104とに基づいて、対象システムにインストールされているがテンプレートシステムにインストールされていない実行ファイルを特定する。
 実行ファイル取得部163は、インストールリスト確認部162によって特定された実行ファイルを取得する。
 インストール部164は、実行ファイル取得部163によって取得された実行ファイルをテンプレートシステムにインストールし、インストールリスト104を更新する。
 図21は、実施の形態1におけるテンプレートシステム更新部160によるテンプレートシステム更新処理を示すフローチャートである。
 テンプレートシステム更新部160は、図21に示すテンプレートシステム更新処理を定期的に実行する。
 S161において、実行ファイルリスト生成部161は、対象システムにインストールされている実行ファイルの情報を示す実行ファイルリスト169を生成する。
 実行ファイルリスト169は、対象システムにインストールされている実行ファイルの名前、パス、バージョン、メッセージダイジェストなどを含む(図22参照)。なお、実行ファイルリスト生成部161は、MD5、SHA1またはSHA256などのハッシュ関数を演算することによって、メッセージダイジェストを算出する。
 図22は、実施の形態1における実行ファイルリスト169の一例を示す図である。
 S161の後、処理はS162に進む。
 S162において、インストールリスト確認部162は、実行ファイルリスト169に含まれる実行ファイルのうち、インストールリスト104に含まれない実行ファイルを特定する。
 例えば、図22の実行ファイルリスト169と図10のインストールリスト104とを比較した場合、実行ファイルリスト169とインストールリスト104との両方に実行ファイル「calc.exe」「netepad.exe」「explorer.exe」「user32.dll」「kernel32.dll」が含まれる。
 但し、実行ファイルリスト169に含まれる「calc.exe」とインストールリスト104に含まれる「calc.exe」とはバージョンおよびメッセージダイジェストが異なる。
 したがって、インストールリスト確認部162は、インストールリスト104に含まれない実行ファイルとして、実行ファイルリスト169に含まれる実行ファイル「calc.exe」を特定する。
 S162の後、処理はS163に進む。
 S163において、実行ファイル取得部163は、S162で特定された実行ファイルを取得する。例えば、実行ファイル取得部163は、インターネットを介してファイルサーバから実行ファイルを取得する。
 S163の後、処理はS164に進む。
 S164において、インストール部164は、S163で取得された実行ファイルに対してウィルス検査を行い、その実行ファイルがウィルスに感染しているか否かを判定する。
 例えば、インストール部164は、フリーまたは市販のアンチウィルスソフトを実行することによって、ウィルス検査を行う。
 実行ファイルがウィルスに感染していると判定した場合、インストール部164は、テンプレートシステムにインストールすべき実行ファイルがウィルスに感染していることを知らせる警告を出力する。そして、テンプレートシステム更新処理は終了する。
 実行ファイルがウィルスに感染していないと判定した場合、処理はS165に進む。
 S165において、インストール部164は、S163で取得された実行ファイルをテンプレートシステムにインストールする。
 但し、S163で取得された実行ファイルと同じ名前の実行ファイル(同名ファイル)がテンプレートシステムにインストールされている場合、インストール部121はその同名ファイルをアンインストールした後に、取得された実行ファイルをインストールする。
 テンプレートシステムとして機能する仮想マシンのOS(ゲストOS)を制御することによって、テンプレートシステムに実行ファイルをインストールすることができる。例えば、プロセス検査装置100のOS(ホストOS)を介してVMware Serverのvmrun.exeにスクリプトを読ませることによって、ホストOSからゲストOSを制御することができる。
 S165の後、処理はS166に進む。
 S166において、インストール部164は、S165でインストールした実行ファイルの情報を追加または上書きすることによって、インストールリスト104を更新する。
 例えば、図10のインストールリスト104に含まれる実行ファイル「calc.exe」の情報を上書きすることによって、図9のインストールリスト104が得られる。
 S166の後、テンプレートシステム更新処理は終了する。
 図23は、実施の形態1におけるプロセス検査装置100のハードウェア構成の一例を示す図である。
 実施の形態1におけるプロセス検査装置100のハードウェア構成の一例について、図23に基づいて説明する。
 プロセス検査装置100は、演算装置901、補助記憶装置902、主記憶装置903、通信装置904および入出力装置905を備えるコンピュータである。
 演算装置901、補助記憶装置902、主記憶装置903、通信装置904および入出力装置905はバス909に接続している。
 演算装置901は、プログラムを実行するCPU(Central Processing Unit)である。
 補助記憶装置902は、例えば、ROM(Read Only Memory)、フラッシュメモリまたはハードディスク装置である。
 主記憶装置903は、例えば、RAM(Random Access Memory)である。
 通信装置904は、有線または無線でインターネット、LAN(ローカルエリアネットワーク)、電話回線網またはその他のネットワークを介して通信を行う。
 入出力装置905は、例えば、マウス、キーボード、ディスプレイ装置である。
 プログラムは、通常は補助記憶装置902に記憶されており、主記憶装置903にロードされ、演算装置901に読み込まれ、演算装置901によって実行される。
 例えば、オペレーティングシステム(OS)が補助記憶装置902に記憶される。また、「~部」として説明している機能を実現するプログラム(プロセス検査プログラムの一例)が補助記憶装置902に記憶される。そして、OSおよび「~部」として説明している機能を実現するプログラムは主記憶装置903にロードされ、演算装置901によって実行される。「~部」は「~処理」「~工程」と読み替えることができる。
 「~の判断」、「~の判定」、「~の抽出」、「~の検知」、「~の設定」、「~の登録」、「~の選択」、「~の生成」、「~の入力」、「~の出力」等の処理の結果を示す情報、データ、信号値または変数値が主記憶装置903または補助記憶装置902にファイルとして記憶される。また、プロセス検査装置100が使用するその他のデータが主記憶装置903または補助記憶装置902に記憶される。
 また、図23は実施の形態1におけるプロセス検査装置100のハードウェア構成の一例を示すものであり、プロセス検査装置100のハードウェア構成は図23に示す構成と異なる構成であってもよい。
 なお、実施の形態1に係る方法(プロセス検査方法の一例)は、フローチャート等を用いて説明している手順、または、それとは一部異なる手順によって実現することができる。
 実施の形態1において、例えば、以下のようなプロセス検査装置100について説明した。
 プロセス検査装置100は、検査メモリイメージ191とテンプレートメモリイメージ192とを比較することによって、対象システムのメモリ領域(動的メモリ領域を含む)に生成された注入コードを特定する。
 プロセス検査装置100は、検査ルールリスト194に基づいて注入コードを解析することによって、不審な注入コードのみを不正コードとして特定し、不正コードの誤検知を減らすことができる。
 プロセス検査装置100は、テンプレートシステム更新部160によってテンプレートシステムを定期的に更新するため、実行ファイルを実行するためのプロセスに関する正しい属性情報が不要である。
 実施の形態2.
 実施の形態1では、プロセス検査装置100が対象システムおよびテンプレートシステムとして機能する形態について説明した。
 実施の形態2では、対象システムとして機能する装置と、テンプレートシステムとして機能する装置とが異なる形態について説明する。
 以下、実施の形態1と異なる事項について主に説明する。説明を省略する事項については実施の形態1と同様である。
 図24は、実施の形態2におけるプロセス検査システム200の構成図である。
 実施の形態2におけるプロセス検査システム200の構成について、図24に基づいて説明する。
 プロセス検査システム200は、プロセス検査クライアント210とプロセス検査サーバ220(プロセス検査装置の一例)とを備える。
 プロセス検査クライアント210およびプロセス検査サーバ220は、ネットワーク201を介して互いに通信を行う。インターネットまたは社内LAN(ローカルエリアネットワーク)はネットワーク201の一例である。
 プロセス検査クライアント210は、対象システムとして機能するコンピュータである。
 プロセス検査クライアント210は、検査メモリ抽出部110と、プロセス検査要求部211と、クライアント記憶部219とを備える。
 検査メモリ抽出部110は、実施の形態1で説明したプロセス検査装置100の機能構成と同じものである。
 プロセス検査要求部211は、検査メモリ抽出部110によって生成される検査メモリイメージ191および実行ファイル情報103をプロセス検査サーバ220へ送信し、プロセス検査サーバ220から検査結果ファイル196を受信する。
 クライアント記憶部219は、プロセス検査クライアント210の記憶部である。
 図25は、実施の形態2におけるプロセス検査サーバ220の機能構成図である。
 実施の形態2におけるプロセス検査サーバ220の機能構成について、図25に基づいて説明する。
 プロセス検査サーバ220(プロセス検査装置の一例)は、テンプレートシステムとして機能するコンピュータである。
 プロセス検査サーバ220は、実施の形態1で説明したプロセス検査装置100の機能構成(検査メモリ抽出部110、装置記憶部190を除く)の他に、プロセス検査受付部221とサーバ記憶部229とを備える。
 プロセス検査受付部221(第一のメモリイメージ取得部の一例)は、プロセス検査クライアント210から検査メモリイメージ191と実行ファイル情報103とを受信し、検査結果ファイル196をプロセス検査サーバ220へ送信する。
 サーバ記憶部229は、プロセス検査サーバ220の記憶部である。
 図26は、実施の形態2におけるプロセス検査方法を示すフローチャートである。
 実施の形態2におけるプロセス検査方法について、図26に基づいて説明する。
 図26のフローチャートは、実施の形態1(図2参照)で説明した処理に加えて、S210からS240を備える。
 S110において、プロセス検査クライアント210の検査メモリ抽出部110は、検査メモリイメージ191および実行ファイル情報103を生成する。
 検査メモリイメージ191および実行ファイル情報103の生成方法は実施の形態1で説明した通りである。
 S110の後、処理はS210に進む。
 S210において、プロセス検査クライアント210のプロセス検査要求部211は、検査メモリイメージ191および実行ファイル情報103をプロセス検査サーバ220へ送信する。
 S210の後、処理はS220に進む。
 S220において、プロセス検査サーバ220のプロセス検査受付部221は、プロセス検査クライアント210から検査メモリイメージ191および実行ファイル情報103を受信する。
 S220の後、処理はS130に進む。
 S130からS150において、プロセス検査サーバ220は検査結果ファイル196を生成する。
 検査結果ファイル196の生成方法は実施の形態1で説明した通りである。
 S150の後、処理はS230に進む。
 S230において、プロセス検査サーバ220のプロセス検査受付部221は、検査結果ファイル196をプロセス検査クライアント210へ送信する。
 S230の後、処理はS240に進む。
 S240において、プロセス検査クライアント210のプロセス検査要求部211は、プロセス検査サーバ220から検査結果ファイル196を受信し、受信した検査結果ファイル196を出力する。例えば、プロセス検査要求部211は、検査結果ファイル196の内容を表示装置に表示する。
 S240の後、プロセス検査方法の処理はする。
 実施の形態2により、遠隔に存在するクラウド(プロセス検査サーバ220)でプロセス検査を行うことができる。つまり、一台のプロセス検査サーバ220によって複数台のプロセス検査クライアント210のプロセスを検査することができる。また、テンプレートシステムの管理に要するコストを削減することができる。
 例えば、社内システムのコンピュータの環境が統一されている場合、社内システムに1台のテンプレートシステム(プロセス検査サーバ220)を設けることにより、社内システムの複数のコンピュータのプロセスを検査することができる。コンピュータの環境とは、OSのバージョン、パッチの導入状態、インストールされるアプリケーションなどを意味する。
 各実施の形態は、プロセス検査装置100およびプロセス検査システム200の形態の一例である。
 つまり、プロセス検査装置100およびプロセス検査システム200は、各実施の形態で説明した機能または構成の一部を備えなくても構わない。
 また、プロセス検査装置100およびプロセス検査システム200は、各実施の形態で説明していない機能または構成を備えても構わない。
 さらに、各実施の形態は、矛盾が生じない範囲で一部または全てを組み合わせても構わない。
 100 プロセス検査装置、101 プロセス指定情報、102 実行プロセスリスト、103 実行ファイル情報、104 インストールリスト、110 検査メモリ抽出部、111 プロセス監視部、112 メモリイメージ抽出部、120 テンプレートメモリ抽出部、121 インストール部、122 プロセス実行部、123 メモリイメージ抽出部、130 注入コード検出部、131 静的メモリ領域比較部、132 動的メモリ領域比較部、138 ペアリスト、139 アドレスリスト、140 注入コード検査部、150 検査結果出力部、160 テンプレートシステム更新部、161 実行ファイルリスト生成部、162 インストールリスト確認部、163 実行ファイル取得部、164 インストール部、169 実行ファイルリスト、170 検査ルール更新部、180 テンプレートシステム制御部、190 装置記憶部、191 検査メモリイメージ、192 テンプレートメモリイメージ、193 注入コードリスト、194 検査ルールリスト、195 不正コードリスト、196 検査結果ファイル、200 プロセス検査システム、201 ネットワーク、210 プロセス検査クライアント、211 プロセス検査要求部、219 クライアント記憶部、220 プロセス検査サーバ、221 プロセス検査受付部、229 サーバ記憶部、901 演算装置、902 補助記憶装置、903 主記憶装置、904 通信装置、905 入出力装置、909 バス。

Claims (13)

  1.  実行ファイルを実行する第一の計算機のメモリ領域のうち前記実行ファイルを実行するための第一のプロセス用に確保された第一のメモリ領域の内容を表す第一のメモリイメージを取得する第一のメモリイメージ取得部と、
     不正なプログラムコードを生成するマルウェアに感染していない第二の計算機に前記実行ファイルを実行させ、前記第二の計算機のメモリ領域のうち前記実行ファイルを実行するための第二のプロセス用に確保された第二のメモリ領域の内容を表す第二のメモリイメージを取得する第二のメモリイメージ取得部と、
     前記第一のメモリイメージと前記第二のメモリイメージとに基づいて、前記第一のメモリ領域に含まれているが前記第二のメモリ領域に含まれていないプログラムコードである注入コードを検出する注入コード検出部と
    を備えることを特徴とするプロセス検査装置。
  2.  前記注入コード検出部は、前記第一のメモリイメージが表す前記第一のメモリ領域のうち前記第一の計算機による前記実行ファイルの実行中に確保された第一の動的メモリ領域と、前記第二のメモリイメージが表す前記第二のメモリ領域のうち前記第二の計算機による前記実行ファイルの実行中に確保された第二の動的メモリ領域とを比較し、比較結果に基づいて前記第一の動的メモリ領域から前記注入コードを検出する
    ことを特徴とする請求項1記載のプロセス検査装置。
  3.  前記注入コード検出部は、
     前記第一の動的メモリ領域と前記第二の動的メモリ領域とのそれぞれから、実行が許可された連続するメモリ領域である実行可能ブロックを抽出し、
     前記第一の動的メモリ領域から抽出した実行可能ブロックのうち、前記第二の動的メモリ領域から抽出されたいずれの実行可能ブロックとも類似しない非類似の実行可能ブロックを特定し、
     前記第一の動的メモリ領域から特定した前記非類似の実行可能ブロックに記憶されているプログラムコードを前記注入コードとする
    ことを特徴とする請求項2記載のプロセス検査装置。
  4.  前記注入コード検出部は、
     前記第一の動的メモリ領域から抽出した第一の実行可能ブロックと前記第二の動的メモリ領域から抽出した第二の実行可能ブロックとのハミング距離またはレーベンシュタイン距離を、前記第一の実行可能ブロックと前記第二の実行可能ブロックとの類似度として算出し、
     算出した前記類似度に基づいて、前記第一の実行可能ブロックと前記第二の実行可能ブロックとが類似するか否かを判定する
    ことを特徴とする請求項3記載のプロセス検査装置。
  5.  前記注入コード検出部は、前記第一のメモリイメージが表す前記第一のメモリ領域のうち前記第一の計算機による前記実行ファイルの実行の開始時に確保された第一の静的メモリ領域と、前記第二のメモリイメージが表す前記第二のメモリ領域のうち前記第二の計算機による前記実行ファイルの実行の開始時に確保された第二の静的メモリ領域とを比較し、比較結果に基づいて前記第一の静的メモリ領域から前記注入コードを検出する
    ことを特徴とする請求項1記載のプロセス検査装置。
  6.  前記注入コード検出部は、前記第一の静的メモリ領域のうちの実行が許可される第一の実行可能領域に記憶されている第一のプログラムコードと前記第二の静的メモリ領域のうちの実行が許可される第二の実行可能領域に記憶されている第二のプログラムコードとが異なる場合、前記第一のプログラムコードを前記注入コードとする
    ことを特徴とする請求項5記載のプロセス検査装置。
  7.  前記第一のメモリイメージ取得部は、前記第一のプロセスを特定するための情報としてポート番号が指定され、指定された前記ポート番号によって識別されるポートを使用しているプロセスを前記第一のプロセスとして特定する
    ことを特徴とする請求項1記載のプロセス検査装置。
  8.  前記第一の計算機に前記実行ファイルとしてインストールされている第一の実行ファイルと前記第二の計算機に前記実行ファイルとしてインストールされている第二の実行ファイルとが同じ実行ファイルでない場合、前記第一の実行ファイルと同じ実行ファイルを前記第二の計算機にインストールする第二の計算機更新部を備える
    ことを特徴とする請求項1記載のプロセス検査装置。
  9.  前記第二の計算機更新部は、前記第二の実行ファイルの名称とバージョンとパスとメッセージダイジェストとの少なくともいずれかが前記第一の実行ファイルと異なる場合に前記第一の実行ファイルと前記第二の実行ファイルとが同じ実行ファイルでないと判定することを特徴とする請求項8記載のプロセス検査装置。
  10.  前記不正なプログラムコードの条件を示す検査ルールに基づいて、前記注入コードが前記不正なプログラムコードであるか否かを検査する注入コード検査部を備える
    ことを特徴とする請求項1記載のプロセス検査装置。
  11.  前記第二の計算機が仮想マシンであることを特徴とする請求項1記載のプロセス検査装置。
  12.  実行ファイルを実行する第一の計算機のメモリ領域のうち前記実行ファイルを実行するための第一のプロセス用に確保された第一のメモリ領域の内容を表す第一のメモリイメージを取得する第一のメモリイメージ取得処理と、
     不正なプログラムコードを生成するマルウェアに感染していない第二の計算機に前記実行ファイルを実行させ、前記第二の計算機のメモリ領域のうち前記実行ファイルを実行するための第二のプロセス用に確保された第二のメモリ領域の内容を表す第二のメモリイメージを取得する第二のメモリイメージ取得処理と、
     前記第一のメモリイメージと前記第二のメモリイメージとに基づいて、前記第一のメモリ領域に含まれているが前記第二のメモリ領域に含まれていないプログラムコードである注入コードを検出する注入コード検出処理と
    をコンピュータに実行させるためのプロセス検査プログラム。
  13.  第一のメモリイメージ取得部と、第二のメモリイメージ取得部と、注入コード検出部とを備えるプロセス検査装置を用いるプロセス検査方法であって、
     第一のメモリイメージ取得部が、実行ファイルを実行する第一の計算機のメモリ領域のうち前記実行ファイルを実行するための第一のプロセス用に確保された第一のメモリ領域の内容を表す第一のメモリイメージを取得し、
     第二のメモリイメージ取得部が、不正なプログラムコードを生成するマルウェアに感染していない第二の計算機に前記実行ファイルを実行させ、前記第二の計算機のメモリ領域のうち前記実行ファイルを実行するための第二のプロセス用に確保された第二のメモリ領域の内容を表す第二のメモリイメージを取得し、
     注入コード検出部が、前記第一のメモリイメージと前記第二のメモリイメージとに基づいて、前記第一のメモリ領域に含まれているが前記第二のメモリ領域に含まれていないプログラムコードである注入コードを検出する
    ことを特徴とするプロセス検査方法。
PCT/JP2013/075945 2013-09-25 2013-09-25 プロセス検査装置、プロセス検査プログラムおよびプロセス検査方法 WO2015045043A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2015538689A JP6000465B2 (ja) 2013-09-25 2013-09-25 プロセス検査装置、プロセス検査プログラムおよびプロセス検査方法
PCT/JP2013/075945 WO2015045043A1 (ja) 2013-09-25 2013-09-25 プロセス検査装置、プロセス検査プログラムおよびプロセス検査方法
US15/024,649 US10073973B2 (en) 2013-09-25 2013-09-25 Process testing apparatus, computer-readable medium, and process testing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/075945 WO2015045043A1 (ja) 2013-09-25 2013-09-25 プロセス検査装置、プロセス検査プログラムおよびプロセス検査方法

Publications (1)

Publication Number Publication Date
WO2015045043A1 true WO2015045043A1 (ja) 2015-04-02

Family

ID=52742250

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/075945 WO2015045043A1 (ja) 2013-09-25 2013-09-25 プロセス検査装置、プロセス検査プログラムおよびプロセス検査方法

Country Status (3)

Country Link
US (1) US10073973B2 (ja)
JP (1) JP6000465B2 (ja)
WO (1) WO2015045043A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101794959B1 (ko) * 2016-08-26 2017-11-07 (주)모엔트 스마트폰 해킹 방지 시스템
JP2018109909A (ja) * 2017-01-05 2018-07-12 富士通株式会社 類似度判定プログラム、類似度判定方法および情報処理装置
US11036564B2 (en) 2017-01-05 2021-06-15 Fujitsu Limited Non-transitory computer-readable storage medium, information processing apparatus and method for detecting malware

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160357958A1 (en) * 2015-06-08 2016-12-08 Michael Guidry Computer System Security
US10176321B2 (en) 2015-09-22 2019-01-08 Fireeye, Inc. Leveraging behavior-based rules for malware family classification
CN108804920B (zh) * 2018-05-24 2021-09-28 河南省躬行信息科技有限公司 一种基于跨进程行为监控恶意代码同源性分析的方法
CN113721900B (zh) * 2021-09-06 2023-08-08 安徽工程大学 一种基于Python的钻孔灌注桩检验批快速生成方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006011692A (ja) * 2004-06-24 2006-01-12 Hitachi Ltd 不正メモリアクセス検出方法、および、不正メモリアクセス検出プログラム
JP2009129451A (ja) * 2007-11-20 2009-06-11 Korea Electronics Telecommun 悪性コードによって挿入されたダイナミックリンクライブラリ検出装置及び方法
JP2010044613A (ja) * 2008-08-13 2010-02-25 Fujitsu Ltd ウイルス対策方法、コンピュータ、及びプログラム
JP2010049627A (ja) * 2008-08-25 2010-03-04 Hitachi Software Eng Co Ltd コンピュータウィルス検出システム
JP2010055318A (ja) * 2008-08-27 2010-03-11 Hitachi Ltd ハイパバイザを有する計算機システム
JP2013069053A (ja) * 2011-09-21 2013-04-18 Toshiba Corp 制御装置およびモニタプログラム
JP2013529335A (ja) * 2010-04-28 2013-07-18 シマンテック コーポレーション クラスタリングを使用した行動シグネチャの生成

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3393521B2 (ja) 1995-10-19 2003-04-07 日本電信電話株式会社 端末プログラム改ざん検出方法、および情報センタ
JP4553660B2 (ja) 2004-08-12 2010-09-29 株式会社エヌ・ティ・ティ・ドコモ プログラム実行装置
JP4728619B2 (ja) 2004-10-01 2011-07-20 富士通株式会社 ソフトウェアの改竄検出装置、改竄防止装置、改竄検出方法及び改竄防止方法
US20070168694A1 (en) * 2006-01-18 2007-07-19 Phil Maddaloni System and method for identifying and removing pestware using a secondary operating system
JP2008021274A (ja) 2006-06-15 2008-01-31 Interlex Inc プロセス監視装置及び方法
JP4823813B2 (ja) 2006-08-28 2011-11-24 Kddi株式会社 異常検知装置、異常検知プログラム、および記録媒体
EP2053533A4 (en) 2006-11-09 2011-03-23 Panasonic Corp FAKE DETECTION SYSTEM, FAKE DETECTION METHOD, FAKE IDENTIFICATION PROGRAM, RECORDING MEDIUM, INTEGRATED CIRCUIT, DEVICE FOR GENERATING AUTHENTICATION INFORMATION AND FAKE DETECTION DEVICE
JP4937200B2 (ja) 2008-06-26 2012-05-23 株式会社エヌ・ティ・ティ・ドコモ イメージ検査装置、os装置及びイメージ検査方法
US8196203B2 (en) * 2008-09-25 2012-06-05 Symantec Corporation Method and apparatus for determining software trustworthiness
US8612995B1 (en) * 2009-03-31 2013-12-17 Symantec Corporation Method and apparatus for monitoring code injection into a process executing on a computer
GB2469308B (en) * 2009-04-08 2014-02-19 F Secure Oyj Disinfecting a file system
US9104872B2 (en) * 2010-01-28 2015-08-11 Bank Of America Corporation Memory whitelisting
US9135443B2 (en) * 2010-05-06 2015-09-15 Mcafee, Inc. Identifying malicious threads
JP5177206B2 (ja) 2010-10-29 2013-04-03 富士通株式会社 ソフトウェアの改竄検出装置及び改竄検出方法
JP2012185535A (ja) 2011-03-03 2012-09-27 Mitsubishi Electric Corp コンピュータシステム
JP5182973B1 (ja) 2011-10-19 2013-04-17 三菱航空機株式会社 配線の接続確認システム
US8584235B2 (en) * 2011-11-02 2013-11-12 Bitdefender IPR Management Ltd. Fuzzy whitelisting anti-malware systems and methods
US8745760B2 (en) * 2012-01-30 2014-06-03 Cisco Technology, Inc. Malware classification for unknown executable files
US8990944B1 (en) * 2013-02-23 2015-03-24 Fireeye, Inc. Systems and methods for automatically detecting backdoors

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006011692A (ja) * 2004-06-24 2006-01-12 Hitachi Ltd 不正メモリアクセス検出方法、および、不正メモリアクセス検出プログラム
JP2009129451A (ja) * 2007-11-20 2009-06-11 Korea Electronics Telecommun 悪性コードによって挿入されたダイナミックリンクライブラリ検出装置及び方法
JP2010044613A (ja) * 2008-08-13 2010-02-25 Fujitsu Ltd ウイルス対策方法、コンピュータ、及びプログラム
JP2010049627A (ja) * 2008-08-25 2010-03-04 Hitachi Software Eng Co Ltd コンピュータウィルス検出システム
JP2010055318A (ja) * 2008-08-27 2010-03-11 Hitachi Ltd ハイパバイザを有する計算機システム
JP2013529335A (ja) * 2010-04-28 2013-07-18 シマンテック コーポレーション クラスタリングを使用した行動シグネチャの生成
JP2013069053A (ja) * 2011-09-21 2013-04-18 Toshiba Corp 制御装置およびモニタプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
KEIICHI HORIAI: "Automatic Malware Variant Classification by Hamming Distance.", IPSJ SIG NOTES, vol. 2008, no. 45, 15 May 2008 (2008-05-15), pages 61 - 66 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101794959B1 (ko) * 2016-08-26 2017-11-07 (주)모엔트 스마트폰 해킹 방지 시스템
JP2018109909A (ja) * 2017-01-05 2018-07-12 富士通株式会社 類似度判定プログラム、類似度判定方法および情報処理装置
US11036564B2 (en) 2017-01-05 2021-06-15 Fujitsu Limited Non-transitory computer-readable storage medium, information processing apparatus and method for detecting malware
US11048799B2 (en) 2017-01-05 2021-06-29 Fujitsu Limited Dynamic malware analysis based on shared library call information

Also Published As

Publication number Publication date
US20160224791A1 (en) 2016-08-04
US10073973B2 (en) 2018-09-11
JP6000465B2 (ja) 2016-09-28
JPWO2015045043A1 (ja) 2017-03-02

Similar Documents

Publication Publication Date Title
JP7460696B2 (ja) カーネルモードにおけるマルウェアおよびステガノグラフィのリアルタイム検出ならびにマルウェアおよびステガノグラフィからの保護
JP6000465B2 (ja) プロセス検査装置、プロセス検査プログラムおよびプロセス検査方法
EP3506139B1 (en) Malware detection in event loops
US8955124B2 (en) Apparatus, system and method for detecting malicious code
KR101265173B1 (ko) 비실행 파일 검사 장치 및 방법
EP3039608B1 (en) Hardware and software execution profiling
US20180089430A1 (en) Computer security profiling
US7620990B2 (en) System and method for unpacking packed executables for malware evaluation
US10783246B2 (en) Comparing structural information of a snapshot of system memory
Rathnayaka et al. An efficient approach for advanced malware analysis using memory forensic technique
KR101212553B1 (ko) 악성 파일 검사 장치 및 방법
US20170372068A1 (en) Method to identify known compilers functions, libraries and objects inside files and data items containing an executable code
US20180052997A1 (en) Determining whether process is infected with malware
US9910983B2 (en) Malware detection
US9177149B2 (en) Method of detecting malware in an operating system kernel
US20180341769A1 (en) Threat detection method and threat detection device
US20190138713A1 (en) Method for Detecting a Deviation of a Security State of a Computing Device from a Desired Security State
CN105791250B (zh) 应用程序检测方法及装置
US20180341770A1 (en) Anomaly detection method and anomaly detection apparatus
JP6297425B2 (ja) 攻撃コード検出装置、攻撃コード検出方法、及びプログラム
US10880316B2 (en) Method and system for determining initial execution of an attack
KR101908517B1 (ko) 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법
US10061924B1 (en) Detecting malicious code based on deviations in executable image import resolutions and load patterns
US9607152B1 (en) Detect encrypted program based on CPU statistics
CN115982673A (zh) 安全检测方法、装置、电子设备及计算机可读取存储介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13894114

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2015538689

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 15024649

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13894114

Country of ref document: EP

Kind code of ref document: A1