상세 컨텐츠

본문 제목

안드로이드 AI 애플리케이션을 통한 모델 추출 (1)

ANALYSIS/Vulnerability Analysis

by koharin 2026. 1. 8. 14:53

본문

728x90
반응형

대상 선정

Microsoft사의 Seeing AI 앱은 시각장애인을 위한 앱으로, 17개가 넘는 통화를 대상으로 통화 탐지를 하는 기능을 AI를 통해 제공한다.

통화 탐지를 하는 모델 추출을 진행한다.

 

1. APK(Android Package Kit) 파일 다운로드

https://apkpure.com/ 에서 APK 파일을 다운로드한다.

 

2. APK 파일 unpack

apktool 도구를 이용하여 APK 파일을 디컴파일 및 압축 해제한다.

이를 통해 앱에 필요한 바이너리나 리소스를 확인할 수 있다.

 

일단, MacOS에서 apktool을 설치하기 위해 다음 과정을 진행한다.

brew install apktool

바이너리와 스크립트를 다운로드해서 /usr/local/bin에 위치시키는 방법도 있는데, 이거는 Java SDK가 설치되어 있어야 해서 brew가 관련 dependency도 모두 다운로드해줘서 더 편하다.

apktool를 입력해서 정상적으로 실행되는지 확인한다.

 

XAPK 파일의 경우, 안드로이드 APK 패키지 파일을 위한 완전히 새로운 파일 형식 표준으로, 앱에 필요한 모든 APK 파일 및 obb 파일을 포함한다. 실제 APK 파일의 경우 압축 형태인 XAPK 파일의 root에 위치한다고 한다. 

file 명령어로 확인해볼 수 있듯이, XAPK 파일은 ZIP 압축 파일이다. 따라서 unzip을 통해 압축 해제를 진행한다.

이제 com.microsoft.seeingai.apk를 apktool을 통해 unpack한다.

apktool d com.microsoft.seeingai.apk

unpack된 apk 경로 내부의 smali 코드를 봐본다.

 

3. smali 코드

smali 코드는 DEX 파일을 사람이 이해할 수 있게 한 저수준 언어이다. DEX 파일은 Java/Kotlin 언어가 컴파일되면 생성되는 파일이다. 

smali 코드는 DEX 파일을 disassemble한 어셈블리 언어라고도 할 수 있다.

 

Tensorflow Lite가 경량 디바이스에 적합하여 안드로이드 앱의 추론 엔진으로 많이 사용된다고 한다. 

분석 포스팅 글과 구조는 조금 달라졌지만, 검색 기능을 통해 org.tensorflow.lite 위치를 찾을 수 있었고, 해당 경로에 동일하게 NativeInterpreterWrapper.smali 코드를 확인할 수 있었다.

 

Frida를 통한 후킹 준비

모바일 앱 연구에서는 Frida 위에서 동작하며, Frida 스크립트 번들을 포함하는 Android / iOS 런타임 동적 분석 프레임워크인 Objection 도구가 사용된다고 한다.

다음 명령어를 통해 설치한다.

python3 -m pip install -U objection

이제 앱이 설치된 Android 에뮬레이터 또는 실제 Android 기기를 준비하고, PC에서 프로세스가 인식되도록 한다.

objection --gadget "com.microsoft.seeingai" explore

Objection의 explore 기능은 Frida Gadget이 내장된 앱을 대상으로 objection 의 인터렉티브 분석 세션을 시작하라는 의미이다.

 

다음 글에서는 adb를 통해 안드로이드 앱 프로세스를 인식하고 objection 및 frida 도구를 통해 모델 추출을 진행한다. 

 

Reference

https://altayakkus.substack.com/p/you-wouldnt-download-an-ai

728x90
반응형

관련글 더보기