해당 도서의 9장_안드로이드 데이터 추출 기법 (245p-268p) 내용 정리
안드로이드 폰 이미징
기기 이미징은 모바일 기기 포렌식에서 가장 중요한 과정 중 하나.
포렌식 조사에서 기기에 존재하는 데이터가 어떤 방법으로도 변경되지 않도록 하는 것이 일반적.
기기에서 데이터 직접 추출하는 기법 사용하기 전, 안드로이드 기기의 물리 이미지를 받아야 하는데 포렌식에서 이러한 물리/논리적 수집 과정을 기기 이미징이라고 부름.
물리적 이미지는 안드로이드 기기 메모리의 비트 단위 복사본이라고 여겨짐.
비트 단위 이미지는 기기 상의 콘텐츠 복사해서 붙여넣는 것과는 다름.
기기의 모든 데이터(삭제된 파일/접근 불가능한 파일) 얻기 위해서는 기기 메모리를 비트 단위로 이미징해야 함
-전원 켜지지 않는 데스크탑 컴퓨터 압수해 포렌식 조사 위해 보냈다는 가정-
보통의 포렌식 조사관은 하드 드라이브 제거해 write blocker에 연결해 비트 단위 포렌식 이미지를 도구 사용해 얻어냄
→ 원본 하드디스크는 데이터의 포렌식 이미징 과정 동안 안전하게 보호됨
안드로이드 기기에서는 데이터 담고 있는 모든 영역 쉽게 분리할 수 X
모든 상호 작용이 기기 상태에 변화 만들기 때문에 기기 켜진 상태로 조사 위해 수집되면 기기에 변화 주지 않고 분석 불가능
안드로이드 기기: 내부/외부 저장소라는 두 가지 파일 저장 공간 가짐
- 내부 저장소
- 내장된 비휘발성 메모리
- 외부 저장소
- micro SD 카드와 같은 분리 가능한 저장 공간
- 어떤 기기는 제거 가능한 공간 가지지 않는 대신 가용한 저장 공간을 내부/외부로 나누기도 함
데이터 추출 기법
- 수동 데이터 추출
- 조사관이 메모리에 존재하는 데이터에 접근하기 위해 모바일 기기의 일반적 유저 인터페이스 사용
- 다른 방법들 중 하나로 추출된 발견 검토 위한 마지막 수단으로 사용되어야 함
- 단점: 운영체제(UI 모드)가 접근 가능한 파일들만 조사할 수 있음
기기의 이미지 얻기 위해 안드로이드 기기를 루팅해야 됨. 루팅하면 슈퍼유저 권한 가지게 되어 모든 데이터 접근 가능
루트 권한 갖는 것은 데이터 변경 또는 삭제 등으로 기기에 변화 줄 수 있음.
루팅된 안드로이드 기기에서 포렌식 이미지 얻기 위해서는,
안드로이드 터미널 에뮬레이터(Android Terminal Emulator) 애플리케이션 설치 (리눅스 명령어 셸에 접근할 수 있게 도움)
설치 이후 다음 과정 통해 파티션 수집 가능
dd 명령어 사용 | 기기 미가공 이미지 생성하는 데 사용될 수 있음. 저수준 데이터 복사하여 안드로이드 기기의 비트 단위 이미지 생성에 도움을 줌 |
새로운 SD 카드 삽입 | 이미지 파일을 카드에 복사하기 위해 새로운 SD 카드를 기기에 삽입 이 SD 카드의 내부가 삭제되었고 다른 데이터 담고 있지 않음을 확인해야 함 |
명령어 실행 | 안드로이드 기기의 파일 시스템은 /dev 파티션 내의 다른 위치에 저장되어 있음 mount 명령어 사용하여 출력된 값 중 대부분의 데이터가 /data와 /system 파티션에 존재 이후, 'dd if=/dev/block/mmcdlk0p12 of=/sdcard/tmp.image' 명령어 실행해 기기를 이미징 |
- 논리적 데이터 추출
- 파일 시스템에 접근하는 것을 통해 기기에 존재하는 데이터를 추출
- 중요 데이터 제공, 대부분의 기기에서 동작, 사용하기 쉬움
- 데이터 추출 위해 루트 권한 요구하진 않으나 루트 권한 있다면 기기에 존재하는 모든 파일에 대한 접근을 제공
논리적 추출 수행 방법
- adb pull 명령어 사용
adb는 명령행 도구로 정보를 추출하기 위해 기기와 통신하는 것을 도움
USB 디버깅 옵션이 켜져 있어야 사용 가능
애플리케이션 데이터는 아래 위치 중 하나에 저장
Shared preferences | key-value 쌍으로 이뤄진 데이터가 경량의 XML 포맷으로 저장 애플리케이션 /dat 디렉토리의 shared_pref 폴더에 저장 |
내부 저장소 | 개인 소유이며 기기의 내부 메모리에 위치 다른 애플리케이션이 접근하지 못함 |
외부 저장소 | 공개된 데이터를 일반적으로 보안 메커니즘의 적용 받지 않는 기기의 외부 메모리에 저장 /sdcard 디렉토리에서 찾을 수 있음 |
SQLite 데이터베이스 | 보통 .db 파일 확장자로 저장 SQLite 브라우저를 사용하거나 필요한 SQLite 명령어를 해당 파일에 실행시켜볼 수 있음 |
- 루팅된 폰에서 /data 디렉토리 추출
루팅되지 않은 기기에서 /data 디렉토리에 대한 pull 명령어는 파일을 추출하지 못함
셸 사용자가 해당 파일들에 대한 접근 권한 없기 때문.
날짜/시간 비교를 위해 사본을 만들어야 함
- SQLite 브라우저 사용
추출된 데이터를 분석하는 과정 돕는 도구.
표 형태로 데이터를 보여줌
- 기기 정보 추출
/system 폴더에 있는 build.prop 파일을 보고 기기에 대한 자세한 사항 알 수 있음
- 통화 기록 추출
통화 기록에 대한 정보는 /data/data/com.android.proviedr.contacts/databases/에 위치한 contacts2.db 파일에 저장됨
SQLite 브라우저 사용.
- SMS/MMS 추출
- 브라우저 히스토리 추출
- 소셜 네트워킹과 IM 채팅 분석
- 컨텐트 프로바이더 사용
컨텐트 프로바이더를 사용해 안드로이드에서 다른 애플리케이션에 데이터를 공유할 수 있는 메커니즘을 제공
하나 이상의 테이블 형태로 외부 애플리케이션에 데이터를 제공 → 이 테이블은 관계형 데이터베이스에서 볼 수 있는 테이블과 동일
URI 주소지정 방식을 통해 애플리케이션이 데이터 공유하는 데 사용될 수 있음
주소록, SMS/MMS, 캘린더 등이 컨텐트 프로바이더의 예시.
루팅 여부에 관계 없이 모두 동작한다는 장점
- 물리적 데이터 추출
- JTAG와 칩 오프(chip-off) 두 가지로 이루어짐
JTAG | Joint Test Action Group. 해당 기법 사용해 기기의 전체 물리 이미지 수집 가능 포렌식 단계 1. TAPs(device Test Access Ports)가 기기의 CPU에 접근하기 위해 사용됨. TAP 확인되고 연결이 CPU에 도달하면 어떤 패드가 어떤 기능 담당하는지 알아냄. 기기 제조사들이 특정 기기의 JTAG 도식에 대한 자료 문서화하지만 일반적 목적으로는 배포 X 2. 리드선을 적절한 연결 핀에 납땜하고 다른 한 쪽은 CPU 제어할 수 있는 기기에 연결 3. CPU 구동 위해 전원 공급 4. NAND 플래시의 전체 바이너리 덤프 추출 5. 추출된 데이터 분석 |
칩 오프 | 기기에서 NAND 플래시 칩을 제거하여 정보를 추출. 패스코드로 보호되어 있고 USB 디버깅이 활성화되어 있지 않을 때에도 동작 기기가 심각하게 손상 입었거나, 잠겨 있거나, 기타 이유로 접근 불가능할 때에 유용한 방법 포렌식 단계 1. 어떤 칩이 사용자 데이터 담고 있는지 알기 위해 기기의 모든 칩 조사. 칩 결정되면 NAND 플래시 기기로부터 물리적으로 제거. 2. 칩을 깨끗하게 하고 복구 3. 특정 NAND 플래시 칩 지원하는 하드웨어에 칩을 삽입 4. 수집한 데이터 분석 |
메모리 카드 이미징
메모리 카드(SD) 이미징할 수 있는 다양한 도구가 존재.
-윈헥스(WinHex)를 사용하여 SD카드의 미가공 디스크 이미지 생성하는 예제-
- 메모리 카드 연결
- SD카드를 메모리 슬롯에서 제거하여 포렌식 워크스테이션에 카드 리더기로 메모리 카드를 연결
- 카드에 쓰기 보호 적용
- 윈헥스로 디스크 열어 write-protected 모드 선택
- 해시 값 계산
- 조사 과정에서 어떤 변경도 이루어지지 않았음을 보장하기 위해 메모리 카드의 해시 값을 계산
- 디스크의 이미지 생성
- Raw image 옵션 선택하여 이미지를 생성
퀴즈
1. 안드로이드가 다른 애플리케이션에 데이터를 공유할 수 있는 메커니즘을 제공하기 위해서는 '이것'을 사용한다. '이것'은 하나 이상의 테이블 형태로 외부 애플리케이션에 데이터를 제공한다. 이것은 무엇인가?
컨텐트 프로바이더(content provider)
2. 물리적 데이터 추출 방법 중 하나로, 기기에서 NAND 칩을 제거하여 정보를 추출하는 방식의 이름은 무엇인가?
칩 오프(chip-off)
'SWUFORCE > 모바일 포렌식' 카테고리의 다른 글
[모바일 포렌식] 11_안드로이드 앱 분석과 포렌식 도구 개요 (2) | 2024.11.19 |
---|---|
[모바일 포렌식] 10_안드로이드 데이터 복구 기법 (1) | 2024.11.13 |
[모바일 포렌식] 8_안드로이드 포렌식 셋업과 데이터 사전 추출 기법 (5) | 2024.11.05 |
[모바일 포렌식] 7_안드로이드의 이해 (1) | 2024.10.29 |
[모바일 포렌식] 모바일 포렌식 입문 (9) | 2024.10.08 |