Page 14 - KAIST GSIS 2023 Vol.10
P. 14
02 KAIST 정보보호대학원 김수민 박사 과정, 김형석 박사 과정 및 차상길 교수로 구성
된 연구팀은 확률적 분석을 이용한 새로운 함수 식별 기법 도구인 FunProbe를 개발
하였다. FunProbe는 바이너리 코드 분석 및 역공학 등에 다양하게 활용될 수 있으며,
그 우수성을 인정받아 세계 최고 권위 소프트웨어 공학 학술대회인 The ACM Joint
European Software Engineering Conference and Symposium on the Founda-
FunProbe: tions of Software Engineering (ESEC/FSE) 2023에 채택되었다.
Probing Functions 바이너리 코드 분석에서 함수 식별 문제란 심볼이 없는 바이너리 코드에서 각각의
함수가 시작하는 주소를 찾아내는 문제를 말한다. 바이너리 코드에서 함수를 가능한
from Binary 정확하고, 전부 찾을 수 있어야 함수를 기반으로 하는 다양한 분석 기법의 성능이 더
Code through 욱 정확해지기 때문에 함수 식별 문제를 해결하는 것은 중요한 문제이다. 함수 식별
문제를 위한 기존의 접근 방식으로는 함수 식별 규칙을 이용하는 방법과, 머신 러닝
Probabilistic 기술을 기반으로 하는 방식이 있다. 하지만 정확성과 일반성, 효율성과 설명 가능성
을 모두 동시에 만족하는 방식은 지금까지 존재하지 않았다.
Analysis
본 연구는 함수 식별 문제에 확률적인 분석 방법을 적용하는 아이디어를 기반으로
진행되었다. 기존에 사용되던 함수 식별 규칙들은 언제나 옳다고 확신할 수 없는 불
확실성을 가지고 있는데, 이를 조건부 확률로 표현하여 베이지안 네트워크 (Bayes-
ian Network)를 구축하였다. 만들어진 베이지안 네트워크에 대해서 신뢰 전파 (Be-
lief Propagation) 알고리즘을 적용하면 각각의 주소가 함수일 확률을 계산할 수 있
고, 함수일 확률이 0.5보다 크면 함수라고 판단하게 된다. 본 연구는 이러한 기술을
FunProbe라는 도구를 통해 구현하였다.
본 연구에서는 5개의 최신 함수 식별 도구에 대해 FunProbe의 성능을 비교하는 실
험을 진행하였다. 실험을 위해 6개의 자주 사용되는 CPU 아키텍처를 위한 19,872개
의 바이너리로 구성된 데이터 셋을 구축하였다. FunProbe는 5개의 최신 도구들보다
더 정확하고, 또한 평균 6초라는 짧은 시간 안에 1개의 바이너리 프로그램으로부터
함수를 식별할 수 있다. 특히, GPU를 사용한 최신의 딥러닝 기반 기술인 XDA 보다도
6배 빠른 효율성을 보여주었다.
FunProbe의 구조적 개요
14