WO2015174512A1 - 情報処理装置、情報処理監視方法、プログラム、及び記録媒体 - Google Patents
情報処理装置、情報処理監視方法、プログラム、及び記録媒体 Download PDFInfo
- Publication number
- WO2015174512A1 WO2015174512A1 PCT/JP2015/063975 JP2015063975W WO2015174512A1 WO 2015174512 A1 WO2015174512 A1 WO 2015174512A1 JP 2015063975 W JP2015063975 W JP 2015063975W WO 2015174512 A1 WO2015174512 A1 WO 2015174512A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- instruction
- monitoring
- kernel
- unit
- privilege level
- Prior art date
- Legal status (The legal status 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 status listed.)
- Ceased
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
- G06F11/3093—Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/54—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/105—Multiple levels of security
Definitions
- the present invention relates to a technique for monitoring an information processing operation executed by a processor.
- malicious programs malicious programs
- the behavior of the malicious program is to obtain the privilege level (ring 0) by intruding on the access to the kernel space resource from the user mode accompanying the execution of the application program (AP) after entering the memory in the computer from the outside.
- AP application program
- Japanese Patent Application Laid-Open No. 2004-151867 discloses a step of detecting activation of an application, a step of temporarily suspending a processing request for a resource issued from the activated application, and a case where the activated application is a regular application in order to limit use of the API.
- An application for preventing information leakage of resources comprising: a step of authenticating whether or not the application is activated; and a step of permitting processing based on the temporarily suspended processing request only when the authentication result of the activated application is successful The monitoring method is described.
- Patent Document 2 when an application executed on a computer accesses information stored in a storage device such as a hard disk HDD, the application is hooked using an operating system (OS) hook function in advance.
- the determination unit determines whether or not the set access permission condition is satisfied, and if it is determined that the virus or the like is unauthorized access, the information leakage of the computer prohibiting the transfer of the information stored in the storage device to the application A prevention system is described.
- a management file is stored using a dedicated loader that is loaded from the external device into the main memory (RAM) by turning on the computer with a dedicated loader and an external device storing the management file in advance. Furthermore, an external boot technique is described in which a secure area by a management file can be secured in a predetermined area of the RAM by controlling the area where the OS is loaded from the HDD and providing a privilege level difference between the areas.
- the information leakage prevention system described in Patent Document 2 is intended for functions related to input / output of a file system.
- an access permission condition an operation such as writing of file data input via a computer user interface is performed.
- predetermined check items such as IO type, application name, data file name, execution constraint condition (date, range, etc.) of the execution program, the file system itself has a virus monitoring function according to user settings. The judgment function is retained. Therefore, there is a limit to appropriately monitoring the entire process of accessing kernel space resources from the user space without relating to reading of file data.
- Patent Document 3 requires an external device, invalidates illegal access from the OS, and maintains a secure area in the main memory constructed at startup even after startup. It does not monitor the access instruction to the kernel for processing requests for resources.
- the present invention has been made in view of the above, and provides an information processing apparatus, an information processing monitoring method, a program, and a recording medium capable of monitoring an instruction to an OS kernel for processing requests for resources. It is in.
- the information processing apparatus includes a monitoring unit that monitors at least an instruction for transferring processing to an OS kernel among instructions issued to a processor, and monitoring software that functions as the monitoring unit.
- Load means for loading a predetermined area of the main memory at a privilege level higher than the privilege level set in the OS kernel.
- the information processing monitoring method includes a monitoring step for monitoring at least an instruction for transferring processing to an OS kernel among instructions issued to a processor, and monitoring software functioning as the monitoring step Is loaded with a privilege level higher than the privilege level set in the OS kernel and loaded into a predetermined area of the main memory.
- the program according to the present invention also includes monitoring means for monitoring at least instructions issued to the processor for transferring processing to the OS kernel, and monitoring software functioning as the monitoring means for the OS.
- the processor is caused to function as a load means for setting a privilege level higher than the privilege level set in the kernel and loading it into a predetermined area of the main memory.
- the computer-readable recording medium includes a monitoring unit that monitors at least an instruction for transferring processing to an OS kernel among instructions issued to a processor, and a monitoring function that functions as the monitoring unit.
- a program for causing the processor to function as loading means for loading software into a predetermined area of the main memory by setting a privilege level higher than the privilege level set in the kernel of the OS is recorded.
- the monitoring software is set at a privilege level higher than the privilege level (ring) set in the OS kernel, at least processing among the instructions issued to the processor is processed in the OS kernel. It is possible to ensure a monitoring situation in which issuance of a command for delivery to the terminal can be always hooked. Therefore, even when an illegal program is included in such an instruction and a resource is accessed by executing the illegal program, the access is detected and the intrusion of the illegal program into the kernel is prevented.
- the access can be detected and the unauthorized program can be prevented from entering the kernel.
- FIG. 1 is a configuration diagram showing an embodiment of an information processing apparatus according to the present invention.
- the information processing apparatus 1 to which the present invention is applied includes a server apparatus incorporating a computer, a general-purpose personal computer, a portable information processing terminal, and various information processing apparatuses having a function of communicating via a network. Including.
- the information processing apparatus 1 includes a chip set 10 including a CPU (Central Processing Unit) 11 as a processor.
- the CPU 10 includes an auxiliary storage device 20 including a flash ROM (Read Only Memory) 21 and a hard disk drive (HDD) 22 via a bus BA, a RAM (Random Access Memory) 30 as a main memory, an input unit 40, and an output unit 50. And a log storage unit 60 provided as necessary.
- a CPU Central Processing Unit
- the CPU 10 includes an auxiliary storage device 20 including a flash ROM (Read Only Memory) 21 and a hard disk drive (HDD) 22 via a bus BA, a RAM (Random Access Memory) 30 as a main memory, an input unit 40, and an output unit 50.
- a log storage unit 60 provided as necessary.
- the flash ROM 21 stores BIOS (Basic Input / Output System).
- BIOS Basic Input / Output System
- the HDD 22 stores information on various application programs and necessary data in addition to an OS (Operation System). As shown in FIG. 2, the information stored in the HDD 22 is read (loaded) into the RAM 30 mainly at startup. Details will be described with reference to FIG.
- the RAM 30 functions as a main memory, and when the information processing apparatus 1 is activated, a program or the like stored in the auxiliary storage device 20 is loaded, and information in the middle of processing is temporarily stored. As shown in FIG. 4 according to the present invention, the information processing apparatus 1 is loaded with a program or the like stored in the auxiliary storage device 20 into the RAM 30 and executed by the CPU 11 in addition to various known information processing. Functions as a simple processing execution unit.
- the input unit 40 includes a keyboard, a mouse, a touch panel, etc. provided with a numeric keypad, etc., and inputs required information and gives instructions for processing.
- the output unit 50 is assumed to be a display unit that displays an image.
- the output unit 50 may be a printer unit, a communication unit that is connected to a network such as the Internet, and exchanges information.
- the log storage unit 60 has a history (program) of access (Syscall, Sysenter, call gate, etc.) by a privileged instruction that is a processing request for a resource, which occurs during the operation of the information processing apparatus 1, and the instruction. A log of the processing contents related to is recorded over time.
- FIG. 2 is a diagram showing an example of a program map in the RAM 30 of the information processing apparatus 1 after startup, and shows a chip set 10 including the CPU 11.
- the chip set 10 includes a CPU 11 as a processor, a flag register indicating the current state of the CPU 11, an MSR (Model Specific Register) 12, a general-purpose register 13 for storing data, and an index register related to memory addressing and the like And a register group including a special register, a segment register related to a memory management system, and the like.
- FIG. 3 is a flowchart showing an example of the startup process. First, a program map of the RAM 30 shown in FIG. 2 will be described, and then a flowchart of the startup process shown in FIG. 3 will be described.
- the RAM 30 has areas divided into areas A, B, and C.
- a value 0 (so-called ring 0) is set in DPL (Description Privilege Level) which is a privilege level.
- a ring 2 is set in the area B, and a ring 3 is set in the area C.
- monitoring software 31 can be loaded with the highest privilege level, and all the information set in area A is loaded on ring 0. Realized.
- DPL (ring) describes the privilege level of the memory space, and there are four ranks from DPL “0” to DPL “3” (ring 0 to ring 3). The lower the DPL value, the higher the privilege level.
- a program that operates in a space described as a relatively large value of the DPL value cannot access the space side described as a value having a smaller DPL value. That is, in this case, a general protection exception (#GP), which will be described later, is issued as a privilege level violation, and the access is invalidated.
- a program operating in a space described as a relatively small value of the DPL value can access or browse the space side where the DPL value is described as a larger value. This makes it possible to determine in advance whether or not the access is inappropriate.
- the area A includes monitoring software 31 loaded from the HDD 22, a system table 34 and an interrupt handler 32 formed by the monitoring software 31, and a later-described reference information unit 33 loaded from the HDD 22. Since the reference information unit 33 is used when the monitoring software 31 is executed as will be described later, it functions integrally with the monitoring software 31.
- the system table 34 includes a GDT (Global Descriptor Table) 341, an IDT (Interrupt Descriptor Table) 342, a TSS (Task State Segment) 343 for operating the monitoring software 31, and a PTE that converts linear addresses from the GDT 341 into physical addresses. Page Table Entry) 344 and the like.
- GDT Global Descriptor Table
- IDT Interrupt Descriptor Table
- TSS Task State Segment
- PTE Page Table Entry
- the GDT 341 is a table indicating information storage locations as is well known. More specifically, the GDT 341 is a list of segment descriptors that manage the storage location of each piece of information in units of 8 bytes, for example. Each segment descriptor has four attributes. The attributes are “type” (program code, data, stack) of information, “base address”, “limit”, and “DPL”. The “base address” indicates a storage reference (start) address in the RAM 30 for information. “Limit” indicates an access range of information. DPL indicates the privilege level described above. The segment descriptor adopted in the addressing is selected via the information of the segment selector used for conversion from the linear address.
- Whether or not task access is permitted is determined by CPL (Current Privilege Level) and RPL (Current Level) written to any of the registers CS, DS, and SS in the register group in the chipset 10 at the time of access request. Requested (Privilege Level) and the corresponding segment descriptor of GDT 341 are determined.
- IDT 342 is a table indicating the storage location of the interrupt handler 32 in the monitoring software 31 that is executed in response to the general protection exception (#GP) as an exception interrupt.
- #GP general protection exception
- the TSS 343 is created in association with each program (task) in the monitoring software 31. In other words, the TSS 343 restores the current state by transferring the execution state to a necessary program by a task switch in order to run the program according to the operation state and contexting the processing contents of the immediately preceding program to the corresponding TSS. It is possible.
- the PTE 344 is for converting the linear address created by the GDT 341 into a physical address, and is provided corresponding to each piece of information (each program code, each data, each stack). More specifically, the PTE 344 has pages, and each page is divided by a predetermined amount of data, for example, 4 KB. Each page data is set with a physical address and an access attribute. Each page data includes program code, data, and stack type. The physical address is for moving the linear address to a predetermined position in the RAM 30.
- the access attribute corresponds to a privilege level, and has “supervisor” and “user”. “Supervisor” refers to processing in the kernel space (kernel mode) and corresponds to ring 0 to ring 2 and “user” corresponds to ring 3.
- the dedicated loader 201 indicated by the wavy line is a program for loading the monitoring software 31.
- Area B includes a kernel 35 that is an OS, and a system table 36 that the kernel 35 creates to describe its own behavior.
- Area C includes AP (1) 371 to AP (n) 37n, which are various application programs that operate under the environment of the kernel 35.
- a dynamic link library dll which is a dynamic list of API (Application Programming Interface) which is a function for executing access from the AP (1) 371 to AP (n) 37n to the OS (kernel) 35.
- API Dynamic link library
- the API structure issued by the dll (API) 38 and issued to the kernel 35 at the privilege level 0 at the time of processing request to the resource is called a Syscall instruction.
- the API is a specification that defines procedures and data formats for calling various functions (software) that can be commonly used by a plurality of programs.
- dll (API) refers to a shared library in which programs implemented in a modular manner are combined at the time of execution by dynamic linking.
- BIOS program
- BIOS program
- the BIOS is loaded from the flash ROM 21 into the RAM 30 (step S1), and then the BIOS is activated to initialize the available peripheral devices.
- Power On Self Test processing is executed (step S3).
- the monitoring software 31 is loaded (step S5).
- the load process of the monitoring software 31 can be performed, for example, according to the following procedure. That is, the BIOS loads the MBR (Master Boot Record) from the head sector of the HDD 22 to the RAM 30 by the BIOS, and then the control of the CPU 11 is handed over to the MBR and is stored in the active partition table of the HDD 22 in advance (see FIG. 2). Is loaded into the RAM 30. Next, a temporary GDT is created by the dedicated loader 201, the privilege level is set to the ring 0 for the area A by this GDT, and the monitoring software 31 is loaded into the area A in this state.
- MBR Master Boot Record
- step S7 When the loading process of the monitoring software 31 is completed (Yes in step S7), the control of the CPU 11 is transferred to the monitoring software 31 (step S9). Subsequently, the monitoring software 31 performs monitoring environment setting processing, that is, creation of the system table 34 and creation of the interrupt handler 32. Next, the OS loader 310 (see FIG. 2) is activated, the area B is designated, the ring 2 is set as the privilege level, and the kernel 35 is loaded into the area B (step S11). Thereafter, as is known, AP 371 to AP (n) 37 n and dll (API) 38 are loaded as a privilege level in the ring 3 by the AP loader in the kernel 35.
- monitoring environment setting processing that is, creation of the system table 34 and creation of the interrupt handler 32.
- the OS loader 310 see FIG. 2 is activated, the area B is designated, the ring 2 is set as the privilege level, and the kernel 35 is loaded into the area B (step S11).
- FIG. 4 is a functional configuration diagram showing an example of the monitoring software.
- the CPU 11 executes the monitoring software 31 loaded in the RAM 30.
- the monitoring software 31 includes an interrupt handler creation unit 311 that creates an interrupt handler 32, a hook condition monitoring unit 312, a Syscall instruction monitoring unit 313 that monitors a Syscall instruction, and a log processing unit 314 that is employed as necessary.
- An environment monitoring unit 315 is provided, and each functions as a processing execution unit of the CPU 11.
- the Syscall instruction monitoring unit 313 may be executed separately from the hook condition monitoring unit 312.
- the log processing unit 314 and the environment monitoring unit 315 may be executed separately from the hook condition monitoring unit 312 and the Syscall instruction monitoring unit 313.
- the interrupt handler creation unit 311 creates an interrupt handler 32 that executes a series of monitoring processes for exceptions issued for accesses detected by the hook condition monitoring unit 312 and the Syscall instruction monitoring unit 313, respectively.
- the hook condition monitoring unit 312 includes an access detection unit 3121 in the interrupt handler 32 and a hook condition correction unit 3122 which is a program for monitoring the hook condition.
- MSR12 Instructions for reading and writing the contents of MSR12 are allowed in privileged mode (ring 0).
- the kernel 35 is operated as the ring 2
- the privileged instructions for accessing the MSR 12 (rdmsr, wrmsr) are general protection exceptions for the CPU 11.
- the exception interrupt by the CPU 11 at this time shifts to the interrupt handler 32 via the IDT 342 set in advance.
- the access detection unit 3121 of the interrupt handler 32 receives the issuance of the general protection exception, and receives the instruction pointer EIP (execution address of the instruction in which the exception has occurred) pushed by the CPU 11 on the stack. Refer to to determine whether it is a wrmsr instruction.
- the access detection unit 3121 determines whether the write destination is the register 121 related to the Syscall instruction in the MSR 12.
- the hook condition correction unit 3122 When the access detection unit 3121 determines that the write destination is the register 121 related to Syscall, the hook condition correction unit 3122 performs writing to set the Disable bit in the register 121 to 0. Thereafter, the hook condition correcting unit 3122 adds the number of bytes of the wrmsr instruction to the EIP of the stack and returns the control to the kernel 35, and the iret instruction (the flag (eflags) is also stacked on the stack for the call by the interrupt) Control is returned to the next instruction following the wrmsr instruction of the kernel 35 by issuing a dedicated return instruction iret).
- the value is uniformly set to 0 regardless of whether or not the bit is rewritten with respect to the Disable bit. By making corrections, the monitorable state for exceptions described later is maintained. It should be noted that the value may be corrected to 0 only when the value is rewritten to 1.
- FIG. 5 is a flowchart showing an example of the MSR monitoring process.
- steps S21 and S23 are general protection exception steps, but are included in this flowchart to facilitate understanding.
- the content of the general protection exception is inspected by the interrupt handler 32, and it is determined whether or not it is a write (wrmsr) command (step S25). If the content of the general protection exception is not a write (wrmsr) instruction, the flow is exited. On the other hand, if the content of the general protection exception is a write (wrmsr) instruction, then the write destination is the Syscall in the MSR register 12. It is determined whether or not the register 121 is related to an instruction (step S27). If it is not the register 121 related to the Syscall instruction, processing corresponding to the content of the general protection exception that has occurred is executed (step S29).
- step S31 the value 0 is written to Disable bit in the register 121 (step S31).
- step S33 an iret instruction for returning control to the kernel 35 is issued, and control is returned to the next instruction following the (wrmsr) instruction of the kernel 35 (step S33).
- the Syscall instruction monitoring unit 313 is a program that monitors the Syscall instruction in the interrupt handler 32, and includes a detection unit 3131, a correctness evaluation unit 3132, and a proxy processing unit 3133.
- An invalid opcode violation is, for example, when there is no valid computer instruction or when the processor attempts to execute an instruction that contains an invalid operand. Depending on the type of invalid opcode violation, the violation cannot be recovered, that is, the system Forced to restart or shut down.
- the Syscall instruction Since the access means for processing requests to the resource is the Syscall instruction, in consideration of the possibility of unauthorized programs being involved in the Syscall instruction (latency etc.), in this embodiment, the Syscall instruction is uniformly invalid opcode. The target of the hook is a violation.
- the detection unit 3131 as the interrupt handler 32 saves (pushes) the instruction pointer EIP (execution address of the instruction in which the exception occurred). , It is determined whether or not the access is a Syscall instruction.
- the pass / fail evaluation unit 3132 as the interrupt handler 32 saves and saves the eax, ebx, ecx, edx registers, etc. in the general-purpose register 13 at that time and the previous processing contents.
- the function of calling to the kernel 35 and the correctness of its parameters are evaluated as follows from the contents of the stack (such as the code of the Syscall instruction).
- the call function of the kernel 35 and the pass / fail evaluation of the parameters by the pass / fail evaluation unit 3132 are performed by, for example, collation using the preset reference information unit 33 in the area A.
- candidates with high injustice among API codes constituting the Syscall instruction are set. Examples of API candidates with high injustice include, for example, (a) currently unused or unpublished APIs, (b) reading / writing (tampering and falsification) to files under C: ⁇ WINDOWS (registered trademark) and C: ⁇ ProgramFiles. (C) control of authority (Token) given from the kernel 35 (for example, request for promotion from user authority to administrator authority).
- Token authority
- the reference information unit 33 refers to a PCR (Processor Control Region) that describes the relationship of threads and processes for AP (1) 371 to AP (n) 37n, and (a) APs permitted to operate. (For example, whether or not the AP path (folder) is a folder for which installation is permitted), and (b) whether or not the data write destination folder is a folder for which writing is permitted. May be.
- PCR Process Control Region
- the process (application program) from which the API is issued is distinguished, for example, whether a process without communication issuance has issued a communication API, (d) the process that has issued the communication API Including contents that distinguish whether or not a process generated by a process operated by a person depends on an artificial operation via the input unit 40 or on a program (generally, It is preferable to be able to distinguish whether the program is a malicious program.
- the proxy processing unit 3133 as the interrupt handler 32 shifts the control to the kernel 35 when it is evaluated as valid, and invalidates the Syscall instruction that is evaluated as invalid when it is evaluated as invalid. Then, the next instruction is returned to the AP that issued the Syscall instruction, or the kernel 35 is caused to process the program termination function.
- the stack contents can be returned to the kernel 35 set in the ring 2 by rewriting the EIP of the stack to the entry point of the kernel 35.
- the kernel 35 set in the ring 2 is a supervisor (kernel mode), and executes the contents created by the proxy processing unit 3133.
- the control is transferred by adding the number of bytes of the Syscall instruction and issuing an iret instruction.
- the AP (1) 371 issues a processing request for a predetermined resource, it accesses the dll (API) 38 (FIG. 6, step). (Refer to (1)), construct an API and create a Syscall instruction (see FIG. 6, step (2)). Next, the Syscall instruction is accessed to the kernel 35 on ring 0 (see FIG. 6, step (3)). At this time, an invalid opcode violation is issued to the Syscall instruction, and this invalid opcode violation is hooked by the monitoring software 31 (see FIG. 6, step (4)).
- API dll
- the proxy processing unit 3133 performs treatment according to the evaluation result of the correctness (validity) (see FIG. 6, steps (51) and (52)). .
- the proxy processing unit 3133 performs proxy processing for transferring control to the kernel 35 (see step (51) in FIG. 6).
- the proxy processing unit 3133 issues the same content as the Syscall instruction invalidated as an invalid opcode violation as an instruction for controlling the kernel 35.
- the proxy processing unit 3133 determines that it is illegal, it transfers control to the kernel 35 (see FIG. 6, step (52)) or returns the next instruction following the Syscall instruction to the issuing AP. (Refer to FIG. 6, step (52-2)).
- the procedure for transferring control to the kernel 35 is performed in the same procedure as in the right case.
- the Syscall instruction created by the proxy processing unit 3133 is for instructing forcible termination of the program, that is, for returning without performing any processing (through).
- the process to return the next instruction following the Syscall instruction to the AP that issued it is the same as when the Syscall instruction is skipped by adding only the number of bytes of the Syscall instruction, and control is returned to the subsequent instruction. It is.
- FIG. 7 is a flowchart showing an example of the Syscall monitoring process.
- steps S41 and S43 are steps for generating an invalid opcode exception, but are included in this flowchart to facilitate understanding.
- it is determined whether or not an invalid opcode exception has occurred (step S41). If an invalid opcode exception has occurred, control is transferred to the interrupt handler 32 (step S43).
- the interrupt handler 32 analyzes whether or not the instruction that issued the invalid opcode exception is a Syscall instruction (step S45). If it is not a Syscall instruction, processing corresponding to another invalid opcode corresponding to the instruction is executed (step S47). On the other hand, if it is a Syscall instruction, correctness evaluation processing is executed (step S49), and if the evaluation result is valid (Yes in step S51), control is transferred to the kernel 35. (Step S53). On the other hand, if the result of the evaluation is invalid (No in step S51), a process for returning the next instruction following the Syscall instruction to the issuing AP (iret) or a process for terminating the program for the kernel 35 is performed. (Step S53). Therefore, according to the monitoring software 31, in addition to protecting resources (hardware resources), it is possible to monitor the operation of the kernel 35 and AP in real time. Leakage can be effectively prevented.
- the log processing unit 314 stores all the program contents of the access that match the reference information unit 33 or evaluated as invalid in the log storage unit 60 in the chronological direction. Preferably, it is stored including occurrence time information.
- the log storage unit 60 is positioned as a data server device via a network such as the Internet, the log storage unit 60 is transmitted with the transmission source IP address stored therein.
- log management for each information processing device can be performed by sorting by IP address.
- the log information only needs to include at least a Syscall instruction for invalid opcode violation.
- the saved content of the log storage unit 60 can be analyzed later, so that it can be used for reliable and proper post-analysis when there is an abnormal operation or processing. Also, through analysis, it can be used as a lesson for later learning, leading to fraud deterrence effects.
- the log target information in this embodiment includes at least one or all of a process list, a file I / O log, a network transmission / reception log, an environment setting value access log, and monitoring and logging contents.
- the executed program is managed as a process by the OS and stored in the PCR. Since the executed process always interacts with the kernel 35 via Syscall, a list of executed processes can be acquired.
- the acquired information includes, for example, a program file name and its path, a process ID, and a startup time. By acquiring these, it is possible to determine whether unknown or unnecessary programs are being executed. Further, it can be determined from the acquired information whether the program is abnormal.
- the file I / O log obtains a file I / O request from the API function number (register eax) at the time of Syscall, and from the parameter value (contents of general-purpose register 13 and data in the stack), the file path and its Acquired as an operation (read / write).
- the acquisition information includes, for example, a file path, an operation method (writing or reading), and a process ID.
- the network transmission / reception log acquires a transmission / reception request from the API function number (register eax) at the time of Syscall and Sysret, and transmits / receives data and its operation (connect, send) from its parameter values (contents of general-purpose register 13 and data in the stack). , Receive, accept).
- the acquired information includes, for example, operation methods (connect, send, receive, accept), transmission / reception data, transmission / reception ports, and transmission / reception IP addresses (IPV4 and IPV6).
- the environment setting value access log is acquired as monitored content because access to the environment setting value is monitored because unauthorized operations from the kernel mode do not go through the Syscall instruction.
- Acquisition information includes, for example, access to MSR12 and its contents, access and contents of control registers (CR0, CR2, and CR4), access to and contents of debug registers, execution of cache control instructions, execution of CPUID instructions , Access to page table PML4, execution of software interrupt instructions, access and load instructions to CPU system tables (GDT, IDT, LDT, TSS), execution EIP and its module name (kernel program and kernel driver), and unused Includes interrupt vector interrupt and interrupt destination execution code.
- the monitoring and logging contents include access to physical addresses below 1Mbyte. Since this is an area that is not used after the OS is started, it can be regarded as unauthorized use. Access to the physical address ACPI management table can be regarded as unauthorized acquisition of terminal information. In the device access (MMIO) physical address setting for all page tables, it can be determined that direct device access from other than the kernel is illegal. The comparison of the kernel program area can check the alteration of the kernel program.
- MMIO device access
- FIG. 8 is a flowchart showing an example of log processing.
- the Syscall instruction is hooked (step S61).
- Such processing continues until shutdown (Yes in step S65).
- the Syscall instruction is targeted for logging, but the same applies to the case where a specific hook reason, for example, an instruction corresponding to an invalid opcode violation is targeted for logging.
- the environment monitoring unit 315 has a function of hooking the access when a write access to the specific register or the like is issued.
- the specific register or the like is a register in which a basic environment setting value required for the operation of the CPU 11 is set.
- the basic environment setting values include the following.
- the environment monitoring unit 315 hooks an access to a specific register or the like in which these environment setting values are set, in particular, a write access as a general protection exception or an invalid opcode violation, and prevents this access (invalid, prohibited, After returning to the original state, etc., it returns to the next instruction. Or you may make it return, performing the process which rewrites to the original content regardless of whether it was rewritten.
- fundamental environment setting values There are multiple types of fundamental environment setting values as follows. First, there is an environment setting value of an OS (kernel) indicating process management information (PCR, PRCB, ETHREAD, EPROCESS, etc. of Windows (registered trademark) OS). Access to this setting value must be made by requesting the kernel through the API. Therefore, at that time, since the process requires administrator authority (which is the authority of the CPU 11, which is different from the above-mentioned ring), the authority of each process is monitored.
- Other fundamental environment settings include control registers (CR0, CR4, CR3), debug registers (DR0 to DR7), MSR (IA32E_EFER, etc.), and CPU environment settings stored in GDTR, IDTR, and LDTR.
- BIOS jump instruction environment setting value that uses a BIOS function using a software interrupt when the OS is in the real mode. To prevent tampering and unauthorized use of this BIOS function, hook the real mode interrupt vector.
- Another fundamental environment setting value is the KernelDriver environment setting value. If an attempt is made to change the “environment setting value of the CPU 11” by the driver, the instruction is ignored and unloading is performed. Also, driver loading is prohibited from the application.
- the Syscall instruction is hooked as an invalid opcode violation.
- the present invention is not limited to an invalid opcode violation, and other exceptions may be applied for hooking.
- the present invention includes a monitoring unit that monitors at least an instruction for handing over processing to an OS kernel among instructions issued to a processor, and monitoring software that functions as the monitoring unit.
- An information processing apparatus including a load unit that loads a predetermined area of the main memory at a privilege level higher than a privilege level set in the OS kernel.
- the present invention is also applied to an information processing monitoring method, a program, and a recording medium.
- the monitoring software is set to a privilege level higher than the privilege level (ring) set in the OS kernel, at least processing among the instructions issued to the processor is processed in the OS kernel. It is possible to ensure a monitoring situation in which issuance of a command for delivery can always be hooked. Therefore, even when an illegal program is included in such an instruction and a resource is accessed by executing the illegal program, the access is detected and the intrusion of the illegal program into the kernel is prevented.
- the monitoring unit evaluates whether or not the detected instruction is correct, and a detection unit that detects at least the issuance of an instruction for transferring processing to the OS kernel among the instructions issued to the processor. It is preferable to include an evaluation unit and a proxy processing unit that executes the command on the basis of an evaluation result.
- the instruction detected by the detection unit is evaluated for correctness by the evaluation unit. Evaluation is done in a way that relates to the potential for malware. Then, a command according to the evaluation result is issued by the proxy processing means. The evaluation result assumes both when the evaluation is valid and when it is invalid. In either case, a new instruction is issued by the proxy processing means, and the original instruction from the issuer is used directly. Not. Therefore, intrusion of resources through the kernel of the malicious program and further hiding are prevented.
- the detection means detects the instruction as an invalid opcode violation. According to this configuration, it is possible to reliably detect a problem access instruction.
- the instruction is a syscall instruction
- the evaluation unit evaluates whether the instruction is correct or not based on collation with information related to an API constituting the syscall instruction.
- a syscall instruction that enables access to a resource from an application program
- information relating to API Application Programming Interface
- the syscall instruction for example, attributes, storage locations, sources, etc. Therefore, it is evaluated whether the program is an unauthorized program.
- the proxy processing means shifts the same contents as the instruction to the kernel when the evaluation means determines that the instruction is valid, and when the evaluation means determines that the instruction is illegal, It is preferable to return the terminating instruction to the kernel. According to this configuration, even if the access command is valid or illegal, a new command is issued by the proxy processing means, so that the risk of unauthorized program infection is suppressed.
- the proxy processing means shifts the same contents as the instruction to the kernel when the evaluation means determines that the instruction is valid, and when the evaluation means determines that the instruction is illegal, It is preferable to return the instruction to be skipped to the kernel. According to this configuration, even if the access command is valid or illegal, a new command is issued by the proxy processing means, so that the risk of unauthorized program infection is suppressed.
- the monitoring means further includes hook condition setting means for setting a hook condition for monitoring, and the monitoring means is issued to the processor based on the hook condition set by the hook condition setting means. It is preferable to detect at least the issue of an instruction for transferring processing to the OS kernel. According to this configuration, the monitoring unit detects issuance of an instruction to be delivered to the OS kernel according to the hook condition set by the hook condition setting unit.
- the hook condition setting means includes hook condition monitoring means for monitoring rewrite access to the hook condition, and hook condition correcting means for rewriting the hook condition every time detection of rewrite access to the hook condition is detected. Is preferred. According to this configuration, the rewrite access to the hook condition is monitored by the hook condition monitoring means, and the hook condition is correctly rewritten by the hook condition correcting means every time the issuance of the rewrite access to the hook condition is detected.
- the loading means is included in the first loading means for loading the monitoring software functioning as the monitoring means, and the monitoring software loaded by the first loading means, and loads the OS kernel. It is preferable that the 2nd load means to perform is included. According to this configuration, the OS kernel is loaded by the second loading means included in the monitoring software loaded by the first loading means for loading the monitoring software. A low privilege level is set.
- the first loading means loads the monitoring software functioning as the monitoring means at privilege level 0, and the second loading means loads the OS kernel at either privilege level 1 or 2. It is preferable that According to this configuration, since the monitoring software has the privilege level with the highest authority, it is possible to monitor the behavior on the kernel side of the OS that can operate in the kernel mode at the privilege level 1 or 2.
- Information processing apparatus 11 CPU (processor) 121 Register related to Syscall instruction 201 Dedicated loader (loading means) 30 RAM (main memory) 31 Monitoring software (monitoring means) 32 Interrupt handler 33 Reference information section 35 Kernel 38 dll (API) 312 Hook condition monitoring unit (hook condition setting means) 3121 Access detection unit (hook condition monitoring means) 3122 Hook condition correction section (hook condition correction means) 313 Syscall instruction monitoring unit (monitoring means) 3131 Detection unit (detection means) 3132 Accuracy evaluation unit (evaluation means) 3133 Proxy processing unit (proxy processing means)
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
- Storage Device Security (AREA)
Abstract
情報処理装置(1)は、CPU(11)に対して発行される命令のうち、少なくとも処理をOSのカーネル(35)に引き渡すための命令に対する監視を行うSyscall命令監視部(313)と、Syscall命令監視部(313)として機能する監視ソフトウェア(31)を、OSのカーネル(35)に設定されるリング(2)より高いリング0でRAM(30)の領域Aにロードする専用ローダ(201)とを備える。これによって、不正なプログラムの実行によってリソースがアクセスされる場合であっても当該アクセスを検知して不正プログラムのカーネルへの侵入を阻止する。
Description
本発明は、プロセッサが実行する情報処理動作を監視する技術に関する。
昨今、不正かつ有害な動作を行う意図で作成された悪意のあるプログラム(以下、不正プログラム)によるファイルの書き換えやシステムの設定変更等によってコンピュータのセキュリティーが大きく損なわれている。不正プログラムの挙動は、外部からコンピュータ内のメモリに侵入した後、アプリケーションプログラム(AP)の実行に伴うユーザモードからカーネル空間のリソースへのアクセスに便乗して特権レベル(リング0)を取得し、以後、リソースの制御を支配することで、意図した不正行為を実行可能にする。今日、不正プログラムの実行を監視し、不正動作を規制する各種の対応ソフトウェアが提案されている。
特許文献1には、APIの利用制限を図るべく、アプリケーションの起動を検出するステップと、起動されたアプリケーションから発行されたリソースに対する処理要求を一時保留するステップと、起動されたアプリケーションが正規のアプリケーションであるか否かを認証するステップと、起動されたアプリケーションの認証結果が成功の場合にのみ、前記一時保留した処理要求による処理を許可するステップとを備えて、リソースの情報漏洩防止を図るアプリケーションの監視方法が記載されている。
特許文献2には、コンピュータ上で実行されるアプリケーションがハードディスクHDD等の記憶装置に記憶された情報にアクセスする時点で、オペレーティングシステム(OS)のフック機能を利用してこのアプリケーションをフックし、予め設定されたアクセス許容条件を満たすかどうかを判定部によって判定し、ウイルス等の不正なアクセスと判定された場合には前記記憶装置に記憶された情報のアプリケーションへの受け渡しを禁止するコンピュータの情報漏洩防止システムが記載されている。
特許文献3には、予め専用ローダ及び管理ファイルを格納した外部デバイスを装着してコンピュータの電源を投入することで、外部デバイスから主メモリ(RAM)ロードされる専用ローダを用いて管理ファイルが、更にHDDからOSがロードされる領域をそれぞれ制御し、かつ領域間で特権レベルに差を設けることでRAMの所定領域に管理ファイルによるセキュア領域を確保し得る外部ブート技術が記載されている。
特許文献1に記載された、リソースの情報漏洩防止を図るためのアプリケーション監視方法では、フックを行うフィルタモジュール及び認証モジュールがアプリケーションと同一プロセス空間に設けられた構成であるため、これらモジュールによるフック動作及び認証動作の両信頼性に大きな問題がある。また、フックされたアプリケーションと予め登録されているアプリケーションとのハッシュ値同士を照合によって認証し、この認証が不成功の場合、当該アプリケーションを強制終了又は管理者に通知するようにしているため、コンピュータの動作が停止してしまう場合があるという問題がある。
特許文献2に記載された情報漏洩防止システムは、ファイルシステムの入出力に関する機能を対象とするもので、アクセス許容条件として、コンピュータのユーザインタフェースを介して入力される、ファイルデータの書き込みなどの操作を表すIOタイプ、アプリケーション名、データ・ファイル名、実行プログラムの実行制約条件(日時、範囲等)などの所定のチェック項目を活用し、これによってユーザの設定によりファイルシステム自身にウイルスに対する監視機能と判断機能を保持させるものである。従って、ファイルデータの読み出しと関連せず、ユーザ空間からカーネル空間のリソースへアクセスするプロセス全般に対して適切な監視を行うには限界がある。
また、特許文献3に記載された発明は、外部デバイスを必須とし、OSからの不当なアクセスを無効化して、起動時に構築した主メモリ内のセキュア領域を立ち上げ後も維持するようにした技術であり、リソースに対する処理要求のためのカーネルへのアクセス命令に対する監視を行うものではない。
本発明は、上記に鑑みてなされたもので、リソースに対する処理要求のためのOSのカーネルへの命令を監視することのできる情報処理装置、情報処理監視方法、プログラム、及び記録媒体を提供することにある。
本発明に係る情報処理装置は、プロセッサに対して発行される命令のうち、少なくとも処理をOSのカーネルに引き渡すための命令に対する監視を行う監視手段と、前記監視手段として機能する監視ソフトウェアを、前記OSのカーネルに設定される特権レベルより高い特権レベルで主メモリの所定領域にロードするロード手段とを含むものである。
また、本発明に係る情報処理監視方法は、プロセッサに対して発行される命令のうち、少なくとも処理をOSのカーネルに引き渡すための命令に対する監視を行う監視ステップと、前記監視ステップとして機能する監視ソフトウェアを前記OSのカーネルに設定される特権レベルより高い特権レベルを設定して主メモリの所定領域にロードするロードステップとを備えたものである。
また、本発明に係るプログラムは、プロセッサに対して発行される命令のうち、少なくとも処理をOSのカーネルに引き渡すための命令に対する監視を行う監視手段、前記監視手段として機能する監視ソフトウェアを前記OSのカーネルに設定される特権レベルより高い特権レベルを設定して主メモリの所定領域にロードするロード手段として前記プロセッサを機能させるものである。
また、本発明に係るコンピュータ読み取り可能な記録媒体は、プロセッサに対して発行される命令のうち、少なくとも処理をOSのカーネルに引き渡すための命令に対する監視を行う監視手段、前記監視手段として機能する監視ソフトウェアを前記OSのカーネルに設定される特権レベルより高い特権レベルを設定して主メモリの所定領域にロードするロード手段として前記プロセッサを機能させるプログラムを記録したものである。
これらの発明によれば、監視ソフトウェアがOSのカーネルに設定される特権レベル(リング)よりも高い特権レベルに設定されるため、プロセッサに対して発行される命令のうち、少なくとも処理をOSのカーネルに引き渡すための命令の発行を常にフック可能な監視状況が確保し得る。従って、かかる命令に不当なプログラムが含まれ、その不正なプログラムの実行によってリソースがアクセスされる場合であっても、当該アクセスを検知して不正プログラムのカーネルへの侵入が阻止される。
本発明によれば、不正なプログラムの実行によってリソースがアクセスされる場合であっても当該アクセスを検知して不正プログラムのカーネルへの侵入を阻止することができる。
図1は、本発明に係る情報処理装置の一実施形態を示す構成図である。本発明が適用される情報処理装置1としては、コンピュータを内蔵するサーバ装置、汎用パーソナルコンピュータ、携行用の情報処理端末等、更にはネットワークを介して通信する機能を備えた各種の情報処理装置を含む。
情報処理装置1は、マイクロコンピュタで構成され、プロセッサとしてのCPU(Central Processing Unit)11を含むチップセット10を備える。CPU10は、バスBAを介してフラッシュROM(Read Only Memory)21とハードディスクドライブ(HDD)22とを含む補助記憶装置20、主メモリとしてのRAM(Random Access Memory)30、入力部40、出力部50、及び必要に応じて設けられるログ記憶部60と接続されている。
フラッシュROM21は、BIOS(Basic Input/ Output System)を格納する。HDD22は、OS(Operation System)の他、各種アプリケーションプログラム及び必要なデータ類の情報を格納する。HDD22に格納されている情報は、図2に示すように、主に起動時にRAM30に読み出(ロード)される。詳細は図2において説明する。
RAM30は、主メモリとして機能し、情報処理装置1が起動する際に補助記憶装置20に格納されているプログラム等がロードされると共に、処理途中の情報が一時的に格納される。情報処理装置1は、補助記憶装置20に格納されているプログラム等がRAM30にロードされ、CPU11によって実行されることで、公知の各種の情報処理に加えて、本発明に係る図4に示すような処理実行部として機能する。
入力部40は、テンキー等を備えたキーボードやマウス、タッチパネル等を含み、所要の情報の入力や処理の指示を行うものである。出力部50は、画像を表示する表示部を想定している。なお、出力部50としては、プリンタ部やインターネット等のネットワークに接続して情報の授受を行う通信部等でもよく、更にこれらが併設されたものでもよい。ログ記憶部60は、後述するように、情報処理装置1の動作中において発生する、リソースに対する処理要求である特権命令によるアクセス(Syscall、Sysenter、コールゲート等)の履歴(プログラム)及び、かかる命令に関する処理内容のログを経時的に記録する。
図2は、起動後における情報処理装置1のRAM30のプログラムマップの一例を示す図で、CPU11を含むチップセット10と共に示している。
チップセット10は、プロセッサとしてのCPU11の他、現在のCPU11の状態を表すフラグレジスタやMSR(Model Specific Register)12、データ格納用の汎用レジスタ13の他、メモリのアドレス指定等に関係するインデックスレジスタや特殊レジスタ、メモリ管理方式に関係するセグメントレジスタ等を備えたレジスタ群を有する。MSR12中のレジスタ121は、Syscall命令の発行に対して無効オペコード例外を発生(フック)させる所定のレジスタである。このレジスタ121がDisable(=0)のフック条件に設定されている場合、Syscall命令の発行は無効オペコード違反としてフックされる。
図3は、起動処理の一例を示すフローチャートである。まず、図2に示すRAM30のプログラムマップを説明し、次いで、図3に示す起動処理のフローチャートについて説明する。
RAM30は、領域A,B,Cに区分け領域を有する。領域Aには特権レベルであるDPL(Description Privilege Level)に値0(いわゆるリング0)が設定されている。また、領域Bにはリング2が、領域Cにはリング3が設定されている。領域Aに対して、リング0を設定することによって、例えば監視ソフトウェア31を最も高い特権レベルでロード可能にしている他、この領域A内に設定される情報に対して全てリング0でのロードを実現している。DPL(リング)とは、公知のように、メモリ空間の特権レベルを記述するもので、DPL“0”からDPL“3”(リング0~リング3)までの4ランクがある。DPL値が相対的に小さい程、特権のレベルが上位となる。例えば、DPL値の相対的に大きい値として記述された空間で動作するプログラムはDPL値がそれより小さい値で記述された空間側にアクセスすることはできない。すなわち、この場合は特権レベル違反として、後述する一般保護例外(#GP)が発行され、当該アクセスは無効とされる。一方、DPL値の相対的に小さい値として記述された空間で動作するプログラムはDPL値がそれより大きい値で記述された空間側にアクセスしたり閲覧したりすることができる。これによって、不適当なアクセスか否かの判断が事前に可能となる。
領域Aには、HDD22からロードされる監視ソフトウェア31と、監視ソフトウェア31によって形成されるシステムテーブル34及び割込ハンドラ32と、HDD22からロードされる後述の参照情報部33とが含まれる。なお、参照情報部33は、後述するように監視ソフトウェア31の実行に際して使用されることから、監視ソフトウェア31と一体的に機能する。
システムテーブル34は、監視ソフトウェア31を動作させるためのGDT(Global Descriptor Table)341、IDT(InterruptDescriptor Table)342、TSS(Task State Segment)343、及びGDT341からのリニアアドレスを物理アドレスに変換するPTE(Page Table Entry)344等を含む。
GDT341は、公知のように情報の格納箇所を示すテーブルである。より詳細には、GDT341は、例えば8バイト単位で各情報の格納箇所を管理するセグメントディスクリプタのリストである。各セグメントディスクリプタは、4つの属性を有している。属性は、情報の「種別」(プログラムコード、データ、スタック)と、「ベースアドレス」と、「リミット」と、「DPL」とである。「ベースアドレス」は、情報のRAM30内における格納基準(スタート)アドレスを示している。「リミット」は、情報のアクセス範囲を示す。DPLは、前述した特権レベルを示す。アドレッシングにおいて採用されるセグメントディスクリプタは、リニアアドレスからの変換に際して使用されるセグメントセレクタの情報を介して選択される。また、タスクのアクセスが許可されるものか否かは、アクセス要求時に、チップセット10内のレジスタ群内のレジスタCS,DS,SSのいずれかに書き込まれたCPL(Current Privilege Level)及びRPL(Requested Privilege Level)と、GDT341の対応するセグメントディスクリプタとを照合することで決定される。
IDT342は、例外割込としての一般保護例外(#GP)に対応して実行される、監視ソフトウェア31内の割込ハンドラ32の格納箇所を示すテーブルである。
TSS343は、監視ソフトウェア31内の各プログラム(タスク)の各々に対応付けて作成されている。すなわち、TSS343は、動作状態に応じたプログラムを稼働させるべく、タスクスイッチによって必要なプログラムに実行状態を移し、かつ直前のプログラムの処理内容を対応する個々のTSSにコンテキストすることで、現状復帰を可能にしている。
PTE344は、GDT341で作成されたリニアアドレスを物理アドレスに変換するためのもので、各情報(各プログラムコード、各データ、各スタック)について対応して設けられている。より詳細には、PTE344はページを有し、各ページは所定のデータ量、例えば4KB毎に分割されている。各ページデータには、物理アドレスとアクセス属性とが設定されている。各ページデータには、プログラムコード、データ、スタックの種類が含まれる。物理アドレスは、リニアアドレスをRAM30内の所定の位置に移動させるためのものである。アクセス属性は、特権レベルに相当するもので、「スーパーバイザー」と「ユーザ」とを有する。なお、「スーパーバイザー」はカーネル空間での処理(カーネルモード)をいい、リング0~リング2に該当し、「ユーザ」はリング3に該当する。なお、波線で示す専用ローダ201は、監視ソフトウェア31をロードするためのプログラムである。
領域Bには、OSであるカーネル(kernel)35と、カーネル35が自己の挙動を記述するために作成するシステムテーブル36とが含まれる。
領域Cには、カーネル35の環境下で動作する各種のアプリケーションプログラムであるAP(1)371~AP(n)37nを含む。領域Cには、AP(1)371~AP(n)37nからOS(カーネル)35へのアクセスを実行するための関数であるAPI(Application Programming Interface)の動的なリストであるダイナミックリンクライブラリdll(dynamic link library)(API)38が含まれる。dll(API)38で作成された、リソースへの処理要求の際の特権レベル0でのカーネル35に対して発行されるAPI構造をSyscall命令という。なお、APIとは、複数のプログラムが共通に利用できる種々の機能(ソフトウェア)の呼び出し時の手順やデータ形式などを定めた仕様をいう。dll(API)とは、モジュール化して実装されたAPIを、動的なリンクによって実行時にプログラムの結合を行うようにした共有ライブラリをいう。
図3において、まず装置の電源が投入されると、フラッシュROM21からBIOS(プログラム)がRAM30にロードされ(ステップS1)、続いてBIOSが起動されて利用可能な周辺機器の初期化を行うPOST(Power On Self Test)処理が実行される(ステップS3)。
次いで、監視ソフトウェア31のロード処理が実行される(ステップS5)。監視ソフトウェア31のロード処理は、例えば以下の手順で行うことができる。すなわち、BIOSによってHDD22の先頭セクタからMBR(Master Boot Record)がRAM30にロードされ、次いでCPU11の制御がMBRに渡されて、HDD22のアクティブなパーティションテーブルに予め格納されている専用ローダ201(図2参照)がRAM30にロードされる。次いで、専用ローダ201によって一時的なGDTが作成され、このGDTによって領域Aに対して特権レベルがリング0に設定され、この状態で監視ソフトウェア31が領域Aにロードされることで行われる。
監視ソフトウェア31のロード処理が終了すると(ステップS7でYes)、CPU11の制御が監視ソフトウェア31に渡される(ステップS9)。続いて、監視ソフトウェア31により、監視環境の設定処理、すなわちシステムテーブル34の作成、割込ハンドラ32の作成が行われる。次いで、OSローダ310(図2参照)が起動されて、領域Bの指定、特権レベルとしてリング2の設定を行って、カーネル35を領域Bにロードする(ステップS11)。なお、その後、公知のように、カーネル35内のAPローダによって、AP371~AP(n)37n、dll(API)38が、領域Cに特権レベルとしてリング3でロードされる。
図4は、監視ソフトウェアの一例を示す機能構成図である。CPU11は、RAM30にロードされた監視ソフトウェア31を実行する。監視ソフトウェア31は、割込ハンドラ32を作成する割込ハンドラ作成部311、フック条件監視部312、Syscall命令に関する監視を行うSyscall命令監視部313、及び必要に応じて採用されるログ処理部314、環境監視部315を備え、それぞれCPU11の処理実行部として機能する。なお、Syscall命令監視部313は、フック条件監視部312とは個別に実行される態様でもよい。また、ログ処理部314、環境監視部315は、フック条件監視部312及びSyscall命令監視部313とは個別に実行される態様でもよい。
割込ハンドラ作成部311は、フック条件監視部312、Syscall命令監視部313でそれぞれ検出されたアクセスに対して発行される各例外に対する一連の監視処理をそれぞれ実行させる割込ハンドラ32を作成する。
フック条件監視部312は、割込ハンドラ32の内、アクセス検出部3121、及びフック条件を監視するプログラムであるフック条件更正部3122を含む。
MSR12の内容を読み書きするための命令は特権モード(リング0)で許可される。一方、本実施形態では、カーネル35をリング2として動作させるため、特権命令であるMSR12へのアクセス命令(rdmsr、wrmsr)は、CPU11の一般保護例外となる。この時のCPU11による例外割込みは、予め設定しているIDT342を介して割込ハンドラ32に移行する。
そこで、割込ハンドラ32のアクセス検出部3121は、この一般保護例外をの発行を受けて、CPU11がスタック(stack)にプッシュ(push)した命令ポインタEIP(例外が発生した命令の実行アドレス)を参照してwrmsr命令か否かを判断する。アクセス検出部3121は、アクセス命令がwrmsr命令であると判断した場合、その書込み先がMSR12内の、Syscall命令に関するレジスタ121か否かを判断する。
フック条件更正部3122は、アクセス検出部3121によって書き込み先がSyscallに関するレジスタ121であると判断された場合、レジスタ121内のDisable bitを値0にする書き込みを行う。フック条件更正部3122は、その後、カーネル35に制御を戻すため、スタックのEIPにwrmsr命令のバイト数分を足し算してiret命令(割り込みでの呼び出しには、スタック上にフラグ(eflags)も積み上げられるために、専用の復帰命令iretを使用)を発行することにより、カーネル35のwrmsr命令に続く次の命令に制御を戻す。かかるフック条件監視処理を行うことで、レジスタ121の不当な書き換え要求(アクセス)に対して、常にそのDisable bitに対して、当該ビットが書き換えられているか否かに関わらず、一律に値0に更正するようにすることで、後述する例外に対する監視可能状態を維持している。なお、値1に書き換えられている場合にのみ、値0に更正するようにしてもよい。
図5は、MSR監視処理の一例を示すフローチャートである。なお、図5において、ステップS21,S23は一般保護例外のステップであるが、理解を助ける意味で本フローチャートに含めて説明している。まず、MSR12へのアクセス命令による一般保護例外が発生したか否かが判断される(ステップS21)。MSRレジスタ12へのアクセス命令による一般保護例外でなければ、本フローをスルーし、MSR12へのアクセス命令による一般保護例外であれば、処理が割込ハンドラ32に移行される(ステップS23)。
そして、割込ハンドラ32で、一般保護例外の内容が検査され、書き込み(wrmsr)命令か否かが判断される(ステップS25)。一般保護例外の内容が書き込み(wrmsr)命令でなければ、本フローを抜け、一方、一般保護例外の内容が書き込み(wrmsr)命令であれば、続いて、書き込み先がMSRレジスタ12内の、Syscall命令に関するレジスタ121か否かが判断される(ステップS27)。Syscall命令に関するレジスタ121でなければ、発生した一般保護例外の内容に対応した処理が実行される(ステップS29)。一方、Syscall命令に関するレジスタ121であれば、当該レジスタ121内のDisable bitに値0が書き込まれる(ステップS31)。次いで、カーネル35に制御を戻すためのiret命令が発行され、カーネル35の(wrmsr)命令に続く次の命令に制御が戻される(ステップS33)。
図4に戻って、Syscall命令監視部313は、割込ハンドラ32の内、Syscall命令に対する監視を行うプログラムで、検出部3131、正否評価部3132、及び代理処理部3133を含む。
MSRレジスタ12内のSyscall命令に関するレジスタ121がDisable(=0)の場合、Syscall命令の発行に対し、CPU11は無効オペコード例外を発生する。すなわち、本実施形態では、リソースへの処理要求を発行するリング0でのアクセス、ここではSyscall命令は、無効オペコード違反(Invalid Opcode Fault)として設定している。無効オペコード違反とは、例えば正当なコンピュータ命令が存在しない場合とかプロセッサが無効なオペランドを含む命令を実行しようとした場合をいい、無効オペコード違反の種類によっては、この違反から回復できず、すなわちシステムの再起動又はシャットダウンを強いられる。リソースへの処理要求のためのアクセス手段がSyscall命令であることから、Syscall命令中に不正プログラムが関与(潜伏など)する可能性を考慮して、本実施形態では、Syscall命令を一律に無効オペコード違反とするフック対象としている。
割込ハンドラ32としての検出部3131は、CPU11による例外割込の発生によって、処理が割込ハンドラ32に移行すると、スタックに保存(プッシュ)した命令ポインタEIP(例外が発生した命令の実行アドレス)を参照して、アクセスがSyscall命令であるか否かを判断する。
割込ハンドラ32としての正否評価部3132は、アクセスがSyscall命令であった場合、その時点での汎用レジスタ13内のeax,ebx,ecx,edxの各レジスタ等や直前の処理内容を退避保存しているスタックの内容(Syscall命令のコード等)から、カーネル35への呼び出し機能とそのパラメータの正否を、下記のように評価する。
正否評価部3132による、カーネル35の呼び出し機能とそのパラメータの正否の評価は、予め設定された、領域A内の参照情報部33を利用して、例えば照合によって行われる。参照情報部33には、Syscall命令を構成するAPIのコードの内、不当性が高い候補が設定されている。不当性が高いAPI候補としては、例えば、(a)現状では未使用乃至は非公開のAPI、(b)C:¥ WINDOWS(登録商標)やC:¥ ProgramFiles 配下のファイルへの読み書き(改竄や新たな作成など)、(c)カーネル35から付与される権限(Token)の制御(例えば、ユーザ権限から管理者権限への昇格要求など)がある。また、参照情報部33に、AP(1)371~AP(n)37nについて、スレッドやプロセスの関連を記述するPCR(Processor Control Region)を参照して、(a)動作を許可されているAPかどうか(例えば、APのパス(フォルダ)がインストールの許可がなされているフォルダであるかどうか)、(b)データの書込先のフォルダが書込許可されているフォルダであるかどうかを含めてもよい。さらに、(c)APIがどのプロセス(アプリケーションプログラム)から発行されたかを含めて区別する、例えば通信する筈のないプロセスが通信のAPIを発行したかどうか、(d)通信のAPIを発行したプロセスが人が操作するプロセスによって生成されたプロセスであったかどうかを区別する内容を含めることで、入力部40を経由しての人為的な操作に依拠するものか、プログラムに依拠する(一般的には不正プログラム)ものかの区別を可能にすることが好ましい。
また、割込ハンドラ32としての代理処理部3133は、正当と評価された場合、カーネル35に制御を移行し、一方、不当と評価された場合、不当と評価されたSyscall命令を無効とした上で、次の命令を、当該Syscall命令を発行したAPに戻すか、あるいはカーネル35にプログラムの終了機能を処理させる。
なお、カーネル35に制御を移行する場合、スタックのEIPをカーネル35のエントリポイントに書き換えることで、スタックの内容を、リング2に設定されているカーネル35に戻すことが可能となる。なお、リング2に設定されているカーネル35はスーパーバイザ(カーネルモード)で、代理処理部3133で作成された内容を実行する。また、アプリケーションに制御を戻す場合、Syscall命令のバイト数分を足し算して、iret命令を発行することにより制御が移行される。
情報処理装置1の動作中に、図6に示すように、例えばAP(1)371が、所定のリソースへの処理要求を発する場合、dll(API)38に対してアクセスし(図6、工程(1)参照)、APIを構築してSyscall命令を作成する(図6、工程(2)参照)。次いで、Syscall命令はリング0でカーネル35にアクセスされる(図6、工程(3)参照)。このとき、Syscall命令に対して無効オペコード違反が発行され、この無効オペコード違反が監視ソフトウェア31でフックされる(図6、工程(4)参照)。
ところで、無効オペコード違反となる対象は、Syscall命令以外にもあることから、無効オペコード違反を発行した命令の内容の分析が行われる。すなわち、Syscall命令に関しては無効処理とする一方、その正否(正当性)の評価結果に応じて代理処理部3133が処置を行うようにしている(図6、工程(51),(52)参照)。
より詳細には、代理処理部3133は、評価結果が正当であると判断された場合、カーネル35へ制御を移行する代行処理を行う(図6、工程(51)参照)。代理処理部3133は、カーネル35への制御のための命令として、無効オペコード違反として無効にしたSyscall命令と同一内容を発行する。
一方、代理処理部3133は、不当であると判断した場合、カーネル35へ制御を移行するか(図6、工程(52)参照)、あるいはSyscall命令に続く次の命令を発行元のAPに戻す(図6、工程(52-2)参照)処置を行う。カーネル35へ制御を移行する処置は、正当の場合と同様な手順で行う。なお、代理処理部3133によって作成されるSyscall命令は、プログラムの強制終了を指示するもの、すなわち何らの処理を行うことなく(スルーさせて)、リターンさせるものである。また、Syscall命令に続く次の命令を発行元のAPに戻す処理は、Syscall命令のバイト数分だけ加算することでSyscall命令をスキップしたと同様に、続きの命令に制御を戻すようにしたものである。
図7は、Syscall監視処理の一例を示すフローチャートである。なお、図7において、ステップS41,S43は無効オペコード例外の発生ステップであるが、理解を助ける意味で本フローチャートに含めて説明している。まず、図7において、無効オペコード例外の発生か否かが判断される(ステップS41)。無効オペコード例外の発生であると、制御が割込ハンドラ32に移行される(ステップS43)。
そして、割込ハンドラ32では、無効オペコード例外を発行した命令がSyscall命令であったか否かの分析が行われる(ステップS45)。Syscall命令でなければ、当該命令に応じた他の無効オペコードに対応する処理が実行される(ステップS47)。一方、Syscall命令であれば、正否評価の処理が実行され(ステップS49)、評価の結果が正当であれば(ステップS51でYes)、カーネル35に制御が移行される。(ステップS53)。一方、評価の結果が不当であれば(ステップS51でNo)、Syscall命令に続く次の命令を発行元のAPに戻す処理(iret)、又はカーネル35に対するプログラムの終了機能の処理が施される(ステップS53)。従って、監視ソフトウェア31によれば、リソース(ハードウェア資源)の保護の他、カーネル35及びAPの動作をリアルタイムで監視可能となることから、外部からの不正プログラムの侵入、逆に外部への情報の漏洩が効果的に防止できる。
また、ログ処理部314は、参照情報部33と一致した、あるいは不当と評価されたアクセスのプログラム内容を全てログ記憶部60に経時方向に格納する。好ましくは発生時刻情報を含めて格納する。ログ記憶部60がインターネット等のネットワークを介してデータサーバ装置としての位置づけである場合、送信元IPアドレスを付して送信し格納させる。外部のデータサーバ装置の場合には、IPアドレス毎にソートすることで、情報処理装置毎のログ管理が可能となる。なお、ログ情報としては無効オペコード違反のSyscall命令が少なくとも含まれていればよい。本実施形態によれば、後に、ログ記憶部60のセーブ内容を分析することで、異常動作や処理があった場合に対する確実かつ適正な事後解析に供することが可能となる。また、解析を通して、以後の教訓材料とすることができ、不正の抑止効果にもつながる。
なお、本実施形態におけるログ対象情報としては、プロセス一覧、ファイルI/Oログ、ネットワーク送受信ログ、環境設定値アクセスログ、及び監視及びロギング内容の少なくとも1つ乃至は全てが含まれる。プロセス一覧は、実行されたプログラムはプロセスとしてOSに管理され、PCRに格納される。実行されたプロセスは、必ずSyscallを経てカーネル35とのやり取りが発生するため、実行されたプロセスの一覧が取得できる。取得情報としては、例えば、プログラムファイル名とそのパス、プロセスID、起動時間を含む。これらを取得することで、不知もしくは不要なプログラムの実行の有無が把握できる。また、取得情報から異常なプログラムか否かが判断できる。
ファイルI/Oログは、Syscall時点でのAPI機能番号(レジスタeax)より、ファイルI/Oの要求を取得し、そのパラメータ値(汎用レジスタ13の内容やスタック内のデータ)からファイルパス及びその操作(読み書き)として取得される。取得情報としては、例えば、ファイルパス、操作方法(書き込みもしくは読み込み)、プロセスIDを含む。これらを取得することで、プログラムファイルの書込みやシステムフォルダもしくはユーザ指定の特定フォルダに対する操作から不正の有無が判断できる。
ネットワーク送受信ログは、Syscall及びSysret時点でのAPI機能番号(レジスタeax)より送受信要求を取得し、そのパラメータ値(汎用レジスタ13の内容やスタック内のデータ)から送受信データ及びその操作(connect、send、receive、accept)として取得される。取得情報としては、例えば、操作方法(connect、send、receive、accept)、送受信テータ、送受信ポート、送受信IPアドレス(IPV4及びIPV6)を含む。これらを取得することで、情報漏洩の基本となる送受信操作が監視できる。また、送信先IPアドレス及び受信元IPアドレスを元に不正アクセスが追跡できる。さらに送受信データの解析に基づく保護を可能とする。
環境設定値アクセスログは、カーネルモードからの不正操作がSyscall命令を介さないため、環境設定値へのアクセスが監視されており、その監視内容として取得される。取得情報としては、例えば、MSR12へのアクセスとその内容、コントロールレジスタ(CR0, CR2,CR4)へのアクセスとその内容、デバッグレジスタへのアクセスとその内容、キャッシュ制御命令の実行、CPUID命令の実行、ページテーブルPML4へのアクセス、ソフトウェア割込み命令の実行、CPUシステムテーブル(GDT、IDT、LDT、TSS)へのアクセスとロード命令、実行EIPとそのモジュール名(カーネルプログラムやカーネルドライバ)、及び未使用割込みベクタへの割込みと割込み先実行コードを含む。
監視及びロギング内容には、物理アドレス1Mbyte以下へのアクセスを含む。これは、OS起動後、使用されない領域であるため、不正利用と見なすことができる。物理アドレスACPI管理テーブルへのアクセスは、端末情報の不正取得と見なすことができる。全ページテーブルに対するデバイスアクセス(MMIO)物理アドレスの設定は、カーネル以外からの直接デバイスアクセスは不正と判断できる。カーネルプログラム領域の比較は、カーネルプログラムの改ざんをチェックできる。
図8は、ログ処理の一例を示すフローチャートである。まず、Syscall命令がフックされたかどうかが判断され(ステップS61)、フックされていなければ、本フローを抜ける。一方、フックされた場合、ログ記憶部60に記録される(ステップS63)。かかる処理が、シャットダウン(ステップS65でYes)まで継続して行われる。なお、ここでは、Syscall命令をログ対象としたが、特定のフック理由、例えば無効オペコード違反に該当する命令をログ対象とする場合も同様となる。
ところで、CPU11の稼働中は、MSR12や他のレジスタ内の特定のレジスタ等の内容が悪意のプログラムによって書き替えられる可能性がある。環境監視部315は、かかる特定のレジスタ等への書き込みのアクセスが発行されると、このアクセスをフックする機能を備える。ここに、特定のレジスタ等とは、CPU11の動作に必要とされる根本的な環境設定値が設定されるレジスタである。なお、根本的な環境設定値は、下記のものを含む。環境監視部315は、これらの環境設定値が設定される特定のレジスタ等へのアクセス、特に書込アクセスを、一般保護例外あるいは無効オペコード違反等としてフックし、このアクセスを阻止(無効、禁止、元に戻すなど)した後、次の命令に戻すようにしている。あるいは、書き換えられたか否かを問わず、元の内容に書き直す処理を施して、戻すようにしてもよい。
根本的な環境設定値は、以下のように複数種類存在する。まず、プロセス管理情報(Windows(登録商標) OSのPCR,PRCB,ETHREAD,EPROCESS等)を指すOS(カーネル)の環境設定値がある。この設定値へのアクセスはAPIを通じてカーネルに依頼して行わなければならない。そこで、その際、プロセスはOSが管理する管理者権限(CPU11の権限である、前述のリングとは異なる)が必要となるため、個々のプロセスの権限を監視する。また、他の根本的な環境設定値として、コントロールレジスタ(CR0,CR4,CR3)、デバッグレジスタ(DR0~DR7)、MSR(IA32E_EFERなど)、及びGDTR、IDTR、LDTRに格納されるCPUの環境設定値、MSRの環境設定値があり、これらへのアクセスをリング2にして、監視する。また、他の根本的な環境設定値として、カーネルに依頼する直前とカーネルからの戻り直後のパラメータ値やデータを監視するAPIの環境設定値がある。監視に際しては、「OSの環境設定値」との組み合わせも加味して、正否を判断する。なお、パラメータの監視に関する例としては、指定されたファイルパス(c:\windows\system32\ntoskrnl.exe)に書込みを依頼しようとしたかどうかがあり、また、データの監視に関する例としては、送受信バッファの内容にバイナリが含まれるかどうかがある。また、他の根本的な環境設定値として、コンピュータの電源制御とハードウェア構成要素を規格化したACPIの環境設定値(Advanced Configuration and Power Interface)がある。監視ソフトウェア31が構成する物理メモリマップがOSのカーネル35から分からなくするため、カーネル35が物理メモリに関する情報にアクセスした際、その情報を変更する。また、他の根本的な環境設定値として、OSがリアルモードの時、ソフトウェア割込みを使用してBIOS Functionを使用するBIOSジャンプ命令の環境設定値がある。このBIOS Functionの改ざんや不正使用の防止のため、リアルモードの割込みベクタをフックする。また、他の根本的な環境設定値として、KernelDriverの環境設定値がある。ドライバにより「CPU11の環境設定値」を変更しようとした場合、その命令を無視してアンロードする。また、アプリケーションからドライバのロードを禁止する。
なお、本実施形態では、Syscall命令を無効オペコード違反としてフックするようにしたが、無効オペコード違反に限定されず、他の例外を適用してフックするようにしてもよい。
以上説明したように、本発明は、プロセッサに対して発行される命令のうち、少なくとも処理をOSのカーネルに引き渡すための命令に対する監視を行う監視手段と、前記監視手段として機能する監視ソフトウェアを、前記OSのカーネルに設定される特権レベルより高い特権レベルで主メモリの所定領域にロードするロード手段とを含む情報処理装置である。また、本発明は、情報処理監視方法、プログラム、及び記録媒体に適用される。
本発明によれば、監視ソフトウェアがOSのカーネルに設定される特権レベル(リング)よりも高い特権レベルに設定されるため、プロセッサに対して発行される命令のうち、少なくとも処理をOSのカーネルに引き渡すための命令の発行を常にフック可能な監視状況が確保し得る。従って、かかる命令に不当なプログラムが含まれ、その不正なプログラムの実行によってリソースがアクセスされる場合であっても、当該アクセスを検知して不正プログラムのカーネルへの侵入が阻止される。
また、前記監視手段は、前記プロセッサに対して発行される命令のうち、少なくとも処理を前記OSのカーネルに引き渡すための命令の発行を検出する検出手段と、検出された前記命令の正否を評価する評価手段と、評価結果に応じて前記命令を代理して実行する代理処理手段とを備えることが好ましい。この構成によれば、検出手段によって検知された命令は、評価手段によって正否が評価される。評価は、不正プログラムの可能性に関連する方法で行われる。そして、代理処理手段によって、評価結果に応じた命令が発行される。評価結果とは、評価が正当な場合と不当な場合とを想定しており、いずれの場合にも、代理処理手段によって新たに命令を発行するようにし、発行元からの元の命令は直接使用されない。従って、不正プログラムのカーネルを介してのリソースへの侵入、さらに潜伏が阻止される。
また、前記検出手段は、前記命令を無効オペコード違反として検出することが好ましい。この構成によれば、問題となるアクセス命令が確実に検知可能となる。
また、前記命令は、シスコール命令であり、前記評価手段は、前記シスコール命令を構成するAPIに関する情報との照合に基づいて正否を評価することが好ましい。この構成によれば、アプリケーションプログラムからリソースへのアクセスを可能にするシスコール(Syscall)命令に注目して検知し、シスコールを構成するAPI(Application Programming Interface)に関する情報、例えば属性、格納場所、出典等を参照情報等と照合することで正否評価するので、不正なプログラムか否かが適正に評価される。
また、前記代理処理手段は、前記評価手段が前記命令を正当と判断した場合、前記命令と同一の内容を前記カーネルへ移行し、前記評価手段が前記命令を不当と判断した場合、前記命令を終了する命令を前記カーネルへ戻すことが好ましい。この構成によれば、アクセス命令が正当、不当いずれの場合であっても、代理処理手段によって新たに命令が発行されるので、不正プログラムの感染の危険が抑止される。
また、前記代理処理手段は、前記評価手段が前記命令を正当と判断した場合、前記命令と同一の内容を前記カーネルへ移行し、前記評価手段が前記命令を不当と判断した場合、前記命令をスキップする命令を前記カーネルに戻すことが好ましい。この構成によれば、アクセス命令が正当、不当いずれの場合であっても、代理処理手段によって新たに命令が発行されるので、不正プログラムの感染の危険が抑止される。
また、前記監視手段に監視のためのフック条件を設定するフック条件設定手段を備え、前記監視手段は、前記フック条件設定手段で設定された前記フック条件に基づいて前記プロセッサに対して発行される命令のうち、少なくとも処理を前記OSのカーネルに引き渡すための命令の発行を検出することが好ましい。この構成によれば、監視手段は、フック条件設定手段によって設定されたフック条件に従って前記前記OSのカーネルに引き渡すための命令の発行を検出する。
また、前記フック条件設定手段は、前記フック条件に対する書き換えアクセスを監視するフック条件監視手段と、前記フック条件に対する書き換えアクセスの発行の検出毎に、前記フック条件を書き直すフック条件更正手段とを備えることが好ましい。この構成によれば、フック条件監視手段によって前記フック条件に対する書き換えアクセスが監視され、前記フック条件に対する書き換えアクセスの発行の検出毎に、フック条件更正手段によって前記フック条件が正しく書き直される。
また、前記ロード手段は、前記監視手段として機能する監視ソフトウェアのロードを行う第1のロード手段と、前記第1のロード手段によってロードされた前記監視ソフトウェアに含まれ、前記OSのカーネルのロードを行う第2のロード手段とを含むものであることが好ましい。この構成によれば、監視ソフトウェアのロードを行う第1のロード手段によってロードされた前記監視ソフトウェアに含まれる第2のロード手段によって、前記OSのカーネルのロードが行われるので、前記OSのカーネルにより低い特権レベルが設定される。
また、前記第1のロード手段は、前記監視手段として機能する監視ソフトウェアを特権レベル0でロードし、前記第2のロード手段は、前記OSのカーネルを特権レベル1及び2のいずれか一方でロードするものであることが好ましい。この構成によれば、監視ソフトウェアは最高権限の特権レベルを有することで、特権レベル1か2の、カーネルモードで動作可能な前記OSのカーネル側の挙動を監視することが可能となる。
1 情報処理装置
11 CPU(プロセッサ)
121 Syscall命令に関するレジスタ
201 専用ローダ(ロード手段)
30 RAM(主メモリ)
31 監視ソフトウェア(監視手段)
32 割込ハンドラ
33 参照情報部
35 カーネル
38 dll(API)
312 フック条件監視部(フック条件設定手段)
3121 アクセス検出部(フック条件監視手段)
3122 フック条件更正部(フック条件更正手段)
313 Syscall命令監視部(監視手段)
3131 検出部(検出手段)
3132 正否評価部(評価手段)
3133 代理処理部(代理処理手段)
11 CPU(プロセッサ)
121 Syscall命令に関するレジスタ
201 専用ローダ(ロード手段)
30 RAM(主メモリ)
31 監視ソフトウェア(監視手段)
32 割込ハンドラ
33 参照情報部
35 カーネル
38 dll(API)
312 フック条件監視部(フック条件設定手段)
3121 アクセス検出部(フック条件監視手段)
3122 フック条件更正部(フック条件更正手段)
313 Syscall命令監視部(監視手段)
3131 検出部(検出手段)
3132 正否評価部(評価手段)
3133 代理処理部(代理処理手段)
Claims (13)
- プロセッサに対して発行される命令のうち、少なくとも処理をOSのカーネルに引き渡すための命令に対する監視を行う監視手段と、
前記監視手段として機能する監視ソフトウェアを、前記OSのカーネルに設定される特権レベルより高い特権レベルで主メモリの所定領域にロードするロード手段とを含む情報処理装置。 - 前記監視手段は、
前記プロセッサに対して発行される命令のうち、少なくとも処理を前記OSのカーネルに引き渡すための命令の発行を検出する検出手段と、
検出された前記命令の正否を評価する評価手段と、
評価結果に応じて前記命令を代理して実行する代理処理手段とを備えたことを特徴とする請求項1に記載の情報処理装置。 - 前記検出手段は、前記命令を無効オペコード違反として検出することを特徴とする請求項2に記載の情報処理装置。
- 前記命令は、シスコール命令であり、
前記評価手段は、前記シスコール命令を構成するAPIに関する情報との照合に基づいて正否を評価することを特徴とする請求項2又は3に記載の情報処理装置。 - 前記代理処理手段は、前記評価手段が前記命令を正当と判断した場合、前記命令と同一の内容を前記カーネルへ移行し、前記評価手段が前記命令を不当と判断した場合、前記命令を終了する命令を前記カーネルへ戻すことを特徴とする請求項2~4のいずれかに記載の情報処理装置。
- 前記代理処理手段は、前記評価手段が前記命令を正当と判断した場合、前記命令と同一の内容を前記カーネルへ移行し、前記評価手段が前記命令を不当と判断した場合、前記命令をスキップする命令を前記カーネルに戻すことを特徴とする請求項2~4のいずれかに記載の情報処理装置。
- 前記監視手段に監視のためのフック条件を設定するフック条件設定手段を備え、
前記監視手段は、前記フック条件設定手段で設定された前記フック条件に基づいて前記プロセッサに対して発行される命令のうち、少なくとも処理を前記OSのカーネルに引き渡すための命令の発行を検出することを特徴とする請求項1~6のいずれかに記載の情報処理装置。 - 前記フック条件設定手段は、前記フック条件に対する書き換えアクセスを監視するフック条件監視手段と、前記フック条件に対する書き換えアクセスの発行の検出毎に、前記フック条件を書き直すフック条件更正手段とを備えたことを特徴とする請求項7に記載の情報処理装置。
- 前記ロード手段は、前記監視手段として機能する監視ソフトウェアのロードを行う第1のロード手段と、前記第1のロード手段によってロードされた前記監視ソフトウェアに含まれ、前記OSのカーネルのロードを行う第2のロード手段とを含む請求項1~8のいずれかに記載の情報処理装置。
- 前記第1のロード手段は、前記監視手段として機能する監視ソフトウェアを特権レベル0でロードし、前記第2のロード手段は、前記OSのカーネルを特権レベル1及び2のいずれか一方でロードする請求項9に記載の情報処理装置。
- プロセッサに対して発行される命令のうち、少なくとも処理をOSのカーネルに引き渡すための命令に対する監視を行う監視ステップと、
前記監視ステップとして機能する監視ソフトウェアを前記OSのカーネルに設定される特権レベルより高い特権レベルを設定して主メモリの所定領域にロードするロードステップとを備えた情報処理監視方法。 - プロセッサに対して発行される命令のうち、少なくとも処理をOSのカーネルに引き渡すための命令に対する監視を行う監視手段、
前記監視手段として機能する監視ソフトウェアを前記OSのカーネルに設定される特権レベルより高い特権レベルを設定して主メモリの所定領域にロードするロード手段として前記プロセッサを機能させるプログラム。 - プロセッサに対して発行される命令のうち、少なくとも処理をOSのカーネルに引き渡すための命令に対する監視を行う監視手段、
前記監視手段として機能する監視ソフトウェアを前記OSのカーネルに設定される特権レベルより高い特権レベルを設定して主メモリの所定領域にロードするロード手段として前記プロセッサを機能させるプログラムを記録したコンピュータ読み取り可能な記録媒体。
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| SG11201609072QA SG11201609072QA (en) | 2014-05-16 | 2015-05-15 | Information-processing device, information-processing monitoring method, and recording medium |
| US15/306,823 US10380336B2 (en) | 2014-05-16 | 2015-05-15 | Information-processing device, information-processing method, and recording medium that block intrusion of malicious program to kernel |
| EP15792925.8A EP3144813A4 (en) | 2014-05-16 | 2015-05-15 | Information-processing device, information-processing monitoring method, program, and recording medium |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2014102114A JP6370098B2 (ja) | 2014-05-16 | 2014-05-16 | 情報処理装置、情報処理監視方法、プログラム、及び記録媒体 |
| JP2014-102114 | 2014-05-16 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2015174512A1 true WO2015174512A1 (ja) | 2015-11-19 |
Family
ID=54480048
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/JP2015/063975 Ceased WO2015174512A1 (ja) | 2014-05-16 | 2015-05-15 | 情報処理装置、情報処理監視方法、プログラム、及び記録媒体 |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US10380336B2 (ja) |
| EP (1) | EP3144813A4 (ja) |
| JP (1) | JP6370098B2 (ja) |
| SG (1) | SG11201609072QA (ja) |
| WO (1) | WO2015174512A1 (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN113779570A (zh) * | 2021-09-18 | 2021-12-10 | 深信服科技股份有限公司 | 一种进程监听方法、装置、电子设备及可读存储介质 |
| US20220164172A1 (en) * | 2020-11-13 | 2022-05-26 | STMicroelectronics (Grand Ouest) SAS | System and process for compiling a source code |
Families Citing this family (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12339979B2 (en) | 2016-03-07 | 2025-06-24 | Crowdstrike, Inc. | Hypervisor-based interception of memory and register accesses |
| US12248560B2 (en) * | 2016-03-07 | 2025-03-11 | Crowdstrike, Inc. | Hypervisor-based redirection of system calls and interrupt-based task offloading |
| US10055572B1 (en) * | 2017-06-12 | 2018-08-21 | Mucteba Celik | Systems and methods for preventing windows kernel code or drivers from being executed |
| JP2019008503A (ja) * | 2017-06-23 | 2019-01-17 | 杉中 順子 | 情報処理監視装置、情報処理監視方法、プログラム、記録媒体及び情報処理装置 |
| JP7179482B2 (ja) * | 2018-04-19 | 2022-11-29 | キヤノン株式会社 | 情報処理装置、制御方法、およびそのプログラム |
| US10996990B2 (en) * | 2018-11-15 | 2021-05-04 | International Business Machines Corporation | Interrupt context switching using dedicated processors |
| US11106800B1 (en) | 2018-11-30 | 2021-08-31 | Capsule8, Inc. | Detecting kernel exploits |
| US11556346B2 (en) * | 2020-06-10 | 2023-01-17 | Qualcomm Incorporated | Security enhancement in hierarchical protection domains |
| CN114489657B (zh) * | 2020-11-13 | 2025-09-30 | 意法半导体(大西部)公司 | 用于编译源代码的系统和过程 |
| US20250355814A1 (en) * | 2022-06-10 | 2025-11-20 | Autonetworks Technologies, Ltd. | Vehicle-mounted device, information processing method, and information processing program |
| US20240329993A1 (en) * | 2023-03-30 | 2024-10-03 | Kameswar Subramaniam | Instructions for write and/or read of control and/or status registers |
| JP7761330B1 (ja) * | 2025-06-26 | 2025-10-28 | Gx株式会社 | 情報処理装置、情報処理方法、及び、プログラム |
| JP7761329B1 (ja) * | 2025-06-26 | 2025-10-28 | Gx株式会社 | 情報処理装置、情報処理方法、及び、プログラム |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7996836B1 (en) * | 2006-12-29 | 2011-08-09 | Symantec Corporation | Using a hypervisor to provide computer security |
Family Cites Families (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4023654B2 (ja) | 2001-09-28 | 2007-12-19 | 日立ソフトウエアエンジニアリング株式会社 | アプリケーションの監視方法およびプログラム |
| US20030226014A1 (en) * | 2002-05-31 | 2003-12-04 | Schmidt Rodney W. | Trusted client utilizing security kernel under secure execution mode |
| US7617534B1 (en) * | 2005-08-26 | 2009-11-10 | Symantec Corporation | Detection of SYSENTER/SYSCALL hijacking |
| JP2007140798A (ja) | 2005-11-16 | 2007-06-07 | Eugrid Kk | コンピュータの情報漏洩防止システム |
| JP5382450B2 (ja) * | 2008-02-14 | 2014-01-08 | 日本電気株式会社 | アクセス制御装置、その方法及び情報記録媒体 |
| US8578483B2 (en) | 2008-07-31 | 2013-11-05 | Carnegie Mellon University | Systems and methods for preventing unauthorized modification of an operating system |
| US9195487B2 (en) * | 2009-05-19 | 2015-11-24 | Vmware, Inc. | Interposition method suitable for hardware-assisted virtual machine |
| US8893300B2 (en) * | 2010-09-20 | 2014-11-18 | Georgia Tech Research Corporation | Security systems and methods to reduce data leaks in enterprise networks |
| US8650642B2 (en) * | 2011-03-31 | 2014-02-11 | Mcafee, Inc. | System and method for below-operating system protection of an operating system kernel |
| US8863283B2 (en) * | 2011-03-31 | 2014-10-14 | Mcafee, Inc. | System and method for securing access to system calls |
| JP2013101550A (ja) | 2011-11-09 | 2013-05-23 | Junko Suginaka | 情報処理空間管理方法、外部デバイス及び情報処理装置 |
| US9207940B2 (en) * | 2013-03-15 | 2015-12-08 | Intel Corporation | Robust and high performance instructions for system call |
| US9117080B2 (en) * | 2013-07-05 | 2015-08-25 | Bitdefender IPR Management Ltd. | Process evaluation for malware detection in virtual machines |
| US9323931B2 (en) * | 2013-10-04 | 2016-04-26 | Bitdefender IPR Management Ltd. | Complex scoring for malware detection |
| US9619346B2 (en) * | 2013-10-31 | 2017-04-11 | Assured Information Security, Inc. | Virtual machine introspection facilities |
-
2014
- 2014-05-16 JP JP2014102114A patent/JP6370098B2/ja active Active
-
2015
- 2015-05-15 EP EP15792925.8A patent/EP3144813A4/en not_active Withdrawn
- 2015-05-15 SG SG11201609072QA patent/SG11201609072QA/en unknown
- 2015-05-15 WO PCT/JP2015/063975 patent/WO2015174512A1/ja not_active Ceased
- 2015-05-15 US US15/306,823 patent/US10380336B2/en active Active
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7996836B1 (en) * | 2006-12-29 | 2011-08-09 | Symantec Corporation | Using a hypervisor to provide computer security |
Non-Patent Citations (5)
| Title |
|---|
| KOICHI ONOUE: "VMM-based Architecture for Protecting Application Data", SYMPOSIUM ON ADVANCED COMPUTING SYSTEMS AND INFRASTRUCTURES SACSIS2009 RONBUNSHU, vol. 2009, no. 5, 21 May 2009 (2009-05-21), pages 189 - 197, XP008185403 * |
| See also references of EP3144813A4 * |
| SHIN'ETSU IZAWA: "Kasoka no Standard wa Cloud e Keiryo Secure na Hypervisor Xen", ASCII. TECHNOLOGIES, vol. 15, no. 5, 24 March 2010 (2010-03-24), pages 48 - 57, XP008185584 * |
| TAKUYA YOSHIMURA: "System call hook method for analyzing behavior of malware by virtual machine monitor", DAI 72 KAI (HEISEI 22 NEN) ZENKOKU TAIKAI KOEN RONBUNSHU (3) NETWORK SECURITY, 8 March 2010 (2010-03-08), pages 3-609 - 3-610, XP055236759 * |
| TATSUYA TAKEHISA: "AES-NI Meirei ni Taisuru Reigai Shori Kogeki no Malware Kaiseki eno Oyo", 2 014 NEN SYMPOSIUM ON CRYPTOGRAPHY AND INFORMATION SECURITY GAIYOSHU, THE INSTITUTE OF ELECTRONICS, INFORMATION AND COMMUNICATION ENGINEERS, 24 January 2014 (2014-01-24), pages 1 - 8, XP008185410 * |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20220164172A1 (en) * | 2020-11-13 | 2022-05-26 | STMicroelectronics (Grand Ouest) SAS | System and process for compiling a source code |
| US11893370B2 (en) * | 2020-11-13 | 2024-02-06 | STMicroelectronics (Grand Ouest) SAS | System and process for compiling a source code |
| CN113779570A (zh) * | 2021-09-18 | 2021-12-10 | 深信服科技股份有限公司 | 一种进程监听方法、装置、电子设备及可读存储介质 |
| CN113779570B (zh) * | 2021-09-18 | 2024-02-23 | 深信服科技股份有限公司 | 一种基于核心进程的安全防护方法、装置及电子设备 |
Also Published As
| Publication number | Publication date |
|---|---|
| US10380336B2 (en) | 2019-08-13 |
| SG11201609072QA (en) | 2016-12-29 |
| US20170220795A1 (en) | 2017-08-03 |
| JP6370098B2 (ja) | 2018-08-08 |
| EP3144813A1 (en) | 2017-03-22 |
| JP2015219682A (ja) | 2015-12-07 |
| EP3144813A4 (en) | 2017-11-01 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP6370098B2 (ja) | 情報処理装置、情報処理監視方法、プログラム、及び記録媒体 | |
| US10810309B2 (en) | Method and system for detecting kernel corruption exploits | |
| Payne et al. | Lares: An architecture for secure active monitoring using virtualization | |
| Ge et al. | Sprobes: Enforcing kernel code integrity on the trustzone architecture | |
| CN104520867B (zh) | 用于目标装置的主动监测、存储器保护和完整性验证的方法、系统和计算机可读介质 | |
| KR102255767B1 (ko) | 가상 머신 감사를 위한 시스템 및 방법들 | |
| US20180211046A1 (en) | Analysis and control of code flow and data flow | |
| US8479295B2 (en) | Method and apparatus for transparently instrumenting an application program | |
| JP6984710B2 (ja) | コンピュータ装置およびメモリ管理方法 | |
| Duflot et al. | Using CPU system management mode to circumvent operating system security functions | |
| US20090119748A1 (en) | System management mode isolation in firmware | |
| JP2015166952A (ja) | 情報処理装置、情報処理監視方法、プログラム、及び記録媒体 | |
| Rauchberger et al. | Longkit-A Universal Framework for BIOS/UEFI Rootkits in System Management Mode. | |
| KR20170060815A (ko) | 메모리의 커널영역을 보호하기 위한 전자장치 및 방법 | |
| JP2018174001A (ja) | 情報処理装置、情報処理監視方法、プログラム、及び記録媒体 | |
| Suzaki et al. | Kernel memory protection by an insertable hypervisor which has VM introspection and stealth breakpoints | |
| Yao | Smm protection in edk ii | |
| JP7761330B1 (ja) | 情報処理装置、情報処理方法、及び、プログラム | |
| JP2019008503A (ja) | 情報処理監視装置、情報処理監視方法、プログラム、記録媒体及び情報処理装置 | |
| JP7763552B1 (ja) | 情報処理装置、情報処理方法、及び、プログラム | |
| JP7761329B1 (ja) | 情報処理装置、情報処理方法、及び、プログラム | |
| JP2018036695A (ja) | 情報処理監視装置、情報処理監視方法、監視プログラム、記録媒体及び情報処理装置 | |
| Wen et al. | Towards thwarting data leakage with memory page access interception | |
| US20180322277A1 (en) | System management mode privilege architecture | |
| Chen et al. | DScope: To Reliably and Securely Acquire Live Data from Kernel-Compromised ARM Devices |
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: 15792925 Country of ref document: EP Kind code of ref document: A1 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 15306823 Country of ref document: US |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| REEP | Request for entry into the european phase |
Ref document number: 2015792925 Country of ref document: EP |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2015792925 Country of ref document: EP |