이 글은 아래의 책 9장을 읽고 공부 목적으로 작성됨.
사티시 봄미세티, 「모바일 포렌식」, 에이콘출판, 2015
안드로이드 앱 리버스 엔지니어링
리버스 엔지니어링: 실행 가능한 파일에서 소스 코드를 뽑아내는 과정
안드로이드 앱 리버스 엔지니어링: 앱의 기능, 사용 중인 보안 메커니즘 등을 이해하기 위해 수행함.
안드로이드 앱 특징
- 안드로이드 기기에 설치된 모든 애플리케이션은 자바 프로그래밍 언어로 작성됨.
- 자바 프로그램이 컴파일되면 바이트코드가 생성됨. 바이트코드는 dex 컴파일러로 보내져서 달빅 바이트코드로 변환됨.
- class 파일들은 dx tool을 사용해 dex 파일로 변환됨. 안드로이드는 달빅 가상 머신(DVM, Dalvik Virtual Machine)이라 불리는 것으로 애플리케이션을 실행함.
- JVM 바이트코드는 애플리케이션에 있는 자바 파일의 개수에 따라 하나 이상의 클래스로 이뤄짐. 달빅 바이트코드는 하나의 dex 파일로 이루어져 있음.
dex, XML, 기타 리소스들이 안드로이드 패키지 파일(APK)로 패키징됨. 이 APK 파일은 ZIP 파일 내의 아이템들의 집합. APK 확장자를 가진 파일을 .zip 확장자를 가지도록 이름을 바꾸면 파일 콘텐츠를 볼 수 있음.
-> 그러나 그전에 APK 파일에 대한 권한을 가지고 있어야 함.
- 폰에 미리 설치된 앱 경로: /system/app
- 사용자가 다운한 서드 파티 앱 경로: /data/app
APK 파일 접근
- 아래 명령어를 실행시켜 앱 패키지명 확인 -> 패키지명은 앱의 이름과 큰 연관성O
adb.exe shell pm list packages - 아래 명령어를 실행시켜 원하는 패키지의 APK 파일 경로를 확인
adb.exe shell pm path <패키지명> - adb pull 명령을 사용해 해당 APK 파일을 포렌식 워크스테이션으로 옮김
adb.exe pull <APK 파일 경로> C:\temp
APK 파일의 콘텐츠
- AndroidManifest.xml: 퍼미션 등의 정보
- classes.dex: 컴파일러가 dex로 파일로 변환한 class 파일
- res: 이미지 파일, 사운드 파일 등 애플리케이션의 리소스 존재
- lib: 애플리케이션이 사용하는 네이티브 라이브러리
- META-INF: 애플리케이션의 서명, 패키지 내 모든 파일에 대한 서명된 체크섬에 대한 정보
안드로이드 앱 리버싱 과정
- 파일의 콘텐츠를 확인하기 위해 apk 확장자를 zip으로 변경, 변경 후 압축 해제
- APK 파일의 콘텐츠 추출하면 classes.dex 파일에 접근 가능
- dex2jar 도구를 사용해 dex 파일을 class 파일로 변환
명령어: d2j-dex2jar.bat classes.dex - 성공하면 classes-dex2jar.jar 파일 생성됨
- jar 파일을 JD-GUI와 같은 도구로 볼 수 있음
-> 안드로이드 앱에 존재하는 파일, 코드를 볼 수 있음
포렌식 도구
1) AFLogical
안드로이드 1.5 이상을 구동하는 모든 안드로이드 기기에 대한 논리적 수집을 수행하는 도구
에디션 종류: AFLogical OSE(Open Source Edition), AFLogical LE(Law Enforcement)
1. AFLogical 오픈소스 에디션
무료 오픈소스 소프트웨어로 모든 MMS, SMS, 주소록, 통화 기록을 뽑아냄. 산토쿠 리눅스(Santoku-Linux)라는 OS에 내장되어 있음.
산토쿠 리눅스에서 사용 과정
- 왼쪽 하단의 칼 모양 클릭, Santoku > Device Forensics > AFLogical OSE
- 기기에 AFLogical OSE를 설치하기 위해 USB로 기기와 연결, VM에서 산토쿠 리눅스를 사용 중이라면 안드로이드 기기가 VM에 연결되어 있어야 함
- 애플리케이션을 기기에 설치
명령어: aflogical-ose - 안드로이드 기기에서 추출하려는 아이템 선택 후 Capture 클릭
- 리눅스 워크스테이션에서 Enter 누름, 추출한 데이터를 마운트된 SD 카드의 ~/aflogical-data에 저장
- 추출된 날짜와 시간으로 이름 붙여진 폴더에 데이터가 저장됨
- 폴더를 검색해 통화 기록, SMS, 주소록 등의 추출한 데이터에 접근 가능
2. AFLogical LE
사용하기 위해서는 사용 중인 사법 기관/정부 기관의 이메일 주소로 비아포렌식스에 등록해야 함.
- 수집 가능한 논리적 데이터:
브라우저 북마크, 브라우저 검색 기록, 캘린더 참석자, 캘린더 이벤트, 캘린더 확장 속성, 캘린더 알림, 캘린더, 통화 기록, 주소록 방법, 주소록 확장, 주소록 그룹, 주소록 조직, 주소록 전화번호, 주소록 설정, 외부 이미지 미디어, 외부 이미지 썸 미디어, 외부 미디어 외부 비디오, IM 계정, IM 채팅, IM 주소록 제공자, IM 초대장, IM 메시지, IM 제공자, IM 제공자 설정, 내장 이미지 미디어, 내장 이미지 썸 미디어, 내장 비디오와 맵스-친구, 맵스-친구 주소록, 맵스-친구 기타 MMS MmsPartsProvider, 노트, 사람들, 사람에 의해 삭제된 폰 저장소, 검색 기록, SMS, 소셜 주소록 액티비티
2) 셀레브라이트: UFED
셀레브라이트(Cellebrite) UFED: 안드로이드 기기의 데이터 수집과 분석을 지원하는 다양한 제품을 제공, 논리적/물리적 수집을 지원하며 데이터를 분석하기 위한 분석 플랫폼도 제공하는 도구
피지컬 애널라이저(Physical Analyzer): 셀레브라이트가 제공한느 분석 플랫폼, 키워드 검색/북마크/데이터 카빙/자체 보고서 생성 등의 기능 제공
UFED 터치를 사용한 물리적 추출 과정
- UFED 터치 메뉴에서 Physical Extraction 선택
- 제조사 목록에서 기기 제조사 선택
- 모델 메뉴에서 기기 모델 선택 후 Physical Extraction 선택
- 추출할 파일 저장 위치 선택
- UFED 터치에 나오는 순서 그대로 따라함
- 폰이 다운로드 모드로 들어가고 로고가 표시됨, 그 후 폰을 UFED 터치에 연결하고 continue 누름
- 추출한 데이터를 저장하기 위해, 외장 드라이브를 UFED 터치 목적지 포트에 연결
- UFED 터치가 추출 화면으로 이동, 폰 연결하기 위한 안내 화면 따라함
- UFED 피지컬 애널라이저 애플리케이션을 사용해 추출된 데이터 보고 분석 가능
3) MOBILedit
통과 기록, 전화번호부, 텍스트 메시지, 멀티미디어 메시지, 파일, 캘린더, 노트, 미리알림과 스카이프, 드롭박스, 에버노트 등의 폰의 데이터를 검색하고 보는 데 사용될 수 있는 도구
MOBILedit을 사용해 정보를 추출하는 과정
- 기기의 USB 디버깅이 활성화되어 있는지 확인 후 USB로 기기를 포렌식 워크스테이션에 연결, MOBILedit이 기기 탐지 후 기기에 Connector 앱 설치
- 분석할 수 있는 애플리케이션 데이터와 통계를 보여줌
- Navigation 탭에서 결과를 보고 싶은 아이템 클릭
4) Autopsy
안드로이드 기기에 대해 분석 기능 제공
Autopsy에서 안드로이드 분석 과정
- 최신 버전의 Autopsy 설치
- Autopsy 실행 후 새로운 케이스 생성(Create New Case)
- 케이스 정보 입력 후 Finish 클릭
- 이미지 파일 선택해 물리 이미지 탐색
- 안드로이드 기기에 대해 실행하고자 하는 ingest 모듈 선택, 모듈 선택화면 나타남
- Next와 Finsih 선택하면 이미지 파일 파싱되고 읽을 수 있게 됨
'보안 > 모바일 포렌식' 카테고리의 다른 글
| [논문]Automated forensic analysis of mobile applications on Android devices (0) | 2025.10.29 |
|---|---|
| [9장]안드로이드 데이터 추출 기법 (0) | 2025.10.14 |
| [논문]The Android Forensics Automator(AnForA) (1) | 2025.10.01 |
| [1장]모바일 포렌식 입문 (0) | 2025.09.30 |