KR101583306B1 - Analysis method and analysis apparatus of executable file applied virtualization obfuscation - Google Patents
Analysis method and analysis apparatus of executable file applied virtualization obfuscation Download PDFInfo
- Publication number
- KR101583306B1 KR101583306B1 KR1020140006644A KR20140006644A KR101583306B1 KR 101583306 B1 KR101583306 B1 KR 101583306B1 KR 1020140006644 A KR1020140006644 A KR 1020140006644A KR 20140006644 A KR20140006644 A KR 20140006644A KR 101583306 B1 KR101583306 B1 KR 101583306B1
- Authority
- KR
- South Korea
- Prior art keywords
- virtualization
- instruction
- executable file
- code
- handler
- Prior art date
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 55
- 238000000034 method Methods 0.000 claims abstract description 108
- 238000010586 diagram Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 9
- 239000000284 extract Substances 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000010921 in-depth analysis Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 238000010223 real-time analysis Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명은 가상화 난독화 기법이 적용된 실행 파일의 분석을 도울 수 있도록 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 추출하고 추출된 구성 요소에 대한 정보를 제공할 수 있도록 하는 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치에 관한 것이다.
본 발명을 이용함으로써, 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 파악할 수 있고 실행 파일에서 분석 대상을 용이하게 알 수 있고 실행 파일의 실제 제어 흐름을 알 수 있도록 한다. The present invention relates to a virtual obfuscation method for extracting components of a virtualization obfuscation technique applied to an executable file to help analyze an executable file to which a virtualization obfuscation technique is applied and applying a virtualization obfuscation technique for providing information on the extracted components And an analyzing method and an analyzing apparatus of an executable file.
By using the present invention, components of the virtualization obfuscation technique applied to the executable file can be grasped, the analysis object can be easily recognized in the executable file, and the actual control flow of the executable file can be known.
Description
본 발명은 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치에 관한 것으로서, 구체적으로는 가상화 난독화 기법이 적용된 실행 파일의 분석을 도울 수 있도록 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 추출하고 추출된 구성 요소에 대한 정보를 제공할 수 있도록 하는, 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치에 관한 것이다. The present invention relates to an analysis method and an analysis apparatus for an executable file to which a virtualization obfuscation technique is applied. More particularly, the present invention relates to a virtualization obfuscation technique applied to an executable file to help analyze an execution file to which a virtualization obfuscation technique is applied The present invention relates to an analysis method and apparatus for an executable file to which a virtualization obfuscation technique is applied, in which information about extracted and extracted components can be provided.
난독화(obfuscation) 기법은 프로그램 본래의 기능성을 유지하면서도 프로그램 내부의 구조를 변환시킴으로써 역공학을 어렵게 하기 위해서 사용되는 기법이다. 난독화 기법 중 하나인 가상화 난독화(virtualization obfuscation) 기법은 프로그램 중 보호하고자 하는 코드 영역을 다른 종류의 기계어로 변환(가상화 코드)시킴으로써 변환된 기계어에 대한 분석을 어렵게 만드는 기법이다. The obfuscation technique is a technique used to make reverse engineering difficult by transforming the structure inside the program while maintaining the original functionality of the program. One of the obfuscation techniques, virtualization obfuscation, is a technique that makes it difficult to analyze the translated machine language by converting the code area to be protected in the program into another kind of machine language (virtualization code).
가상화 난독화 기법이 적용된 프로그램의 가상화 코드를 해석하고 처리하기 위해서 소프트웨어적으로 구성된 가상 프로세서(virtual processor)가 이용된다. 가상 프로세서가 소프트웨어적으로 가상화 코드를 해석하고 대응하는 기능을 실제 프로세서에서 직접 수행하도록 구성되고 가상화 코드는 원본 코드로 복원될 필요가 없다. 이에 따라 가상화 난독화 기법을 분석하는 문제는 가상 프로세서를 분석하는 문제와 동일시된다. A virtual processor, which is composed of software, is used to interpret and process the virtualization code of the program to which the virtualization obfuscation technique is applied. The virtual processor is configured to interpret the virtualization code in software and perform the corresponding function directly on the actual processor, and the virtualization code need not be restored to the original code. Accordingly, the problem of analyzing the virtual obfuscation technique is identified with the problem of analyzing the virtual processor.
이러한 가상화 난독화 기법은 프로그램의 지적재산권을 보호하기 위해 설계되었다. 가상화 난독화 기법에 의해서 생성된 코드의 양이 원래의 코드의 양보다 많고 복잡한 내부 구조로 인해서 가상화 난독화 기법은 지적재산권 보호를 위한 적절한 수단으로 판단되고 있다. This virtual obfuscation technique is designed to protect the intellectual property of the program. Because the amount of code generated by the virtualization obfuscation technique is larger than the amount of original code and the complexity of the internal structure, the virtualization obfuscation technique is regarded as a suitable means for protection of intellectual property rights.
일반적으로 가상화 난독화 기법은 상용 소프트웨어 툴(Tool)을 이용하여 프로그램의 실행 파일에 적용된다. 가상화 난독화 기법을 적용하기 위한 상용 소프트웨어 툴은 Themida, Code Virtualizer, VMProtect 등이 있다. 이러한 상용 툴의 가상화 난독화 기법은 가상 프로세서를 포함하는 그 가상화 구조가 공개되지 않고 가상화 구조에서의 각 구성 요소별로 난독화 기법이 적용되어 분석을 더욱 어렵게 한다.In general, virtualization obfuscation techniques are applied to program executables using commercial software tools. Commercial software tools for applying virtualization obfuscation techniques include Themida, Code Virtualizer, and VMProtect. This commercial tool virtualization obfuscation technique does not disclose its virtualization structure including a virtual processor, and obfuscation technique is applied to each component in the virtualization structure to make analysis more difficult.
한편, 가상화 난독화 기법을 적용할 수 있는 상용 소프트웨어 툴은 누구나 구입하여 이용할 수 있는 툴이기에 악용될 소지가 있다. 특히 이러한 상용 소프트웨어 툴이 악성코드의 보호에 이용되어 진다면 악성 코드의 분석이 불가능하거나 일반적인 분석 시간에 비해 수백 배까지의 시간이 더 필요할 것으로 예상된다. On the other hand, commercially available software tools that can apply virtualization obfuscation techniques can be exploited because they are tools that can be purchased and used by anyone. Especially if these commercial software tools are used to protect malicious code, malicious code can not be analyzed or expected to be several hundred times longer than usual analysis time.
예를 들어, 프로그램을 분석하기 위해서 프로그램을 로딩하여 프로그램의 수행 순서를 검증할 수 있는 디버거(debugger)가 알려져 있다. 가상화 구조가 공개되지 않은 상태에서 이 디버거를 활용하여 가상화 난독화 기법이 적용된 가상화 코드들이 악성 코드 인지나 어떠한 기능을 수행하는 지를 식별하는 것은 사실상 불가능하다. 더욱이 디버거가 프로그램 카운터(PC) 등을 이용하여 여러 프로그램 코드 사이를 이동하기에 복잡한 구조로 얽혀 있는 가상화 코드가 악성 코드인지를 알기는 더더욱 어렵다. For example, a debugger is known that can load a program to analyze the program and verify the execution order of the program. It is virtually impossible to identify the virtualization code that uses virtualization obfuscation techniques using this debugger without knowing the virtualization structure is malicious code or what function it is performing. Furthermore, it is even more difficult for a debugger to move between various program codes using a program counter (PC) or the like, and to know whether the virtualization code entangled with the complicated structure is malicious code.
이와 같이 악성 코드에 가상화 난독화 기법을 적용하는 것은 쉬운 반면에 역난독화를 하는 것은 어렵기에 악성 코드에 대응하기가 점점 더 어려워지고 있는 실정이다. Thus, it is easy to apply the virtualization obfuscation technique to malicious code, but it is difficult to reverse obfuscate, and it is increasingly difficult to cope with malicious code.
이상으로 살펴본 바와 같이, 가상화 난독화 기법이 적용된 실행 파일로부터 가상화 난독화 기법에 적용된 가상화 구조를 추출하고 실행 파일의 분석이 가능하도록 하는, 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치가 필요하다.As described above, an analysis method and an analysis apparatus of an executable file that employs a virtualization obfuscation technique that extracts a virtualization structure applied to a virtualization obfuscation technique from an executable file to which the virtualization obfuscation technique is applied and enables analysis of the executable file need.
본 발명은, 상술한 문제점을 해결하기 위해서 안출한 것으로서, 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 파악할 수 있도록 하는 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치를 제공하는 데 그 목적이 있다. Disclosure of Invention Technical Problem [8] The present invention has been made to solve the above-mentioned problems, and it is an object of the present invention to provide an analysis method and analysis apparatus of an executable file to which a virtualization obfuscation technique for identifying components of a virtualization obfuscation technique applied to an executable file is applied. There is a purpose.
또한 본 발명은 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 식별하고 식별된 구성 요소에 관련된 로그 데이터를 제공할 수 있도록 하는 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치를 제공하는 데 그 목적이 있다. The present invention also provides an analysis method and apparatus for an executable file to which a virtualization obfuscation technique is applied to identify components of a virtualization obfuscation technique applied to an executable file and to provide log data related to the identified components It has its purpose.
또한 본 발명은 동적 트레이싱 기법을 이용하여 가상화 난독화 기법이 적용된 실행 파일의 핸들러 코드 간 제어 흐름을 알 수 있도록 하는 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치를 제공하는 데 그 목적이 있다. It is another object of the present invention to provide an analysis method and an analysis apparatus for an execution file to which a virtualization obfuscation technique is applied to enable a control flow between handler codes of an executable file to which a virtualization obfuscation technique is applied by using a dynamic tracing technique have.
또한 본 발명은 가상화 난독화 기법을 적용하는 상용 소프트웨어 툴에 의해서 생성된 실행 파일에 대하여 분석 가능하도록 하는 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치를 제공하는 데 그 목적이 있다. Another object of the present invention is to provide an analysis method and an analysis apparatus for an executable file to which a virtualization obfuscation technique for analyzing an executable file generated by a commercial software tool applying a virtualization obfuscation technique is applied.
본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다. It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are not restrictive of the invention, unless further departing from the spirit and scope of the invention as defined by the appended claims. It will be possible.
상기와 같은 목적을 달성하기 위한, 가상화 난독화 기법이 적용된 실행 파일의 분석 방법은 (b) 실행 파일에 기초하여 생성된 제 1 로그 데이터로부터 가상화 난독화 기법에 적용된 구성 요소를 식별하는 단계 및 (c) 식별된 구성 요소와 관련된 정보를 인식할 수 있는 제 2 로그 데이터를 생성하는 단계를 포함한다. According to another aspect of the present invention, there is provided a method of analyzing an execution file to which a virtualization obfuscation technique is applied, the method comprising: (b) identifying a component applied to a virtualization obfuscation technique from first log data generated based on an execution file; and c) generating second log data capable of recognizing information associated with the identified component.
또한 가상화 난독화 기법에 적용된 구성 요소는 실행 파일에 포함되는 가상화 명령어에 대응하는 핸들러 코드를 수행시키기 위한 디스패치 루프를 포함하고, 가상화 난독화 기법이 적용된 실행 파일의 분석 방법의 단계 (b)는, (b-1) 디스패치 루프의 코드 영역을 식별하는 단계를 포함한다. In addition, the component applied to the virtualization obfuscation method includes a dispatch loop for executing handler code corresponding to the virtualization instruction included in the executable file, and step (b) of the method for analyzing the execution file to which the virtualization obfuscation technique is applied, (b-1) identifying a code region of the dispatch loop.
또한 가상화 난독화 기법에 적용된 구성 요소는 디스패치 루프에 의해서 수행되는 복수의 핸들러 코드를 더 포함하고, 가상화 난독화 기법이 적용된 실행 파일의 분석 방법의 단계 (b)는, (b-2) 단계 (b-1)에서 식별된 디스패치 루프의 코드 영역의 명령어를 이용하여 복수의 핸들러 코드의 영역을 식별하는 단계를 더 포함한다.In addition, the component applied to the virtualization obfuscation technique further includes a plurality of handler codes executed by the dispatch loop, and step (b) of the method of analyzing an executable file to which the virtualization obfuscation technique is applied includes steps (b-2) b-1) of the plurality of handler codes using instructions in the code area of the dispatch loop identified in step (b-1).
또한 실행 파일은 상용 가상화 난독화 툴인 더미다를 적용하여 생성된 실행 파일이고, 가상화 난독화 기법이 적용된 실행 파일의 분석 방법의 단계 (b-1)은 가상화 명령어에 관련된 제 1 명령어와 가상화 명령어에 대응하는 핸들러 코드를 호출하기 위한 제 2 명령어를 인식하는 단계 및 인식된 제 1 명령어와 제 2 명령어의 위치로부터 디스패치 루프의 시작 주소와 종료 주소를 결정하는 단계를 포함한다. In addition, step (b-1) of the analysis method of the executable file to which the virtualization obfuscation technique is applied corresponds to the first instruction related to the virtualization instruction and the virtualization instruction corresponding to the virtualization instruction Recognizing a second instruction to call the handler code to determine a start address and an end address of the dispatch loop from the location of the recognized first instruction and the second instruction.
또한 가상화 난독화 기법이 적용된 실행 파일의 분석 방법은 상기 단계 (b) 이전에, (a) 동적 에뮬레이터(emulator)에 실행 파일을 로딩하고 동적 에뮬레이터에서 실행된 모든 명령어를 포함하고 실행 순서에 따라 모든 명령어를 표현할 수 있는 제 1 로그 데이터를 생성하고 기록하는 단계를 더 포함하고, 단계 (b)에서의 제 1 로그 데이터는 단계 (a)에서 생성되고 기록된 제 1 로그 데이터이다. The method of analyzing an execution file to which a virtualization obfuscation technique is applied may further include: (a) loading an executable file into a dynamic emulator, including all instructions executed in the dynamic emulator, Further comprising generating and recording first log data capable of expressing an instruction, wherein the first log data in step (b) is the first log data generated and recorded in step (a).
또한 단계 (c)에서 생성된 제 2 로그 데이터는 디스패치 루프의 시작 주소와 종료 주소를 나타내는 정보, 복수의 핸들러 코드 각각의 실행 회수를 나타내는 정보 및 복수의 핸들러 코드 간의 실행 순서를 나타내는 정보를 포함한다. The second log data generated in the step (c) includes information indicating a start address and an end address of the dispatch loop, information indicating the execution count of each of the plurality of handler codes, and information indicating execution order between the plurality of handler codes .
또한 단계 (c)에서 생성된 제 2 로그 데이터는 핸들러 코드의 시작 주소, 핸들러 코드에 포함된 명령어와 명령어에 포함된 피연산자 및 핸들러 코드의 실행 순서를 나타내는 정보를 더 포함한다. The second log data generated in step (c) further includes information indicating a start address of the handler code, an instruction contained in the handler code, an operand included in the instruction, and an execution order of the handler code.
또한 상기와 같은 목적을 달성하기 위한, 가상화 난독화 기법이 적용된 실행 파일의 분석 장치는 실행 파일에 기초하여 생성된 제 1 로그 데이터로부터 가상화 난독화 기법에 적용된 구성 요소를 식별하는 구성 요소 식별 모듈 및 식별된 구성 요소와 관련된 정보를 인식할 수 있는 제 2 로그 데이터를 생성하는 로그 생성 모듈을 포함한다. According to another aspect of the present invention, there is provided an apparatus for analyzing an execution file to which a virtualization obfuscation technique is applied, the apparatus comprising: a component identification module for identifying a component applied to a virtualization obfuscation technique from first log data generated based on an execution file; And a log generation module that generates second log data that can recognize information associated with the identified component.
또한 가상화 난독화 기법에 적용된 구성 요소는 실행 파일에 포함되는 가상화 명령어에 대응하는 핸들러 코드를 수행시키기 위한 디스패치 루프를 포함하고, 구성 요소 식별 모듈은 디스패치 루프의 코드 영역을 식별한다.Also, the components applied to the virtualization obfuscation technique include a dispatch loop for executing the handler code corresponding to the virtualization instruction included in the executable file, and the component identification module identifies the code area of the dispatch loop.
또한 가상화 난독화 기법에 적용된 구성 요소는 디스패치 루프에 의해서 수행되는 복수의 핸들러 코드를 더 포함하고, 구성 요소 식별 모듈은 식별된 디스패치 루프의 코드 영역의 명령어를 이용하여 복수의 핸들러 코드의 영역을 더 식별한다.In addition, the components applied to the virtualization obfuscation technique further include a plurality of handler codes executed by the dispatch loop, and the component identification module further uses the instructions of the code area of the identified dispatch loop to further define the area of the plurality of handler codes .
또한 실행 파일은 상용 가상화 난독화 툴인 더미다를 적용하여 생성된 실행 파일이고, 구성 요소 식별 모듈은, 가상화 명령어에 관련된 제 1 명령어와 가상화 명령어에 대응하는 핸들러 코드를 호출하기 위한 제 2 명령어를 인식하고 인식된 제 1 명령어와 제 2 명령어의 위치로부터 디스패치 루프의 시작 주소와 종료 주소를 결정하여, 디스패치 루프의 코드 영역을 식별한다.Further, the executable file is an executable file generated by applying dummy to the commercial virtualization obfuscation tool. The component identification module recognizes a first instruction related to the virtualization instruction and a second instruction for calling the handler code corresponding to the virtualization instruction The start and end addresses of the dispatch loop are determined from the positions of the recognized first and second instructions to identify the code region of the dispatch loop.
또한 가상화 난독화 기법이 적용된 실행 파일의 분석 장치는 실행 파일을 로딩하고 동적으로 실행된 모든 명령어를 포함하여 실행 순서에 따라 모든 명령어를 표현할 수 있는 제 1 로그 데이터를 생성하고 기록하는 에뮬레이션 모듈을 더 포함하고, 구성 요소 식별 모듈은 에뮬레이션 모듈을 통해 생성되고 기록된 제 1 로그 데이터로부터 가상화 난독화 기법에 적용된 구성 요소를 식별한다.Also, the analysis apparatus of the executable file to which the virtualization obfuscation technique is applied includes an emulation module for generating and recording first log data that can load all the executable files and include all the commands executed dynamically, And the component identification module identifies components applied to the virtualization obfuscation technique from the first log data generated and recorded through the emulation module.
상기와 같은 본 발명에 따른 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치는 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 파악할 수 있도록 하는 효과가 있다. The method and apparatus for analyzing an executable file to which the virtualization obfuscation technique according to the present invention is applied can be understood as an element of the virtual obfuscation technique applied to an executable file.
또한 상기와 같은 본 발명에 따른 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치는 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 식별하고 식별된 구성 요소에 관련된 로그 데이터를 제공할 수 있도록 하고 이에 따라 가상화 코드를 분석할 분석가에게 분석 대상을 용이하게 알 수 있도록 하는 효과가 있다. In addition, the method and apparatus for analyzing an executable file to which the virtualization obfuscation technique according to the present invention is applied can identify the components of the virtualization obfuscation technique applied to the executable file and provide log data related to the identified component So that the analyst who analyzes the virtualization code can easily understand the analysis target.
또한 상기와 같은 본 발명에 따른 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치는 동적 트레이싱 기법을 이용하여 가상화 난독화 기법이 적용된 실행 파일의 핸들러 코드 간 실제 제어 흐름을 알 수 있도록 하는 효과가 있다. Also, the method and apparatus for analysis and analysis of an executable file to which the virtualization obfuscation technique according to the present invention is applied may be configured to recognize the actual control flow between handler codes of an executable file to which the virtualization obfuscation technique is applied by using a dynamic tracing technique .
또한 상기와 같은 본 발명에 따른 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치는 가상화 난독화 기법을 적용하는 상용 소프트웨어 툴에 의해서 생성된 실행 파일에 대하여 분석 가능하도록 하는 효과가 있다. In addition, the method and apparatus for analyzing an executable file to which the virtualization obfuscation technique according to the present invention is applied can analyze an executable file generated by a commercial software tool applying the virtualization obfuscation technique.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.The effects obtained by the present invention are not limited to the above-mentioned effects, and other effects not mentioned can be clearly understood by those skilled in the art from the following description will be.
도 1은 가상화 난독화 기법이 적용된 실행 파일 분석 장치의 예시적인 하드웨어 블록도를 도시한 도면이다.
도 2는 가상화 난독화 기법의 구성 요소들을 도시한 도면이다.
도 3은 가상화 난독화 기법이 적용된 실행 파일 분석 방법의 예시적인 제어 흐름을 도시한 도면이다.
도 4는 상용 소프트웨어 툴인 더미다로 생성된 가상화 난독화 기법의 가상화 구조를 도시한 도면이다.
도 5는 본 발명에 따라 생성된 로그 데이터의 예시적인 정보를 도시한 도면이다.
도 6은 본 발명에 따라 생성된 로그 데이터의 또 다른 예시적인 정보를 도시한 도면이다.
도 7는 가상화 난독화 기법이 적용된 실행 파일의 분석을 위한 예시적인 기능 블록도를 도시한 도면이다. 1 is a diagram illustrating an exemplary hardware block diagram of an executable file analysis apparatus to which a virtual obfuscation technique is applied.
2 is a diagram illustrating the components of the virtualization obfuscation technique.
3 is a diagram illustrating an exemplary control flow of an executable file analysis method to which a virtual obfuscation technique is applied.
4 is a diagram illustrating a virtualization structure of a virtualization obfuscation technique generated by a commercial software tool dummy.
5 is a diagram showing exemplary information of log data generated according to the present invention.
6 is a diagram showing still another exemplary information of log data generated according to the present invention.
7 is a block diagram illustrating an exemplary functional block for analysis of an executable file to which a virtual obfuscation technique is applied.
상술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술 되어 있는 상세한 설명을 통하여 더욱 명확해 질 것이며, 그에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시 예를 상세히 설명하기로 한다.
The above and other objects, features and advantages of the present invention will become more apparent from the following detailed description of the present invention when taken in conjunction with the accompanying drawings, in which: It can be easily carried out. In the following description, well-known functions or constructions are not described in detail since they would obscure the invention in unnecessary detail. Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings.
도 1은 가상화 난독화 기법이 적용된 실행 파일 분석 장치(100)의 예시적인 하드웨어 블록도를 도시한 도면이다. 1 illustrates an exemplary hardware block diagram of an executable
도 1에 따르면 분석 장치(100)는 입력 인터페이스(101), 출력 인터페이스(103), 메모리(105), 대용량 저장 매체(107), 시스템 버스/제어 버스(109) 및 프로세서(111)를 포함한다. 이 중 일부의 블록은 분석 장치(100)의 변형 예에 따라 생략될 수 있다. 또는 도 1에 개시되지 않은 블록이 이 하드웨어 블록도에 더 포함될 수도 있다. 1, an
분석 장치(100)의 각 하드웨어 블록을 간단히 살펴보면, 입력 인터페이스(101)는 가상화 난독화 기법이 적용된 실행 파일을 분석할 사용자(분석가)로부터 사용자 입력을 수신할 수 있는 인터페이스이다. 입력 인터페이스(101)는 키보드, 마우스, 터치 패널 등으로부터의 사용자 입력을 수신하고 이를 프로세서(111)로 전달하여 분석 대상인 실행 파일을 선택하거나 실행 파일의 분석을 시작하거나 분석을 중단할 수 있도록 한다. The
출력 인터페이스(103)는 사용자 입력에 따른 처리 결과나 처리 과정의 결과를 출력할 수 있는 인터페이스이다. 출력 인터페이스(103)는 스피커나 디스플레이 등으로 출력될 데이터를 스피커나 디스플레이 등에 요구되는 데이터 포맷으로 변환하여 출력한다. 출력 인터페이스(103)는 예를 들어 가상화 난독화 기법이 적용된 실행 파일의 분석으로 생성된 로그 데이터를 출력할 수 있다. The
메모리(105)는 휘발성 메모리 및/또는 비휘발성 메모리를 포함한다. 메모리(105)는 각종 프로그램, 프로그램 모듈, 프로그램에서 이용되는 데이터를 임시로 저장하거나 영구히 저장할 수 있도록 구성된다. The
대용량 저장 매체(107)는 하디 디스크 및/또는 USB 메모리 등을 포함한다. 대용량 저장 매체(107)는 프로세서(111)상에서 수행되는 각종 프로그램들을 저장한다. The
예를 들어, 대용량 저장 매체(107)는 분석 대상으로서 가상화 난독화 기법이 적용된 하나 이상의 실행 파일 및 실행 파일을 분석하기 위한 분석 프로그램 파일을 저장한다. 이러한 파일들은 프로세서(111)에서 수행될 수 있다. 실행 파일과 분석 프로그램 파일은 입력 인터페이스(101)를 통해 메모리(105)에 로딩될 수 있고 프로세서(111)에서 수행될 수 있다. For example, the
시스템 버스/제어 버스(109)는 블록간 데이터를 송수신할 수 있도록 한다. 시스템 버스/제어 버스(109)는 예를 들어 병렬 버스, 시리얼 버스, GPIO(General Purpose Input Output)이거나 이러한 버스나 GPIO의 조합으로 구성될 수 있다. The system bus /
프로세서(111)는 명령어를 수행할 수 있는 하나 이상의 실행 유닛(Execution Unit)을 포함하여 프로그램에 포함된 명령어들을 수행할 수 있다. 프로세서(111)는 사용자 입력에 따라 대용량 저장 매체(107)에 저장된 파일을 메모리(105)에 로딩하고 로딩된 파일을 처리할 수 있도록 구성된다. The
여기서 가상화 난독화 기법이 적용된 실행 파일의 구조를 간단히 살펴보면, 실행 파일은 가상화 난독화 기법이 적용된 가상화 코드와 가상화 코드를 처리하기 위한 가상 프로세서를 포함한다. 가상화 코드와 가상 프로세서는 실행 파일의 모든 섹션(Section) 또는 섹터(Sector)에 적용될 수 있거나 실행 파일을 생성한 프로그래머의 선택에 따라 일부 섹션이나 섹터에 적용될 수 있다. Here is a brief description of the structure of the executable file with the virtualization obfuscation technique. The executable file includes virtualization code with virtualization obfuscation technique and virtual processor for processing virtualization code. The virtualization code and virtual processor can be applied to every section or sector of an executable file or to some sections or sectors depending on the programmer's choice of generating the executable file.
프로세서(111)는 실행 파일에 저장된 가상화 코드를 명령어로 실행 유닛에 로딩하여 직접 처리할 수 없다. 대신에 실행 파일에 저장되고 가상화 코드를 처리하기 위한 가상 프로세서가 가상화 코드를 프로세서(111)가 처리할 수 있는 명령어로 실시간 변환하여 가상화 코드에 대응하는 기능을 수행한다. 이에 따라 가상화 코드는 실행 파일의 수행 시에 원본 코드로 복원되지 않고 디버거 등을 통해서도 용이하게 가상화 코드나 가상 프로세서를 식별하거나 다수의 난독화 기법의 적용으로 가상화 코드에 따른 제어 흐름을 해석하기가 사실상 불가능하다. The
가상 프로세서와 가상화 코드는 가상화 난독화 기법을 적용하는 상용 소프트웨어 툴에 따라 다양한 형태와 구조를 취할 수 있다. Virtual processor and virtualization code can take many forms and structures depending on commercial software tools that apply virtualization obfuscation techniques.
도 2를 통해 대표적인 가상화 코드와 가상 프로세서의 구조를 살펴보면, 가상화 코드는 일련의 가상화 명령어로 구성된다. 그리고 가상화 코드는 실행 파일 상의 임의의 위치(주소) 영역에 저장되어 있다. 가상화 명령어는 1 바이트 또는 2 바이트로 구성되고 각각의 가상화 명령어는 특정 지정된 기능을 수행할 수 있다. Referring to FIG. 2, a typical virtualization code and a structure of a virtual processor are shown. The virtualization code includes a series of virtualization commands. The virtualization code is stored in an arbitrary location (address) area on the executable file. A virtualization instruction consists of one or two bytes, and each virtualization instruction can perform a specified function.
가상 프로세서는 가상화 코드의 가상화 명령어를 순차적으로 읽어 들이고 읽어 들인 가상화 명령어에 대응하는 기능을 하드웨어 블록도의 프로세서(111)상에 직접 수행할 수 있도록 구성된다. The virtual processor is configured to sequentially read the virtualization commands of the virtualization code and to directly execute the function corresponding to the read virtualization command on the
대표적으로 가상 프로세서는 디스패치(dispatch) 루프 코드, 핸들러 테이블, 복수의 핸들러 코드를 포함한다. 디스패치 루프 코드는 가상화 명령어를 하나씩 읽어 들이고 대응하는 핸들러 코드를 수행할 수 있도록 한다. 핸들러 테이블은 핸들러 코드의 시작 주소를 저장하고 있다. 핸들러 테이블의 특정 주소에 저장되어 있는 시작 주소를 통해 디스패치 루프 코드는 특정 핸들러 코드를 호출할 수 있도록 구성된다. 핸들러 코드는 가상화 명령어에 대응하는 기능을 수행하는 코드이다. 핸들러 코드는 프로세서(111)의 실행 유닛에서 수행되는 명령어들로 구성되고 프로세서(111)상에서 핸들러 코드를 수행함으로써 가상화 명령어에 대응하는 기능을 프로세서(111)가 수행한다. Typically, the virtual processor includes a dispatch loop code, a handler table, and a plurality of handler codes. The dispatch loop code reads the virtualization instructions one by one and allows you to execute the corresponding handler code. The handler table stores the start address of the handler code. Through the start address stored at a specific address in the handler table, the dispatch loop code is configured to call specific handler code. The handler code is a code that performs a function corresponding to a virtualization command. The handler code is composed of instructions executed in an execution unit of the
이와 같이 가상화 난독화 기법에 적용되는 구성 요소 들은 가상화 코드, 가상 프로세서의 디스패치 루프 코드, 핸들러 테이블 및 복수의 핸들러 코드를 포함한다. 이러한 구성 요소들은 가상화 난독화 기법을 적용한 상용 소프트웨어 툴의 대표적인 구성 요소들이고, 예를 들어 더미다(Themida v2.1.8)의 구성 요소들일 수 있다. 다른 상용 툴 역시 유사한 이름이나 형태로 구성된다. The components applied to the virtualization obfuscation technique include the virtualization code, the dispatch loop code of the virtual processor, the handler table, and a plurality of handler codes. These components are representative components of commercial software tools that employ virtualization obfuscation techniques, and may be components of, for example, Themida v2.1.8. Other commercial tools also have similar names or forms.
가상화 난독화 기법에 적용되는 구성 요소들은 실행 파일에 내장되고 실행 파일 내에 산재하며 점프(jump)나 부가적인 연산 적용으로 그 구성 요소를 용이하게 식별하거나 추출할 수 없어 문제가 발생한다. The components applied to the virtualization obfuscation technique are embedded in the executable file, scattered in the executable file, and problems arise because the components can not be easily identified or extracted by a jump or an additional operation.
이상과 같은 분석 장치(100)는 예를 들어 개인용 PC, 서버에 접속할 수 있는 터미널, 워크 스테이션 또는 복수의 터미널에 연결될 수 있는 분석 서버 등일 수 있다.
The analyzing
도 3은 가상화 난독화 기법이 적용된 실행 파일 분석 방법의 예시적인 제어 흐름을 도시한 도면이다. 도 3의 제어 흐름은 도 2의 예시적인 하드웨어 블록도의 분석 장치(100)상에서 수행될 수 있고 바람직하게는 대용량 저장 매체(107)에 저장된 분석 프로그램 등을 프로세서(111)가 로딩하여 수행함으로써 이루어질 수 있다. 본 발명에 따른 제어 흐름은 바람직하게 디버거와 같은 실시간 분석을 이용하지 않고 이미 생성된 로그 데이터를 활용하여 분석하는 정적 분석을 이용한다.3 is a diagram illustrating an exemplary control flow of an executable file analysis method to which a virtual obfuscation technique is applied. The control flow of FIG. 3 may be performed on the
먼저 단계 S101 이전에, 분석 장치(100)를 이용하는 사용자가 분석 프로그램 중 하나인 동적 에뮬레이터(emulator)를 입력 인터페이스(101)를 통해 선택함으로써 본 제어 흐름이 시작(S100)한다. First, before the step S101, the control flow starts (SlOO) by the user using the
이후 단계 S101에서, 분석 장치(100)는 동적 에뮬레이터에서 분석 대상 파일인 실행 파일을 입력 인터페이스(101)를 통한 사용자 입력으로 로딩한다. 그리고 분석 장치(100)는 동적 에뮬레이터를 이용하여 실행 파일을 실행시킨다. 이후 분석 장치(100)는 실행에 따른 모든 명령어를 포함하고 실행 순서에 따라 모든 명령어를 출력 인터페이스(103) 등을 통해 표현할 수 있는 로그 데이터(이하 '제 1 로그 데이터'라 한다)를 생성하고 메모리(105)나 대용량 저장 매체(107)에 기록한다. 이러한 제 1 로그 데이터는 프로세서(111)에서 수행되는 명령어와 명령어의 주소에 관련된 정보를 모두 포함하고 실행 파일의 수행에 따른 실행 순서에 따라 명령어들이 순차적으로 기록된 데이터이다. Thereafter, in step S101, the
동적 에뮬레이터는 예를 들어 리눅스 등에서 사용될 수 있고 동적 트레이싱(tracing)을 적용할 수 있도록 구성되고 바람직하게는 가상화 소프트웨어인 'QEMU'일 수 있다. The dynamic emulator can be used, for example, in Linux or the like, configured to be able to apply dynamic tracing, and preferably be 'QEMU', virtualization software.
제 1 로그 데이터는 적어도 디스패치 루프(일명 '메인 핸들러'라고도 한다, 이하에서는 혼용하여 사용하도록 한다)의 명령어들과 주소, 핸들러 코드의 명령어들과 주소들을 실행 순서에 따라 포함하고 있다. 따라서 제 1 로그 데이터에는 디스패치 루프와 핸들러 코드가 실행 순서에 따라 다수 개 존재하고 산재하고 있다. 디버거 등을 통한 실시간 분석에 비해, 기록된 제 1 로그 데이터가 실행 순서에 따라 프로세서(111)에서 이용될 수 있는 모든 명령어들을 포함하여 가상화 난독화 기법에 적용된 구성 요소들을 추출하고 사용자들에게 흐름을 표시하기에는 매우 유리하다. The first log data includes instructions and addresses of at least a dispatch loop (also referred to as a 'main handler', hereinafter, used interchangeably), addresses and handler code instructions and addresses in the order of execution. Accordingly, a plurality of dispatch loops and handler codes exist in the first log data according to the execution order and are scattered. Debugger, etc., the recorded first log data extracts the components applied to the virtualization obfuscation technique, including all the instructions that can be used in the
이후 단계 S103에서, 분석 장치(100)는 구성 요소의 식별과 분석을 위해 기록된 제 1 로그 데이터를 메모리(105) 등에 로딩한다. 이러한 단계 S103은 설계 변형에 따라 생략될 수 있다. Thereafter, in step S103, the
단계 S105에서, 분석 장치(100)는 분석할 실행 파일에 기초하여 생성된 제 1 로그 데이터로(예를 들어 단계 S101에서 기록된 제 1 로그 데이터)부터 가상화 난독화 기법에 적용된 구성 요소를 식별한다. In step S105, the
이러한 구성 요소는 제 1 로그 데이터의 분석을 통해 추출할 수 있다. 구체적으로 구성 요소는 분석 대상인 실행 파일에 포함되는 특정 가상화 명령어에 대응하는 특정 핸들러 코드를 수행 시키기 위해 수행되는 디스패치 루프와 디스패치 루프에 의한 호출로 수행되는 복수의 핸들러 코드를 포함한다. 또한 구성 요소는 가상화 코드와 핸들러 테이블을 더 포함할 수 있다. 이러한 구성 요소는 제 1 로그 데이터에 포함되고 실행 순서에 따라 수행되는 명령어들을 분석함으로써 추출될 수 있다. These components can be extracted through analysis of the first log data. Specifically, the component includes a dispatch loop executed to execute a specific handler code corresponding to a specific virtualization command included in an executable file to be analyzed, and a plurality of handler codes executed by a call by a dispatch loop. The component may further include a virtualization code and a handler table. These components can be extracted by analyzing the instructions included in the first log data and executed in accordance with the execution order.
단계 S105에서, 디스패치 루프나 복수의 핸들러 코드를 포함하는 구성 요소를 식별(또는 추출)하는 방법을 좀 더 구체적으로 살펴보면, 분석 장치(100)의 프로세서(111)는 제 1 로그 데이터로부터 디스패치 루프의 코드 영역을 먼저 식별한다. In step S105, the
디스패치 루프는 가상화 코드 영역의 1 바이트 또는 2 바이트 등의 가상화 명령어를 순차적으로 하나씩 읽어 들인다. 이후 디스패치 루프는 읽어 들인 가상화 명령어에 여러 연산을 복수 회 수행하여 핸들러 테이블의 주소를 결정하고 결정된 핸들러 테이블의 주소에 대응하는 핸들러 코드가 실행되도록 핸들러 테이블의 해당 주소에 기록된 주소(간접 점프)를 호출하도록 구성된다. The dispatch loop reads the virtualization instructions one by one, such as one or two bytes of the virtualization code area. The dispatch loop then performs several operations on the read virtualization instruction multiple times to determine the address of the handler table, and the address (indirect jump) recorded at the corresponding address in the handler table so that the handler code corresponding to the address of the determined handler table is executed .
상용 소프트웨어 툴인 더미다를 적용한 임의의 실행 파일에 대한 로그 데이터로 심층 분석한 결과, 더미다를 적용한 실행 파일은 도 4와 같은 가상화 구조로 이루어진 것을 알 수 있었다. 각각의 코드나 디스패치 루프나 핸들러 테이블은 실행 파일의 종류나 생성 시점에 따라서 다른 위치나 다른 크기로 생성될 수 있다. As a result of in-depth analysis of the log data of arbitrary executable files using the dummy data as the commercial software tool, it can be seen that the dummy executable file has the virtualization structure as shown in FIG. Each code, dispatch loop, or handler table can be created in different locations or sizes depending on the type of the executable file and the time of creation.
도 4를 통해서 가상화 구조를 간단히 살펴보면, 디스패치 루프는 가상화 코드에 액세스하여 하나의 가상화 명령어를 읽어 들이고 읽어 들인 가상화 명령어에 대해 연산을 수행하고 연산 결과에 따라 핸들러 테이블을 참조하여 핸들러 코드를 호출하도록 구성된다. 그리고 호출된 핸들러 코드는 프로세서(111)를 통해 가상화 명령어에 대응하는 실질적 기능을 수행하고 수행완료되면 디스패치 루프를 다시 호출(디스패치 루프의 시작 주소)하도록 구성된다. 이후 디스패치 루프는 다시 후속하는 가상화 명령어를 읽어 들이고 동일한 과정을 수행한다. 4, the dispatch loop accesses the virtualization code, reads one virtualization instruction, performs operations on the read virtualization instruction, and calls the handler code with reference to the handler table according to the operation result do. Then, the called handler code performs a substantial function corresponding to the virtualization instruction through the
이와 같이 디스패치 루프는 가상화 코드를 프로세서(111)를 통해 처리하기 위해 반복적으로 수행되고, 수행이 완료된 핸들러 코드는 다시 디스패치 루프를 호출하도록 구성된다. Thus, the dispatch loop is repeatedly executed to process the virtualization code through the
이러한 분석 결과를 토대로 디스패치 루프의 코드 영역을 식별할 수 있다. 디스패치 루프의 코드 영역은 앞서 살펴본 바와 같이 가상화 코드의 복수의 가상화 명령어를 수행하기 위해 반복적으로 수행되는 특징, 디스패치 루프의 첫 번째 명령어가 가상화 명령어와 관련되어 가상화 명령어를 프로세서(111)의 특정 레지스터에 로딩하는 특징, 디스패치 루프의 마지막 명령어가 특정 영역(핸들러 테이블의 영역)을 통해 결정된 하나의 핸들러 코드로 점프하는 명령어로 구성되는 특징 및 점프된 핸들러 코드는 다시 디스패치 루프의 첫 번째 명령어로 되돌아오는 특징이 있다.Based on these analysis results, the code area of the dispatch loop can be identified. The code region of the dispatch loop is characterized in that it is repeatedly executed to perform a plurality of virtualization instructions of the virtualization code as described above. The first instruction of the dispatch loop is associated with the virtualization instruction, and the virtualization instruction is transferred to a specific register A feature that loads the last instruction of the dispatch loop is composed of an instruction that jumps to one handler code determined through a specific area (area of the handler table), and a jumping handler code is a feature that returns to the first instruction of the dispatch loop again .
이러한 디스패치 루프의 특징들을 이용하여, 제 1 로그 데이터에서 디스패치 루프의 코드 영역을 식별할 수 있다.Using the features of this dispatch loop, it is possible to identify the code area of the dispatch loop in the first log data.
예를 들어 분석 장치(100)는 제 1 로그 데이터의 스캔(scan)을 통해서 디스패치 루프의 첫 번째 명령어와 마지막 명령어를 복 수회 인식할 수 있다. 그리고 분석 장치(100)는 가상화 명령어와 관련된 첫 번째 명령어에 대응하는 주소를 디스패치 루프의 시작 주소로 결정하고 핸들러 코드를 호출하기 위한 마지막 명령어에 대응하는 주소를 디스패치 루프의 종료 주소로 결정하여 디스패치 루프의 코드 영역을 식별할 수 있다. For example, the analyzing
단계 S105에서, 디스패치 루프의 영역을 식별한 후에 다른 구성 요소는 용이하게 식별할 수 있다. In step S105, after identifying the area of the dispatch loop, other components can be easily identified.
예를 들어 분석 장치(100)는 제 1 로그 데이터의 모든 디스패치 루프의 코드 영역의 마지막 명령어에서 핸들러 테이블의 코드 영역을 알 수 있고 나아가 실제 호출된 핸들러 코드들의 시작 주소를 알 수 있다. 또한 핸들러 코드의 시작 주소의 명령어의 수행 후에 다시 디스패치 루프의 첫 번째 명령어를 호출하는 핸들러 코드의 명령어로 핸들러 코드의 종료 주소를 알 수 있다. 그리고 모든 디스패치 루프의 첫번째 주소의 명령어로 가상화 코드의 영역을 또한 식별할 수 있다. For example, the analyzing
이러한 디스패치 루프 외의 다른 구성 요소들은 제 1 로그 데이터를 다시 스캐닝하고 식별된 디스패치 루프의 명령어를 통해 식별될 수 있다. Other components besides this dispatch loop may be identified through the instructions of the dispatch loop identified and rescan the first log data.
이후 단계 S107에서, 식별된 구성 요소에 관련된 정보를 사용자가 인식할 수 있도록 구성하여 로그 데이터(이하 '제 2 로그 데이터'라 한다)로 생성한다. 제 2 로그 데이터는 예를 들어 가상화 코드의 영역을 알 수 있도록 하는 시작 주소와 종료 주소를 나타내는 정보, 디스패치 루프의 코드 영역을 알 수 있도록 디스패치 루프의 시작 주소와 종료 주소를 나타내는 정보, 디스패치 루프의 명령어들을 나타내는 정보, 핸들러 코드 각각의 실행 회수를 나타내는 정보, 핸들러 코드 간 실행 순서를 나타내는 정보를 포함한다. Thereafter, in step S107, the information related to the identified component is configured to be recognizable by the user to generate log data (hereinafter referred to as "second log data"). The second log data includes, for example, information indicating a start address and an end address for identifying the area of the virtualization code, information indicating a start address and an end address of the dispatch loop so as to know the code area of the dispatch loop, Information indicating instructions, information indicating the number of times each handler code is executed, and information indicating the order of execution between handler codes.
또한 제 2 로그 데이터는 각각의 핸들러 코드의 시작 주소, 핸들러 코드에 포함된 명령어들, 각각의 명령어들의 피연산자, 실행 파일의 수행에서 핸들러 코드가 복수 회 실행된 경우에 핸들러 코드의 실행 순서를 나타내는 정보를 더 포함할 수 있다. The second log data includes information indicating a start address of each handler code, instructions included in the handler code, an operand of each instruction, an execution order of the handler code when the execution of the execution file is executed a plurality of times As shown in FIG.
이러한 제 2 로그 데이터는 디스패치 루프와 다른 구성 요소를 제 1 로그 데이터로부터 식별(또는 추출)함으로써 생성될 수 있다. 예를 들어 제 2 로그 데이터는 단계 S105에서 구성 요소의 식별 동안에 동시에 생성될 수 있거나 모든 구성 요소를 단계 S105에서 식별한 후에, 제 1 로그 데이터를 재차 스캐닝함으로써 해당 구성 요소의 정보를 생성할 수도 있다. This second log data may be generated by identifying (or extracting) the dispatch loop and other components from the first log data. For example, the second log data may be generated at the same time during identification of the component in step S105, or after all the components are identified in step S105, the information of the corresponding component may be generated by scanning again the first log data .
예를 들어 제 2 로그 데이터의 실행 회수는 디스패치 루프에서 호출하는 동일한 시작 주소(핸들러 테이블을 경유하여)를 카운팅함으로써 알 수 있고 핸들러 코드 간의 실행 순서는 명령어의 실행 순서에 따라 기록된 제 1 로그 데이터를 스캐닝하여 발견되는 핸들러 코드를 순서대로 나열함으로써 알 수 있다. For example, the execution count of the second log data can be known by counting the same start address (via the handler table) invoked in the dispatch loop, and the execution order between the handler codes can be determined by the execution order of the first log data And the handler codes to be found are listed in order.
이후 단계 S109에서, 분석 장치(100)는 생성된 제 2 로그 데이터를 출력 인터페이스(103)를 통해 출력하거나 대용량 저장 매체(107)에 저장할 수 있다. Thereafter, in step S109, the
도 5와 도 6은 생성되는 제 2 로그 데이터의 예시적인 형태를 도시한 도면이다. 도 5에서 알 수 있는 바와 같이, 제 2 로그 데이터는 가상화 코드의 영역 정보와 디스패치 루프의 영역 정보(① 참조), 디스패치 루프의 명령어들(② 참조), 복수의 핸들러 각각에 대한 영역 정보와 실행 회수(③ 참조) 및 복수의 핸들러 간의 실행 순서(④ 참조)를 포함한다. 5 and 6 illustrate exemplary forms of the generated second log data. 5, the second log data includes area information of the virtualization code and area information of the dispatch loop (see (1)), dispatch loop commands (see (2)), area information for each of the plurality of handlers, (See ③) and execution order between multiple handlers (see ④).
도 6은 특정 핸들러 코드에 관련하여 생성되는 제 2 로그 데이터를 도시한 도면이데, 도 6을 통해서 알 수 있는 바와 같이, 핸들러 코드의 시작 주소(① 참조), 명령어들(① 참조), 명령어에서의 피연산자의 타입(메모리, 레지스터, 상수, 주소)이나 값들(② 참조), 그리고 해당 핸들러 코드가 복수 회 실행된 경우에 몇 번째 실행인지를 알 수 있도록 하는 실행 순서 번호(③ 참조, 예를 들어 'H 1-115'에서 '1'이 첫번째 실행을 나타내는 실행 순서 번호임)를 나타내는 정보를 포함한다. FIG. 6 is a diagram showing second log data generated in association with a specific handler code. As can be seen from FIG. 6, the start address (refer to?) Of the handler code, the commands (Eg, memory, registers, constants, and addresses) or values (see ②), and the execution sequence number (see ③, for example) that tells you how many times the handler code is executed Quot; 1 " is the execution sequence number indicating the first execution in " H 1-115 ").
도 5와 도 6에서의 제 2 로그 데이터는 하나의 파일로 저장되거나 상이한 파일로 저장될 수 있다. 또한 도 5와 도 6의 제 2 로그 데이터는 하나의 창(window)을 통해 표시되거나 다른 여러 개의 창을 통해 표시될 수 있다. The second log data in FIGS. 5 and 6 may be stored in one file or in a different file. In addition, the second log data of FIGS. 5 and 6 may be displayed through one window or through several different windows.
도 5와 도 6에서 알 수 있는 바와 같이 본 발명에 따라 생성된 제 2 로그 데이터는 가상화 난독화 기법에 관련된 다양한 정보를 제공할 수 있다. 특히 가상화 난독화 기법에 적용된 구성 요소들을 정적 분석 방법을 통해 실제 실행 파일의 수행 흐름에 따라 식별하고 해당 정보를 표시할 수 있다. 또한 핸들러 코드가 수행된 회수를 제공하여 분석가로 하여금 어떤 핸들러 코드를 먼저 분석해야하는 지를 안내할 수 있고 핸들러 코드 간 제어 흐름을 제공하여 가상화 코드에 대한 분석을 용이하게 한다. As can be seen in FIGS. 5 and 6, the second log data generated according to the present invention may provide various information related to the virtual obfuscation technique. In particular, the components applied to the virtualization obfuscation technique can be identified and displayed in accordance with the execution flow of the actual executable file through the static analysis method. It also provides the number of times the handler code has been executed so that the analyst can guide which handler code needs to be analyzed first, and provides a control flow between handler codes to facilitate analysis of the virtualization code.
이후 입력 인터페이스(101)를 통한 사용자 입력에 따라 도 3의 본 제어 흐름은 종료(S200)될 수 있다. The control flow of FIG. 3 may then be terminated (S200) according to user input via the
도 3에 따른 제어 흐름은 분석 장치(100)의 프로세서(111)상에서 수행되는 하나의 프로그램을 수행함으로써 이루어지거나 복수의 프로그램을 수행함으로써 이루어질 수 있다. 예를 들어 단계 S101은 별도 하나의 프로그램(예를 들어 동적 에뮬레이터) 상에서 이루어지고 나머지 단계 S103 내지 단계 S109는 다른 프로그램(구성 요소를 추출하기 위한 분석 프로그램)을 이용하여 이루어질 수 있다.
The control flow according to FIG. 3 may be performed by executing one program executed on the
도 7은 가상화 난독화 기법이 적용된 실행 파일의 분석을 위한 예시적인 기능 블록도를 도시한 도면이다. 도 7의 기능 블록도는 도 1의 하드웨어 블록도 상에서 수행될 수 있다. 바람직하게는 도 7의 기능 블록도는 도 1의 프로세서(111)에서 수행되고 대용량 저장 매체(107) 등에 저장되어 있는 프로그램 등을 이용하여 구성될 수 있다. 7 is a diagram illustrating an exemplary functional block diagram for analysis of an executable file to which a virtual obfuscation technique is applied. The functional block diagram of Fig. 7 may be performed on the hardware block diagram of Fig. Preferably, the functional block diagram of FIG. 7 may be configured using programs or the like stored in the
앞선 도 3의 제어 흐름을 통해 실행 파일의 분석에 대해서 상세히 살펴보았으므로 여기서는 간단히 살펴보도록 한다. The analysis of the executable file through the control flow of FIG. 3 has been described in detail.
도 7에 따른 분석 장치(100)는 에뮬레이션 모듈(151), 구성 요소 식별 모듈(153), 로그 생성 모듈(155)을 포함한다. 분석 장치(100)는 필요에 따라 특정 모듈을 생략할 수 있고 예를 들어 에뮬레이션 모듈(151)은 변형 예에 따라 생략될 수 있다. 여기서 기능 블록의 도면 부호(150번 대 이용)를 하드웨어 블록의 도면 부호와 구별할 수 있도록 부여하였다. The
분석 장치(100)의 각 블록에 대해서 간단히 살펴보면, 에뮬레이션 모듈(151)은 사용자 입력에 따라 분석 대상인 실행 파일을 메모리(105)에 로딩하고 실행 파일의 수행에 따라 동적으로 대응하는 모든 명령어들을 실행하고 이후 실행된 모든 명령어를 포함하고 실행 순서에 따라 모든 명령어를 표현할 수 있는 제 1 로그 데이터를 생성하고 기록한다. 실행 파일은 가상화 난독화 기법을 적용하는 상용 소프트웨어 툴인 더미다를 적용하여 생성된 파일일 수 있다. The
구성 요소 식별 모듈(153)은 실행 파일에 기초하여 생성된 제 1 로그 데이터로부터 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 식별한다. 예를 들어 구성 요소 식별 모듈(153)은 디스패치 루프, 복수의 핸들러 코드를 식별하고 나아가 가상화 코드와 핸들러 테이블을 더 식별할 수 있다. 제 1 로그 데이터는 바람직하게는 에뮬레이션 모듈(151)에 의해서 기록된 로그 데이터이다. The
구체적으로 구성 요소 식별 모듈(153)은 제 1 로그 데이터를 스캐닝하여 디스패치 코드 영역을 식별한다. 디스패치 코드 영역은 제 1 로그 데이터를 스캐닝을 통해 반복적으로 수행되는 특징과 반복적으로 수행되는 코드 영역에서 가상화 명령어를 로딩하는 첫 번째 명령어와 핸들러 코드를 호출하기 위한 마지막 명령어를 가진다는 특징을 이용하여 디스패치 코드의 첫 번째 명령어와 마지막 명령어를 인식하고 이로부터 디스패치 코드의 시작 주소와 종료 주소를 결정하여 디스패치 코드의 영역을 식별할 수 있다. Specifically, the
또한 구성 요소 식별 모듈(153)은 식별된 디스패치 코드 영역의 명령어(예를 들어 마지막 명령어)를 이용하여 복수의 핸들러 코드 각각을 더 식별할 수 있다. 예를 들어 구성 요소 식별 모듈(153)은 제 1 로그 데이터에서 식별된 다수의 디스패치 코드의 영역의 마지막 명령어를 통해 호출되는 시작 주소(핸들러 테이블을 경유하여)를 인식한다. 나아가 구성 요소 식별 모듈(153)은 인식된 시작 주소 이후의 명령어의 수행에 따라 다시 디스패치 코드의 시작 주소로 호출하는 명령어를 인식하여 핸들러 코드의 시작 주소와 종료 주소를 포함하는 코드 영역을 식별할 수 있다. The
로그 생성 모듈(155)은 구성 요소 식별 모듈(153)에서 식별된 구성 요소에 관련된 각종 정보를 사용자가 인식할 수 있도록 제 2 로그 데이터로 생성한다. 로그 생성 모듈(155)은 예를 들어 구성 요소에 관련된 영역 정보나 핸들러 코드의 실행 회수나 핸들러 코드 간 실행 순서나 구성 요소의 명령어들을 알 수 있도록 출력 인터페이스(103)를 통해 출력하거나 대용량 저장 매체(107)에 저장할 수 있다. The
도 7의 기능 블록들은 프로세서에서 수행될 수 있는 프로그램으로 구성될 수 있고 각각의 블록들이 별도의 프로그램이거나 하나의 프로그램에 통합되거나 복수의 프로그램에 통합될 수 있다. 예를 들어 에뮬레이션 모듈(151)은 하나의 프로그램(예를 들어 동적 에뮬레이터)으로 구성되고 구성 요소 식별 모듈(153)과 로그 생성 모듈(155)은 별도의 프로그램으로 구성될 수 있다.
The functional blocks of FIG. 7 may be configured as a program that can be executed in a processor, and each block may be a separate program, integrated into one program, or integrated into a plurality of programs. For example, the
이상에서 설명한 본 발명은, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니다. It will be apparent to those skilled in the art that various modifications and variations can be made in the present invention without departing from the spirit or scope of the invention. The present invention is not limited to the drawings.
100 : 분석 장치
101 : 입력 인터페이스 103 : 출력 인터페이스
105 : 메모리 107 : 대용량 저장 매체
109 : 시스템 버스/제어 버스 111 : 프로세서
151 : 에뮬레이션 모듈 153 : 구성 요소 식별 모듈
155 : 로그 생성 모듈 100: Analyzer
101: input interface 103: output interface
105: memory 107: mass storage medium
109: system bus / control bus 111: processor
151: Emulation module 153: Component identification module
155: log generation module
Claims (12)
(a) 동적 에뮬레이터(emulator)에 상기 실행 파일을 로딩하고 상기 동적 에뮬레이터에서 실행된 모든 명령어를 포함하고 실행 순서에 따라 상기 모든 명령어를 표현할 수 있는 제 1 로그 데이터를 생성하고 기록하는 단계;
(b) 상기 실행 파일에 기초하여 생성된 상기 제 1 로그 데이터로부터 상기 가상화 난독화 기법에 적용된 구성 요소를 식별하는 단계; 및
(c) 식별된 구성 요소와 관련된 정보를 인식할 수 있는 제 2 로그 데이터를 생성하는 단계를 포함하고,
상기 가상화 난독화 기법에 적용된 구성 요소는 상기 실행 파일에 포함되는 가상화 명령어에 대응하는 핸들러 코드를 수행시키기 위한 디스패치 루프와 상기 디스패치 루프에 의해서 수행되는 복수의 핸들러 코드를 포함하고,
상기 단계 (b)는,
(b-1) 상기 디스패치 루프의 코드 영역을 식별하는 단계; 및
(b-2) 상기 단계 (b-1)에서 식별된 상기 디스패치 루프의 코드 영역의 명령어를 이용하여 복수의 핸들러 코드의 영역을 식별하는 단계를 포함하고,
상기 단계 (b-1)은,
가상화 명령어에 관련된 제 1 명령어와 상기 가상화 명령어에 대응하는 핸들러 코드를 호출하기 위한 제 2 명령어를 인식하는 단계; 및
인식된 제 1 명령어와 제 2 명령어의 위치로부터 디스패치 루프의 시작 주소와 종료 주소를 결정하는 단계를 포함하는,
실행 파일의 분석 방법. An analysis method of an executable file to which a virtualization obfuscation technique is applied,
(a) loading the executable file into a dynamic emulator, generating and recording first log data that includes all instructions executed in the dynamic emulator and can represent all of the instructions in an execution order;
(b) identifying components applied to the virtual obfuscation technique from the first log data generated based on the executable file; And
(c) generating second log data capable of recognizing information associated with the identified component,
Wherein the component applied to the virtualization obfuscation includes a dispatch loop for executing a handler code corresponding to a virtualization instruction included in the executable file and a plurality of handler codes executed by the dispatch loop,
The step (b)
(b-1) identifying a code region of the dispatch loop; And
(b-2) identifying an area of a plurality of handler codes using an instruction of a code area of the dispatch loop identified in step (b-1)
The step (b-1)
Recognizing a first instruction related to a virtualization instruction and a second instruction for calling a handler code corresponding to the virtualization instruction; And
Determining a start address and an end address of a dispatch loop from a location of the recognized first instruction and a second instruction,
How to analyze executable files.
상기 실행 파일은 상용 가상화 난독화 툴(tool)인 더미다(Themida)를 적용하여 생성된 실행 파일인, 실행 파일의 분석 방법. The method according to claim 1,
Wherein the executable file is an executable file generated by applying the commercial virtualization obfuscation tool, Themida.
상기 단계 (c)에서 생성된 제 2 로그 데이터는 디스패치 루프의 시작 주소와 종료 주소를 나타내는 정보, 복수의 핸들러 코드 각각의 실행 회수를 나타내는 정보 및 복수의 핸들러 코드 간의 실행 순서를 나타내는 정보를 포함하는,
실행 파일의 분석 방법.The method according to claim 1,
The second log data generated in the step (c) includes information indicating a start address and an end address of the dispatch loop, information indicating the execution count of each of the plurality of handler codes, and information indicating execution order between the plurality of handler codes ,
How to analyze executable files.
상기 단계 (c)에서 생성된 제 2 로그 데이터는 핸들러 코드의 시작 주소, 핸들러 코드에 포함된 명령어와 상기 명령어에 포함된 피연산자 및 핸들러 코드의 실행 순서를 나타내는 정보를 더 포함하는,
실행 파일의 분석 방법.The method according to claim 6,
Wherein the second log data generated in the step (c) further includes information indicating a start address of the handler code, an instruction contained in the handler code, an operand included in the instruction, and an execution order of the handler code.
How to analyze executable files.
상기 실행 파일을 로딩하고 동적으로 실행된 모든 명령어를 포함하여 실행 순서에 따라 상기 모든 명령어를 표현할 수 있는 제 1 로그 데이터를 생성하고 기록하는 에뮬레이션 모듈;
상기 실행 파일에 기초하여 생성된 상기 제 1 로그 데이터로부터 상기 가상화 난독화 기법에 적용된 구성 요소를 식별하는 구성 요소 식별 모듈; 및
식별된 구성 요소와 관련된 정보를 인식할 수 있는 제 2 로그 데이터를 생성하는 로그 생성 모듈을 포함하고,
상기 가상화 난독화 기법에 적용된 구성 요소는 상기 실행 파일에 포함되는 가상화 명령어에 대응하는 핸들러 코드를 수행시키기 위한 디스패치 루프와 상기 디스패치 루프에 의해서 수행되는 복수의 핸들러 코드를 포함하고,
상기 구성 요소 식별 모듈은 상기 디스패치 루프의 코드 영역을 식별하고, 식별된 상기 디스패치 루프의 코드 영역의 명령어를 이용하여 복수의 핸들러 코드의 영역을 식별하고,
상기 구성 요소 식별 모듈은 가상화 명령어에 관련된 제 1 명령어와 상기 가상화 명령어에 대응하는 핸들러 코드를 호출하기 위한 제 2 명령어를 인식하고 인식된 제 1 명령어와 제 2 명령어의 위치로부터 디스패치 루프의 시작 주소와 종료 주소를 결정하여 상기 디스패치 루프의 코드 영역을 식별하는,
실행 파일의 분석 장치. An apparatus for analyzing an execution file to which a virtualization obfuscation technique is applied,
An emulation module for loading the executable file and including first and second dynamically executed instructions to generate and record first log data capable of expressing all of the instructions in an execution order;
A component identification module for identifying a component applied to the virtual obfuscation technique from the first log data generated based on the executable file; And
And a log generation module for generating second log data capable of recognizing information related to the identified component,
Wherein the component applied to the virtualization obfuscation includes a dispatch loop for executing a handler code corresponding to a virtualization instruction included in the executable file and a plurality of handler codes executed by the dispatch loop,
Wherein the component identification module identifies a code region of the dispatch loop, identifies an area of a plurality of handler codes using instructions in a code region of the identified dispatch loop,
The component identification module recognizes a first instruction related to the virtualization instruction and a second instruction for calling the handler code corresponding to the virtualization instruction and recognizes the start address of the dispatch loop from the position of the recognized first instruction and the second instruction Determining an end address to identify a code region of the dispatch loop,
Analyzer of the executable file.
상기 실행 파일은 상용 가상화 난독화 툴인 더미다를 적용하여 생성된 실행 파일인, 실행 파일의 분석 장치. 9. The method of claim 8,
Wherein the executable file is an executable file generated by applying a dummy variable that is a commercial virtualization obfuscation tool.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140006644A KR101583306B1 (en) | 2014-01-20 | 2014-01-20 | Analysis method and analysis apparatus of executable file applied virtualization obfuscation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140006644A KR101583306B1 (en) | 2014-01-20 | 2014-01-20 | Analysis method and analysis apparatus of executable file applied virtualization obfuscation |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150086682A KR20150086682A (en) | 2015-07-29 |
KR101583306B1 true KR101583306B1 (en) | 2016-01-07 |
Family
ID=53876194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140006644A KR101583306B1 (en) | 2014-01-20 | 2014-01-20 | Analysis method and analysis apparatus of executable file applied virtualization obfuscation |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101583306B1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102430335B1 (en) * | 2020-10-21 | 2022-08-08 | 국방과학연구소 | Method For Enhancing Obfuscation Of Virtual Code And Apparatus Thereof |
-
2014
- 2014-01-20 KR KR1020140006644A patent/KR101583306B1/en active IP Right Grant
Non-Patent Citations (2)
Title |
---|
K. Coogan et al., Deobfuscation of Virtualization-Obfuscated Software: A Semantics-Based Approach, Proceedings of the 18th ACM conference on Computerand communications security, 2011.10.* |
김성호, 동적 오염 분석을 이용한 가상화 기법으로 난독화된 바이너리 코드 분석 기법, 한양대학교 전자컴퓨터통신공학과 석사학위논문, 2013.8.* |
Also Published As
Publication number | Publication date |
---|---|
KR20150086682A (en) | 2015-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10380343B1 (en) | System and method for programmatic runtime de-obfuscation of obfuscated software utilizing virtual machine introspection and manipulation of virtual machine guest memory permissions | |
US9501643B1 (en) | Systems and methods for detecting malicious executable files containing an interpreter by combining emulators | |
US7620941B1 (en) | Mechanism for lossless user-level tracing on an architecture supporting PC-relative addressing | |
US9208060B1 (en) | Emulation-based expression evaluation for diagnostic tools | |
KR101228899B1 (en) | Method and Apparatus for categorizing and analyzing Malicious Code Using Vector Calculation | |
US9710355B2 (en) | Selective loading of code elements for code analysis | |
KR20110070468A (en) | Apparatus for executing instrumentation and method thereof | |
CN109145534B (en) | Anti-confusion system and method for software virtual machine protection | |
US10129275B2 (en) | Information processing system and information processing method | |
US20200143061A1 (en) | Method and apparatus for tracking location of input data that causes binary vulnerability | |
JP6728874B2 (en) | Determine valid input for unknown binary program | |
KR20180129623A (en) | Apparatus for statically analyzing assembly code including assoxiated multi files | |
JP2016149123A (en) | Method of determining valid input for unknown binary module and non-transitory computer-readable medium | |
KR101583306B1 (en) | Analysis method and analysis apparatus of executable file applied virtualization obfuscation | |
US20070061781A1 (en) | Stochastic testing directed by static test automation | |
CN112861138A (en) | Software security analysis method and analysis device, electronic device, and storage medium | |
JP5952218B2 (en) | Information processing apparatus and information processing method | |
KR101116770B1 (en) | Apparatus for?diagnosing and curing malicious code and method thereof | |
Lin et al. | VMRe: A reverse framework of virtual machine protection packed binaries | |
KR102421394B1 (en) | Apparatus and method for detecting malicious code using tracing based on hardware and software | |
US11886589B2 (en) | Process wrapping method for evading anti-analysis of native codes, recording medium and device for performing the method | |
KR101977265B1 (en) | Method and apparatus for detection original entry point of packed executable files | |
CN109472133A (en) | A kind of sandbox monitoring method and device | |
US10108528B2 (en) | High-performance processor instruction tracing | |
JP6642114B2 (en) | Determine valid input sequence for unknown binary program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
FPAY | Annual fee payment |
Payment date: 20181025 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20191017 Year of fee payment: 5 |