아래의 논문을 참고하여 작성한 글이다.
요약
AnForA라는 안드로이드 앱 분석 자동화 소프트웨어 도구를 설계/구현/평가하는 논문이다.
아래는 실무에서 해당 AnForA를 적용한다고 했을 때 쓸 것 같은 방법
- 실험 환경에서 실험 대상이 될 앱을 똑같이 설치한다.
- 특정 동작을 자동화 도구로 수행한다.
- 해당 과정에서 앱이 어떤 파일을 생성하고 어디에 저장하는지 확인한다.
- 이렇게 얻은 지식을 실제 사건 기기 분석에 적용한다.
위 과정처럼 증거 생성 과정을 자동화하여 포렌식 아티팩트 규명에 활용하는 듯하다.
주목할 만한 점
- 코드 구현부를 보여준 것은 아니나, 도구 개발에 있어 사용되는 도구를 참고하기 좋아보임.
- 분석 자동화를 블랙박스 방식으로 수행할 수 있는 것을 보여줌(다른 시각이라 제작할 때 해당 방법 차용해도 괜찮을 것 같음).
- 자동으로 문서화되는 파트가 특히 도구 개발 과정에서 참고하기 좋아보임.
특이점
- 실제 사건 현장에서 포렌식을 자동으로 수행하게 해줄 수 있는 도구가 아님. -> 실전 포렌식으로 보조하는 자료 정도.
- 이유: 사후적으로 복원해야 하는 포렌식과 달리, 이 소프트웨어는 앱별 증거 패턴을 분석해주는 용도.
-> 사전 연구 도구로 미리 앱 아티팩트를 분석해두는 용도, 새로운 앱이 계속 나오니까 거기에 대응하기 위한 보조 도구로써 도움되는 느낌.
의견
- 이런 방식의 도구를 개발하는 것도 나쁠 건 없을 것 같고, 참고할 코드가 없다는 게 현실적으로 아쉬운 부분.
- 그러나 도구 사용에 관한 부분을 참고하기 좋아 보이고, 방향성을 보조 도구로 잡을 수도 있겠다는 시각+블랙박스 방식같은 아이디어를 제시해줌.
논문 설명
해당 논문에서는 안드로이드 애플리케이션 분석 자동화 소프트웨어 도구인 AnForA의 설계/구현/평가를 제시한다.
AnForA: 동적 블랙박스 방식 기반
*블랙박스 방식: 앱 내부나 소스 구조를 보지 않고, 사용자가 특정 행위를 했을 때 어떤 데이터가 남는지를 관찰
-> 즉 앱을 실제로 실행시키고 동작을 수행하면서 결과를 확인하는 것.
장점: 코드를 보지 않고 결과만 관찰하기 때문에 암호화나 난독화된 앱도 분석 가능
서론
<특정 애플리케이션에서 생성된 데이터로부터 사용자 활동을 재구성하기 위해 알아야하는 것>
- 애플리케이션에서 어떤 데이터가 생성되는가
- 데이터가 어떻게 인코딩되는가
- 데이터가 장치의 어디에 저장되는가
- 애플리케이션에서 허용된 각 작업에 의해 생성되거나 수정된 데이터는 무엇인가
그러나 앱의 수가 방대하고 끊임없이 증가하고 있기 때문에 위의 지식을 얻는 것에 부담이 됨.
-> 모바일 앱 자동화를 하면 해결됨.
<모바일 앱 자동화 솔루션이 제공해야 하는 것>
- 충실도: 분석 대상 앱과 사용자가 하는 상호작용을 충실하게 재현할 수 있는 능력
- 아티팩트 커버리지: 앱에서 생성/수정된 모든 데이터를 식별하고 장치 저장소에 저장되는 기능
- 아티팩트 정밀도: 앱에서 직간접적으로 생성/수정된 데이터만 포함할 수 있는 기능
- 효과성: 사용자 작업과 해당 작업으로 생성/수정된 데이터를 연관시키는 능력
- 반복성: 동일한 실험에 동일한 결과를 얻을 가능성을 제공할 수 있는 능력
- 일반성: 가능한 많은 안드로이드 기기에서 모바일 앱을 분석할 수 있는 능력
AnForA 시스템
1) 분석 방법론
분석 대상 앱에서 허용하는 작업(예시: 문자 메시지, 사진 보내기 등..) 중 하나에 초점을 맞춰 실험하고, 실험 중과 실험 후 장치 저장소를 검사하여 실험 중에 생성된 데이터를 식별한다. 그리고 생성된 데이터를 분석하여 의미와 맥락을 파악한다.
가상화된 모바일 기기 사용함.

