WO2013168951A1 - 악성 파일 검사 장치 및 방법 - Google Patents

악성 파일 검사 장치 및 방법 Download PDF

Info

Publication number
WO2013168951A1
WO2013168951A1 PCT/KR2013/003934 KR2013003934W WO2013168951A1 WO 2013168951 A1 WO2013168951 A1 WO 2013168951A1 KR 2013003934 W KR2013003934 W KR 2013003934W WO 2013168951 A1 WO2013168951 A1 WO 2013168951A1
Authority
WO
WIPO (PCT)
Prior art keywords
malicious
execution
address
file
executable file
Prior art date
Application number
PCT/KR2013/003934
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 주식회사 안랩
Publication of WO2013168951A1 publication Critical patent/WO2013168951A1/ko

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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing

Definitions

  • the present invention relates to a malicious file inspection apparatus and method. More specifically, the present invention relates to a computer-readable recording medium having recorded thereon an apparatus, a method and a computer program for checking whether a non-executable file contains malicious code.
  • Malware is software that is intentionally designed to perform malicious activities, such as destroying the system or leaking information, contrary to the user's intentions and interests.
  • malicious code types include hacking tools such as viruses, worms, trojans, backdoors, logic bombs, and trap doors, and malicious spywares. spyware and ad-ware.
  • malicious code can leak personal information such as user ID and password, control target system, delete / change file, destroy system, denial of application / system, leak of key data, It is causing problems such as installing other hacking programs, and the damage is very diverse and serious.
  • a malicious code treatment system for detecting and treating malware
  • Most of the malware detection systems (vaccine programs) known to date use file-based diagnostics. This is due to the fact that most malicious codes are executed in the form of files that can be executed on a specific system.
  • the malicious code in order for malicious code to run on a Windows system, the malicious code usually has a format of an executable file (PE).
  • File extensions with PE format include exe, cpl, ocx, dll, vxd, sys, scr, and drv.
  • the malware treatment system In order to diagnose malware in the form of an executable file (PE), the malware treatment system also needs to have a signature of a specific type that can recognize the file type and determine it as malicious code.
  • These diagnostics are the same as the signature-based or string-testing methods used by most malware treatment systems.
  • This signature-based diagnostic method targets specific or unique parts of a file classified as malicious code, enabling accurate diagnosis that minimizes false positives and false negatives.
  • the advantage is that fast scanning can be achieved by comparing only the characteristic parts of the files.
  • the signature-based diagnostic method cannot detect a new file that has been changed by only a few files since the malicious code does not diagnose even if the file itself changes only a few hundred bytes. In addition, since it can only respond to known malicious code, it cannot cope with new and unknown malicious code.
  • APT Advanced Persistent Threat
  • Non-PE non-portable Executable
  • APT attacks often use zero day attacks to exploit malicious malicious file exploits. For example, if a recipient inadvertently opens a malicious non-executable file attached to an email, the recipient's computer may be infected by the malicious file and attack another computer, or may invade the system and leak sensitive data. have.
  • non-executable files have a variety of formats, zero-day exploits using malicious non-executable files can provide analysts with considerable time to determine whether the non-executable files are malicious and to analyze malicious behavior. It is difficult to deal with a large number of malicious non-executable files that are modified or newly generated during the analysis period.
  • the conventional signature-based scanning method has a problem that it cannot realistically prevent zero-day exploits using malicious non-executable files because it must have a large number of signature databases in order to detect various types of attack methods. .
  • the conventional behavior-based inspection method also needs information such as the design method because it must detect the behavior for a variety of attackers, because of this there is a problem that a lot of false positives and false positives occur.
  • the present invention is to solve such a problem of the prior art, obtains the normal address range information of the module to be loaded as the program of the non-executable file is executed, and the non-execution through comparison between the normal address range information and the execution address
  • An object of the present invention is to provide a malicious code inspection apparatus and method for a non-executable file that can determine whether a file is malicious.
  • a program driver for outputting an execution address of an instruction executed when the program corresponding to the non-executable file, and the normal address range information according to the driving of the program
  • a malicious file inspection apparatus including an address storage unit for storing a; and a malicious determination unit for determining whether the non-executable file is malicious according to whether the execution address is outside the normal address range information.
  • the program driver may determine a file format of the non-executable file and drive a program corresponding to the non-executable file based on the determined file format.
  • the malicious determination unit may determine whether the memory region indicated by the execution address is an execution attribute when the execution address is out of the normal address range information, and based on the determination result, the malicious determination unit may be malicious for the non-executable file. It can be determined.
  • the malicious determination unit may determine whether the non-executable file is malicious by checking whether an abnormal event occurs according to execution of code stored in the memory region indicated by the execution address. have.
  • the malicious determination unit may determine whether the non-executable file is malicious by checking whether the execution address from the execution address to a predetermined step indicates the normal address range information. have.
  • the malicious determination unit may determine that the non-executable file is malicious when it is determined that the memory area is a non-executable attribute.
  • the malicious file checking apparatus may further include a malicious code extracting unit that extracts a code in a region corresponding to an execution address that deviates from the normal address range information.
  • the malicious file inspection apparatus may further include a cause analysis unit for analyzing the cause of the vulnerability by comparing the module including the command associated with the execution address outside the normal address range information and the vulnerability information.
  • the normal address range information may include a start address and an end address of a module loaded according to the driving of the program.
  • the execution address may be provided from an Extended Instruction Pointer (EIP) register of the central processing unit.
  • EIP Extended Instruction Pointer
  • the malicious determination unit may determine whether the execution address falls within the normal address range based on the type of the command of the program being driven.
  • obtaining an execution address of an instruction executed when the program corresponding to the non-executable file and storing the normal address range information according to the driving of the program And determining whether the non-executable file is malicious when the obtained execution address is out of the normal address range information.
  • determining whether the non-executable file is malicious may include determining whether a memory region indicated by the execution address is an execution attribute when the execution address deviates from normal address range information, and the determination result.
  • the method may include determining whether the non-executable file is malicious based on the malicious file.
  • the determining of whether the non-executable file is malicious may include checking whether an abnormal event occurs according to execution of code stored in a memory area indicated by the execution address when the memory area is an execution property. When an abnormal event occurs, the non-executable file may be determined to be malicious.
  • the determining of the non-executable file as malicious may include checking whether the execution address from the execution address to a predetermined step indicates the memory area outside the normal address range information when the abnormal event does not occur; And determining that the non-executable file is malicious when the execution address up to the preset step indicates a memory area deviating from the normal address range information.
  • the malicious file inspection method may further include determining a file format of the non-executable file, and a program corresponding to the non-executable file may be driven based on the determined file format.
  • the malicious file scanning method may further include extracting a code in a region corresponding to an execution address that deviates from the normal address range information.
  • the malicious file scanning method may further include analyzing a cause of a vulnerability by comparing a module related to an execution address that is outside the normal address range information and vulnerability information.
  • the normal address range information may include a start address and an end address of a module loaded according to the driving of the program.
  • the execution address may also be provided from the EIP register of the central processing unit.
  • the determining may include determining whether the execution address belongs to the normal address range based on a type of an instruction of the driven program.
  • one step may be performed to determine whether the execution address falls within the normal address range.
  • the command is structured exception handling (SEH)
  • SEH structured exception handling
  • the malicious file scanning method may further include storing an execution address of an instruction executed immediately before an execution address that deviates from the normal address range information.
  • a computer-readable recording medium having a program recorded thereon containing instructions for performing each step according to the malicious file scanning method is provided.
  • the execution address output when each instruction in the program module is executed is out of the normal address range information.
  • the present invention after acquiring the normal address range information of the module normally loaded as the program is run, the non-execution file through whether or not the execution address output when each instruction in the program module is out of the normal address range information By checking the malicious status of the file, it is possible to increase the accuracy of the malicious determination of the non-executable file.
  • FIG. 1 is a block diagram illustrating a malicious code inspection apparatus of a non-executable file according to an embodiment of the present invention.
  • FIG. 2 is a flowchart illustrating a process of analyzing malicious code of a non-executable file according to an embodiment of the present invention.
  • FIG. 3 is a diagram illustrating an example of a malicious code inspection method for a non-executable file according to an embodiment of the present invention.
  • FIG. 4 is a flowchart illustrating a process in which a malicious file inspection apparatus operates when an execution address indicates a region outside of normal address range information according to another embodiment of the present invention.
  • non-executable file refers to an executable file or a file that does not execute on its own as opposed to an executable file.
  • the non-executable file may be a Hangul file, a document file such as a word file, an image file such as a JPG file, a video file, a Java script file, an HTML file, or the like, but is not limited thereto.
  • Malicious non-executable files containing malicious code can be used in advanced persistent threat (APT) attacks, such as by attaching to an email or by transmitting malicious non-executable files through a network.
  • the malicious code may be a shell code, and the malicious code may be executed when executing a program corresponding to a format (format) of a non-executable file.
  • the format of the non-executable file may be, for example, a hwp file, a doc file, a pdf file, a jpg file, a js file, an html file, or the like.
  • Malicious non-executable files may contain malicious shell code, and malicious non-executable files containing malicious shell code may in some way eventually move to the malicious shell code area when executing commands.
  • the movement to the malicious shell code region can be predicted by checking the execution address. For example, the execution address of the next instruction to be executed can be confirmed through a value stored in an Extended Instruction Pointer (EIP) register, which is one of registers of a central processing unit such as a CPU. Therefore, whether to have a command to move out of the normal address range to the malicious shell code region may be an important criterion for determining whether the non-executable file is malicious.
  • EIP Extended Instruction Pointer
  • FIG. 1 is a block diagram illustrating a malicious code inspection apparatus of a non-executable file according to an embodiment of the present invention.
  • a malicious code inspection apparatus for a non-executable file according to an embodiment of the present invention will be described in detail with reference to FIG. 1.
  • the malicious file inspection apparatus loads and executes a non-executable file into a program, and analyzes whether the malicious code is included in the non-executable file according to the execution of the program. And report.
  • the malicious file inspection apparatus includes a program database 100, a user interface 102, a program driver 104, an address storage unit 106, a malicious determination unit 108, a malicious code extraction unit 110, and a cause analysis unit. And 112, virtual memory 114, and the like.
  • the program database 100 stores various types of programs for executing a non-executable file inputted for malicious code inspection.
  • the user interface 102 may provide an interface for selecting a directory or a non-executable file in which a non-executable file to be checked is stored.
  • the program driver 104 may determine the format of the non-executable file selected through the user interface 102, search the program database 100 according to the determined format, and select a program capable of executing the non-executable file.
  • the program driver 104 loads and executes a non-executable file in the selected program, and outputs an execution address for each command in the module of the program to the malicious determination unit 108 according to the loading of the non-executable file.
  • a module may be a dynamic linking library (DLL).
  • the program driver 104 may load a non-executable file into a selected program and execute the program in the virtual environment.
  • the program driver 104 may provide an execution address for an instruction by using information stored in a register of a central processing unit (CPU).
  • a central processing unit CPU
  • the EIP (Extended Instruction Pointer) register of the central processing unit may store the memory address of the instruction to be executed next.
  • the address storage unit 106 may store, in the virtual memory 114, normal address range information including a start address and an end address of a module normally loaded as a program is driven.
  • the malicious determination unit 108 receives the execution address of each instruction from the program driver 104 when each instruction in the module of the program is executed, and the provided execution address receives the normal address range information. Based on whether or not the deviation can be determined whether the non-executable file is malicious. For example, if an execution address stored in the EIP register of the central processing unit is out of the normal address range information, the non-executable file may be classified as malicious.
  • the malicious determination unit 108 determines the region indicated by the execution address, that is, the region outside the normal address range information, as the malicious shell code region, and is executed immediately before execution of the instruction of the execution address indicating the malicious shell code region.
  • the execution address of the instruction may be stored in the virtual memory 114.
  • the malicious determination unit 108 performs a single step according to the type of command and determines whether the malicious file is not malicious by comparing the execution address output from the program driver 104 with the normal address range information. can do. More specifically, the malicious determination unit 108 proceeds one step according to the type of command to determine whether the execution address belongs to the normal normal address range information, or the execution address is immediately normal normal address range information information without proceeding one step. It can be determined whether to belong to. For example, when the command is structured exception handling (SHE), the malicious determination unit 108 may perform a comparison between the chain value of the structured exception handling and the normal address range information. In addition, instructions such as return, call, or jump proceed one step to determine whether the execution address belongs to the normal address range information.
  • the chain value of the structured exception handling means the address to be executed.
  • the malicious determination unit 108 may exception the normal program executing an instruction outside the normal address range information of the normal module in order to load the non-executable file.
  • the malicious determination unit 108 determines the attribute of the memory area indicated by the execution address when the execution address is out of the normal address range information. If it is determined that the attribute of the memory area is an executable attribute, the non-executable file is determined to be normal. However, if it is determined that the attribute of the memory region is not an execution attribute, it is determined whether an event generated according to the execution of the code stored in the memory region indicated by the execution address is an abnormal event.
  • the malicious determination unit 108 determines the non-executable file as malicious code and stores the execution address of the instruction executed immediately before the instruction of the execution address that deviates from the normal address range information in the virtual memory 114. Can be.
  • the malicious determination unit 108 determines whether or not the malicious for the non-executable file by comparing the execution address and the normal address range information for the command up to a predetermined step, for example, 3-5 steps. can do. That is, the malicious determination unit 108 determines that the non-executable file is malicious when the execution address for the command up to the preset step is out of the normal address range information, and the execution address for the instruction before the preset step is in the normal address range. In the case of information, the non-executable file may be determined to be normal and the command for the subsequent step may be performed.
  • the malicious code extracting unit 110 may extract the shell code in the region corresponding to the execution address outside the normal address range information in the form of an executable file or an executable file and then store the same in the virtual memory 114.
  • the executable file or executable file type may be exe, cpl, dll, ocx, vxd, sys, scr, drv, or the like, but is not limited thereto.
  • the malicious code extracting unit 110 may request the analysis by transmitting the code extracted in the form of an executable file or executable file to a malicious code inspection and analysis server (not shown) connected to a communication network (not shown). .
  • the cause analysis unit 112 may identify the cause of the vulnerability through comparison between execution information that is outside the normal address range information and the pre-stored vulnerability information, and provide the user or analyst with the cause.
  • the vulnerability information may include, but is not limited to, information provided by Common Vulnerabilities and Exposures (CVE), Microsoft Security Bulletin (eg, MS11-002), National Vulnerability Database (NVD), US-CERT Bulletin, and the like. .
  • the cause analysis unit 112 is described as being installed in the malicious file inspection apparatus.
  • the cause analysis unit 112 may be installed in a separate analysis server (not shown) connected through a communication network.
  • the program driver 104 may directly execute a specific program requiring execution, or may request a separate system (not shown) to execute a specific program.
  • the program driver 104 determines a format of the non-executable file in the selected directory. That is, when the directory in which the non-executable file to be checked is stored is selected through the user interface 102 (S200), the program driver 104 determines the file format based on the file type information of the non-executable file stored in the directory. For example, if a particular root folder is selected through the user interface 102 among a plurality of root folders existing under the drive 1, the file type information of the non-executable file is checked by checking the file type information of the non-executable file stored in the specific root folder. It is determined (S202).
  • the program driver 104 searches for and executes a program in the program database 100 that matches the format of the non-executable file (S204).
  • the program driver 104 loads and executes the non-executable file on the searched program, and outputs the execution address of the command of the module in the program to the malicious determination unit 108.
  • the execution address refers to the address on the virtual memory 114 when the instruction in the module is executed, and is stored in the EIP register.
  • the address storage unit 106 stores the normal address range information including the start address and the end address of the module loaded in the virtual memory 114 in the virtual memory 114 according to the execution of the program (S206).
  • the malicious determination unit 108 determines whether the execution address is included in the normal address range information by comparing the execution address output from the program driver 104 with the normal address range information (S208).
  • the malicious determination unit 108 receives the execution address for the next instruction from the program driver 104 (S210) and then proceeds to S208 to execute the next instruction. Determine again whether the address is included in the normal address range information.
  • the malicious determination unit 108 stores the execution address before moving to the malicious shell code region and information of the corresponding module (module having vulnerability) in the program in the virtual memory 114 (S214), and then causes the cause analysis unit. Provided at 112.
  • the malicious code extracting unit 110 extracts a code for an area indicated by an execution address that deviates from the normal address range information, that is, a malicious shell code area, into an executable file or an executable file, and then stores the code in the virtual memory 114. (S216).
  • the cause analysis unit 112 identifies the cause of the vulnerability by comparing the execution address and the module information provided from the malicious determination unit 108 with previously stored vulnerability information, and provides the result to the user or the analyst, thereby providing the corresponding non-executable file.
  • the result of the analysis can be reported (S216).
  • the malicious file inspection apparatus extracts the next non-executable file from the directory, and proceeds to S202 to perform a subsequent step.
  • the malicious code inspection apparatus requests execution of a specific program from a separate system without directly executing the specific program according to an embodiment of the present invention.
  • the example of the system may mean a personal terminal in which a malicious code inspection apparatus is installed, a program providing server connected through a communication network (not shown), etc., but is not limited thereto.
  • the program driver 104 determines the format of the non-executable file in the selected directory. That is, when the directory in which the non-executable file to be checked is stored is selected through the user interface 102 (S200), the program driver 104 determines the file format based on the file type information of the non-executable file stored in the directory. For example, if a particular root folder is selected through the user interface 102 among a plurality of root folders existing under the drive 1, the file type information of the non-executable file is checked by checking the file type information of the non-executable file stored in the specific root folder. It is determined (S202).
  • the program driver 104 requests a system (not shown) to drive a program that matches the format of the non-executable file, and the system selects and executes a program that matches the format of the non-executable file (S204).
  • the program is executed as described above, the module is loaded, and the program driver 104 receives the execution address of the loaded module from the system and outputs it to the malicious determination unit 108.
  • the execution address means an address on the virtual memory 114 when the instruction in the module 7 is executed, and may be stored in the EIP register.
  • the address storage unit 106 stores the normal address range information including the start address and the end address of the module loaded in the virtual memory 114 in the virtual memory 114 according to the execution of the program (S206).
  • the malicious determination unit 108 determines whether the execution address is included in the normal address range information by comparing the execution address output from the program driver 104 with the normal address range information (S208).
  • the malicious determination unit 108 receives the execution address for the next instruction from the program driver 104 (S210) and then proceeds to S208 to execute the next instruction. Determines whether an address is included in normal address range information.
  • the malicious determination unit 108 classifies the non-executable file as malicious and stops running the program. (S212).
  • the malicious determination unit 108 stores the execution address before moving to the malicious shell code region and information of the corresponding module (module having vulnerability) in the program in the virtual memory 114 (S214), and then causes the cause analysis unit. Provided at 112.
  • the malicious code extracting unit 110 processes the code for the region indicated by the execution address outside the normal address range information, that is, the malicious shell code region into an executable file or an executable file form, and then processes the code into the virtual memory 114. Save (S216).
  • the cause analysis unit 112 identifies the cause of the vulnerability by comparing the execution address and the module information provided from the malicious determination unit 108 with previously stored vulnerability information, and provides the result to the user or the analyst, thereby providing the corresponding non-executable file.
  • the analysis result can be reported (S216).
  • the malicious file inspection apparatus extracts the next non-executable file from the directory, and proceeds to S202 to perform a subsequent step.
  • the execution address is determined to be malicious when it is out of the normal address range information.
  • the execution address is indicated by the execution address even when the execution address is out of the normal address range information.
  • the exception can be handled depending on whether the memory area is an execution property.
  • FIG. 3 is a flowchart illustrating a process in which a malicious file checking apparatus according to another embodiment of the present invention operates when an execution address indicates a region outside of normal address range information.
  • the malicious determination unit 108 sets the counter value to a preset initial value, for example, “0” (S300). Thereafter, an attribute of the memory region indicated by the first execution address is examined to determine whether the attribute is an execution attribute (S302).
  • the malicious determination unit 108 executes the code in the memory area indicated by the first execution address (S304), and checks whether an event generated according to the execution is an abnormal event (S306). ).
  • the malicious determination unit 108 determines that the non-executable file is normal (S308) and performs a comparison between the next execution address, that is, the second execution address and the address range information. In addition, as a result of the inspection of S306, even when an abnormal event occurs, the malicious determination unit 108 determines that the non-executable file is malicious (S310).
  • the malicious determination unit 108 increases the counter value by "1" (S312) and determines whether the counter value is less than or equal to the threshold value (S314).
  • the malicious determination unit 108 determines whether the second execution address for the next step instruction provided from the program driver 104 deviates from the normal address range information (S316). .
  • the malicious determination unit 108 checks the execution attribute for the memory region indicated by the second execution address. Proceeds to S302 to perform the subsequent steps.
  • the malicious determination unit 108 determines that the non-executable file is malicious.
  • the malicious determination unit 108 performs a comparison between the third execution address and the normal address range information for the next instruction. do.
  • the normal address range information consisting of the start address and the end address of the module normally loaded as the program is driven is stored in the virtual memory 114 and then stored in the virtual memory 114.
  • the execution address of each instruction is extracted, and if the extracted execution address is outside the normal address range information, it is determined that the malicious code is included in the non-executable file. Non-executable files can be detected.
  • each instruction in a module loaded in the virtual memory 114 when executed, the execution address of each instruction is extracted, and the malicious shell of the execution address whose extracted execution address deviates from the normal address range information.
  • FIG. 4 is a diagram illustrating an example of a malicious code inspection method for a non-executable file according to an embodiment of the present invention.
  • a malicious code inspection method according to an embodiment of the present invention will be described with reference to FIG. 4.
  • the program When the non-executable file is executed in the program, the program may be executed normally in the flow 410 from the start to the end, but may be executed in the abnormal flow 420 due to malicious code in the non-executable file.
  • the address storage unit 106 stores the normal address range information 430 of the normally loaded program in the virtual memory 114.
  • the normal address range information 430 is information consisting of a start address and an end address of a command in a program that is normally loaded.
  • the malicious determination unit 108 analyzes the register value of the program through a comparison between the execution address 440 of the program and the normal address range information 430.
  • the analysis section means a section from when the non-executable file is loaded to the program until the malicious code is executed. That is, until the malicious code is executed, the execution address of the program shows the normal address range information.
  • the execution address 440 is out of the normal address range information. Will be displayed. For example, if D, E, F, and G of the execution address 440 point to the normal address range information 430, the program is executed in the normal flow 410, and H of the execution address 440 is the normal address range.
  • the program executes in an abnormal flow 420 when pointing to the area 432 outside of the information 430.
  • the malicious code included in the non-executable file loaded in the program may be executed.
  • the malicious code image may be executed according to the type of malicious code.
  • the register value of the program that is, the H of the execution address 440 of the module in the program, indicates an area 432 outside the normal address range information due to the execution of the malicious code.
  • the malicious file inspection apparatus stores the execution address G and information on the corresponding module in the program in the virtual memory 114 before leaving the normal address range information 430.
  • the malicious file inspection apparatus may execute before the code of the region 432 corresponding to the execution address is executed. Stop the program.
  • Combinations of each block of the block diagrams and respective steps of the flowcharts attached to the present invention may be performed by computer program instructions.
  • These computer program instructions may be mounted on a processor of a general purpose computer, special purpose computer, or other programmable data processing equipment such that instructions executed through the processor of the computer or other programmable data processing equipment may not be included in each block or flowchart of the block diagram. It will create means for performing the functions described in each step.
  • These computer program instructions may be stored in a computer usable or computer readable memory that can be directed to a computer or other programmable data processing equipment to implement functionality in a particular manner, and thus the computer usable or computer readable memory.
  • instructions stored in may produce an article of manufacture containing instruction means for performing the functions described in each block or flowchart of each step of the block diagram.
  • Computer program instructions may also be mounted on a computer or other programmable data processing equipment, such that a series of operating steps may be performed on the computer or other programmable data processing equipment to create a computer-implemented process to create a computer or other programmable data. Instructions that perform processing equipment may also provide steps for performing the functions described in each block of the block diagram and in each step of the flowchart.
  • each block or step may represent a portion of a module, segment or code that includes one or more executable instructions for executing a specified logical function (s).
  • a specified logical function s.
  • the functions noted in the blocks or steps may occur out of order.
  • the two blocks or steps shown in succession may in fact be executed substantially concurrently or the blocks or steps may sometimes be performed in the reverse order, depending on the functionality involved.

