DOI QR코드

DOI QR Code

Code Automatic Analysis Technique for Virtualization-based Obfuscation and Deobfuscation

가상화 기반 난독화 및 역난독화를 위한 코드 자동 분석 기술

  • Received : 2018.12.04
  • Accepted : 2018.12.15
  • Published : 2018.12.29

Abstract

Code obfuscation is a technology that makes programs difficult to understand for the purpose of interpreting programs or preventing forgery or tampering. Inverse reading is a technology that analyzes the meaning of origin through reverse engineering technology by receiving obfuscated programs as input. This paper is an analysis of obfuscation and reverse-toxicization technologies for binary code in a virtualized-based environment. Based on VMAttack, a detailed analysis of static code analysis, dynamic code analysis, and optimization techniques were analyzed specifically for obfuscation and reverse-dipidization techniques before obfuscating and reverse-dipulation techniques. Through this thesis, we expect to be able to carry out various research on virtualization and obfuscation. In particular, it is expected that research from stack-based virtual machines can be attempted by adding capabilities to enable them to run on register-based virtual machines.

코드 난독화는 프로그램을 해석하거나 위조 또는 변조 방지를 목적으로 프로그램을 쉽게 이해할 수 없도록하는 기술이다. 역난독화는 난독화된 프로그램을 입력으로 받아 원 소스의 의미를 역공학 기술을 통해 분석하는 기술이다. 본 논문은 가상화 기반 환경에서 바이너리 코드에 대한 난독화 및 역난독화 기술에 대한 분석 연구이다. VMAttack를 기반으로 정적 코드분석, 동적 코드분석, 최적화 기법에 대한 구체적인 분석을 통해 난독화 및 역난독화 기술을 구체적으로 분석한 후 실레 바이너리 코드에 대해 난독화와 역난독화 기술을 실험하였다. 본 논문를 통하여 다양한 가상화, 난독화에 대한 연구를 진행할 수 있을 것으로 기대된다. 특히, 스택-기반 가상 머신에서 연구한 것을 레지스터-기반 가상 머신에서 실행될 수 있게끔 기능을 추가하여 연구를 시도해볼 수 있을 것이라 기대된다.

Keywords

JBJTBH_2018_v11n6_724_f0001.png 이미지

그림 1. 전체 시스템 구조 Fig.1 Overal System Structure

JBJTBH_2018_v11n6_724_f0002.png 이미지

그림 2. 내부 코드 구조 Fig. 2. Internal Code Structure

JBJTBH_2018_v11n6_724_f0003.png 이미지

그림 3. API를 숨긴 IAT구조 Fig. 3. IAT Structure with Hidden API

JBJTBH_2018_v11n6_724_f0004.png 이미지

그림 4. 핸들러 주소 테이블 Fig. 4. Handler Address Table

JBJTBH_2018_v11n6_724_f0005.png 이미지

그림 5. VMAttack의 구조 Fig. 5.VM Attack Structure

JBJTBH_2018_v11n6_724_f0006.png 이미지

그림 6. 클러스터링 알고리즘 Fig. 6. Clustering Algorithm

JBJTBH_2018_v11n6_724_f0007.png 이미지

그림 7. 동적 분할 알고리즘 Fig. 7. Dynamic Slicing Algorithm

JBJTBH_2018_v11n6_724_f0008.png 이미지

그림 8. static_deobfuscate.py의 소스 코드(1) Fig. 8. static_deobfusccater.py Source Code(1)

JBJTBH_2018_v11n6_724_f0009.png 이미지

그림 9. static_deobfuscate.py의 소스 코드(2) Fig. 9. static_deobfusccater.py Source Code(2)

JBJTBH_2018_v11n6_724_f0010.png 이미지

그림 10. static_deobfuscate.py의 소스 코드(3) Fig. 10. static_deobfusccater.py Source Code(3)

JBJTBH_2018_v11n6_724_f0011.png 이미지

그림 11. static_deobfuscate.py의 소스 코드(4) Fig. 11. static_deobfusccater.py Source Code(4)

JBJTBH_2018_v11n6_724_f0012.png 이미지

그림 12. static_deobfuscate.py의 소스 코드(5) Fig. 12. static_deobfusccater.py Source Code(5)

JBJTBH_2018_v11n6_724_f0013.png 이미지

그림 13. dynamic_deobfuscate.py의 소스 코드(1) Fig. 13. dynamic_deobfuscate.py의 Source Code(1)

JBJTBH_2018_v11n6_724_f0014.png 이미지

그림 14. dynamic_deobfuscate.py의 소스 코드 Fig. 14. dynamic_deobfuscate.py의 Source Code(2)

JBJTBH_2018_v11n6_724_f0015.png 이미지

그림 15. dynamic_deobfuscate.py의 소스 코드(2) Fig. 15. dynamic_deobfuscate.py의 Source Code(2)

JBJTBH_2018_v11n6_724_f0016.png 이미지

그림 16. dynamic_deobfuscate.py의 소스 코드(3) Fig. 16. dynamic_deobfuscate.py의 Source Code(3)

References

  1. Johannes Kinder, "Towards static analysis of virtualization obfuscated binaries," In 2012 19th Working Conference on Reverse Engineering. IEEE, pp.61-70, 2012
  2. Jasvir Nagra and Christian Collberg, "Surreptitious Software: Obfuscation, Watermarking, and Tamper proofing for Software Protection," Pearson Education, 2009.
  3. Rolf Rolles, "Unpacking Virtualization Obfuscators," In Proceedings of the 3rd USENIX Conference on Offensive Technologies(WOOT'09), USENIX, 2009.
  4. Monirul I. Sharif, Andrea Lanzi, Jonathon T. Giffin, and Wenke Lee, "Automatic Reverse Engineering of Malware Emulators," In 30th IEEE Symposium on Security and Privacy (S&P 2009), May 2009
  5. Hiralal Agrawal and Joseph R Horgan, "Dynamic program slicing," In ACM SIGPlan Notices, Vol. 25. ACM, pp.246-256, 2009.
  6. Bertrand Anckaert, Mariusz Jakubowski, and Ramarathnam Venkatesan, "Proteus: virtualization for diversified tamperresistance," In Proceedings of the ACM workshop on Digital rights management. ACM, pp.47-58, 2007.
  7. Choi Do-Hyeon, Jung Oh Park, ' A Study on Security Authentication Vector Generation of Virtualized Internal Environment using Machine Learning Algorithm', The Journal of The Institute of Internet, Broadcasting and Communication VOL. 16 No. 6, 2016