- 앱의 기능을 분석하여 조사에 도움이 될 수 있는 동작을 식별 -> 도움이 될 동작에 해당하는 데이터를 생성 -> 이를 장치의 로컬 메모리에 저장 : 해당 과정을 목표로 해서 실험을 설계함.
- 앱에서 직간접적으로 생성된 데이터가 포함된 디렉터리 집합 식별 -> 저장된 데이터의 변경 사항을 감지하기 위해 모니터링 -> 분석된 결과는 데이터베이스에 저장
- 실험의 모든 동작이 완료되면 각 동작의 결과로 생성/삭제/수정된 파일을 식별하기 위해 스냅샷을 비교 -> 이러한 결과는 아티팩트와 해당 아티팩트를 생성한 동작의 연관성과 함께 데이터베이스에 저장
2) 아키텍처
분석 머신: AnForA의 소프트웨어 구성 요소들이 실행되고, 모바일 기기에서 추출한 데이터를 저장/분석하는 곳
가상 모바일 기기: 분석 대상 앱이 실제로 설치되고 실행되는 AVD
-> 두 환경은 ADB(Android Debug Bridge) 서비스를 통해 연결됨.
<AnForA 7개 구성 요소>
- 앱 설치 프로그램: APK 파일에서 AndroidManifest.xml 추출, 권한 목록 확인 -> 권한 부여
- 사용자 에뮬레이터(user emualtor): 앱과 상호 작용해 실험을 구성, UI Automator API로 실제 사용자처럼 앱의 GUI 조작 가능
- 분석 경로 감지기(Analysis Path Detector): 개인 데이터 디렉토리(앱이 데이터를 쓸 수 있음), 공용 디렉토리(앱의 추가 폴더/권한이 부여되면 앱이 쓸 수 있음), EC 폴더(외부 컴포넌트가 이 앱을 대신해 데이터를 쓰는 폴더)
- FSWatcher: 분석 경로의 모든 폴더를 모니터링해 실험 중 생성/삭제/수정된 파일 감지
- 검색기(Retriever): FSWatcher에서 보고된 파일 세트를 검색, 스냅샷 생성
- 차이 추출기: 연속된 스냅샷 쌍 비교, 생성/수정/삭제된 파일 식별 -> 해당 정보들 보고서에 기록
- GUI: AnForA에 접근 권한 제공, 구성 요소 작업 제어해 다양한 단계 제어
3) 구현
무료로 제공되는 도구와 python, c++언어 사용하여 개발한 소프트웨어를 혼합하여 사용.
- AVD 사용 목적: Android Mobile Device Emulator
- 앱 설치 프로그램: python 스크립트로 구현.
앱이 실행하는데 필요한 권한 부여 -> 권한의 경우 앱의 apk 파일에 포함된 AndroidManifest.xml 파일에서 자동으로 추출됨. - 사용자 에뮬레이터: UI Automator를 통해 python으로 구현.
상호 작용을 수행하는 UI 테스트를 빌드하기 위한 API 세트를 제공(사용자 앱과 시스템 앱에서 상호작용을 수행하기 위함) - 분석 경로 감지기: python 스크립트로 구현. -> apk 파일을 구문 분석해 개인 및 추가 폴더에 대한 정보 추출 / 장치 메모리에서 데이터를 수집하지 않는 실행인 드라이 런을 수행해 EC 개인 및 추가 폴더 발견
- FSWatcher: C++ 프로그램으로 구현.
linux의 inotify 메커니즘을 사용해 특정 루트 경로에서 파일 시스템 이벤트를 감시함. - Retriever: python 스크립트로 구현. -> ADB 명령을 사용하여 android 기기에서 분석 머신으로 파일을 검색하는 스크립트
- 차이 추출기: python 스크립트로 구현. -> libmagic 라이브러리 사용
- GUI: python으로 구현. -> PyQt Python 바인딩 사용
4) 설계 목표 달성 평가
- 충실도: 사용자 에뮬레이터를 통해 보장, 사용자가 수행하는 동작을 충실하게 재현 O
- 아티팩트 커버리지:
-Analysis Paths Detector가 앱의 개인 폴더, 추가 폴더, 외부 컴포넌트(EC)를 모두 식별
-FSWatcher가 실시간 파일 시스템 변경사항 포착
-커널 오버플로우 방지를 위해 실시간 프로세스로 실행 - 아티팩트 정밀도: FSWatcher가 특정 동작 실행 시점엠나 발생한 변경사항만 기록
- 효과성:
-Difference Extractor가 연속된 스냅샷을 비교해 각 동작이 수정/생성한 데이터를 정확히 식별
-각 Dump 명령 사이에 수행된 동작 그룹과 데이터 연관시킴 - 반복성:
-AVD 사용으로 동일한 실행 환경을 언제든 재현 가능
-Actions File로 동일한 동작 순서를 반복 실행 - 일반성: AVD로 다양한 하드웨어에서 분석 가능
'보안 > 모바일 포렌식' 카테고리의 다른 글
| [논문]Automated forensic analysis of mobile applications on Android devices (0) | 2025.10.29 |
|---|---|
| [11장]안드로이드 앱 분석과 포렌식 도구 개요 (0) | 2025.10.14 |
| [9장]안드로이드 데이터 추출 기법 (0) | 2025.10.14 |
| [1장]모바일 포렌식 입문 (0) | 2025.09.30 |