Landscapes

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

Abstract

본 발명은 악성 파일 검사 장치에 관한 것으로, 비실행 파일에 대응하는 프로그램의 구동 시 실행되는 명령어의 실행 주소를 출력하는 프로그램 구동부와, 프로그램의 구동에 따른 정상 주소 범위 정보를 저장하는 주소 저장부와, 실행 주소가 정상 주소 범위 정보를 벗어나는지 여부에 따라 비실행 파일을 악성 여부를 판단하는 악성 판단부를 포함한다. 따라서, 본 발명은 비실행 파일 내 악성 코드가 실행되기 전에 비실행 파일의 악성 여부를 신속하게 정확하게 탐지할 수 있는 효과가 있다.

Description

악성 파일 검사 장치 및 방법
본 발명은 악성 파일 검사 장치 및 방법에 관한 것이다. 보다 구체적으로, 본 발명은 비실행 파일이 악성 코드를 포함하고 있는지 여부를 검사하는 장치, 방법 및 컴퓨터 프로그램이 기록된 컴퓨터 판독가능 기록매체에 관한 것이다.
광범위한 인터넷 및 무선통신 기기의 보급에 따라 악성 소프트웨어 또는 악성 코드(malicious code)의 전염경로가 다양해지고 있으며, 이로 인한 피해 정도가 매년 증가하고 있다. 악성 코드란 사용자의 의사와 이익에 반하여 시스템을 파괴하거나 정보를 유출하는 등의 악의적 활동을 수행하도록 의도적으로 제작된 소프트웨어를 말한다. 이러한 악성 코드의 종류로는 바이러스(virus), 웜(worm), 트로이얀(trojan), 백도어(backdoor), 논리폭탄(logic bomb), 트랩도어(trap door) 등의 해킹 툴, 악의적인 스파이웨어(spyware), 애드웨어(ad-ware) 등이 있다. 악성 코드는 자기복제나 자동번식 기능을 통하여, 사용자 식별정보(ID)와 암호 등의 개인정보 유출, 대상 시스템 통제, 파일 삭제/변경, 시스템 파괴, 응용프로그램 /시스템의 서비스 거부, 핵심 자료 유출, 다른 해킹 프로그램 설치 등의 문제를 일으키고 있으며, 그 피해도 매우 다양하고 심각하다.
이러한 문제를 해결하기 위하여, 악성코드를 탐지하고 치료하는 악성 코드 치료 시스템(백신 프로그램)이 개발되고 있다. 현재까지 알려진 악성 코드 치료 시스템(백신 프로그램) 대부분은 파일 기반 진단법을 사용하고 있다. 이는 대부분의 악성 코드가 특정 시스템에서 실행되기 위해서는 해당 시스템에서 실행 가능한 파일 형태로 되어 있다는 점에서 기인한 것이다. 예를 들어, 악성 코드가 윈도우 시스템에서 실행되기 위해서는 악성 코드는 실행 파일(PE: Portable Executable)의 포맷을 가지고 있는 것이 대부분이다. PE 포맷을 가지는 파일의 확장자는 exe, cpl, ocx, dll, vxd, sys, scr, drv 등이 있다. 이러한 실행 파일(PE) 형식의 악성 코드를 진단하기 위해서는 악성 코드 치료 시스템 또한 이러한 파일 형식을 인식하고 악성 코드로 판단할 수 있는 특정 형식의 시그니처(signature)를 가지고 있어야 된다. 이러한 진단법이 대부분의 악성 코드 치료 시스템이 사용하는 시그니처 기반 또는 스트링(string) 검사 방식과 같은 진단법이다. 이러한 시그니처 기반의 진단법은 악성 코드로 분류되는 파일의 특정 부분 또는 고유한 부분을 검사대상으로 하기 때문에 오탐(false positive)과 미탐(false negative)을 최소화하는 정확한 진단이 가능하다는 점과 파일 검사 시에 파일들의 특징적인 부분들만 비교함으로 빠른 스캐닝을 할 수 있다는 장점을 가진다. 그러나 이러한 시그니처 기반 진단법은 악성 코드의 파일 자체가 몇 백 바이트만 바뀌어도 진단이 되지 않는 미탐이 발생하기 때문에, 파일이 조금만 변경된 새로운 변형에 대해서는 대응을 할 수가 없게 된다. 그리고 기존에 알려진 악성 코드에 대해서만 대응을 할 수 있으므로 새로운 형태의 알려지지 않은 악성 코드에 대해서는 대응을 할 수 없다는 단점을 가지고 있다.
한편, 최근 이슈가 되고 있는 지능형 지속 위협(APT: Advanced Persistent Threat) 공격은 공격자가 특정 타깃을 정하고 목표한 정보를 빼내기 위해 고도의 공격기법을 적용하여 지속적으로 다양한 형태 악성코드를 활용한다. 특히 APT 공격은 초기 침입단계에서 탐지하지 못하는 경우가 많으며, 주로 악성 코드를 포함하는 비실행(Non-PE: Non-Portable Executable) 파일을 이용하는 경우가 많다. 이는 비실행 파일을 실행하는 프로그램(예: 문서작성 또는 이미지 프로그램)이 기본적으로 어느 정도의 보안 취약성을 가지고 있을 뿐만 아니라, 악성 코드를 비실행 파일에 포함시키면 파일 변경에 따라 손쉽게 변종 악성 코드를 만들 수 있기 때문이다.
이러한 특성 때문에, APT 공격은 악성 비실행 파일 익스플로잇(exploit)을 이용하여 제로 데이(Zero Day) 공격을 하는 사례가 많다. 예를 들어, 수신인이 이메일에 첨부된 악성 비실행 파일을 무심코 오픈하는 경우, 수신인의 컴퓨터는 악성 파일에 의해 감염되어 다른 컴퓨터를 공격할 수도 있고, 시스템에 침입하여 핵심 자료를 외부로 유출할 수도 있다. 뿐만 아니라, 비실행 파일이 다양한 형식(포맷)을 가지고 있기 때문에 악성 비실행 파일을 이용한 제로 데이 익스플로잇(Zero-Day Exploit)은 분석가가 비실행 파일의 악성 여부를 판단하고 악성 행위를 분석하는데 상당한 시간과 노력이 필요하며, 분석 기간 동안에 변형되거나 새로이 생성되는 수많은 악성 비실행 파일에 대응하는 것은 종래 기술로는 거의 불가능하다고 할 수 있다.
예를 들어, 종래의 시그니처 기반의 검사 방법은 다양한 형태의 공격 방법을 탐지하기 위해서 대량의 시그니처 데이터베이스를 보유하고 있어야 하기 때문에 현실적으로는 악성 비실행 파일을 이용한 제로 데이 익스플로잇을 방어할 수 없다는 문제점이 있다.
또한, 종래의 행위 기반 검사 방법 또한 다양한 공격자에 대한 행위를 탐지하여야 하기 때문에 설계 방법 등의 정보가 필요하며 이 때문에 많은 오탐과 미탐이 발생되는 문제점이 있다.
따라서, 이러한 문제를 해결하기 위해 비실행파일이 악성코드를 포함하고 있는지를 신속하고 정확하게 검사할 수 있는 악성 코드 치료 시스템이 개발될 필요가 있다.
본 발명은, 이와 같은 종래 기술의 문제점을 해결하기 위한 것으로서, 비실행 파일의 프로그램이 실행됨에 따라 로드되는 모듈의 정상 주소 범위 정보를 획득하고, 정상 주소 범위 정보와 실행 주소간의 비교를 통해 비실행 파일의 악성 여부를 판별할 수 있는 비실행 파일의 악성 코드 검사 장치 및 방법을 제공하는 것을 목적으로 한다.
본 발명의 목적은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 본 발명이 속하는 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
상기한 목적을 달성하기 위해, 본 발명의 일 실시예에 따르면, 비실행 파일에 대응하는 프로그램의 구동 시 실행되는 명령어의 실행 주소를 출력하는 프로그램 구동부와, 상기 프로그램의 구동에 따른 정상 주소 범위 정보를 저장하는 주소 저장부와, 상기 실행 주소가 상기 정상 주소 범위 정보를 벗어나는지에 따라 상기 비실행 파일의 악성 여부를 판단하는 악성 판단부를 포함하는 악성 파일 검사 장치가 제공된다.
이 경우, 상기 프로그램 구동부는, 상기 비실행 파일의 파일 형식을 판단하고, 판단된 파일 형식에 기초하여 상기 비실행 파일에 대응하는 프로그램을 구동할 수 있다.
또한, 상기 악성 판단부는, 상기 실행 주소가 상기 정상 주소 범위 정보를 벗어나는 경우 상기 실행 주소가 지시하는 메모리 영역이 실행 속성인지의 여부를 판단하며, 상기 판단 결과에 의거하여 상기 비실행 파일에 대한 악성 여부를 판단할 수 있다.
이 경우, 상기 악성 판단부는, 상기 메모리 영역이 실행 속성인 경우 상기 실행 주소가 지시하는 메모리 영역에 저장된 코드의 실행에 따른 비정상적인 이벤트 발생 여부를 체크하여 상기 비실행 파일에 대한 악성 여부를 판단할 수 있다.
또한, 상기 악성 판단부는, 상기 비정상적인 이벤트가 발생되지 않을 경우, 상기 실행 주소 이후 기 설정된 스텝까지의 실행 주소가 상기 정상 주소 범위 정보를 지시하는지를 체크하여 상기 비실행 파일에 대한 악성 여부를 판단할 수 있다.
또한, 상기 악성 판단부는, 상기 메모리 영역이 비실행 속성인 것으로 판단되는 경우 상기 비실행 파일을 악성으로 판단할 수 있다.
한편, 악성 파일 검사 장치는 상기 정상 주소 범위 정보를 벗어나는 실행 주소에 대응되는 영역 내 코드를 추출하는 악성 코드 추출부를 더 포함할 수 있다.
또한, 악성 파일 검사 장치는 상기 정상 주소 범위 정보를 벗어난 실행 주소와 관련된 명령어를 포함하는 모듈과 취약성 정보와의 비교를 통해 취약성 발생 원인을 분석하는 원인 분석부를 더 포함할 수 있다.
한편, 상기 정상 주소 범위 정보는 상기 프로그램의 구동에 따라 로드되는 모듈의 시작 주소와 끝 주소를 포함할 수 있다.
그리고, 상기 실행 주소는 중앙 처리 유닛의 EIP(Extended Instruction Pointer) 레지스터로부터 제공될 수 있다.
또한, 상기 악성 판단부는, 상기 구동되는 프로그램의 명령어의 종류에 기초하여 상기 실행 주소가 상기 정상 주소 범위에 속하는지를 판단할 수 있다.
상기 목적을 달성하기 위해, 본 발명의 다른 실시예에 따르면, 비실행 파일에 대응하는 프로그램의 구동 시 실행되는 명령어의 실행 주소를 획득하는 단계와, 상기 프로그램의 구동에 따른 정상 주소 범위 정보를 저장하는 단계와, 상기 획득된 실행 주소가 상기 정상 주소 범위 정보를 벗어나는 경우 상기 비실행 파일의 악성 여부를 판단하는 단계를 포함하는 악성 파일 검사 방법이 제공된다.
이 경우, 상기 비실행 파일의 악성 여부를 판단하는 단계는, 상기 실행 주소가 정상 주소 범위 정보를 벗어나는 경우 상기 실행 주소가 지시하는 메모리 영역이 실행 속성인지의 여부를 판단하는 단계와, 상기 판단 결과에 의거하여 상기 비실행 파일에 대한 악성 여부를 판단하는 단계를 포함할 수 있다.
상기 비실행 파일에 대한 악성 여부를 판단하는 단계는, 상기 메모리 영역이 실행 속성인 경우 상기 실행 주소가 지시하는 메모리 영역에 저장된 코드의 실행에 따른 비정상적인 이벤트 발생 여부를 체크하는 단계를 포함하되, 상기 비정상적인 이벤트가 발생되는 경우 상기 비실행 파일을 악성으로 판단될 수 있다.
상기 비실행 파일을 악성으로 판단하는 단계는, 상기 비정상적인 이벤트가 발생되지 않을 경우 상기 실행 주소 이후 기 설정된 스텝까지의 실행 주소가 상기 정상 주소 범위 정보를 벗어난 상기 메모리 영역을 지시하는지를 체크하는 단계와, 상기 기 설정된 스텝까지의 실행 주소가 상기 정상 주소 범위 정보를 벗어난 메모리 영역을 지시하는 경우 상기 비실행 파일을 악성으로 판단하는 단계를 포함할 수 있다.
이 경우, 상기 악성 파일 검사 방법은 상기 비실행 파일의 파일 형식을 판단하는 단계를 더 포함하고, 상기 판단된 파일 형식에 기초하여 상기 비실행 파일에 대응하는 프로그램이 구동될 수 있다.
또한, 상기 악성 파일 검사 방법은 상기 정상 주소 범위 정보를 벗어나는 실행 주소에 대응되는 영역 내 코드를 추출하는 단계를 더 포함할 수 있다.
상기 악성 파일 검사 방법은, 상기 정상 주소 범위 정보를 벗어나는 실행 주소와 관련된 모듈과 취약성 정보와의 비교를 통해 취약성 발생 원인을 분석하는 단계를 더 포함할 수 있다.
한편, 상기 정상 주소 범위 정보는 상기 프로그램의 구동에 따라 로드되는 모듈의 시작 주소와 끝 주소를 포함할 수 있다.
또한, 상기 실행 주소는 중앙 처리 유닛의 EIP 레지스터로부터 제공될 수 있다.
또한, 상기 판단하는 단계는, 상기 구동되는 프로그램의 명령어의 종류에 기초하여 상기 실행 주소가 상기 정상 주소 범위에 속하는지를 판단할 수 있다.
한편, 상기 명령어가 리턴(return), 콜 또는 점프인 경우, 하나의 스텝을 진행하여 상기 실행 주소가 상기 정상 주소 범위에 속하는지를 판단할 수 있다.
반면, 상기 명령어가 구조화된 예외 처리(SEH: Structured Exception Handling) 인 경우 상기 구조화된 예외 처리의 체인(chain) 값이 상기 정상 주소 범위 정보에 속하는지를 판단할 수 있다.
한편, 상기 악성 파일 검사 방법은, 상기 정상 주소 범위 정보를 벗어난 실행 주소 직전에 실행된 명령어의 실행 주소를 저장하는 단계를 더 포함할 수 있다.
또한, 본 발명의 또 다른 실시예에 따르면 상기 악성 파일 검사 방법에 따른 각각의 단계를 수행하는 명령어를 포함하는 프로그램이 기록된 컴퓨터 판독가능 기록매체가 제공된다.
본 발명은 프로그램이 구동됨에 따라 정상적으로 로드되는 모듈의 시작 주소와 끝 주소로 이루어진 정상 주소 범위 정보를 획득한 후 프로그램 모듈 내 각 명령어가 실행될 때 출력되는 실행 주소가 정상 주소 범위 정보를 벗어나는 경우 비실행 파일 내 악성 코드가 포함된 것으로 판단함으로써, 악성 코드가 실행되기 전에 악성 비실행 파일 탐지할 수 있는 효과가 있다.
또한, 본 발명은 프로그램이 구동됨에 따라 정상적으로 로드되는 모듈의 정상 주소 범위 정보를 획득한 후 프로그램 모듈 내 각 명령어가 실행될 때 출력되는 실행 주소가 정상 주소 범위 정보를 벗어나는지의 여부를 통해 비실행 파일의 악성 여부를 검사함으로써, 비실행 파일에 대한 악성 판별의 정확도를 높일 수 있다.
따라서, 악성 비실행 파일의 취약성을 이용한 APT 공격 시나리오 등에 대해 효과적으로 방어할 수 있는 효과가 있다.
도 1은 본 발명의 실시예에 따른 비실행 파일의 악성 코드 검사 장치를 도시한 블록도이다.
도 2는 본 발명의 실시예에 따라 비실행 파일의 악성 코드를 분석하는 과정을 도시한 흐름도이다.
도 3은 본 발명의 실시예에 따라 비실행 파일에 대한 악성 코드 검사 방법의 예를 도시한 도면이다.
도 4는 본 발명의 다른 실시 예에 따른 악성 파일 검사 장치가 실행 주소가 정상 주소 범위 정보를 벗어난 영역을 지시하는 경우 동작하는 과정을 도시한 흐름도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
본 명세서에서 사용되는 "비실행 파일"이란 실행 파일 또는 실행 가능한 파일과 반대되는 개념으로서 자체적으로 실행되지 않는 파일을 의미한다. 예를 들어, 비실행 파일은 한글 파일, 워드 파일과 같은 문서 파일, JPG 파일과 같은 이미지 파일, 동영상 파일, 자바 스크립크 파일, HTML 파일 등이 될 수 있으나, 이에 한정되지 않는다.
악성 코드를 포함하는 악성 비실행 파일은 이메일에 첨부되는 방식 또는 네트워크를 통해 악성 비실행 파일 자체가 전송되는 방식 등을 통해 지능형 지속 위협(APT: Advanced Persistent Threat) 공격 등에서 사용될 수 있다. 이 경우 악성 코드는 쉘 코드(shell code)일 수 있고, 이러한 악성 쉘 코드는 비실행 파일의 형식(포맷)에 대응하는 프로그램을 실행하는 경우에 실행될 수 있다. 비실행 파일의 형식은 예를 들어, hwp 파일, doc 파일, pdf 파일, jpg 파일, js 파일, html 파일 등이 될 수 있다.
악성 비실행 파일들은 악성 쉘 코드를 포함할 수 있으며, 악성 쉘 코드를 포함하고 있는 악성 비실행 파일은 어떤 방식을 통해서든 결국 명령어를 실행할 때에 악성 쉘 코드 영역으로 이동한다. 이러한 악성 쉘 코드 영역으로의 이동은 실행 주소를 확인하면 미리 예측할 수 있다. 예컨대, CPU 와 같은 중앙처리유닛의 레지스터 중의 하나인 EIP(Extended Instruction Pointer) 레지스터에 저장된 값을 통해 다음에 실행해야 할 명령어의 실행 주소를 확인할 수 있다. 따라서, 정상적인 정상 주소 범위를 벗어나 악성 쉘 코드 영역으로 이동하는 명령어를 갖는지 여부는 비실행 파일의 악성 여부를 판단하는데 있어 중요한 기준이 될 수 있다.
도 1은 본 발명의 실시예에 따른 비실행 파일의 악성 코드 검사 장치를 도시한 블록도이다. 이하, 도 1을 참조하여 본 발명의 실시예에 따른 비실행 파일의 악성 코드 검사 장치의 구성 및 동작에 대하여 상세히 설명한다.
도 1에 도시된 바와 같이, 본 발명의 실시예에 따른 악성 파일 검사 장치는 비실행 파일을 프로그램에 로드하여 실행시키며, 프로그램의 실행에 따라 비실행 파일 내 악성 코드 포함 여부를 분석한 후 이를 분석 및 보고할 수 있다. 이를 위하여 악성 파일 검사 장치는 프로그램 데이터베이스(100), 사용자 인터페이스(102), 프로그램 구동부(104), 주소 저장부(106), 악성 판단부(108), 악성 코드 추출부(110), 원인 분석부(112) 및 가상 메모리(114) 등을 포함할 수 있다.
프로그램 데이터베이스(100)는 악성 코드 검사를 위하여 입력되는 비실행 파일을 실행시키기 위한 다양한 형식의 프로그램을 저장하고 있다.
사용자 인터페이스(102)는 검사하고자 하는 비실행 파일이 저장된 디렉토리 또는 비실행 파일을 선택하기 위한 인터페이스를 제공할 수 있다.
프로그램 구동부(104)는 사용자 인터페이스(102)를 통해 선택된 비실행 파일의 형식을 판단하고, 판단된 형식에 따라 프로그램 데이터베이스(100)를 검색하여 비실행 파일을 실행시킬 수 있는 프로그램을 선택할 수 있다.
또한, 프로그램 구동부(104)는 선택된 프로그램에 비실행 파일을 로드하여 실행시키며, 비실행 파일의 로드에 따라 프로그램의 모듈 내 각 명령어에 대한 실행 주소를 악성 판단부(108)에 출력할 수 있다. 여기에서, 모듈의 예로는 동적 연결 라이브러리(DLL: Dynamic Linking Library) 등을 수 있다.
한편, 프로그램 구동부(104)는 선택된 프로그램에 비실행 파일을 로드하여 가상 환경에서 실행할 수도 있다.
프로그램 구동부(104)는 중앙 처리 유닛(CPU: Central Processing Unit)의 레지스터에 저장된 정보를 이용하여 명령어에 대한 실행 주소를 제공할 수 있다. 그 예로서, 중앙 처리 장치의 EIP(Extended Instruction Pointer) 레지스터에는 다음에 실행해야 할 명령어의 메모리 주소가 저장될 수 있다.
주소 저장부(106)는 프로그램이 구동됨에 따라 정상적으로 로드되는 모듈의 시작 주소와 끝 주소로 이루어진 정상 주소 범위 정보를 가상 메모리(114)에 저장할 수 있다.
악성 판단부(108)는 비실행 파일이 프로그램에 로드됨에 따라 프로그램의 모듈 내 각 명령어가 실행될 때 각 명령어의 실행 주소를 프로그램 구동부(104)로부터 제공받으며, 제공받은 실행 주소가 정상 주소 범위 정보를 벗어나는지 여부를 기초로 비실행 파일의 악성 여부를 판단하여 분류할 수 있다. 예컨대, 중앙 처리 유닛의 EIP 레지스터에 저장된 실행 주소가 정상 주소 범위 정보를 벗어나는 경우 비실행 파일을 악성으로 분류할 수 있다.
또한, 악성 판단부(108)는 실행 주소가 지시하는 영역, 즉 정상 주소 범위 정보를 벗어난 영역을 악성 쉘 코드 영역으로 판단하며, 악성 쉘 코드 영역을 지시하는 실행 주소의 명령어의 실행 직전에 실행된 명령어의 실행 주소를 가상 메모리(114)에 저장할 수 있다.
이러한 악성 판단부(108)는 명령어의 종류에 따라서 한 스텝(single step)을 진행하여 프로그램 구동부(104)에서 출력되는 실행 주소와 정상 주소 범위 정보간 비교를 통해 비실행 파일에 대한 악성 여부를 판단할 수 있다. 보다 구체적으로, 악성 판단부(108)는 명령어의 종류에 따라서 한 스텝을 진행하여 실행 주소가 정상적인 정상 주소 범위 정보에 속하는지를 판단하거나 한 스텝을 진행하지 않고 바로 실행 주소가 정상적인 정상 주소 범위 정보 정보에 속하는지를 판단할 수 있다. 예를 들어, 명령어가 구조화된 예외 처리(SHE: Structured Exception Handling)일 경우에 악성 판단부(108)는 구조화된 예외 처리의 체인(chain) 값과 정상 주소 범위 정보간의 비교를 수행할 수 있다. 또한, 리턴(return), 콜(call) 또는 점프(jump) 등과 같은 명령어들은 한 스텝을 진행하여 실행 주소가 정상적인 정상 주소 범위 정보 정보에 속하는지를 판단한다. 여기에서, 구조화된 예외 처리의 체인 값은 실행할 주소를 의미한다.
다만, 악성 판단부(108)는 정상 프로그램이 비실행 파일을 로드하기 위해 정상 모듈의 정상 주소 범위 정보 밖에서 명령어를 실행하는 것은 예외 처리할 수도 있다.
예외 처리되는 경우에 대해 설명하면, 악성 판단부(108)는 실행 주소가 정상 주소 범위 정보를 벗어나는 경우 실행 주소가 지시하는 메모리 영역의 속성을 판단한다. 판단 결과 메모리 영역의 속성이 실행 속성이라면 해당 비실행 파일을 정상으로 판정한다. 그러나, 판단 결과 메모리 영역의 속성이 실행 속성이 아니라면, 실행 주소가 지시하는 메모리 영역에 저장된 코드의 실행에 따라 발생되는 이벤트가 비정상적인 이벤트인지를 판단한다.
여기에서, 비정상적인 이벤트의 예로는
Access Violation;
EXCEPTION_ARRAY_BOUNDS_EXCEEDED:
EXCEPTION_DATATYPE_MISALIGNMENT:
EXCEPTION_FLT_DENORMAL_OPERAND:
EXCEPTION_FLT_DIVIDE_BY_ZERO:
EXCEPTION_FLT_INEXACT_RESULT:
EXCEPTION_FLT_INVALID_OPERATION:
EXCEPTION_FLT_OVERFLOW:
EXCEPTION_FLT_STACK_CHECK:
EXCEPTION_FLT_UNDERFLOW:
EXCEPTION_GUARD_PAGE:
EXCEPTION_ILLEGAL_INSTRUCTION:
EXCEPTION_IN_PAGE_ERROR:
EXCEPTION_INT_DIVIDE_BY_ZERO:
EXCEPTION_INT_OVERFLOW:
EXCEPTION_INVALID_DISPOSITION:
EXCEPTION_INVALID_HANDLE:
EXCEPTION_NONCONTINUABLE_EXCEPTION:
EXCEPTION_PRIV_INSTRUCTION:
EXCEPTION_STACK_OVERFLOW:
등이 될 수 있으나, 이에 한정하지 않는다.
비정상적인 이벤트가 발생되는 경우 악성 판단부(108)는 비실행 파일을 악성 코드로 판단함과 더불어 정상 주소 범위 정보를 벗어나는 실행 주소의 명령어 직전에 실행된 명령어의 실행 주소를 가상 메모리(114)에 저장할 수 있다.
한편, 비정상적인 이벤트가 발생되지 않을 경우 악성 판단부(108)는 기 설정된 스텝, 예컨대 3-5 스텝까지의 명령어에 대한 실행 주소와 정상 주소 범위 정보간의 비교를 통해 비실행 파일에 대한 악성 여부를 판단할 수 있다. 즉, 악성 판단부(108)는 기 설정된 스텝까지의 명령어에 대한 실행 주소가 정상 주소 범위 정보를 벗어나는 경우 비실행 파일을 악성으로 판단하며, 기 설정된 스텝 이전의 명령어에 대한 실행 주소가 정상 주소 범위 정보인 경우 비실행 파일을 정상으로 판단하여 이후 스텝에 대한 명령어를 수행할 수 있다.
악성 코드 추출부(110)는 정상 주소 범위 정보를 벗어나는 실행 주소에 대응되는 영역 내 쉘 코드를 실행 파일 또는 실행 가능한 파일 형태로 추출한 후 이를 가상 메모리(114)에 저장할 수 있다. 여기에서, 실행 파일 또는 실행 가능한 파일 형태는 exe, cpl, dll, ocx, vxd, sys, scr, drv 등이 될 수 있으나, 이에 한정하지 않는다.
또한, 악성 코드 추출부(110)는 실행 파일 또는 실행 가능한 파일 형태로 추출된 코드를 통신망(미도시됨)에 연결된 악성 코드 검사 및 분석 서버(미도시됨)에 전송하여 분석을 의뢰할 수 있다.
원인 분석부(112)는 악성으로 분류된 모듈의 정보 및 정상 주소 범위 정보를 벗어난 실행 주소와 기 저장된 취약성 정보간의 비교를 통해 취약성 발생 원인을 파악한 후 이를 사용자 또는 분석가에게 제공해줄 수 있다. 여기에서, 취약성 정보로는 CVE(Common Vulnerabilities and Exposures), Microsoft Security Bulletin(예컨대, MS11-002), NVD(National Vulnerability Database), US-CERT Bulletin 등에서 제공한 정보일 수 있지만 이들에 한정되지는 않는다.
본 발명의 실시예에서는 원인 분석부(112)가 악성 파일 검사 장치의 내부에 설치되는 것으로 예를 들어 설명하였지만, 통신망을 통해 연결된 별도의 분석 서버(미도시됨)에 설치될 수 있다.
상기와 같은 구성을 갖는 악성 파일 검사 장치가 동작하는 과정에 대해 도 1 및 도 2를 참조하여 설명한다. 여기서, 본 발명의 실시예에 따른 프로그램 구동부(104)는 실행이 필요한 특정 프로그램을 직접 실행시킬 수도 있으며, 별도의 시스템(미도시됨)에게 특정 프로그램의 실행을 요청할 수도 있다.
먼저, 본 발명의 실시예에 따른 악성 코드 검사 장치가 특정 프로그램을 직접 실행하는 경우를 설명하기로 한다.
도 2에 도시된 바와 같이, 사용자가 사용자 인터페이스(102)를 이용하여 비실행 파일이 저장된 디렉토리를 선택하면, 프로그램 구동부(104)는 선택된 디렉토리 내 비실행 파일의 형식을 파악한다. 즉, 검사 대상인 비실행 파일이 저장된 디렉토리가 사용자 인터페이스(102)를 통해 선택(S200)되면 프로그램 구동부(104)는 해당 디렉토리에 저장된 비실행 파일의 파일 형식 정보에 의거하여 파일 형식을 판단한다. 예컨대, 드라이브1의 하위에 존재하는 다수의 루트 폴더 중에서 특정 루트 폴더가 사용자 인터페이스(102)를 통해 선택되면 특정 루트 폴더에 저장된 비실행 파일의 파일 형식 정보를 확인하여 해당 비실행 파일의 파일 형식을 판단한다(S202).
그 다음, 프로그램 구동부(104)는 비실행 파일의 형식에 맞는 프로그램을 프로그램 데이터베이스(100)에서 검색하여 실행한다(S204). 이러한 프로그램 구동부(104)는 비실행 파일을 검색된 프로그램 상에 로드하여 실행시키며, 프로그램 내 모듈의 명령어의 실행 주소를 악성 판단부(108)에 출력한다. 여기에서, 실행 주소는 모듈 내 명령어가 실행될 때 가상 메모리(114) 상의 주소를 의미하며, EIP 레지스터에 저장되어 있다.
그리고 나서, 주소 저장부(106)는 프로그램의 실행에 따라 가상 메모리(114)에 로드되는 모듈의 시작 주소와 끝 주소로 이루어진 정상 주소 범위 정보를 가상 메모리(114)에 저장한다(S206).
이후, 악성 판단부(108)는 프로그램 구동부(104)로부터 출력되는 실행 주소와 정상 주소 범위 정보간의 비교를 통해 실행 주소가 정상 주소 범위 정보에 포함되는지를 판단한다(S208).
S208의 판단 결과, 실행 주소가 정상 주소 범위 정보에 포함하는 경우 악성 판단부(108)는 다음 명령어에 대한 실행 주소를 프로그램 구동부(104)로부터 제공(S210)받은 후 S208로 진행하여 다음 명령어의 실행 주소가 정상 주소 범위 정보에 포함되는지를 다시 판단한다.
한편, S208의 판단 결과, 실행 주소가 정상 주소 범위 정보를 벗어나는 경우 레지스터 값이 악성 쉘 코드 영역으로 이동하는 것으로 판단하고, 악성 판단부(108)는 비실행 파일을 악성으로 분류한 후 프로그램의 구동을 중지시킨다(S212).
그리고 나서, 악성 판단부(108)는 악성 쉘 코드 영역으로 이동하기 전의 실행 주소와 프로그램 내 해당 모듈(취약성을 갖는 모듈)의 정보를 가상 메모리(114)에 저장(S214)한 후 이를 원인 분석부(112)에 제공한다.
한편, 악성 코드 추출부(110)는 정상 주소 범위 정보를 벗어나는 실행 주소가 가르키는 영역, 즉 악성 쉘 코드 영역에 대한 코드를 실행 파일 또는 실행 가능한 파일 형태로 추출한 후 이를 가상 메모리(114)에 저장한다(S216).
원인 분석부(112)는 악성 판단부(108)로부터 제공받은 실행 주소 및 모듈의 정보를 기 저장된 취약성 정보간의 비교를 통해 취약성 발생 원인을 파악한 후 이를 사용자 또는 분석가에게 제공함으로써, 해당 비실행 파일에 대한 분석 결과를 레포팅해줄 수 있다(S216).
그리고 나서, 디렉토리 내에 다른 비실행 파일이 존재하는 경우 악성 파일 검사 장치는 다음 비실행 파일을 디렉토리에서 추출한 후 S202로 진행하여 이후 단계를 수행한다.
다음으로, 본 발명의 실시예에 따라 악성 코드 검사 장치가 특정 프로그램을 직접 실행하지 않고 별도의 시스템에게 특정 프로그램의 실행을 요청하는 경우를 설명하기로 한다. 여기에서, 시스템의 예로는 악성 코드 검사 장치가 설치된 개인용 단말기, 통신망(미도시됨)을 통해 연결된 프로그램 제공 서버 등을 의미할 수 있으며, 이에 한정되는 것은 아니다.
사용자가 사용자 인터페이스(102)를 이용하여 비실행 파일이 저장된 디렉토리를 선택하면, 프로그램 구동부(104)는 선택된 디렉토리 내 비실행 파일의 형식을 파악한다. 즉, 검사 대상인 비실행 파일이 저장된 디렉토리가 사용자 인터페이스(102)를 통해 선택(S200)되면 프로그램 구동부(104)는 해당 디렉토리에 저장된 비실행 파일의 파일 형식 정보에 의거하여 파일 형식을 판단한다. 예컨대, 드라이브1의 하위에 존재하는 다수의 루트 폴더 중에서 특정 루트 폴더가 사용자 인터페이스(102)를 통해 선택되면 특정 루트 폴더에 저장된 비실행 파일의 파일 형식 정보를 확인하여 해당 비실행 파일의 파일 형식을 판단한다(S202).
그런 다음, 프로그램 구동부(104)는 비실행 파일의 형식에 맞는 프로그램을 구동하여 줄 것을 시스템(미도시됨)에 요청하며, 시스템은 비실행 파일의 형식에 맞는 프로그램 선택하여 실행한다(S204). 이처럼 프로그램이 실행되면 모듈이 로드되며, 프로그램 구동부(104)는 로드된 모듈의 명령어별 실행 주소를 시스템으로부터 제공받아 악성 판단부(108)에 출력한다. 여기에서, 실행 주소는 모듈 7내 명령어가 실행될 때 가상 메모리(114) 상의 주소를 의미하며, EIP 레지스터에 저장될 수 있다.
그리고 나서, 주소 저장부(106)는 프로그램의 실행에 따라 가상 메모리(114)에 로드되는 모듈의 시작 주소와 끝 주소로 이루어진 정상 주소 범위 정보를 가상 메모리(114)에 저장한다(S206).
이후, 악성 판단부(108)는 프로그램 구동부(104)로부터 출력되는 실행 주소와 정상 주소 범위 정보간의 비교를 통해 실행 주소가 정상 주소 범위 정보에 포함되는지를 판단한다(S208).
S208의 판단 결과, 실행 주소가 정상 주소 범위 정보에 포함하는 경우 악성 판단부(108)는 다음 명령어에 대한 실행 주소를 프로그램 구동부(104)로부터 제공(S210)받은 후 S208로 진행하여 다음 명령어의 실행 주소가 정상 주소 범위 정보에 포함되는지를 판단한다.
한편, S208의 판단 결과, 실행 주소가 정상 주소 범위 정보를 벗어나는 경우 레지스터 값이 악성 쉘 코드 영역으로 이동하는 것이기 때문에 악성 판단부(108)는 비실행 파일을 악성으로 분류한 후 프로그램의 구동을 중지시킨다(S212).
그리고 나서, 악성 판단부(108)는 악성 쉘 코드 영역으로 이동하기 전의 실행 주소와 프로그램 내 해당 모듈(취약성을 갖는 모듈)의 정보를 가상 메모리(114)에 저장(S214)한 후 이를 원인 분석부(112)에 제공한다.
한편, 악성 코드 추출부(110)는 정상 주소 범위 정보를 벗어나는 실행 주소가 가르키는 영역, 즉 악성 쉘 코드 영역에 대한 코드를 실행 파일 또는 실행 가능한 파일 형태로 가공한 후 이를 가상 메모리(114)에 저장한다(S216).
원인 분석부(112)는 악성 판단부(108)로부터 제공받은 실행 주소 및 모듈의 정보를 기 저장된 취약성 정보간의 비교를 통해 취약성 발생 원인을 파악한 후 이를 사용자 또는 분석가에게 제공함으로써, 해당 비실행 파일에 대한 분석 결과를 보고해줄 수 있다(S216).
그리고 나서, 디렉토리 내에 다른 비실행 파일이 존재하는 경우 악성 파일 검사 장치는 다음 비실행 파일을 디렉토리에서 추출한 후 S202로 진행하여 이후 단계를 수행한다.
한편, 일 실시예에서는 실행 주소가 정상 주소 범위 정보를 벗어나는 경우 이를 악성으로 판단하는 것으로 예를 들어 설명하였지만, 또 다른 실시예에서는 실행 주소가 정상 주소 범위 정보를 벗어난 경우라 하더라도 실행 주소가 지시하는 메모리 영역이 실행 속성인지 여부에 따라 예외 처리할 수 있는데 이에 대한 설명은 아래와 같다.
도 3은 본 발명의 다른 실시 예에 따른 악성 파일 검사 장치가 실행 주소가 정상 주소 범위 정보를 벗어난 영역을 지시하는 경우 동작하는 과정을 도시한 흐름도이다.
도 3에 도시된 바와 같이, 제 1 실행 주소가 정상 주소 범위 정보를 벗어난 메모리 영역을 지시하는 경우 악성 판단부(108)는 카운터 값을 기 설정된 초기 값, 예컨대 "0"으로 셋팅(S300)한 후 제 1 실행 주소가 지시하는 메모리 영역에 대한 속성을 검사하여 속성이 실행 속성인지를 판단한다(S302).
S302의 판단 결과, 실행 속성이 아닌 경우 악성 판단부(108)는 제 1 실행 주소가 지시하는 메모리 영역 내 코드를 실행(S304)시키며, 실행에 따라 발생되는 이벤트가 비정상적인 이벤트인지를 검사한다(S306).
한편, S302 에서 실행 속성인 경우 악성 판단부(108)는 비실행 파일을 정상으로 판단(S308)하여 다음 실행 주소, 즉 제 2 실행 주소와 주소 범위 정보간의 비교를 수행한다. 또한, S306의 검사 결과, 비정상적인 이벤트가 발생되는 경우도 악성 판단부(108)는 비실행 파일을 악성으로 판단한다(S310).
한편, S306의 검사 결과, 비정상적인 이벤트가 발생되지 않을 경우 악성 판단부(108)는 카운터 값을 "1" 증가(S312)시킨 후 카운터 값이 임계값 이하인지를 판단한다(S314).
S314의 판단 결과, 카운터 값이 임계값 이하인 경우 악성 판단부(108)는 프로그램 구동부(104)로부터 제공받은 다음 스텝의 명령어에 대한 제 2 실행 주소가 정상 주소 범위 정보를 벗어나는지를 판단한다(S316).
S316의 판단 결과, 다음 스텝의 명령어에 대한 다음 실행 주소, 즉 제 2 실행 주소가 정상 주소 범위 정보를 벗어나는 경우 악성 판단부(108)는 제 2 실행 주소가 지시하는 메모리 영역에 대한 실행 속성을 검사하는 S302으로 진행하여 이후 단계를 수행한다.
한편, S314의 판단 결과, 카운터 값이 임계값을 초과하는 경우 악성 판단부(108)는 비실행 파일을 악성으로 판단한다.
또한, S316의 판단 결과, 다음 스텝의 명령어에 대한 제 2 실행 주소가 정상 주소 범위 정보를 지시하는 경우 악성 판단부(108)는 다음 명령어에 대한 제 3 실행 주소와 정상 주소 범위 정보간의 비교를 실시한다.
본 발명의 실시예에 따른 장치 및 방법에 따르면, 프로그램이 구동됨에 따라 정상적으로 로드되는 모듈의 시작 주소와 끝 주소로 이루어진 정상 주소 범위 정보를 가상 메모리(114)에 저장한 후 가상 메모리(114)에 로드되는 모듈 내 각 명령어가 실행될 때 각 명령어의 실행 주소를 추출하고, 추출된 실행 주소가 정상 주소 범위 정보를 벗어나는 경우 비실행 파일 내 악성 코드가 포함된 것으로 판단함으로써, 악성 코드가 실행되기 전에 악성 비실행 파일 탐지할 수 있다.
또한, 본 발명의 실시예에 따르면, 가상 메모리(114)에 로드되는 모듈 내 각 명령어가 실행될 때 각 명령어의 실행 주소를 추출하고, 추출된 실행 주소가 정상 주소 범위 정보에 벗어난 실행 주소의 악성 쉘 코드 영역 내 코드를 실행 파일 또는 실행 가능한 파일 형태로 제공함으로써, 악성 비실행 파일에 대한 정적 분석이 가능하다.
도 4는 본 발명의 실시예에 따라 비실행 파일에 대한 악성 코드 검사 방법의 예를 도시한 도면이다. 이하, 도 4를 참조하여 본 발명의 실시예에 따른 악성 코드 검사 방법을 살펴보기로 한다.
비실행 파일이 프로그램에서 실행되는 경우, 프로그램은 시작 시부터 종료 시까지 정상적으로 흐름(410)으로 실행될 수 있으나, 비실행 파일 내 악성 코드로 인하여 비정상적인 흐름(420)으로 실행될 수 있다.
비실행 파일이 프로그램에 로드되면, 주소 저장부(106)는 정상적으로 로드되는 프로그램의 정상 주소 범위 정보(430)를 가상 메모리(114)에 저장한다. 여기에서, 정상 주소 범위 정보(430)는 정상적으로 로드되는 프로그램 내 명령어의 시작 주소와 끝 주소로 이루어진 정보이다.
이후, 악성 판단부(108)는 프로그램의 실행 주소(440)와 정상 주소 범위 정보(430)간의 비교를 통해 프로그램의 레지스터 값을 분석한다. 이때, 분석 구간은 프로그램에 비실행 파일이 로드된 시점부터 악성코드가 실행되기 전까지의 구간을 의미한다. 즉, 악성 코드가 실행되기 전까지는 프로그램의 실행 주소가 정상 주소 범위 정보를 지시하는 정상적인 모습을 보이며, 악성 코드가 실행될 때의 경우에는 실행 주소(440)가 정상 주소 범위 정보를 벗어난 영역(432)을 가리키게 된다. 예를 들어, 실행 주소(440)의 D, E, F, G가 정상 주소 범위 정보(430)을 가리킬 경우 프로그램은 정상적인 흐름(410)으로 실행되며, 실행 주소(440)의 H가 정상 주소 범위 정보(430)를 벗어난 영역(432)을 가리킬 경우 프로그램은 비정상적인 흐름(420)으로 실행된다.
프로그램이 악성 코드의 실행에 따라 정상적인 흐름(410)에서 벗어나는 경우 프로그램에 로드된 비실행 파일에 포함된 악성 코드가 실행될 수 있다. 이때, 악성 코드의 종류에 따라 악성 코드 이미지가 실행될 수 있다.
상술한 바와 같이, 악성 코드가 실행되는 구간에서는 악성 코드의 실행으로 인하여 프로그램의 레지스터 값, 즉 프로그램 내 모듈의 실행 주소(440)의 H가 정상 주소 범위 정보를 벗어난 영역(432)을 가리키게 된다. 이러한 경우 본 발명의 실시예에 따른 악성 파일 검사 장치는 정상 주소 범위 정보(430)를 벗어나기 전 실행 주소인 G와 프로그램 내 해당 모듈에 대한 정보를 가상 메모리(114)에 저장한다.
또한, 프로그램 내 모듈의 실행 주소가 정상 주소 범위 정보를 벗어난 영역(432)을 지시하는 경우 본 발명의 실시예에 따른 악성 파일 검사 장치는 실행 주소에 대응되는 영역(432)의 코드가 실행되기 전에 프로그램을 중지시킨다.
본 발명에 첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록 또는 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (26)

  1. 비실행 파일에 대응하는 프로그램의 구동 시 실행되는 명령어의 실행 주소를 출력하는 프로그램 구동부와,
    상기 프로그램의 구동에 따른 정상 주소 범위 정보를 저장하는 주소 저장부와,
    상기 실행 주소가 상기 정상 주소 범위 정보를 벗어나는지에 따라 상기 비실행 파일의 악성 여부를 판단하는 악성 판단부를 포함하는
    악성 파일 검사 장치.
  2. 제 1 항에 있어서,
    상기 프로그램 구동부는,
    상기 비실행 파일의 파일 형식을 판단하고, 판단된 파일 형식에 기초하여 상기 비실행 파일을 실행하기 위한 프로그램을 선택하여 구동시키는
    악성 파일 검사 장치
  3. 제 1 항에 있어서,
    상기 악성 판단부는,
    상기 실행 주소가 상기 정상 주소 범위 정보를 벗어나는 경우 상기 실행 주소가 지시하는 메모리 영역이 실행 속성인지의 여부를 판단하며, 그 판단 결과에 의거하여 상기 비실행 파일에 대한 악성 여부를 판단하는
    악성 파일 검사 장치.
  4. 제 3 항에 있어서,
    상기 악성 판단부는,
    상기 실행 주소가 지시하는 메모리 영역이 상기 실행 속성이 아닌 경우 상기 실행 주소가 지시하는 메모리 영역에 저장된 코드의 실행에 따른 비정상적인 이벤트 발생 여부를 체크하여 상기 비실행 파일에 대한 악성 여부를 판단하는
    악성 파일 검사 장치.
  5. 제 4 항에 있어서,
    상기 악성 판단부는,
    상기 비정상적인 이벤트가 발생되지 않을 경우, 상기 실행 주소의 다음 실행주소로부터 기 설정된 스텝까지의 실행 주소가 상기 정상 주소 범위 정보를 벗어나는지를 체크하여 상기 비실행 파일에 대한 악성 여부를 판단하는
    악성 파일 검사 장치.
  6. 제 3 항에 있어서,
    상기 악성 판단부는,
    상기 실행 주소가 지시하는 메모리 영역이 실행 속성이라고 판단된 경우 상기 비실행 파일을 정상으로 판단하는
    악성 파일 검사 장치.
  7. 제 1 항에 있어서,
    상기 정상 주소 범위 정보를 벗어나는 실행 주소에 대응되는 영역 내 코드를 추출하는 악성 코드 추출부를 더 포함하는
    악성 파일 검사 장치.
  8. 제 1 항에 있어서,
    상기 정상 주소 범위 정보를 벗어난 실행 주소와 관련된 명령어를 포함하는 모듈과 취약성 정보와의 비교를 통해 취약성 발생 원인을 분석하는 원인 분석부를 더 포함하는
    악성 파일 검사 장치.
  9. 제 1 항에 있어서,
    상기 정상 주소 범위 정보는 상기 프로그램의 구동에 따라 로드되는 모듈의 시작 주소와 끝 주소를 포함하는
    악성 파일 검사 장치.
  10. 제 1 항에 있어서,
    상기 실행 주소는 중앙 처리 유닛의 EIP(Extended Instruction Pointer) 레지스터로부터 제공되는
    악성 파일 검사 장치.
  11. 제 1 항에 있어서,
    상기 악성 판단부는,
    상기 정상 주소 범위 정보를 벗어난 실행 주소의 명령어의 실행 직전에 실행된 명령어의 실행 주소를 저장하는 것을 특징으로 하는
    악성 파일 검사 장치.
  12. 비실행 파일에 대응하는 프로그램의 구동 시 실행되는 명령어의 실행 주소를 획득하는 단계와,
    상기 프로그램의 구동에 따른 정상 주소 범위 정보를 저장하는 단계와,
    상기 획득된 실행 주소가 상기 정상 주소 범위 정보를 벗어나는 경우 상기 비실행 파일의 악성 여부를 판단하는 단계를 포함하는
    악성 파일 검사 방법.
  13. 제 12 항에 있어서,
    상기 비실행 파일의 악성 여부를 판단하는 단계는,
    상기 실행 주소가 정상 주소 범위 정보를 벗어나는 경우 상기 실행 주소가 지시하는 메모리 영역이 실행 속성인지의 여부를 판단하는 단계와,
    상기 판단 결과에 의거하여 상기 비실행 파일에 대한 악성 여부를 판단하는 단계를 포함하는
    악성 파일 검사 방법.
  14. 제 13 항에 있어서,
    상기 비실행 파일에 대한 악성 여부를 판단하는 단계는,
    상기 실행 주소가 지시하는 메모리 영역이 상기 실행 속성이 아닌 경우 상기 실행 주소가 지시하는 메모리 영역에 저장된 코드의 실행에 따른 비정상적인 이벤트 발생 여부를 체크하는 단계를 포함하되,
    상기 비정상적인 이벤트가 발생되는 경우 상기 비실행 파일을 악성으로 판단하는
    악성 파일 검사 방법.
  15. 제 14 항에 있어서,
    상기 비실행 파일에 대한 악성 여부를 판단하는 단계는,
    상기 비정상적인 이벤트가 발생되지 않을 경우 상기 실행 주소의 다음 실행주소로부터 기 설정된 스텝까지의 실행 주소가 상기 정상 주소 범위 정보를 벗어난 상기 메모리 영역을 지시하는지를 체크하는 단계와,
    상기 기 설정된 스텝까지의 실행 주소가 상기 정상 주소 범위 정보를 벗어난 메모리 영역을 지시하는 경우 상기 비실행 파일을 악성으로 판단하는 단계를 포함하는
    악성 파일 검사 방법
  16. 제 12 항에 있어서,
    상기 비실행 파일의 파일 형식을 판단하는 단계를 더 포함하고,
    상기 판단된 파일 형식에 기초하여 상기 비실행 파일에 대응하는 프로그램이 구동되는
    악성 파일 검사 방법.
  17. 제 12 항에 있어서,
    상기 정상 주소 범위 정보를 벗어나는 실행 주소가 지시하는 메모리 영역 내 영역 내 코드를 추출하는 단계를 더 포함하는
    악성 파일 검사 방법.
  18. 제 12 항에 있어서,
    상기 정상 주소 범위 정보를 벗어나는 실행 주소와 관련된 명령어를 포함하는 모듈과 취약성 정보와의 비교를 통해 취약성 발생 원인을 분석하는 단계를 더 포함하는
    악성 파일 검사 방법.
  19. 제 12 항에 있어서,
    상기 정상 주소 범위 정보는 상기 프로그램의 구동에 따라 로드되는 모듈의 시작 주소와 끝 주소를 포함하는
    악성 파일 검사 방법.
  20. 제 12 항에 있어서,
    상기 실행 주소는 중앙 처리 유닛의 EIP 레지스터로부터 제공되는
    악성 파일 검사 방법.
  21. 제 12 항에 있어서,
    상기 비실행 파일의 악성 여부를 판단하는 단계는,
    상기 실행되는 명령어의 종류에 기초하여 상기 실행 주소가 상기 정상 주소 범위에 속하는지를 판단하는
    악성 파일 검사 방법.
  22. 제 21 항에 있어서,
    상기 명령어가 구조화된 예외 처리(SEH)인 경우, 상기 구조화된 예외 처리의 체인 값이 상기 정상 주소 범위 정보에 속하는지를 판단하는
    악성 파일 검사 방법.
  23. 제 22 항에 있어서,
    상기 명령어가 리턴(return), 콜(call) 또는 점프(jump)인 경우, 한 스텝을 진행하여 상기 명령어가 지시하는 상기 실행 주소가 상기 정상 주소 범위 정보에 속하는지를 판단하는
    악성 파일 검사 방법.
  24. 제 17 항에 있어서,
    상기 코드는 악성 쉘 코드(shell code)인
    악성 파일 검사 방법.
  25. 제 12 항에 있어서,
    상기 검사 방법은,
    상기 정상 주소 범위 정보를 벗어난 실행 주소의 명령어의 실행 직전에 실행된 명령어의 실행 주소를 저장하는 단계를 더 포함하는
    악성 파일 검사 방법.
  26. 제 12 항 내지 제 25 항 중 어느 한 항에 기재된 방법에 따른 각각의 단계를 수행하는 명령어를 포함하는 프로그램이 기록된 컴퓨터 판독가능 기록매체.
