[논문 리뷰] Translingual Obfuscation
이 논문은 C 프로그램을 Prolog으로 번역하여 Prolog의 고유 기능인 통합(unification)과 백트래킹(backtracking)을 활용해 데이터 레이아웃과 제어 흐름을 은폐하는 새로운 소프트웨어 보호 기법인 전언어 은폐(translingual obfuscation)를 소개한다. 저자들은 이 기법을 도구 Babel에 구현하여 상업적 도구들과 비교해도 성능 오버헤드가 미미한 효과적이고 침투성이 높은 은폐를 입증한다.
Program obfuscation is an important software protection technique that prevents attackers from revealing the programming logic and design of the software. We introduce translingual obfuscation, a new software obfuscation scheme which makes programs obscure by "misusing" the unique features of certain programming languages. Translingual obfuscation translates part of a program from its original language to another language which has a different programming paradigm and execution model, thus increasing program complexity and impeding reverse engineering. In this paper, we investigate the feasibility and effectiveness of translingual obfuscation with Prolog, a logic programming language. We implement translingual obfuscation in a tool called BABEL, which can selectively translate C functions into Prolog predicates. By leveraging two important features of the Prolog language, i.e., unification and backtracking, BABEL obfuscates both the data layout and control flow of C programs, making them much more difficult to reverse engineer. Our experiments show that BABEL provides effective and stealthy software obfuscation, while the cost is only modest compared to one of the most popular commercial obfuscators on the market. With BABEL, we verified the feasibility of translingual obfuscation, which we consider to be a promising new direction for software obfuscation.
연구 동기 및 목표
- 역공학 분석과 복원 공격에 저항하는 강력한 소프트웨어 은폐 기법에 대한 증가하는 수요를 해결하기 위해.
- 한 프로그래밍 패러다임의 내재된 언어 기능을 활용해 다른 언어로 작성된 프로그램을 은폐할 수 있는지 탐색하기 위해.
- 가상화나 복잡한 암호화에 의존하지 않고 언어 번역과 의미론적 은폐 효과를 결합한 실용적인 은폐 방법을 개발하기 위해.
- 최신 역공학 분석 도구와 바이너리 차이 분석 도구에 대한 전언어 은폐의 내성에 대한 평가를 위해.
- 다양한 패러다임 간 번역을 통한 은폐가 최소한의 성능 비용으로 강력한 보안을 달성할 수 있음을 입증하기 위해.
제안 방법
- Prolog의 논리 프로그래밍 패러다임과 실행 모델을 활용하기 위해 특정 C 함수를 Prolog 술어로 번역하기 위해.
- Prolog의 통합과 백트래킹 메커니즘을 활용해 정적 또는 동적 분석으로서의 분석이 어려운 방식으로 제어 흐름과 데이터 레이아웃을 은폐하기 위해.
- C 메모리 모델의 일부를 유지하면서 Prolog 고유의 의미 체계를 도입하는 '은폐 번역' 기법을 설계하여 하이브리드 실행 모델을 생성하기 위해.
- 프로그램 의미를 유지하면서 C 코드를 선택적으로 Prolog로 번역하는 도구 Babel을 개발하기 위해.
- 기호 실행과 바이너리 차이 분석 도구(BinDiff, CoP)를 사용하여 역공학 분석 및 유사성 탐지에 대한 내성 평가를 수행하기 위해.
- 실행 시간과 바이너리 크기 측면에서 최첨단 상용 은폐 도구와 Babel의 출력 결과를 비교하여 성능 비용 평가를 수행하기 위해.
실험 결과
연구 질문
- RQ1기계어 C 코드를 Prolog과 같은 논리 프로그래밍 언어로 번역하는 것이 역공학 분석의 난이도를 상당히 증가시킬 수 있는가?
- RQ2전언어 은폐가 '내부에서부터'와 '외부에서부터' 분석하는 현대의 복원 공격 기법에 얼마나 잘 저항하는가?
- RQ3BinDiff와 CoP와 같은 바이너리 차이 분석 도구를 회피하는 데 전언어 은폐가 얼마나 효과적인가?
- RQ4기존 상용 은폐 도구들과 비교했을 때 전언어 은폐의 성능 오버헤드는 어느 정도인가?
- RQ5언어 번역과 언어 고유 기능을 조합한 방식이 전통적 방법보다 더 강력한 은폐를 가능하게 하는가?
주요 결과
- Babel은 Prolog의 통합과 백트래킹을 활용해 제어 흐름과 데이터 레이아웃을 변형함으로써 역공학 분석의 복잡성을 상당히 증가시킨다.
- Babel이 생성한 은폐된 바이너리는 BinDiff와 CoP와 같은 최신 바이너리 차이 분석 도구에 의해도 탐지되지 않아 강력한 침투성과 내성성을 보여준다.
- 가상화 기반 은폐를 대상으로 하는 복원 기법(예: 디코딩-디스패치 분석)은 Babel의 전언어 은폐 접근 방식에 대해 근본적인 패러다임 전환으로 인해 효과가 없다.
- Babel이 유도하는 성능 오버헤드는 미미하며 최첨단 상용 은폐 도구와 유사하여 실세계 적용에 실용적이다.
- C 메모리 의미 체계와 Prolog의 논리 실행 모델을 혼합한 하이브리드 실행 모델은 각각의 언어가 단독으로 달성할 수 있는 것보다 더 강력한 은폐 효과를 제공한다.
- 전언어 은폐는 고유한 언어 기능을 은폐에 활용하는 것이 소프트웨어 보호 분야에서 실현 가능하고 유망한 새로운 방향임을 입증한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.