KR101583306B1 - 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치 - Google Patents

가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치 Download PDF

Info

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
Application number
KR1020140006644A
Other languages
English (en)
Other versions
KR20150086682A (ko
Inventor
이동훈
김성훈
석재혁
Original Assignee
고려대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 고려대학교 산학협력단 filed Critical 고려대학교 산학협력단
Priority to KR1020140006644A priority Critical patent/KR101583306B1/ko
Publication of KR20150086682A publication Critical patent/KR20150086682A/ko
Application granted granted Critical
Publication of KR101583306B1 publication Critical patent/KR101583306B1/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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements 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

본 발명은 가상화 난독화 기법이 적용된 실행 파일의 분석을 도울 수 있도록 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 추출하고 추출된 구성 요소에 대한 정보를 제공할 수 있도록 하는 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치에 관한 것이다.
본 발명을 이용함으로써, 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 파악할 수 있고 실행 파일에서 분석 대상을 용이하게 알 수 있고 실행 파일의 실제 제어 흐름을 알 수 있도록 한다.

Description

가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치{ANALYSIS METHOD AND ANALYSIS APPARATUS OF EXECUTABLE FILE APPLIED VIRTUALIZATION OBFUSCATION}
본 발명은 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치에 관한 것으로서, 구체적으로는 가상화 난독화 기법이 적용된 실행 파일의 분석을 도울 수 있도록 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 추출하고 추출된 구성 요소에 대한 정보를 제공할 수 있도록 하는, 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치에 관한 것이다.
난독화(obfuscation) 기법은 프로그램 본래의 기능성을 유지하면서도 프로그램 내부의 구조를 변환시킴으로써 역공학을 어렵게 하기 위해서 사용되는 기법이다. 난독화 기법 중 하나인 가상화 난독화(virtualization obfuscation) 기법은 프로그램 중 보호하고자 하는 코드 영역을 다른 종류의 기계어로 변환(가상화 코드)시킴으로써 변환된 기계어에 대한 분석을 어렵게 만드는 기법이다.
가상화 난독화 기법이 적용된 프로그램의 가상화 코드를 해석하고 처리하기 위해서 소프트웨어적으로 구성된 가상 프로세서(virtual processor)가 이용된다. 가상 프로세서가 소프트웨어적으로 가상화 코드를 해석하고 대응하는 기능을 실제 프로세서에서 직접 수행하도록 구성되고 가상화 코드는 원본 코드로 복원될 필요가 없다. 이에 따라 가상화 난독화 기법을 분석하는 문제는 가상 프로세서를 분석하는 문제와 동일시된다.
이러한 가상화 난독화 기법은 프로그램의 지적재산권을 보호하기 위해 설계되었다. 가상화 난독화 기법에 의해서 생성된 코드의 양이 원래의 코드의 양보다 많고 복잡한 내부 구조로 인해서 가상화 난독화 기법은 지적재산권 보호를 위한 적절한 수단으로 판단되고 있다.
일반적으로 가상화 난독화 기법은 상용 소프트웨어 툴(Tool)을 이용하여 프로그램의 실행 파일에 적용된다. 가상화 난독화 기법을 적용하기 위한 상용 소프트웨어 툴은 Themida, Code Virtualizer, VMProtect 등이 있다. 이러한 상용 툴의 가상화 난독화 기법은 가상 프로세서를 포함하는 그 가상화 구조가 공개되지 않고 가상화 구조에서의 각 구성 요소별로 난독화 기법이 적용되어 분석을 더욱 어렵게 한다.
한편, 가상화 난독화 기법을 적용할 수 있는 상용 소프트웨어 툴은 누구나 구입하여 이용할 수 있는 툴이기에 악용될 소지가 있다. 특히 이러한 상용 소프트웨어 툴이 악성코드의 보호에 이용되어 진다면 악성 코드의 분석이 불가능하거나 일반적인 분석 시간에 비해 수백 배까지의 시간이 더 필요할 것으로 예상된다.
예를 들어, 프로그램을 분석하기 위해서 프로그램을 로딩하여 프로그램의 수행 순서를 검증할 수 있는 디버거(debugger)가 알려져 있다. 가상화 구조가 공개되지 않은 상태에서 이 디버거를 활용하여 가상화 난독화 기법이 적용된 가상화 코드들이 악성 코드 인지나 어떠한 기능을 수행하는 지를 식별하는 것은 사실상 불가능하다. 더욱이 디버거가 프로그램 카운터(PC) 등을 이용하여 여러 프로그램 코드 사이를 이동하기에 복잡한 구조로 얽혀 있는 가상화 코드가 악성 코드인지를 알기는 더더욱 어렵다.
이와 같이 악성 코드에 가상화 난독화 기법을 적용하는 것은 쉬운 반면에 역난독화를 하는 것은 어렵기에 악성 코드에 대응하기가 점점 더 어려워지고 있는 실정이다.
이상으로 살펴본 바와 같이, 가상화 난독화 기법이 적용된 실행 파일로부터 가상화 난독화 기법에 적용된 가상화 구조를 추출하고 실행 파일의 분석이 가능하도록 하는, 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치가 필요하다.
본 발명은, 상술한 문제점을 해결하기 위해서 안출한 것으로서, 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 파악할 수 있도록 하는 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치를 제공하는 데 그 목적이 있다.
또한 본 발명은 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 식별하고 식별된 구성 요소에 관련된 로그 데이터를 제공할 수 있도록 하는 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치를 제공하는 데 그 목적이 있다.
또한 본 발명은 동적 트레이싱 기법을 이용하여 가상화 난독화 기법이 적용된 실행 파일의 핸들러 코드 간 제어 흐름을 알 수 있도록 하는 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치를 제공하는 데 그 목적이 있다.
또한 본 발명은 가상화 난독화 기법을 적용하는 상용 소프트웨어 툴에 의해서 생성된 실행 파일에 대하여 분석 가능하도록 하는 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치를 제공하는 데 그 목적이 있다.
본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
상기와 같은 목적을 달성하기 위한, 가상화 난독화 기법이 적용된 실행 파일의 분석 방법은 (b) 실행 파일에 기초하여 생성된 제 1 로그 데이터로부터 가상화 난독화 기법에 적용된 구성 요소를 식별하는 단계 및 (c) 식별된 구성 요소와 관련된 정보를 인식할 수 있는 제 2 로그 데이터를 생성하는 단계를 포함한다.
또한 가상화 난독화 기법에 적용된 구성 요소는 실행 파일에 포함되는 가상화 명령어에 대응하는 핸들러 코드를 수행시키기 위한 디스패치 루프를 포함하고, 가상화 난독화 기법이 적용된 실행 파일의 분석 방법의 단계 (b)는, (b-1) 디스패치 루프의 코드 영역을 식별하는 단계를 포함한다.
또한 가상화 난독화 기법에 적용된 구성 요소는 디스패치 루프에 의해서 수행되는 복수의 핸들러 코드를 더 포함하고, 가상화 난독화 기법이 적용된 실행 파일의 분석 방법의 단계 (b)는, (b-2) 단계 (b-1)에서 식별된 디스패치 루프의 코드 영역의 명령어를 이용하여 복수의 핸들러 코드의 영역을 식별하는 단계를 더 포함한다.
또한 실행 파일은 상용 가상화 난독화 툴인 더미다를 적용하여 생성된 실행 파일이고, 가상화 난독화 기법이 적용된 실행 파일의 분석 방법의 단계 (b-1)은 가상화 명령어에 관련된 제 1 명령어와 가상화 명령어에 대응하는 핸들러 코드를 호출하기 위한 제 2 명령어를 인식하는 단계 및 인식된 제 1 명령어와 제 2 명령어의 위치로부터 디스패치 루프의 시작 주소와 종료 주소를 결정하는 단계를 포함한다.
또한 가상화 난독화 기법이 적용된 실행 파일의 분석 방법은 상기 단계 (b) 이전에, (a) 동적 에뮬레이터(emulator)에 실행 파일을 로딩하고 동적 에뮬레이터에서 실행된 모든 명령어를 포함하고 실행 순서에 따라 모든 명령어를 표현할 수 있는 제 1 로그 데이터를 생성하고 기록하는 단계를 더 포함하고, 단계 (b)에서의 제 1 로그 데이터는 단계 (a)에서 생성되고 기록된 제 1 로그 데이터이다.
또한 단계 (c)에서 생성된 제 2 로그 데이터는 디스패치 루프의 시작 주소와 종료 주소를 나타내는 정보, 복수의 핸들러 코드 각각의 실행 회수를 나타내는 정보 및 복수의 핸들러 코드 간의 실행 순서를 나타내는 정보를 포함한다.
또한 단계 (c)에서 생성된 제 2 로그 데이터는 핸들러 코드의 시작 주소, 핸들러 코드에 포함된 명령어와 명령어에 포함된 피연산자 및 핸들러 코드의 실행 순서를 나타내는 정보를 더 포함한다.
또한 상기와 같은 목적을 달성하기 위한, 가상화 난독화 기법이 적용된 실행 파일의 분석 장치는 실행 파일에 기초하여 생성된 제 1 로그 데이터로부터 가상화 난독화 기법에 적용된 구성 요소를 식별하는 구성 요소 식별 모듈 및 식별된 구성 요소와 관련된 정보를 인식할 수 있는 제 2 로그 데이터를 생성하는 로그 생성 모듈을 포함한다.
또한 가상화 난독화 기법에 적용된 구성 요소는 실행 파일에 포함되는 가상화 명령어에 대응하는 핸들러 코드를 수행시키기 위한 디스패치 루프를 포함하고, 구성 요소 식별 모듈은 디스패치 루프의 코드 영역을 식별한다.
또한 가상화 난독화 기법에 적용된 구성 요소는 디스패치 루프에 의해서 수행되는 복수의 핸들러 코드를 더 포함하고, 구성 요소 식별 모듈은 식별된 디스패치 루프의 코드 영역의 명령어를 이용하여 복수의 핸들러 코드의 영역을 더 식별한다.
또한 실행 파일은 상용 가상화 난독화 툴인 더미다를 적용하여 생성된 실행 파일이고, 구성 요소 식별 모듈은, 가상화 명령어에 관련된 제 1 명령어와 가상화 명령어에 대응하는 핸들러 코드를 호출하기 위한 제 2 명령어를 인식하고 인식된 제 1 명령어와 제 2 명령어의 위치로부터 디스패치 루프의 시작 주소와 종료 주소를 결정하여, 디스패치 루프의 코드 영역을 식별한다.
또한 가상화 난독화 기법이 적용된 실행 파일의 분석 장치는 실행 파일을 로딩하고 동적으로 실행된 모든 명령어를 포함하여 실행 순서에 따라 모든 명령어를 표현할 수 있는 제 1 로그 데이터를 생성하고 기록하는 에뮬레이션 모듈을 더 포함하고, 구성 요소 식별 모듈은 에뮬레이션 모듈을 통해 생성되고 기록된 제 1 로그 데이터로부터 가상화 난독화 기법에 적용된 구성 요소를 식별한다.
상기와 같은 본 발명에 따른 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치는 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 파악할 수 있도록 하는 효과가 있다.
또한 상기와 같은 본 발명에 따른 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치는 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 식별하고 식별된 구성 요소에 관련된 로그 데이터를 제공할 수 있도록 하고 이에 따라 가상화 코드를 분석할 분석가에게 분석 대상을 용이하게 알 수 있도록 하는 효과가 있다.
또한 상기와 같은 본 발명에 따른 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치는 동적 트레이싱 기법을 이용하여 가상화 난독화 기법이 적용된 실행 파일의 핸들러 코드 간 실제 제어 흐름을 알 수 있도록 하는 효과가 있다.
또한 상기와 같은 본 발명에 따른 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치는 가상화 난독화 기법을 적용하는 상용 소프트웨어 툴에 의해서 생성된 실행 파일에 대하여 분석 가능하도록 하는 효과가 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 가상화 난독화 기법이 적용된 실행 파일 분석 장치의 예시적인 하드웨어 블록도를 도시한 도면이다.
도 2는 가상화 난독화 기법의 구성 요소들을 도시한 도면이다.
도 3은 가상화 난독화 기법이 적용된 실행 파일 분석 방법의 예시적인 제어 흐름을 도시한 도면이다.
도 4는 상용 소프트웨어 툴인 더미다로 생성된 가상화 난독화 기법의 가상화 구조를 도시한 도면이다.
도 5는 본 발명에 따라 생성된 로그 데이터의 예시적인 정보를 도시한 도면이다.
도 6은 본 발명에 따라 생성된 로그 데이터의 또 다른 예시적인 정보를 도시한 도면이다.
도 7는 가상화 난독화 기법이 적용된 실행 파일의 분석을 위한 예시적인 기능 블록도를 도시한 도면이다.
상술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술 되어 있는 상세한 설명을 통하여 더욱 명확해 질 것이며, 그에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다. 이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시 예를 상세히 설명하기로 한다.
도 1은 가상화 난독화 기법이 적용된 실행 파일 분석 장치(100)의 예시적인 하드웨어 블록도를 도시한 도면이다.
도 1에 따르면 분석 장치(100)는 입력 인터페이스(101), 출력 인터페이스(103), 메모리(105), 대용량 저장 매체(107), 시스템 버스/제어 버스(109) 및 프로세서(111)를 포함한다. 이 중 일부의 블록은 분석 장치(100)의 변형 예에 따라 생략될 수 있다. 또는 도 1에 개시되지 않은 블록이 이 하드웨어 블록도에 더 포함될 수도 있다.
분석 장치(100)의 각 하드웨어 블록을 간단히 살펴보면, 입력 인터페이스(101)는 가상화 난독화 기법이 적용된 실행 파일을 분석할 사용자(분석가)로부터 사용자 입력을 수신할 수 있는 인터페이스이다. 입력 인터페이스(101)는 키보드, 마우스, 터치 패널 등으로부터의 사용자 입력을 수신하고 이를 프로세서(111)로 전달하여 분석 대상인 실행 파일을 선택하거나 실행 파일의 분석을 시작하거나 분석을 중단할 수 있도록 한다.
출력 인터페이스(103)는 사용자 입력에 따른 처리 결과나 처리 과정의 결과를 출력할 수 있는 인터페이스이다. 출력 인터페이스(103)는 스피커나 디스플레이 등으로 출력될 데이터를 스피커나 디스플레이 등에 요구되는 데이터 포맷으로 변환하여 출력한다. 출력 인터페이스(103)는 예를 들어 가상화 난독화 기법이 적용된 실행 파일의 분석으로 생성된 로그 데이터를 출력할 수 있다.
메모리(105)는 휘발성 메모리 및/또는 비휘발성 메모리를 포함한다. 메모리(105)는 각종 프로그램, 프로그램 모듈, 프로그램에서 이용되는 데이터를 임시로 저장하거나 영구히 저장할 수 있도록 구성된다.
대용량 저장 매체(107)는 하디 디스크 및/또는 USB 메모리 등을 포함한다. 대용량 저장 매체(107)는 프로세서(111)상에서 수행되는 각종 프로그램들을 저장한다.
예를 들어, 대용량 저장 매체(107)는 분석 대상으로서 가상화 난독화 기법이 적용된 하나 이상의 실행 파일 및 실행 파일을 분석하기 위한 분석 프로그램 파일을 저장한다. 이러한 파일들은 프로세서(111)에서 수행될 수 있다. 실행 파일과 분석 프로그램 파일은 입력 인터페이스(101)를 통해 메모리(105)에 로딩될 수 있고 프로세서(111)에서 수행될 수 있다.
시스템 버스/제어 버스(109)는 블록간 데이터를 송수신할 수 있도록 한다. 시스템 버스/제어 버스(109)는 예를 들어 병렬 버스, 시리얼 버스, GPIO(General Purpose Input Output)이거나 이러한 버스나 GPIO의 조합으로 구성될 수 있다.
프로세서(111)는 명령어를 수행할 수 있는 하나 이상의 실행 유닛(Execution Unit)을 포함하여 프로그램에 포함된 명령어들을 수행할 수 있다. 프로세서(111)는 사용자 입력에 따라 대용량 저장 매체(107)에 저장된 파일을 메모리(105)에 로딩하고 로딩된 파일을 처리할 수 있도록 구성된다.
여기서 가상화 난독화 기법이 적용된 실행 파일의 구조를 간단히 살펴보면, 실행 파일은 가상화 난독화 기법이 적용된 가상화 코드와 가상화 코드를 처리하기 위한 가상 프로세서를 포함한다. 가상화 코드와 가상 프로세서는 실행 파일의 모든 섹션(Section) 또는 섹터(Sector)에 적용될 수 있거나 실행 파일을 생성한 프로그래머의 선택에 따라 일부 섹션이나 섹터에 적용될 수 있다.
프로세서(111)는 실행 파일에 저장된 가상화 코드를 명령어로 실행 유닛에 로딩하여 직접 처리할 수 없다. 대신에 실행 파일에 저장되고 가상화 코드를 처리하기 위한 가상 프로세서가 가상화 코드를 프로세서(111)가 처리할 수 있는 명령어로 실시간 변환하여 가상화 코드에 대응하는 기능을 수행한다. 이에 따라 가상화 코드는 실행 파일의 수행 시에 원본 코드로 복원되지 않고 디버거 등을 통해서도 용이하게 가상화 코드나 가상 프로세서를 식별하거나 다수의 난독화 기법의 적용으로 가상화 코드에 따른 제어 흐름을 해석하기가 사실상 불가능하다.
가상 프로세서와 가상화 코드는 가상화 난독화 기법을 적용하는 상용 소프트웨어 툴에 따라 다양한 형태와 구조를 취할 수 있다.
도 2를 통해 대표적인 가상화 코드와 가상 프로세서의 구조를 살펴보면, 가상화 코드는 일련의 가상화 명령어로 구성된다. 그리고 가상화 코드는 실행 파일 상의 임의의 위치(주소) 영역에 저장되어 있다. 가상화 명령어는 1 바이트 또는 2 바이트로 구성되고 각각의 가상화 명령어는 특정 지정된 기능을 수행할 수 있다.
가상 프로세서는 가상화 코드의 가상화 명령어를 순차적으로 읽어 들이고 읽어 들인 가상화 명령어에 대응하는 기능을 하드웨어 블록도의 프로세서(111)상에 직접 수행할 수 있도록 구성된다.
대표적으로 가상 프로세서는 디스패치(dispatch) 루프 코드, 핸들러 테이블, 복수의 핸들러 코드를 포함한다. 디스패치 루프 코드는 가상화 명령어를 하나씩 읽어 들이고 대응하는 핸들러 코드를 수행할 수 있도록 한다. 핸들러 테이블은 핸들러 코드의 시작 주소를 저장하고 있다. 핸들러 테이블의 특정 주소에 저장되어 있는 시작 주소를 통해 디스패치 루프 코드는 특정 핸들러 코드를 호출할 수 있도록 구성된다. 핸들러 코드는 가상화 명령어에 대응하는 기능을 수행하는 코드이다. 핸들러 코드는 프로세서(111)의 실행 유닛에서 수행되는 명령어들로 구성되고 프로세서(111)상에서 핸들러 코드를 수행함으로써 가상화 명령어에 대응하는 기능을 프로세서(111)가 수행한다.
이와 같이 가상화 난독화 기법에 적용되는 구성 요소 들은 가상화 코드, 가상 프로세서의 디스패치 루프 코드, 핸들러 테이블 및 복수의 핸들러 코드를 포함한다. 이러한 구성 요소들은 가상화 난독화 기법을 적용한 상용 소프트웨어 툴의 대표적인 구성 요소들이고, 예를 들어 더미다(Themida v2.1.8)의 구성 요소들일 수 있다. 다른 상용 툴 역시 유사한 이름이나 형태로 구성된다.
가상화 난독화 기법에 적용되는 구성 요소들은 실행 파일에 내장되고 실행 파일 내에 산재하며 점프(jump)나 부가적인 연산 적용으로 그 구성 요소를 용이하게 식별하거나 추출할 수 없어 문제가 발생한다.
이상과 같은 분석 장치(100)는 예를 들어 개인용 PC, 서버에 접속할 수 있는 터미널, 워크 스테이션 또는 복수의 터미널에 연결될 수 있는 분석 서버 등일 수 있다.
도 3은 가상화 난독화 기법이 적용된 실행 파일 분석 방법의 예시적인 제어 흐름을 도시한 도면이다. 도 3의 제어 흐름은 도 2의 예시적인 하드웨어 블록도의 분석 장치(100)상에서 수행될 수 있고 바람직하게는 대용량 저장 매체(107)에 저장된 분석 프로그램 등을 프로세서(111)가 로딩하여 수행함으로써 이루어질 수 있다. 본 발명에 따른 제어 흐름은 바람직하게 디버거와 같은 실시간 분석을 이용하지 않고 이미 생성된 로그 데이터를 활용하여 분석하는 정적 분석을 이용한다.
먼저 단계 S101 이전에, 분석 장치(100)를 이용하는 사용자가 분석 프로그램 중 하나인 동적 에뮬레이터(emulator)를 입력 인터페이스(101)를 통해 선택함으로써 본 제어 흐름이 시작(S100)한다.
이후 단계 S101에서, 분석 장치(100)는 동적 에뮬레이터에서 분석 대상 파일인 실행 파일을 입력 인터페이스(101)를 통한 사용자 입력으로 로딩한다. 그리고 분석 장치(100)는 동적 에뮬레이터를 이용하여 실행 파일을 실행시킨다. 이후 분석 장치(100)는 실행에 따른 모든 명령어를 포함하고 실행 순서에 따라 모든 명령어를 출력 인터페이스(103) 등을 통해 표현할 수 있는 로그 데이터(이하 '제 1 로그 데이터'라 한다)를 생성하고 메모리(105)나 대용량 저장 매체(107)에 기록한다. 이러한 제 1 로그 데이터는 프로세서(111)에서 수행되는 명령어와 명령어의 주소에 관련된 정보를 모두 포함하고 실행 파일의 수행에 따른 실행 순서에 따라 명령어들이 순차적으로 기록된 데이터이다.
동적 에뮬레이터는 예를 들어 리눅스 등에서 사용될 수 있고 동적 트레이싱(tracing)을 적용할 수 있도록 구성되고 바람직하게는 가상화 소프트웨어인 'QEMU'일 수 있다.
제 1 로그 데이터는 적어도 디스패치 루프(일명 '메인 핸들러'라고도 한다, 이하에서는 혼용하여 사용하도록 한다)의 명령어들과 주소, 핸들러 코드의 명령어들과 주소들을 실행 순서에 따라 포함하고 있다. 따라서 제 1 로그 데이터에는 디스패치 루프와 핸들러 코드가 실행 순서에 따라 다수 개 존재하고 산재하고 있다. 디버거 등을 통한 실시간 분석에 비해, 기록된 제 1 로그 데이터가 실행 순서에 따라 프로세서(111)에서 이용될 수 있는 모든 명령어들을 포함하여 가상화 난독화 기법에 적용된 구성 요소들을 추출하고 사용자들에게 흐름을 표시하기에는 매우 유리하다.
이후 단계 S103에서, 분석 장치(100)는 구성 요소의 식별과 분석을 위해 기록된 제 1 로그 데이터를 메모리(105) 등에 로딩한다. 이러한 단계 S103은 설계 변형에 따라 생략될 수 있다.
단계 S105에서, 분석 장치(100)는 분석할 실행 파일에 기초하여 생성된 제 1 로그 데이터로(예를 들어 단계 S101에서 기록된 제 1 로그 데이터)부터 가상화 난독화 기법에 적용된 구성 요소를 식별한다.
이러한 구성 요소는 제 1 로그 데이터의 분석을 통해 추출할 수 있다. 구체적으로 구성 요소는 분석 대상인 실행 파일에 포함되는 특정 가상화 명령어에 대응하는 특정 핸들러 코드를 수행 시키기 위해 수행되는 디스패치 루프와 디스패치 루프에 의한 호출로 수행되는 복수의 핸들러 코드를 포함한다. 또한 구성 요소는 가상화 코드와 핸들러 테이블을 더 포함할 수 있다. 이러한 구성 요소는 제 1 로그 데이터에 포함되고 실행 순서에 따라 수행되는 명령어들을 분석함으로써 추출될 수 있다.
단계 S105에서, 디스패치 루프나 복수의 핸들러 코드를 포함하는 구성 요소를 식별(또는 추출)하는 방법을 좀 더 구체적으로 살펴보면, 분석 장치(100)의 프로세서(111)는 제 1 로그 데이터로부터 디스패치 루프의 코드 영역을 먼저 식별한다.
디스패치 루프는 가상화 코드 영역의 1 바이트 또는 2 바이트 등의 가상화 명령어를 순차적으로 하나씩 읽어 들인다. 이후 디스패치 루프는 읽어 들인 가상화 명령어에 여러 연산을 복수 회 수행하여 핸들러 테이블의 주소를 결정하고 결정된 핸들러 테이블의 주소에 대응하는 핸들러 코드가 실행되도록 핸들러 테이블의 해당 주소에 기록된 주소(간접 점프)를 호출하도록 구성된다.
상용 소프트웨어 툴인 더미다를 적용한 임의의 실행 파일에 대한 로그 데이터로 심층 분석한 결과, 더미다를 적용한 실행 파일은 도 4와 같은 가상화 구조로 이루어진 것을 알 수 있었다. 각각의 코드나 디스패치 루프나 핸들러 테이블은 실행 파일의 종류나 생성 시점에 따라서 다른 위치나 다른 크기로 생성될 수 있다.
도 4를 통해서 가상화 구조를 간단히 살펴보면, 디스패치 루프는 가상화 코드에 액세스하여 하나의 가상화 명령어를 읽어 들이고 읽어 들인 가상화 명령어에 대해 연산을 수행하고 연산 결과에 따라 핸들러 테이블을 참조하여 핸들러 코드를 호출하도록 구성된다. 그리고 호출된 핸들러 코드는 프로세서(111)를 통해 가상화 명령어에 대응하는 실질적 기능을 수행하고 수행완료되면 디스패치 루프를 다시 호출(디스패치 루프의 시작 주소)하도록 구성된다. 이후 디스패치 루프는 다시 후속하는 가상화 명령어를 읽어 들이고 동일한 과정을 수행한다.
이와 같이 디스패치 루프는 가상화 코드를 프로세서(111)를 통해 처리하기 위해 반복적으로 수행되고, 수행이 완료된 핸들러 코드는 다시 디스패치 루프를 호출하도록 구성된다.
이러한 분석 결과를 토대로 디스패치 루프의 코드 영역을 식별할 수 있다. 디스패치 루프의 코드 영역은 앞서 살펴본 바와 같이 가상화 코드의 복수의 가상화 명령어를 수행하기 위해 반복적으로 수행되는 특징, 디스패치 루프의 첫 번째 명령어가 가상화 명령어와 관련되어 가상화 명령어를 프로세서(111)의 특정 레지스터에 로딩하는 특징, 디스패치 루프의 마지막 명령어가 특정 영역(핸들러 테이블의 영역)을 통해 결정된 하나의 핸들러 코드로 점프하는 명령어로 구성되는 특징 및 점프된 핸들러 코드는 다시 디스패치 루프의 첫 번째 명령어로 되돌아오는 특징이 있다.
이러한 디스패치 루프의 특징들을 이용하여, 제 1 로그 데이터에서 디스패치 루프의 코드 영역을 식별할 수 있다.
예를 들어 분석 장치(100)는 제 1 로그 데이터의 스캔(scan)을 통해서 디스패치 루프의 첫 번째 명령어와 마지막 명령어를 복 수회 인식할 수 있다. 그리고 분석 장치(100)는 가상화 명령어와 관련된 첫 번째 명령어에 대응하는 주소를 디스패치 루프의 시작 주소로 결정하고 핸들러 코드를 호출하기 위한 마지막 명령어에 대응하는 주소를 디스패치 루프의 종료 주소로 결정하여 디스패치 루프의 코드 영역을 식별할 수 있다.
단계 S105에서, 디스패치 루프의 영역을 식별한 후에 다른 구성 요소는 용이하게 식별할 수 있다.
예를 들어 분석 장치(100)는 제 1 로그 데이터의 모든 디스패치 루프의 코드 영역의 마지막 명령어에서 핸들러 테이블의 코드 영역을 알 수 있고 나아가 실제 호출된 핸들러 코드들의 시작 주소를 알 수 있다. 또한 핸들러 코드의 시작 주소의 명령어의 수행 후에 다시 디스패치 루프의 첫 번째 명령어를 호출하는 핸들러 코드의 명령어로 핸들러 코드의 종료 주소를 알 수 있다. 그리고 모든 디스패치 루프의 첫번째 주소의 명령어로 가상화 코드의 영역을 또한 식별할 수 있다.
이러한 디스패치 루프 외의 다른 구성 요소들은 제 1 로그 데이터를 다시 스캐닝하고 식별된 디스패치 루프의 명령어를 통해 식별될 수 있다.
이후 단계 S107에서, 식별된 구성 요소에 관련된 정보를 사용자가 인식할 수 있도록 구성하여 로그 데이터(이하 '제 2 로그 데이터'라 한다)로 생성한다. 제 2 로그 데이터는 예를 들어 가상화 코드의 영역을 알 수 있도록 하는 시작 주소와 종료 주소를 나타내는 정보, 디스패치 루프의 코드 영역을 알 수 있도록 디스패치 루프의 시작 주소와 종료 주소를 나타내는 정보, 디스패치 루프의 명령어들을 나타내는 정보, 핸들러 코드 각각의 실행 회수를 나타내는 정보, 핸들러 코드 간 실행 순서를 나타내는 정보를 포함한다.
또한 제 2 로그 데이터는 각각의 핸들러 코드의 시작 주소, 핸들러 코드에 포함된 명령어들, 각각의 명령어들의 피연산자, 실행 파일의 수행에서 핸들러 코드가 복수 회 실행된 경우에 핸들러 코드의 실행 순서를 나타내는 정보를 더 포함할 수 있다.
이러한 제 2 로그 데이터는 디스패치 루프와 다른 구성 요소를 제 1 로그 데이터로부터 식별(또는 추출)함으로써 생성될 수 있다. 예를 들어 제 2 로그 데이터는 단계 S105에서 구성 요소의 식별 동안에 동시에 생성될 수 있거나 모든 구성 요소를 단계 S105에서 식별한 후에, 제 1 로그 데이터를 재차 스캐닝함으로써 해당 구성 요소의 정보를 생성할 수도 있다.
예를 들어 제 2 로그 데이터의 실행 회수는 디스패치 루프에서 호출하는 동일한 시작 주소(핸들러 테이블을 경유하여)를 카운팅함으로써 알 수 있고 핸들러 코드 간의 실행 순서는 명령어의 실행 순서에 따라 기록된 제 1 로그 데이터를 스캐닝하여 발견되는 핸들러 코드를 순서대로 나열함으로써 알 수 있다.
이후 단계 S109에서, 분석 장치(100)는 생성된 제 2 로그 데이터를 출력 인터페이스(103)를 통해 출력하거나 대용량 저장 매체(107)에 저장할 수 있다.
도 5와 도 6은 생성되는 제 2 로그 데이터의 예시적인 형태를 도시한 도면이다. 도 5에서 알 수 있는 바와 같이, 제 2 로그 데이터는 가상화 코드의 영역 정보와 디스패치 루프의 영역 정보(① 참조), 디스패치 루프의 명령어들(② 참조), 복수의 핸들러 각각에 대한 영역 정보와 실행 회수(③ 참조) 및 복수의 핸들러 간의 실행 순서(④ 참조)를 포함한다.
도 6은 특정 핸들러 코드에 관련하여 생성되는 제 2 로그 데이터를 도시한 도면이데, 도 6을 통해서 알 수 있는 바와 같이, 핸들러 코드의 시작 주소(① 참조), 명령어들(① 참조), 명령어에서의 피연산자의 타입(메모리, 레지스터, 상수, 주소)이나 값들(② 참조), 그리고 해당 핸들러 코드가 복수 회 실행된 경우에 몇 번째 실행인지를 알 수 있도록 하는 실행 순서 번호(③ 참조, 예를 들어 'H 1-115'에서 '1'이 첫번째 실행을 나타내는 실행 순서 번호임)를 나타내는 정보를 포함한다.
도 5와 도 6에서의 제 2 로그 데이터는 하나의 파일로 저장되거나 상이한 파일로 저장될 수 있다. 또한 도 5와 도 6의 제 2 로그 데이터는 하나의 창(window)을 통해 표시되거나 다른 여러 개의 창을 통해 표시될 수 있다.
도 5와 도 6에서 알 수 있는 바와 같이 본 발명에 따라 생성된 제 2 로그 데이터는 가상화 난독화 기법에 관련된 다양한 정보를 제공할 수 있다. 특히 가상화 난독화 기법에 적용된 구성 요소들을 정적 분석 방법을 통해 실제 실행 파일의 수행 흐름에 따라 식별하고 해당 정보를 표시할 수 있다. 또한 핸들러 코드가 수행된 회수를 제공하여 분석가로 하여금 어떤 핸들러 코드를 먼저 분석해야하는 지를 안내할 수 있고 핸들러 코드 간 제어 흐름을 제공하여 가상화 코드에 대한 분석을 용이하게 한다.
이후 입력 인터페이스(101)를 통한 사용자 입력에 따라 도 3의 본 제어 흐름은 종료(S200)될 수 있다.
도 3에 따른 제어 흐름은 분석 장치(100)의 프로세서(111)상에서 수행되는 하나의 프로그램을 수행함으로써 이루어지거나 복수의 프로그램을 수행함으로써 이루어질 수 있다. 예를 들어 단계 S101은 별도 하나의 프로그램(예를 들어 동적 에뮬레이터) 상에서 이루어지고 나머지 단계 S103 내지 단계 S109는 다른 프로그램(구성 요소를 추출하기 위한 분석 프로그램)을 이용하여 이루어질 수 있다.
도 7은 가상화 난독화 기법이 적용된 실행 파일의 분석을 위한 예시적인 기능 블록도를 도시한 도면이다. 도 7의 기능 블록도는 도 1의 하드웨어 블록도 상에서 수행될 수 있다. 바람직하게는 도 7의 기능 블록도는 도 1의 프로세서(111)에서 수행되고 대용량 저장 매체(107) 등에 저장되어 있는 프로그램 등을 이용하여 구성될 수 있다.
앞선 도 3의 제어 흐름을 통해 실행 파일의 분석에 대해서 상세히 살펴보았으므로 여기서는 간단히 살펴보도록 한다.
도 7에 따른 분석 장치(100)는 에뮬레이션 모듈(151), 구성 요소 식별 모듈(153), 로그 생성 모듈(155)을 포함한다. 분석 장치(100)는 필요에 따라 특정 모듈을 생략할 수 있고 예를 들어 에뮬레이션 모듈(151)은 변형 예에 따라 생략될 수 있다. 여기서 기능 블록의 도면 부호(150번 대 이용)를 하드웨어 블록의 도면 부호와 구별할 수 있도록 부여하였다.
분석 장치(100)의 각 블록에 대해서 간단히 살펴보면, 에뮬레이션 모듈(151)은 사용자 입력에 따라 분석 대상인 실행 파일을 메모리(105)에 로딩하고 실행 파일의 수행에 따라 동적으로 대응하는 모든 명령어들을 실행하고 이후 실행된 모든 명령어를 포함하고 실행 순서에 따라 모든 명령어를 표현할 수 있는 제 1 로그 데이터를 생성하고 기록한다. 실행 파일은 가상화 난독화 기법을 적용하는 상용 소프트웨어 툴인 더미다를 적용하여 생성된 파일일 수 있다.
구성 요소 식별 모듈(153)은 실행 파일에 기초하여 생성된 제 1 로그 데이터로부터 실행 파일에 적용된 가상화 난독화 기법의 구성 요소를 식별한다. 예를 들어 구성 요소 식별 모듈(153)은 디스패치 루프, 복수의 핸들러 코드를 식별하고 나아가 가상화 코드와 핸들러 테이블을 더 식별할 수 있다. 제 1 로그 데이터는 바람직하게는 에뮬레이션 모듈(151)에 의해서 기록된 로그 데이터이다.
구체적으로 구성 요소 식별 모듈(153)은 제 1 로그 데이터를 스캐닝하여 디스패치 코드 영역을 식별한다. 디스패치 코드 영역은 제 1 로그 데이터를 스캐닝을 통해 반복적으로 수행되는 특징과 반복적으로 수행되는 코드 영역에서 가상화 명령어를 로딩하는 첫 번째 명령어와 핸들러 코드를 호출하기 위한 마지막 명령어를 가진다는 특징을 이용하여 디스패치 코드의 첫 번째 명령어와 마지막 명령어를 인식하고 이로부터 디스패치 코드의 시작 주소와 종료 주소를 결정하여 디스패치 코드의 영역을 식별할 수 있다.
또한 구성 요소 식별 모듈(153)은 식별된 디스패치 코드 영역의 명령어(예를 들어 마지막 명령어)를 이용하여 복수의 핸들러 코드 각각을 더 식별할 수 있다. 예를 들어 구성 요소 식별 모듈(153)은 제 1 로그 데이터에서 식별된 다수의 디스패치 코드의 영역의 마지막 명령어를 통해 호출되는 시작 주소(핸들러 테이블을 경유하여)를 인식한다. 나아가 구성 요소 식별 모듈(153)은 인식된 시작 주소 이후의 명령어의 수행에 따라 다시 디스패치 코드의 시작 주소로 호출하는 명령어를 인식하여 핸들러 코드의 시작 주소와 종료 주소를 포함하는 코드 영역을 식별할 수 있다.
로그 생성 모듈(155)은 구성 요소 식별 모듈(153)에서 식별된 구성 요소에 관련된 각종 정보를 사용자가 인식할 수 있도록 제 2 로그 데이터로 생성한다. 로그 생성 모듈(155)은 예를 들어 구성 요소에 관련된 영역 정보나 핸들러 코드의 실행 회수나 핸들러 코드 간 실행 순서나 구성 요소의 명령어들을 알 수 있도록 출력 인터페이스(103)를 통해 출력하거나 대용량 저장 매체(107)에 저장할 수 있다.
도 7의 기능 블록들은 프로세서에서 수행될 수 있는 프로그램으로 구성될 수 있고 각각의 블록들이 별도의 프로그램이거나 하나의 프로그램에 통합되거나 복수의 프로그램에 통합될 수 있다. 예를 들어 에뮬레이션 모듈(151)은 하나의 프로그램(예를 들어 동적 에뮬레이터)으로 구성되고 구성 요소 식별 모듈(153)과 로그 생성 모듈(155)은 별도의 프로그램으로 구성될 수 있다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니다.
100 : 분석 장치
101 : 입력 인터페이스 103 : 출력 인터페이스
105 : 메모리 107 : 대용량 저장 매체
109 : 시스템 버스/제어 버스 111 : 프로세서
151 : 에뮬레이션 모듈 153 : 구성 요소 식별 모듈
155 : 로그 생성 모듈

Claims (12)

  1. 가상화 난독화 기법이 적용된 실행 파일의 분석 방법으로서,
    (a) 동적 에뮬레이터(emulator)에 상기 실행 파일을 로딩하고 상기 동적 에뮬레이터에서 실행된 모든 명령어를 포함하고 실행 순서에 따라 상기 모든 명령어를 표현할 수 있는 제 1 로그 데이터를 생성하고 기록하는 단계;
    (b) 상기 실행 파일에 기초하여 생성된 상기 제 1 로그 데이터로부터 상기 가상화 난독화 기법에 적용된 구성 요소를 식별하는 단계; 및
    (c) 식별된 구성 요소와 관련된 정보를 인식할 수 있는 제 2 로그 데이터를 생성하는 단계를 포함하고,
    상기 가상화 난독화 기법에 적용된 구성 요소는 상기 실행 파일에 포함되는 가상화 명령어에 대응하는 핸들러 코드를 수행시키기 위한 디스패치 루프와 상기 디스패치 루프에 의해서 수행되는 복수의 핸들러 코드를 포함하고,
    상기 단계 (b)는,
    (b-1) 상기 디스패치 루프의 코드 영역을 식별하는 단계; 및
    (b-2) 상기 단계 (b-1)에서 식별된 상기 디스패치 루프의 코드 영역의 명령어를 이용하여 복수의 핸들러 코드의 영역을 식별하는 단계를 포함하고,
    상기 단계 (b-1)은,
    가상화 명령어에 관련된 제 1 명령어와 상기 가상화 명령어에 대응하는 핸들러 코드를 호출하기 위한 제 2 명령어를 인식하는 단계; 및
    인식된 제 1 명령어와 제 2 명령어의 위치로부터 디스패치 루프의 시작 주소와 종료 주소를 결정하는 단계를 포함하는,
    실행 파일의 분석 방법.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 실행 파일은 상용 가상화 난독화 툴(tool)인 더미다(Themida)를 적용하여 생성된 실행 파일인, 실행 파일의 분석 방법.
  5. 삭제
  6. 제1항에 있어서,
    상기 단계 (c)에서 생성된 제 2 로그 데이터는 디스패치 루프의 시작 주소와 종료 주소를 나타내는 정보, 복수의 핸들러 코드 각각의 실행 회수를 나타내는 정보 및 복수의 핸들러 코드 간의 실행 순서를 나타내는 정보를 포함하는,
    실행 파일의 분석 방법.
  7. 제6항에 있어서,
    상기 단계 (c)에서 생성된 제 2 로그 데이터는 핸들러 코드의 시작 주소, 핸들러 코드에 포함된 명령어와 상기 명령어에 포함된 피연산자 및 핸들러 코드의 실행 순서를 나타내는 정보를 더 포함하는,
    실행 파일의 분석 방법.
  8. 가상화 난독화 기법이 적용된 실행 파일의 분석 장치로서,
    상기 실행 파일을 로딩하고 동적으로 실행된 모든 명령어를 포함하여 실행 순서에 따라 상기 모든 명령어를 표현할 수 있는 제 1 로그 데이터를 생성하고 기록하는 에뮬레이션 모듈;
    상기 실행 파일에 기초하여 생성된 상기 제 1 로그 데이터로부터 상기 가상화 난독화 기법에 적용된 구성 요소를 식별하는 구성 요소 식별 모듈; 및
    식별된 구성 요소와 관련된 정보를 인식할 수 있는 제 2 로그 데이터를 생성하는 로그 생성 모듈을 포함하고,
    상기 가상화 난독화 기법에 적용된 구성 요소는 상기 실행 파일에 포함되는 가상화 명령어에 대응하는 핸들러 코드를 수행시키기 위한 디스패치 루프와 상기 디스패치 루프에 의해서 수행되는 복수의 핸들러 코드를 포함하고,
    상기 구성 요소 식별 모듈은 상기 디스패치 루프의 코드 영역을 식별하고, 식별된 상기 디스패치 루프의 코드 영역의 명령어를 이용하여 복수의 핸들러 코드의 영역을 식별하고,
    상기 구성 요소 식별 모듈은 가상화 명령어에 관련된 제 1 명령어와 상기 가상화 명령어에 대응하는 핸들러 코드를 호출하기 위한 제 2 명령어를 인식하고 인식된 제 1 명령어와 제 2 명령어의 위치로부터 디스패치 루프의 시작 주소와 종료 주소를 결정하여 상기 디스패치 루프의 코드 영역을 식별하는,
    실행 파일의 분석 장치.
  9. 삭제
  10. 삭제
  11. 제8항에 있어서,
    상기 실행 파일은 상용 가상화 난독화 툴인 더미다를 적용하여 생성된 실행 파일인, 실행 파일의 분석 장치.
  12. 삭제
KR1020140006644A 2014-01-20 2014-01-20 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치 KR101583306B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140006644A KR101583306B1 (ko) 2014-01-20 2014-01-20 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140006644A KR101583306B1 (ko) 2014-01-20 2014-01-20 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치

Publications (2)

Publication Number Publication Date
KR20150086682A KR20150086682A (ko) 2015-07-29
KR101583306B1 true KR101583306B1 (ko) 2016-01-07

Family

ID=53876194

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140006644A KR101583306B1 (ko) 2014-01-20 2014-01-20 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치

Country Status (1)

Country Link
KR (1) KR101583306B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102430335B1 (ko) * 2020-10-21 2022-08-08 국방과학연구소 가상화 코드의 난독화를 강화하는 방법 및 그 장치

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
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 (ko) 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 (ko) 벡터량 산출을 이용한 악성코드의 분류 및 진단 방법과 장치
US9710355B2 (en) Selective loading of code elements for code analysis
CN109145534B (zh) 针对软件虚拟机保护的反混淆系统及方法
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 (ja) 未知のバイナリプログラムに対する有効な入力の決定
JP2016149123A (ja) 未知のバイナリモジュールのための有効な入力を決定する方法及び非一時的なコンピュータ可読媒体
KR101583306B1 (ko) 가상화 난독화 기법이 적용된 실행 파일의 분석 방법 및 분석 장치
KR101995176B1 (ko) 프로그램 실행 컨텍스트 기반의 빅데이터를 활용한 역공학 방법 및 시스템
US20070061781A1 (en) Stochastic testing directed by static test automation
CN112861138A (zh) 软件安全性分析方法及分析装置、电子设备及存储介质
JP5952218B2 (ja) 情報処理装置および情報処理方法
US20120144371A1 (en) Using exception information
KR101116770B1 (ko) 악성코드 진단 및 치료 장치 및 그 방법
Lin et al. VMRe: A reverse framework of virtual machine protection packed binaries
KR102421394B1 (ko) 하드웨어와 소프트웨어 기반 트레이싱을 이용한 악성코드 탐지 장치 및 방법
Jenke et al. Towards Generic Malware Unpacking: A Comprehensive Study on the Unpacking Behavior of Malicious Run-Time Packers
US11886589B2 (en) Process wrapping method for evading anti-analysis of native codes, recording medium and device for performing the method
CN109472133A (zh) 一种沙箱监控方法和装置
US10108528B2 (en) High-performance processor instruction tracing
JP6642114B2 (ja) 未知のバイナリプログラムに対する有効入力シーケンスの判定

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