보안/모바일 포렌식

[논문]The Android Forensics Automator(AnForA)

haerim9.9 2025. 10. 1. 17:01

아래의 논문을 참고하여 작성한 글이다.

The Android Forensics Automator (AnForA): A tool for the Automated Forensic Analysis of Android Applications

 


 

요약

AnForA라는 안드로이드 앱 분석 자동화 소프트웨어 도구를 설계/구현/평가하는 논문이다.

 

아래는 실무에서 해당 AnForA를 적용한다고 했을 때 쓸 것 같은 방법

  1. 실험 환경에서 실험 대상이 될 앱을 똑같이 설치한다.
  2. 특정 동작을 자동화 도구로 수행한다.
  3. 해당 과정에서 앱이 어떤 파일을 생성하고 어디에 저장하는지 확인한다.
  4. 이렇게 얻은 지식을 실제 사건 기기 분석에 적용한다.

위 과정처럼 증거 생성 과정을 자동화하여 포렌식 아티팩트 규명에 활용하는 듯하다.

 

 

주목할 만한 점

  • 코드 구현부를 보여준 것은 아니나, 도구 개발에 있어 사용되는 도구를 참고하기 좋아보임.
  • 분석 자동화를 블랙박스 방식으로 수행할 수 있는 것을 보여줌(다른 시각이라 제작할 때 해당 방법 차용해도 괜찮을 것 같음).
  • 자동으로 문서화되는 파트가 특히 도구 개발 과정에서 참고하기 좋아보임.

특이점

  • 실제 사건 현장에서 포렌식을 자동으로 수행하게 해줄 수 있는 도구가 아님. -> 실전 포렌식으로 보조하는 자료 정도.
  • 이유: 사후적으로 복원해야 하는 포렌식과 달리, 이 소프트웨어는 앱별 증거 패턴을 분석해주는 용도.
    -> 사전 연구 도구로 미리 앱 아티팩트를 분석해두는 용도, 새로운 앱이 계속 나오니까 거기에 대응하기 위한 보조 도구로써 도움되는 느낌.

의견

  • 이런 방식의 도구를 개발하는 것도 나쁠 건 없을 것 같고, 참고할 코드가 없다는 게 현실적으로 아쉬운 부분.
  • 그러나 도구 사용에 관한 부분을 참고하기 좋아 보이고, 방향성을 보조 도구로 잡을 수도 있겠다는 시각+블랙박스 방식같은 아이디어를 제시해줌.

 


논문 설명

해당 논문에서는 안드로이드 애플리케이션 분석 자동화 소프트웨어 도구인  AnForA의 설계/구현/평가를 제시한다.

 

AnForA: 동적 블랙박스 방식 기반

*블랙박스 방식: 앱 내부나 소스 구조를 보지 않고, 사용자가 특정 행위를 했을 때 어떤 데이터가 남는지를 관찰

-> 즉 앱을 실제로 실행시키고 동작을 수행하면서 결과를 확인하는 것.

 

장점: 코드를 보지 않고 결과만 관찰하기 때문에 암호화나 난독화된 앱도 분석 가능

 


서론

<특정 애플리케이션에서 생성된 데이터로부터 사용자 활동을 재구성하기 위해 알아야하는 것>

  • 애플리케이션에서 어떤 데이터가 생성되는가
  • 데이터가 어떻게 인코딩되는가
  • 데이터가 장치의 어디에 저장되는가
  • 애플리케이션에서 허용된 각 작업에 의해 생성되거나 수정된 데이터는 무엇인가

그러나 앱의 수가 방대하고 끊임없이 증가하고 있기 때문에 위의 지식을 얻는 것에 부담이 됨.

-> 모바일 앱 자동화를 하면 해결됨.

 

<모바일 앱 자동화 솔루션이 제공해야 하는 것>

  1. 충실도: 분석 대상 앱과 사용자가 하는 상호작용을 충실하게 재현할 수 있는 능력
  2. 아티팩트 커버리지: 앱에서 생성/수정된 모든 데이터를 식별하고 장치 저장소에 저장되는 기능
  3. 아티팩트 정밀도: 앱에서 직간접적으로 생성/수정된 데이터만 포함할 수 있는 기능
  4. 효과성: 사용자 작업과 해당 작업으로 생성/수정된 데이터를 연관시키는 능력 
  5. 반복성: 동일한 실험에 동일한 결과를 얻을 가능성을 제공할 수 있는 능력
  6. 일반성: 가능한 많은 안드로이드 기기에서 모바일 앱을 분석할 수 있는 능력

 


AnForA 시스템

 

1) 분석 방법론

분석 대상 앱에서 허용하는 작업(예시: 문자 메시지, 사진 보내기 등..) 중 하나에 초점을 맞춰 실험하고, 실험 중과 실험 후 장치 저장소를 검사하여 실험 중에 생성된 데이터를 식별한다. 그리고 생성된 데이터를 분석하여 의미와 맥락을 파악한다.

 

가상화된 모바일 기기 사용함.

 

  1. 앱의 기능을 분석하여 조사에 도움이 될 수 있는 동작을 식별 -> 도움이 될 동작에 해당하는 데이터를 생성 -> 이를 장치의 로컬 메모리에 저장 : 해당 과정을 목표로 해서 실험을 설계함.
  2. 앱에서 직간접적으로 생성된 데이터가 포함된 디렉터리 집합 식별 -> 저장된 데이터의 변경 사항을 감지하기 위해 모니터링 -> 분석된 결과는 데이터베이스에 저장
  3. 실험의 모든 동작이 완료되면 각 동작의 결과로 생성/삭제/수정된 파일을 식별하기 위해 스냅샷을 비교 -> 이러한 결과는 아티팩트와 해당 아티팩트를 생성한 동작의 연관성과 함께 데이터베이스에 저장

 

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로 다양한 하드웨어에서 분석 가능