해당 도서의 11장_안드로이드 앱 분석과 포렌식 도구 개요 (285p-303p) 내용 정리
스마트폰 사용자들은 일반적으로 서드파티(3rd party) 애플리케이션 사용
포렌식 과정에서 가치있는 데이터와 멀웨어 탐지 위해 이런 앱들 분석이 도움됨
안드로이드 앱 분석
대부분의 앱들은 민감 정보를 기기의 내장 메모리나 SD카드에 저장.
조사관은 필요한 정보에 접근하는 데 장애물로 작용하는 앱 다룰 필요 생길 수 있음
애플리케이션에 대해 더 많은 이해와 데이터를 어떻게 저장하는지 알고자 할 때 리버스 엔지니어링이 도움됨.
안드로이드 앱 리버스 엔지니어링
실행 가능한 파일에서 소스 코드를 뽑아내는 과정.
앱의 기능, 사용 중인 보안 메커니즘등을 이해하기 위해 수행됨
안드로이드 앱
- 안드로이드 기기에 설치된 모든 애플리케이션은 자바 프로그래밍 언어로 작성됨
- 자바 프로그래밍 컴파일되면 바이트코드가 생성됨. 바이트코드는 dex 컴파일러로 보내져서 달빅 바이트코드로 변환됨
- class 파일들은 dx tool을 사용해서 dex 파일로 변환됨. 안드로이드는 달빅 가상 머신(DVM)이라 불리는 것으로 애플리케이션을 실행
- JVM의 바이트코드는 애플리케이션에 있는 자바 파일의 개수에 따라 하나 이상의 클래스로 이뤄짐.
- 그와 달리 달빅 바이트코드는 하나의 dex 파일로 이뤄져있음
하나의 애플리케이션을 실행하는 데 필요한 dex 파일, XML 파일, 기타 리소스들이 안드로이드 패키지 파일(APK 파일)로 패키징됨. APK 파일은 단순히 ZIP 파일 내의 아이템들의 집합.
→ APK 파일에 대한 권한을 가지고, APK 확장자 파일을 .zip 확장자 가지도록 바꾸면 파일의 콘텐츠 볼 수 있음
안드로이드 기기에서 APK 파일 추출
폰에서 미리 설치된 앱들은 /system/app 디렉토리에 저장되어 있음.
사용자가 다운로드한 서드 파티 애플리케이션은 /data/app 폴더에 저장됨.
기기의 APK 파일에 접근하는 방법
1. 아래 명령을 실행시켜 앱의 패키지 이름 확인
C:\android-sdk-windows\platfom-tools>adb.exe shell pm list
패키지 이름의 목록 나타나면 원하는 애플리케이션의 패키지 이름 찾기. 보통 패키지 이름은 앱 이름과 큰 연관성 있음.
2. 아래 명령을 실행시켜 원하는 패키지의 APK 파일 경로를 알아냄
C:\android-sdk-windows\platfom-tools>adb.exe shell pm path com.android.chrome
3. adb pull 명령을 사용해 해당 APK 파일을 안드로이드 기기에서 포렌식 워크스테이션으로 옮김
C:\android-sdk-windows\platform-tools>adb.exe pull /data/app/com.android.chrome-2.apk C:\temp
또한, ES 익스플로러와 같은 애플리케이션을 사용해 안드로이드 애플리케이션의 APK 파일 얻을 수 있음
패키지(.zip 형태)가 포함하는 파일들
- AndroidManifest.xml: 퍼미션 등의 정보 담고 있음
- classes.dex: dex 컴파일러가 dex 파일로 변환한 class 파일
- res: 이미지 파일, 사운드 파일 등 애플리케이션의 리소스가 존재
- lib: 애플리케이션이 사용하는 네이티브 라이브러리 담고 있음
- META-INF: 애플리케이션의 서명과 패키지 내 모든 파일에 대한 서명된 체크섬 관련 정보 담고 있음
안드로이드 앱을 리버스 엔지니어링하는 과정
-dex2jar와 JD-GUI 도구를 사용하는 방법-
1. 파일의 콘텐츠 확인 위해 apk 확장자를 zip으로 바꾸고 압축을 해제
2. 앞에서 설명한 classes.dex 파일에 접근할 수 있음. 이 dex 파일은 자바의 class 파일로 변환되어야 하는데 이를 위해 dex2jar 도구를 사용
3. classes.dex 파일을 dex2jar 도구 디렉토리에 넣고 다음 명령을 내림
C:\Users\Rohit\Desktop\Training\Android\dex2jar-0.0.9.15>d2j-dex2jar.bat classes.dex
dex2jar classes.dex -> classes-dex2jar.jar
4. 위 명령 성공적으로 실행되면 classes-dex2jar.jar라는 새로운 파일이 같은 디렉토리에 생성됨
5. JD-GUI와 같은 도구 사용하면 jar 파일 내용(안드로이드 애플리케이션에 존재하는 파일들과 그 관련 코드를 볼 수 있음
코드에 접근하고 나면 애플리케이션이 특정 값, 퍼미션, 기타 정보를 어떻게 저장하는지 쉽게 분석할 수 있고 이런 정보는 특정 제약조건을 우회하는 데 도움 줄 수 있음.
멀웨어 발견됐을 시 유용.
포렌식 도구 개요
AFLogical 도구
비아포렌식스(viaForensics)가 개발한 안드로이드 포렌식 도구.
안드로이드 1.5 이상을 구동하는 모든 안드로이드 기기에 대한 논리적 수집을 수행.
이 도구에서 추출된 데이터를 CSV 포맷으로 조사관의 SD 카드에 저장할 수 있음.
두 가지 에디션이 있다
- AFLogical OSE(Open Source Edition)
무료 오픈소스 소프트웨어.
안드로이드의 모든 MMS, SMS, 주소록, 통화 기록을 뽑아냄
모바일 포렌식, 모바일 멀웨어, 모바일 보안에 초점을 둔 산도쿠 리눅스(Santoku-Linux)라는 오픈소스 커뮤니티 기반 OS에 내장되어 있음.
-산도쿠 리눅스에서 이 에디션 사용하는 과정-
1. Sandoku▶Device Forensics▶AFLogical OSE로 이동.
2. 기기에 AFLogical OSE 설치 위해 안드로이드 기기를 USB로 연결
3. 애플리케이션을 기기에 설치
aflogical-ose
634 KB/s (28794 bytes in 0.044s)
pkg: /data/local/tinp/AFLogical-OSE_l.5.2.apk
Success
Starting: Intent { anp=com. viaforensics. android. aflogical_ose/com.
viaforensics.android.ForensicsActivity }
Press enter to pull /sdcard/forensics into ~/aflogical-data/
4. 안드로이드 기기에서, 추출하기 원하는 아이템을 선택하고 Capture를 클릭
5. 다음으로 리눅스 워크스테이션에서 Enter를 누름. 이를 통해 안드로이드 기기에서 추출한 데이터를 마운트된 SD카드의 ~/aflogical-data에 저장
6. 추출된 날짜와 시간으로 이름 붙여진 폴더에 데이터가 저장됨
7. 이 폴더를 검색하여 통화 기록, SMS, 주소록 등의 추출한 데이터에 접근 가능
- AFLogical LE(Law Enforcement)
다운로드 위해서는 사용 중인 사법 기관 혹은 정부 기관의 이메일 주소로 비아포렌식스에 등록해야 함.
아래와 같은 모든 논리적 데이터를 안드로이드 기기에서 뽑아낼 수 있음
- 브라우저 북마크
- 브라우저 검색 기록
- 캘린더 참석자
- 캘린더 이벤트
- 캘린더 확장 속성
- 캘린더 알림
- 캘린더
- 통화 기록
- 주소록 설정
- 외부 이미지 미디어
- IM 계정
- 내장 이미지 미디어
- MMS
- 노트
- SMS
- 검색 기록
- 등...
셀레브라이트: UFED
안드로이드 기기의 데이터 수집과 분석을 지원하는 다양한 제품을 제공
유명한 상용 도구로 논리적, 물리적 수집을 지원하며 데이터를 분석하기 위한 분석 플랫폼도 제공함.
분석 플랫폼인 설레브라이트 피지컬 애널라이저(Physical Analyzer)는 조사에 도움되는 키워드 검색, 북마크, 데이터 카빙, 자체 보고서 생성 등의 기능을 제공
-UFED 터치(Touch)를 사용해서 삼성 안드로이드 기기에서 정보 추출하는 과정-
- UFED 터치 메뉴에서 Physical Extrction을 선택
- 제조사 목록에서 기기 제조사를 선택
- 모델 메뉴에서 기기의 모델 선택하고 Physical Extraction을 선택
- 추출할 파일 저장할 위치 선택. → 제거 가능한 드라이브나 포렌식 워크스테이션을 선택
- UFED 터치에 나오는 순서 그대로 따라함. 정확한 케이블 사용하고 안내 화면에 따라 배터리 제거해야 함
- 폰이 다운로드로 들어가고 로고가 표시됨. 그 다음, 폰을 UFED 터치에 연결하고 continue를 누름
- 추출한 데이터 저장 위해 외장 드라이브를 UFED 터치의 목적지 포트에 연결
- UFED 터치가 자동으로 추출 화면으로 이동함. 이 과정에서 폰을 연결하기 위한 안내 화면이 뜸
- 이 과정 완료되면 UFED 피지컬 애널라이저 애플리케이션 사용해 추출된 데이터 보고 분석 가능
MOBILedit
제조사에 따라 MOBILedit 포렌식 도구는 통화 기록, 전화번호부, 텍스트 메시지, 멀티미디어 메시지, 파일, 캘린더, 노트 등 애플리케이션 데이터를 포함한 폰의 데이터를 검색하고 보는 데 사용될 수 있음
또한 IMEI, 운영체제, 펌웨어, SIM 정보, ICCID, 위치정보 등을 검색.
상황에 따라 폰에서 삭제된 데이터 가져오고 패스코드, PIN, 폰 백업 암호화를 우회할 수 있음
-MOBILedit 소프트웨어 사용해 안드로이드 폰에서 정보 추출하는 과정-
- 기기의 USB 디버깅 활성화되어 있는지 확인하고 USB 케이블을 사용해 기기를 포렌식 워크스테이션에 연결. MOBILedit이 기기를 탐지하고 기기에 Connector 앱을 설치
- MOBILedit은 특정 데이터 백업하는 옵션 보여줌. 이 과정 완료되면 분석할 수 있는 애플리케이션 데이터와 통계 보여줌
- Navigation 탭에서 결과 보고 싶은 아이템을 클릭하고 정보 확인
Autopsy
수동 조사나 파일 카빙 필요할 때 안드로이드 기기의 미가공 파일에 접근 가능하게 함.
오픈소스와 법조 기관 모듈이 있으며, 이 모듈들은 애플리케이션과 파일에 대한 추가적 파일 카빙과 파싱을 지원
-셀레브라이트 UFED 터치를 사용해 물리적으로 추출된 기기 이미지 분석-
- 최신 버전의 Autopsy 설치
- Autopsy 실행하고 새로운 케이스 생성
- 케이스 정보를 입력하고 Finish 클릭
- 이미지 파일을 선택하여 안드로이드 기기의 물리 이미지를 탐색. 하나 이상의 이미지 파일 제공될 경우, 첫 번째 파일이 선택됨
- 안드로이드 기기에 대해 실행하고자 하는 ingest 모듈을 선택. 사법 기관 관련 모듈은 나타나지 않고 이 모듈들은 사법 기관과 연방 정부에만 제공됨.
- Next와 Finish를 선택하면 Autopsy가 안드로이드 파일을 파싱하고 읽기 시작. 다른 포렌식 도구와 달리 Autopsy는 복구되는 즉시 결과를 보여줘서 선처리 시간 단축하고 조사 관련 데이터를 직접 접근할 수 있게 함.
QUIZ
1. 하나의 애플리케이션을 실행하는 데 필요한 dex 파일, XML 파일, 기타 리소스들은 어떤 파일로 패키징되는가?
안드로이드 패키지 파일(APK 파일)
2. 애플리케이션이 사용하는 네이티브 라이브러리 담고 있는 파일의 이름은?
lib
'SWUFORCE > 모바일 포렌식' 카테고리의 다른 글
[모바일 포렌식] 10_안드로이드 데이터 복구 기법 (1) | 2024.11.13 |
---|---|
[모바일 포렌식] 9_안드로이드 데이터 추출 기법 (5) | 2024.11.13 |
[모바일 포렌식] 8_안드로이드 포렌식 셋업과 데이터 사전 추출 기법 (5) | 2024.11.05 |
[모바일 포렌식] 7_안드로이드의 이해 (1) | 2024.10.29 |
[모바일 포렌식] 모바일 포렌식 입문 (9) | 2024.10.08 |