PCT/KR2013/003934 2012-05-11 2013-05-07 악성 파일 검사 장치 및 방법 WO2013168951A1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2012-0050155 2012-05-11
KR1020120050155A KR101212553B1 (ko) 2012-05-11 2012-05-11 악성 파일 검사 장치 및 방법

Publications (1)

Publication Number Publication Date
WO2013168951A1 true WO2013168951A1 (ko) 2013-11-14

Family

ID=47907723

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2013/003934 WO2013168951A1 (ko) 2012-05-11 2013-05-07 악성 파일 검사 장치 및 방법

Country Status (4)

Country Link
US (1) US8763128B2 (ko)
JP (1) JP5265061B1 (ko)
KR (1) KR101212553B1 (ko)
WO (1) WO2013168951A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9734333B2 (en) * 2012-04-17 2017-08-15 Heat Software Usa Inc. Information security techniques including detection, interdiction and/or mitigation of memory injection attacks
US9047293B2 (en) * 2012-07-25 2015-06-02 Aviv Grafi Computer file format conversion for neutralization of attacks
US9628507B2 (en) * 2013-09-30 2017-04-18 Fireeye, Inc. Advanced persistent threat (APT) detection center
CN103607388B (zh) * 2013-11-18 2016-09-21 浪潮(北京)电子信息产业有限公司 一种apt威胁预测方法及***
EP3087527B1 (en) * 2013-12-27 2019-08-07 McAfee, LLC System and method of detecting malicious multimedia files
KR101624326B1 (ko) 2014-06-24 2016-05-26 주식회사 안랩 악성 파일 진단 시스템 및 악성 파일 진단 방법
WO2015200510A1 (en) * 2014-06-24 2015-12-30 Virsec Systems, Inc. Automated code lockdown to reduce attach surface for software
KR101670456B1 (ko) * 2015-03-20 2016-10-28 소프트캠프(주) 문서 보안시스템 및 문서 보안방법
CN106919811B (zh) * 2015-12-24 2020-08-18 阿里巴巴集团控股有限公司 文件检测方法和装置
US9928363B2 (en) 2016-02-26 2018-03-27 Cylance Inc. Isolating data for analysis to avoid malicious attacks
US10546117B1 (en) * 2016-11-15 2020-01-28 Symantec Corporation Systems and methods for managing security programs
US9858424B1 (en) 2017-01-05 2018-01-02 Votiro Cybersec Ltd. System and method for protecting systems from active content
US10331890B2 (en) 2017-03-20 2019-06-25 Votiro Cybersec Ltd. Disarming malware in protected content
US10015194B1 (en) 2017-01-05 2018-07-03 Votiro Cybersec Ltd. System and method for protecting systems from malicious attacks
US10664599B2 (en) 2017-05-01 2020-05-26 International Business Machines Corporation Portable executable and non-portable executable boot file security
KR102040080B1 (ko) * 2018-02-22 2019-11-04 주식회사 알파비트 자바스크립트 자기보호 장치 및 그 방법
US12026269B2 (en) 2021-09-23 2024-07-02 At&T Intellectual Property I, L.P. Image processing device security

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070029540A (ko) * 2005-09-10 2007-03-14 배기봉 특수 설계된 전자 mark 의 파일 삽입 및 파일 기본 속성기반으로 하는 신종 악성코드 탐지/제거 기능 및 패치 관리기능, 조기 경보 기능을 제공하는 시스템 종합 보안솔루션 구현 기법
KR20080043201A (ko) * 2006-11-13 2008-05-16 한국전자통신연구원 악성 코드가 숨겨진 파일 탐지 장치 및 방법
KR100945247B1 (ko) * 2007-10-04 2010-03-03 한국전자통신연구원 가상 환경을 이용한 비실행 파일 내의 악성 코드 분석 방법및 장치
KR100992434B1 (ko) * 2008-07-07 2010-11-05 주식회사 안철수연구소 확장자를 위장한 파일을 탐지하는 방법 및 그 장치

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3710671B2 (ja) * 2000-03-14 2005-10-26 シャープ株式会社 1チップマイクロコンピュータ及びそれを用いたicカード、並びに1チップマイクロコンピュータのアクセス制御方法
CA2363795A1 (en) * 2001-11-26 2003-05-26 Cloakware Corporation Computer system protection by communication diversity
US7752459B2 (en) * 2001-12-06 2010-07-06 Novell, Inc. Pointguard: method and system for protecting programs against pointer corruption attacks
US7793346B1 (en) * 2003-01-17 2010-09-07 Mcafee, Inc. System, method, and computer program product for preventing trojan communication
JP2005032182A (ja) * 2003-07-11 2005-02-03 Sony Corp プログラム、攻撃コード抽出装置およびその方法
US7716495B2 (en) * 2003-12-31 2010-05-11 Microsoft Corporation Protection against runtime function attacks
US7437759B1 (en) * 2004-02-17 2008-10-14 Symantec Corporation Kernel mode overflow attack prevention system and method
KR100586500B1 (ko) * 2004-03-18 2006-06-07 학교법인고려중앙학원 버퍼 오버플로우 공격들을 감지하고 복구하는 방법 및 그장치
US7971255B1 (en) * 2004-07-15 2011-06-28 The Trustees Of Columbia University In The City Of New York Detecting and preventing malcode execution
US7698744B2 (en) * 2004-12-03 2010-04-13 Whitecell Software Inc. Secure system for allowing the execution of authorized computer program code
US7540026B1 (en) * 2005-01-24 2009-05-26 Symantec Corporation No-execute processor feature global disabling prevention system and method
US7562391B1 (en) * 2005-04-18 2009-07-14 Symantec Corporation Reducing false positive indications of buffer overflow attacks
US8127144B2 (en) * 2005-10-12 2012-02-28 Panasonic Corporation Program loader operable to verify if load-destination information has been tampered with, processor including the program loader, data processing device including the processor, promgram loading method, and integrated circuit
US9055093B2 (en) * 2005-10-21 2015-06-09 Kevin R. Borders Method, system and computer program product for detecting at least one of security threats and undesirable computer files
JP4844102B2 (ja) * 2005-11-30 2011-12-28 富士ゼロックス株式会社 サブプログラム及びそのサブプログラムを実行する情報処理装置
US7856538B2 (en) * 2005-12-12 2010-12-21 Systex, Inc. Methods, systems and computer readable medium for detecting memory overflow conditions
US20080028462A1 (en) * 2006-07-26 2008-01-31 Michael Burtscher System and method for loading and analyzing files
US20080148399A1 (en) * 2006-10-18 2008-06-19 Microsoft Corporation Protection against stack buffer overrun exploitation
US7950057B1 (en) * 2006-12-21 2011-05-24 Symantec Corporation Driver load manager and method
US8141163B2 (en) * 2007-07-31 2012-03-20 Vmware, Inc. Malicious code detection
KR100991807B1 (ko) 2008-05-20 2010-11-04 주식회사 웰비아닷컴 마이크로소프트 윈도우 운영체제를 사용하는 컴퓨터시스템에서의 악성코드 탐지 및 처리 시스템 및 방법
US8621626B2 (en) * 2009-05-01 2013-12-31 Mcafee, Inc. Detection of code execution exploits
EP2256659A1 (en) * 2009-05-27 2010-12-01 NTT DoCoMo, Inc. Method and apparatus for preventing modification of a program execution flow
EP2262259A1 (en) * 2009-06-08 2010-12-15 Nagravision S.A. Method for monitoring execution of data processing program instructions in a security module
US20110191848A1 (en) * 2010-02-03 2011-08-04 Microsoft Corporation Preventing malicious just-in-time spraying attacks
US20120096554A1 (en) * 2010-10-19 2012-04-19 Lavasoft Ab Malware identification
US8533835B2 (en) * 2011-12-14 2013-09-10 Mcafee, Inc. Method and system for rapid signature search over encrypted content
JP4927231B1 (ja) * 2011-12-22 2012-05-09 株式会社フォティーンフォティ技術研究所 プログラム、情報機器、及び不正アクセス検出方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070029540A (ko) * 2005-09-10 2007-03-14 배기봉 특수 설계된 전자 mark 의 파일 삽입 및 파일 기본 속성기반으로 하는 신종 악성코드 탐지/제거 기능 및 패치 관리기능, 조기 경보 기능을 제공하는 시스템 종합 보안솔루션 구현 기법
KR20080043201A (ko) * 2006-11-13 2008-05-16 한국전자통신연구원 악성 코드가 숨겨진 파일 탐지 장치 및 방법
KR100945247B1 (ko) * 2007-10-04 2010-03-03 한국전자통신연구원 가상 환경을 이용한 비실행 파일 내의 악성 코드 분석 방법및 장치
KR100992434B1 (ko) * 2008-07-07 2010-11-05 주식회사 안철수연구소 확장자를 위장한 파일을 탐지하는 방법 및 그 장치

