Post

Binary Protection

Binary Protection

우리 손안의 전쟁터: 모바일 바이너리 보호 기술과 우회 전략

PC와 달리 모바일 앱의 바이너리(APK, IPA)는 누구나 쉽게 다운로드하여 자신의 기기에서 실행할 수 있습니다. 바로 그 기기는 루팅이나 탈옥을 통해 완전한 통제권을 가진 공격자의 손에 있을 수 있죠. 이런 적대적인 환경(Hostile Environment) 이야말로 모바일 보안의 가장 큰 숙제입니다.

개발자들은 이 전장과 같은 환경에서 자신의 앱을 보호하기 위해, 바이너리 자체에 여러 겹의 갑옷과 함정을 설치합니다. 이것이 바로 모바일 바이너리 보호 기술입니다. 이 글에서는 모바일 환경에 특화된 보호 기술들과, 우리가 어떻게 이 방어선을 체계적으로 무너뜨리는지 알아보겠습니다.


모바일 환경의 핵심 보호 기술

모바일 앱은 운영체제의 특성과 실행 환경 때문에 PC와는 다른, 더욱 교묘한 보호 기술을 사용합니다.

1. 코드 난독화 (Code Obfuscation)

  • Android (Java/Kotlin Bytecode): 안드로이드 앱은 디컴파일이 비교적 쉬워 난독화가 필수적입니다. ProGuardR8은 클래스, 메서드, 필드 이름을 a, b, c 등으로 축약하여 코드를 읽기 어렵게 만듭니다. 상용 솔루션인 DexGuard는 여기에 더해 문자열 암호화, 제어 흐름 평탄화 등 강력한 기능을 추가합니다.
  • iOS (LLVM Bitcode): iOS는 컴파일러 단에서 난독화를 적용하는 Obfuscator-LLVM과 같은 도구를 사용합니다. 이는 Swift/Objective-C 코드가 컴파일될 때, 기계어 수준에서 제어 흐름을 꼬아버리거나 가짜 코드를 삽입하여 IDA Pro나 Ghidra 같은 강력한 디스어셈블러로도 분석하기 어렵게 만듭니다.

2. 안티 디버깅 & 안티 후킹 (Anti-Debugging & Anti-Hooking)

모바일 분석의 핵심 도구인 디버거나 Frida를 무력화시키는 기술입니다.

  • Android:
    • JDWP 탐지: 자바 디버깅 프로토콜(JDWP)을 이용하는 디버거가 붙어 있는지 시스템 속성을 통해 주기적으로 확인합니다.
    • TracerPid 확인: 리눅스 커널의 특징을 이용해 /proc/self/status 파일의 TracerPid 값을 읽어 자신을 추적하는 프로세스가 있는지 검사합니다. Frida가 붙으면 이 값이 0이 아닌 다른 값으로 바뀝니다.
  • iOS:
    • ptrace 호출: ptrace 시스템 콜에 PT_DENY_ATTACH 플래그를 사용하여 디버거가 자신의 프로세스에 붙는 것을 원천적으로 거부합니다.
    • 탈옥 환경 라이브러리 탐지: Cydia Substrate나 FridaGadget 같은 동적 라이브러리(.dylib, .so)가 자신의 프로세스 메모리에 로드되었는지 확인하여 후킹 시도를 탐지합니다.

3. 무결성 검사 (Integrity Checks)

앱이 리패키징(repackaging)되어 변조되었는지 확인하는 기술입니다.

  • Android: classes.dex 파일의 체크섬(CRC)이나 해시(SHA-1) 값을 계산하여 앱 내에 하드코딩된 원본 값과 비교합니다. 만약 해커가 Smali 코드를 한 줄이라도 수정했다면 이 값이 달라지므로 변조를 탐지할 수 있습니다.
  • iOS: 앱은 배포 시 애플의 서명을 받습니다. _CodeSignature 영역을 확인하여 이 서명이 유효한지, 그리고 앱의 바이너리 코드가 원본과 일치하는지 검사하여 변조를 막습니다.

4. 실행 환경 검사 (Environment Checks)

가장 기본적인 방어선으로, 앱이 위험한 환경에서 실행되는지 확인합니다.

  • 루팅/탈옥 탐지: su 바이너리의 존재 여부(Android), Cydia 관련 파일 및 URL Scheme(iOS) 등을 확인하여 기기가 관리자 권한을 탈취당한 상태인지 검사합니다. 분석 도구들은 대부분 루팅/탈옥 환경에서만 제대로 동작하기 때문에, 이 단계에서 분석 시도를 원천 차단할 수 있습니다.
This post is licensed under CC BY 4.0 by the author.