Skip to main content
QUICK REVIEW

[논문 리뷰] Automated Deobfuscation of Android Native Binary Code

Zeliang Kan, Haoyu Wang|arXiv (Cornell University)|2019. 07. 16.
Advanced Malware Detection Techniques참고 문헌 26인용 수 8
한 줄 요약

이 논문은 Obfuscator-LLVM (O-LLVM)로 오브스컬레이트된 안드로이드 네이티브 바이너리 코드를 자동으로 복원하는 최초의 시스템인 DiANa를 제시한다. 정적 타인트 분석과 플로우 민감한 기호 실행을 조합함으로써 DiANa는 높은 정밀도로 원래의 제어 흐름 그래프를 복원하며, 실제 오브스컬레이트된 함수에서 유사도 점수 최대 0.963를 달 đạt한다.

ABSTRACT

With the popularity of Android apps, different techniques have been proposed to enhance app protection. As an effective approach to prevent reverse engineering, obfuscation can be used to serve both benign and malicious purposes. In recent years, more and more sensitive logic or data have been implemented as obfuscated native code because of the limitations of Java bytecode. As a result, native code obfuscation becomes a great obstacle for security analysis to understand the complicated logic. In this paper, we propose DiANa, an automated system to facilitate the deobfuscation of native binary code in Android apps. Specifically, given a binary obfuscated by Obfuscator-LLVM (the most popular native code obfuscator), DiANa is capable of recovering the original Control Flow Graph. To the best of our knowledge, DiANa is the first system that aims to tackle the problem of Android native binary deobfuscation. We have applied DiANa in different scenarios, and the experimental results demonstrate the effectiveness of DiANa based on generic similarity comparison metrics.

연구 동기 및 목표

  • O-LLVM로 보호된 경우를 포함해 안드로이드 네이티브 코드의 자동 복원 도구 부족 문제를 해결한다.
  • ARM 전용 명령어 최적화, 제어 흐름 평탄화, 기호 실행 중 경로 폭발 문제와 같은 과제를 극복한다.
  • 오브스컬레이션된 네이티브 바이너리에서 원래 프로그램 논리를 정확하게 복원하여 보안 분석 및 악성코드 역공학을 지원한다.
  • 원본 코드와 복원된 코드 간 의미적 동치성을 유지하는 확장 가능하고 정밀한 복원 솔루션을 제공한다.

제안 방법

  • 정적 타인트 분석을 적용해 오브스컬레이션된 명령어 간의 의미 수준 정보를 식별하고 전파함으로써 의미 수준에서의 복원을 가능하게 한다.
  • 플로우 민감한 기호 실행을 사용해 복잡한 제어 흐름 구조를 재구성하며, 특히 제어 흐름 평탄화로 손상된 구조에 특화된다.
  • 정적 특성 기반으로 제어 흐름을 잘라내고 핵심 블록을 선택함으로써 분석 대상 시퀀스를 동적으로 조정하여 맥락 상속을 극대화한다.
  • 기호 실행 중 경로 폭발 문제를 줄이면서도 중요한 실행 경로를 유지하기 위해 구성 가능한 상태 저장 메커니즘을 도입한다.
  • 초기 바이너리 디어셈블리에 IDA Pro를 활용하고 기호 실행에는 Angr를 사용하며, 이를 통합된 복원 파이프라인으로 통합한다.
  • 구조적 유사도 지표(예: CFG 유사도)와 입력-출력 비교를 통한 의미적 동치성 테스트를 통해 복원 결과를 검증한다.

실험 결과

연구 질문

  • RQ1O-LLVM로 보호된 안드로이드 네이티브 바이너리에 대해 높은 구조적 정밀도로 자동 복원이 가능할 수 있는가?
  • RQ2타인트 분석과 기호 실행의 조합이 ARM 기반 오브스컬레이션된 네이티브 코드에서 제어 흐름을 얼마나 효과적으로 복원하는가?
  • RQ3DiANa 는 원본 함수와 복원된 함수 간에 의미적 동치성을 어느 정도 유지하는가?
  • RQ4O-LLVM로 오브스컬레이션된 ARM 바이너리 복원 시 주요 과제는 무엇이며, 실무에서 이를 어떻게 완화할 수 있는가?
  • RQ5DiANa 는 다양한 오브스컬레이션 유형(예: CFF, ALL)과 실제 안드로이드 애플리케이션에서 어떻게 성능을 발휘하는가?

주요 결과

  • 제어 흐름 평탄화(CFF) 오브스컬레이션 하에서 "send_magicmsg" 함수에서 제어 흐름 그래프(CFG) 유사도 점수는 0.963, "search_goodnum" 함수에서는 0.939를 기록했다.
  • 모든 O-LLVM 기법을 포함한 더 복잡한 "ALL" 오브스컬레이션 환경에서는 동일한 함수에 대해 유사도 점수 0.962와 0.900를 유지하며 높은 정확도를 확보했다.
  • 1,500개의 입력을 사용한 테스트에서 의미적 동치성이 확인되었으며, 원본 함수와 복원된 함수 간에 동일한 출력이 생성되었다.
  • 콜러 함수 처리 및 상태 손실로 인한 기호 실행의 미세한 일관성 문제에도 불구하고 수동 분석을 통해 의미 체계가 유지됨을 확인했다.
  • 기호 실행 상태를 제한하고 지능적으로 관리함으로써 경로 폭발 문제를 효과적으로 완화하여 정확도를 유지하면서도 효율성을 향상시켰다.
  • 복원된 CFG는 원래 오브스컬레이션된 버전보다 훨씬 더 인간이 이해하기 쉬웠으며, 특히 시스템 호출 시퀀스와 핵심 논리가 명확히 드러났다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.