프로그램의 구조와 상수 값을 이용하는 바이너리 실행 파일의 차이점 분석

Analyzing Differences of Binary Executable Files using Program Structure and Constant Values

  • 발행 : 2008.07.15

초록

바이너리 코드의 차이점 분석은 보안 패치와 같은 매우 유사한 두 프로그램 사이의 차이점을 구별해 주는 방법이다. 이전의 연구에서는 분석을 위하여 프로그램의 구조 또는 명령어의 세부 사항만을 각각 이용하였다. 프로그램의 구조를 이용하는 차이점 분석 방법은 제어 흐름의 변화는 잘 탐지해 낼 수 있지만, 버퍼 크기 변화와 같은 상수 값의 변화는 잘 찾아낼 수 없다. 명령어 기반의 차이점 분석 방법은 세부적인 값의 변화는 발견할 수 있으나 명령어 재배치와 같은 컴파일러에 의해 생성되는 불필요한 차이점을 결과로 낸다는 단점이 있다. 이 연구에서는 프로그램 구조를 이용한 비교 분석 방법에 상수 값의 변화를 함께 추적할 수 있는 방법을 제안하고 바이너리 차이점 분석 도구를 구현하였다. 구현된 도구는 윈도 보안 업데이트를 이용하여 평가하였다. 실험 결과 제안된 방법은 구조적인 차이점 분석과 같이 빠른 속도로 구조적인 변화를 찾아낼 뿐 아니라 상수 값의 변화까지 추적할 수 있다는 것을 보였다.

Binary diffing is a method to find differences in similar binary executables such as two different versions of security patches. Previous diffing methods using flow information can detect control flow changes, but they cannot track constant value changes. Biffing methods using assembly instructions can detect constant value changes, but they give false positives which are due to compiling methods such as instruction reordering. We present a binary diffing method and its implementation named SCV which utilizes both structure and value information. SCV summarizes structure and constant value information from disassembled code, and matches the summaries to find differences. By analyzing a Microsoft Windows security patches, we showed that SCV found necessary differences caused by constant value changes which the state-of-the-art binary diffing tool BinDiff failed to find.

키워드

참고문헌

  1. Using SABRE BinDiff v1.6 for Malware analysis. http://www.zynamics.com/content/_documents/bindiff_malware.pdf last accessed 2008.3.21
  2. Using SABRE BinDiff for Code theft detection. http://www.zynamics.com/products/Code%20Theft.pdf last accessed 2008.3.21
  3. Choi, S. and Park, H. and Lim, H and Han, T, "A Static Birthmark of Binary Executables Based on API Call Structure," LECTURE NOTES IN COMPUTER SCIENCE, Vol.4846, p.2, 2007
  4. Sabin, T. 2004. Comparing binaries with graph isomorphisms. unpublished
  5. eEye Digital Security. eEye Diffing Suite. http:// research. eeye.com/html/tools/RT20060801-1.html last accessed 2008.3.21
  6. Flake, H. 2004. Structural comparison of executable objects. Proceedings of DIMVA 2004:Detection of Intrusions and Malware and Vulnerability Assessment
  7. Dullien, T. and Rolles, R. 2005. Graph-based comparison of executable objects. Symposium sur la securite des technologies de l'information et des communications
  8. Zynamics BinDiff. 2007. http://www.zynamics.com/ index.php?page=bindiff last accessed 2008.3.21
  9. Hex-Rays. The IDA Pro disassembler and debugger. http://www.hex-rays.com/idapro/ last accessed 2008.3.21
  10. Koutsofios, E. and North, S.C. 1993. Drawing graphs with dot. AT&T Bell Laboratories, Murray Hill, NJ
  11. GraphViz. Graph vizualization package. AT&T Research
  12. Ferraiolo, J. and Jun, F. and Jackson, D. 2003. Scalable vector graphics (SVG) 1.1 specification. W3C Recommendation 14
  13. Linn, C. and Debray, S. 2003. Obfuscation of executable code to improve resistance to static analysis. 10th ACM Conference of Computer and Communications Security (CCS)