[논문 리뷰] ASTANA: Practical String Deobfuscation for Android Applications Using Program Slicing
ASTANA는 악성코드 및 프라이빗 개발자가 사용하는 문자열 오브스컬피케이션을 고려해 설계된 실용적인 Android 애플리케이션용 문자열 탈복호화 도구이다. 이 도구는 경량적이고 낙관적인 프로그램 슬라이싱 기법을 사용해 탈복호화 논리를 추출하고 실행함으로써, 복호화 기법에 대한 사전 지식 없이도 원래의 문자열 리터럴을 복원한다. 100개의 실제 금융 애플리케이션을 대상으로 평가한 결과, 복잡한 제어 흐름 오브스컬피케이션 조건에서도 문자열을 성공적으로 탈복호화하였다.
Software obfuscation is widely used by Android developers to protect the source code of their applications against adversarial reverse-engineering efforts. A specific type of obfuscation, string obfuscation, transforms the content of all string literals in the source code to non-interpretable text and inserts logic to deobfuscate these string literals at runtime. In this work, we demonstrate that string obfuscation is easily reversible. We present ASTANA, a practical tool for Android applications to recovers the human-readable content from obfuscated string literals. ASTANA makes minimal assumptions about the obfuscation logic or application structure. The key idea is to execute the deobfuscation logic for a specific (obfuscated) string literal, which yields the original string value. To obtain the relevant deobfuscation logic, we present a lightweight and optimistic algorithm, based on program slicing techniques. By an experimental evaluation with 100 popular real-world financial applications, we demonstrate the practicality of ASTANA. We verify the correctness of our deobfuscation tool and provide insights in the behaviour of string obfuscators applied by the developers of the evaluated Android applications.
연구 동기 및 목표
- Android 애플리케이션에서의 역공학 위협 증가, 특히 악성코드 및 기업 개발자가 사용하는 문자열 오브스컬피케이션에 대응하기 위해.
- 기존 탈복호화 도구들이 제어 흐름 오브스컬피케이션 조건에서 실패하거나 오브스컬피케이터에 대한 상세한 지식이 필요로 하는 한계를 극복하기 위해.
- 사전에 오브스컬피케이션 논리에 대한 가정 없이도 다양한 Android 애플리케이션에서 작동하는 일반적이고 경량적이며 실용적인 탈복호화 솔루션을 개발하기 위해.
- 복잡한 제어 흐름 변환 조건이 존재하더라도 정적 분석과 프로그램 슬라이싱을 통해 문자열 오브스컬피케이션을 뒤집는 것이 가능함을 입증하기 위해.
제안 방법
- ASTANA는 문자열 오브스컬피케이션의 일반적인 패턴을 탐지함으로써 오브스컬피케이션된 문자열 리터럴을 식별한다. 예를 들어, 사람이 읽을 수 없는 문자열 뒤에 복호화 호출이 오는 경우를 대상으로 한다.
- 특정 문자열 리터럴의 복호화에 영향을 주는 모든 문장을 추출하기 위해 경량적이고 낙관적인 역방향 프로그램 슬라이싱 알고리즘을 적용한다.
- 슬라이싱 과정은 오브스컬피케이션된 문자열에서 최종 복호화된 출력으로 이르는 데이터 의존성에 집중함으로써, 최소한의 실행 가능한 코드 조각을 추출할 수 있도록 한다.
- 추출된 탈복호화 논리는 제어된 환경에서 실행되어 원래의 사람이 읽을 수 있는 문자열 값을 복원한다.
- 제어 흐름의 구조가 아닌 데이터 흐름에 초점을 맞추므로, 제어 흐름 오브스컬피케이션에 강건한 방식으로 설계되어 있다.
- ASTANA는 런타임 실행이나 런타임 인스트루멘테이션 없이도 정적 분석을 통해 슬라이스를 생성한다.
실험 결과
연구 질문
- RQ1제어 흐름이 중단적으로 수정된 경우에도 정적 분석과 프로그램 슬라이싱을 통해 Android 애플리케이션의 문자열 오브스컬피케이션을 효과적으로 뒤집을 수 있는가?
- RQ2경량적이고 낙관적인 프로그램 슬라이싱 접근법이 오브스컬피케이션된 Android 애플리케이션에서 실행 가능한 탈복호화 논리를 얼마나 효과적으로 추출할 수 있는가?
- RQ3ASTANA가 오브스컬피케이션 기법에 대한 사전 지식 없이도 실제 Android 애플리케이션의 문자열을 얼마나 잘 탈복호화할 수 있는가?
- RQ4기존의 히우리스틱 기반 또는 동적 분석에 의존하는 탈복호화 도구와 비교해 ASTANA는 정확도와 강건성 면에서 얼마나 뛰어나게 작동하는가?
주요 결과
- ASTANA는 100개의 실제 금융 애플리케이션에서 문자열 리터럴을 성공적으로 탈복호화하여 실제 시나리오에서의 실용성을 입증하였다.
- 높은 탈복호화 정확도를 달성하여, 제어 흐름 오브스컬피케이션 조건이 적용된 경우에도 기존 많은 도구들이 실패하는 상황에서도 원래의 문자열을 복원할 수 있었다.
- 경량적이고 낙관적인 슬라이싱 알고리즘이 전체 프로그램 의존성 그래프를 구축할 필요 없이도 효율적으로 탈복호화 논리를 추출할 수 있도록 하였다.
- 상용 도구인 ProGuard 및 Allatori에서 사용하는 다양한 오브스컬피케이션 패턴에 대해서도 이 접근법이 강건하게 작동함을 입증하였다.
- 평가 결과, 오브스컬피케이션은 최소한의 가정으로 쉽게 뒤집을 수 있음을 확인하였으며, 이는 오브스컬피케이션이 강력한 보호 조치를 제공한다는 일반적인 믿음을 도전할 수 있음을 시사한다.
- ASTANA의 정적 분석 기반 접근법은 런타임 실행이 필요 없어 동적 대안 대비 더 스케일러블하고 실용적인 솔루션이 되었다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.