서지주요정보
가상화 기법으로 난독화된 실행파일에서의 함수 구조 동적 복원 = Dynamic reconstruction of function structure in virtualization-obfuscated binary executables
서명 / 저자 가상화 기법으로 난독화된 실행파일에서의 함수 구조 동적 복원 = Dynamic reconstruction of function structure in virtualization-obfuscated binary executables / 최진길.
발행사항 [대전 : 한국과학기술원, 2015].
Online Access 원문보기 원문인쇄

소장정보

등록번호

8028306

소장위치/청구기호

학술문화관(문화관) 보존서고

MCS 15086

휴대폰 전송

도서상태

이용가능(대출불가)

사유안내

반납예정일

리뷰정보

초록정보

Obfuscation is a method to modify a code in a way that hides its purpose from human readers. It is adopted in some commercial software to protect a secret algorithm from being reverse engineered, or a license checking code from being tampered. Futhermore, malware writers obfuscate their codes to evade signature-based anti-virus softwares and to conceal their details from malware analysts. Virtualization-obfuscation is one of the techniques that resist both static and dynamic program analyses. In virtualization-obfuscation, the original code is replaced by bytecode instructions of an arbitrary architecture. An interpreter is embedded in an executable to execute the bytecodes. Static analysis reveals only the interpreter code, and dynamic analysis has to deal with huge amount of bytecode interpretation traces. Identifying the interpreter code is the first crucial step to deobfuscate virtualization-obfuscated executables. Prior researches take dynamic approaches to detect the decode-dispatch loop of the interpreter. However, recent interpreters have the threaded structure instead of loop. In this thesis, we show the interpreter code can be identified by grouping basic blocks into functions. We present an algorithm that iteratively merges basic blocks contained in the same function from the dynamic control flow graph (DCFG) and identifies the behavior of function invocations in the execution path. The resulting graph becomes more readable since the functions are reconstructed and isolated. A trace of function call is replaced with the single edge tagged with the function name. The reduced graph abstracts the whole execution, so the analysist can easily discover the interpreter code and library function calls in the DCFG. We expect to apply this technique to the bytecode program and other obfuscation techniques such as packing.

난독화란 사람이 코드를 쉽게 이해할 수 없도록 코드를 복잡하게 하는 것이다. 난독화는 고유의 알고리즘을 역공학으로부터 보호하려 하거나 소프트웨어 라이센스를 검사하는 코드를 우회하려는 것을 방지하는 데 사용된다. 뿐만 아니라 시그니처 기반의 안티바이러스 소프트웨어를 피하거나 분석자가 세부 정보를 알기 어렵게 하기 위해 악성 코드에도 난독화가 적용된다. 가상화 기반의 난독화는 정적 및 동적 프로그램 분석 모두에 저항하는 기법으로, 원본 코드가 임의의 아키텍처로 된 바이트코드로 대체된다. 바이트코드를 실행하기 위해 실행 파일에 인터프리터가 내장된다. 정적 분석으로는 인터프리터 코드만 발견되고 동적 분석으로는 방대한 양의 바이트코드 실행 과정에 대처해야 한다. 가상화 기반의 난독화가 적용된 실행 파일에서 난독화를 해제하려면 먼저 인터프리터 코드를 발견하는 것이 중요하다. 기존 연구들은 동적 분석으로 인터프리터의 디코드--디스패치 루프를 감지한다. 그러나 최근 인터프리터들은 루프가 아니라 스레디드 구조를 가진다. 본 논문은 기본 블록들을 묶어 함수를 만듦으로써 인터프리터 코드를 찾을 수 있다는 것을 보인다. 동적 제어 흐름 그래프(DCFG)로부터 같은 함수에 속하는 기본 블록들을 반복적으로 병합하고, 실행 경로에서 함수 호출 과정을 발견하는 알고리즘을 제시한다. 함수들이 복원되고 DCFG에서 분리됨에 따라 그래프를 더 쉽게 이해할 수 있다. 함수 호출 과정은 함수 이름을 태그로 붙인 간선 하나로 대체된다. 축약된 그래프는 실행 과정 전체를 요약하여, 분석자가 인터프리터 코드와 라이브러리 함수 호출들을 DCFG에서 쉽게 찾을 수 있도록 해준다. 이 분석 기법을 바이트코드 프로그램과 패킹과 같은 다른 난독화 기법들에도 적용해 보려고 한다.

서지기타정보

서지기타정보
청구기호 {MCS 15086
형태사항 iv, 39 p. : 삽화 ; 30 cm
언어 한국어
일반주기 저자명의 영문표기 : Jin Gil Choi
지도교수의 한글표기 : 한태숙
지도교수의 영문표기 : Tai Sook Han
부록 수록
학위논문 학위논문(석사) - 한국과학기술원 : 전산학부,
서지주기 참고문헌 : p.
QR CODE

책소개

전체보기

목차

전체보기

이 주제의 인기대출도서