When a new malware is found, security researchers must first understand the behavior of the malware to prepare countermeasure.
This is a difficult task because malware writers distort the contents of malwares using code obfuscation techniques.
It is getting dfficult to analyze the behavior of a malware because the obfuscation techniques are getting sophisticated and diverse.
One of those advanced obfuscation techniques is virtualization-obfuscation that utilizes virtual machines for obfuscation. Since virtualization totally changes the structure and instruction set of an original program, the binary executable obfuscated with virtualization is extremely difficult to analyze. Furthermore, many variations of virtualization obfuscation are expected to be applied soon.
So it is infeasible to develop reverse engineering techniques applicable to all obfuscation techniques.
Nonetheless, since an obfuscated program inevitably has the same semantics as the original program, monitoring dynamic behaviors of a program will help the analyzers to figure out the inside.
In other word, to disclose the semantics of an obfuscated program, it will be useful to analyze its run trace that is the record of executed instructions and changes of machine states.
In this thesis, we present a dynamic analysis tool, Trudio, which provides functional modules to analyze the structure and semantics of a program based on its run traces.
Moreover, our tool transforms the program into analyzable shape based on the information acquired from the run traces.
We describe our observations on obfuscation techniques and the algorithms that are implemented in Trudio and show that the suggested methods can help analyzing virtualization-obfuscated binary executables and understanding the behavior of programs.
We expect malware analyzers to save time in understanding an obfuscated malware with our tool.
새로운 악성코드가 등장하면 보안 연구가들은 대응책을 마련하기 위해 이들의 동작을 이해해야 한다.
하지만 대부분의 악성코드에는 그 내용을 분석하기 어렵게 만드는 코드 난독화(難讀化) 기법들이 적용되어 이 과정이 매우 까다롭다.
또한 최근에는 악성코드에 적용되는 난독화 기법들이 갈수록 고도화되고 다양해져서 악성코드의 의미를 분석하는 일이 점점 어려워지고 있다.
특히 고도화된 난독화 기법 중 원본 프로그램을 구조가 알려지지 않은 바이트코드로 변형하고 해당 바이트코드를 실행할 수 있는 가상 기계를 탑재하여 실행하도록 하는 가상화를 이용한 난독화 기법은 원본 프로그램의 구조가 완전히 바꾸어 분석이 극도로 어렵게 된다. 게다가 이를 응용한 변종 기법들도 곧 등장할 것으로 예상된다.
따라서 이러한 난독화 기법들에 일일이 대응하는 역공학 기법을 개발하는 것은 사실상 불가능하다.
그럼에도 불구하고, 난독화된 프로그램은 필연적으로 원본 프로그램과 동일한 의미를 가져야 하므로 프로그램의 동적인 동작을 조사하면 분석자가 프로그램의 내부를 파악하는 데 도움이 된다.
즉, 난독화된 프로그램의 의미를 파악할 때 시스템의 상태 변화와 실행된 명령들을 모두 기록한 실행 트레이스를 분석하는 것이 도움이 된다.
본 논문은 분석자가 난독화된 프로그램의 구조와 의미를 파악하는 데 사용할 수 있는 도구들을 제공하고, 더 나아가 실행 트레이스로부터 얻어진 정보를 바탕으로 프로그램을 보다 분석이 용이한 형태로 변형하는 기능을 제공하는 동적 분석 도구인 Trudio를 소개한다.
본 논문은 Trudio에서 구현된 알고리즘과 이 알고리즘들의 착안점을 소개하고 가상화 난독화가 적용된 실행 파일의 동작을 이해하는 데 제안된 기법이 얼마나 효용성을 갖는 지를 보인다.
본 논문에서 제안한 기법들과 개발된 도구를 통해 악성코드 분석자들이 난독화된 악성코드를 이해하기 위한 시간을 절약할 수 있을 것으로 기대된다.