Physical Imaging
디지털 포렌식에서 물리 이미지 획득은 비할당영역, 암호화된 데이터, 파일 시스템 등을 분석할 수 있게 해 준다. 안드로이드는 기본적으로 사용자에게 사용자 권한만을 부여하기 때문에 물리 이미지 획득이 불가능하고 파일 시스템 이미지 획득까지만 가능하다. 즉, 모바일 포렌식에서 물리 이미지 획득을 위해서는 Root 권한을 얻는 작업인 Rooting을 먼저 수행해야 한다. 본 글은 Android Rooting 과정 이후에 ADB를 이용해 물리 이미지 획득 방법을 상세하게 기술한 글이다.
Physical Imaging Command
본 글은 이전 글에 이어 ADB와 netcat64를 이용해 안드로이드의 물리 데이터를 획득하고, PC로 전송하는 방식으로 이미징을 수행하는 방법을 기술한다.
'/proc/partitions' 파일은 Android 기기의 모든 Partition 정보를 포함한다. 아래는 ADB를 이용해 partitions 파일을 읽은 모습으로, 기기의 모든 Partition의 Block 개수와 이름 정보를 제공한다. Block의 수가 가장 많은 Partition인 sda18이 USERDATA Partition임을 유추할 수 있다.
아래는 안드로이드의 물리 이미지 획득을 위한 5가지 명령어이다.
1. 안드로이드 기기와 PC 간의 tcp 포트 포워딩 설정으로, 네트워크를 통해 데이터를 전송할 준비를 하는 과정
adb forward tcp:8888 tcp:8888
2. 안드로이드 기기의 쉘에 접근하고, 관리자 권한을 얻는 과정
adb -d shell
su
3. 안드로이드 기기의 물리 데이터를 추출하여 네트워크를 통해 전송하는 과정
dd if=/dev/block/sda | /sbin/supersu/xbin/busybox nc -l -p 8888
4. PC에 해당 물리 데이터를 전송 받아 파일(Imaging.dd)로 저장하는 과정
nc64 127.0.0.1 8888 > USERDATA.dd
해당 명령어를 완료하면 5번째 명령어를 실행한 경로에서 "Imaging.dd"파일이 생성된다. 해당 파일의 "속성"을 확인하면 파일의 용량이 계속해서 증가하는 모습을 확인할 수 있다. 아래는 이미징이 완벽하게 완료된 이후의 모습이다. 32GB 스토리지의 안드로이드 기준 평균 25분 정도가 소요되었다.
다음 글
[Digital Forensic] Android Rooting
Reference
https://dfir.science/2017/04/Imaging-Android-with-root-netcat-and-dd.html
https://andreafortuna.org/2018/12/03/android-forensics-imaging-android-file-system-using-adb-and-dd/