Also Published As

Publication number Publication date
US20130305366A1 (en) 2013-11-14
KR101212553B1 (ko) 2012-12-14
JP5265061B1 (ja) 2013-08-14
JP2013239149A (ja) 2013-11-28
US8763128B2 (en) 2014-06-24

Similar Documents

Publication Publication Date Title
WO2013168951A1 (ko) 악성 파일 검사 장치 및 방법
WO2013168913A1 (ko) 비실행 파일 검사 장치 및 방법
WO2019245107A1 (ko) 악성코드 탐지 장치 및 방법
RU2531861C1 (ru) Система и способ оценки вредоносности кода, исполняемого в адресном пространстве доверенного процесса
US8955118B2 (en) Detecting malicious software
CN109583202B (zh) 用于检测进程的地址空间中的恶意代码的***和方法
US7934261B1 (en) On-demand cleanup system
WO2019160195A1 (ko) 파일 내 포함된 악성 위협 탐지 장치 및 방법, 그 기록매체
US11288362B2 (en) System and method for creating antivirus records for antivirus applications
US20080010538A1 (en) Detecting suspicious embedded malicious content in benign file formats
WO2014042344A1 (ko) 디버그 이벤트를 이용한 악성 쉘 코드 탐지 장치 및 방법
US10262139B2 (en) System and method for detection and prevention of data breach and ransomware attacks
JP6000465B2 (ja) プロセス検査装置、プロセス検査プログラムおよびプロセス検査方法
US9959406B2 (en) System and method for zero-day privilege escalation malware detection
KR20100005518A (ko) 확장자를 위장한 파일을 탐지하는 방법 및 그 장치
WO2014168406A1 (ko) 메모리 보호기능 우회 공격 진단 장치 및 방법
WO2014200201A1 (ko) 시스템 보호를 위한 파일 보안용 관리장치와 관리방법
KR101908517B1 (ko) 스트링과 코드 시그니처를 이용한 악성코드 탐지 및 패커 해제 방법
WO2018043885A1 (ko) 악성코드탐지시스템 및 악성코드 탐지 방법
RU2665910C1 (ru) Система и способ обнаружения вредоносного кода в адресном пространстве процессов
CN115544503A (zh) 一种无文件攻击检测方法、装置、设备及存储介质
US10061924B1 (en) Detecting malicious code based on deviations in executable image import resolutions and load patterns
CN116738427B (zh) 终端安全防护方法、装置、设备及存储介质
EP3522058B1 (en) System and method of creating antivirus records

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: 13787004

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13787004

Country of ref document: EP

Kind code of ref document: A1