안드로이드

Digital Forensic Wikipedia
둘러보기로 가기 검색하러 가기

안드로이드는 휴대 전화를 비롯한 휴대용 장치를 위한 운영체제와 미들웨어, 사용자 인터페이스 그리고 표준 응용 프로그램을 포함하고 있는 소프트웨어 스택이자 모바일 운영 체제 이다. 2005년에 구글이 안드로이드 사를 인수한 후 2007년 11월에 안드로이드 플랫폼을 휴대용 장치 운영체제로서 무료 공개한다고 발표하였다.

버전 코드 네임
1.0 Astro → Apple Pie → Alpha
1.1/1.2 Bender → Petit Four → Banana Bread → Beta
1.5 Cupcake
1.6 Donut
2.0/2.1 Eclair
2.2 Froyo
2.3 Gingerbread
3.0/3.1/3.2 Honeycomb
4.0 Ice Cream Sandwitch
4.1/4.2/4.3 Jelly Bean
4.4 KitKat

수집 방법

안드로이드 기반 스마트 기기에서 데이터를 수집하는 방법은 아래 표와 같다. 자세한 설명은 해당 페이지에 서술되어 있다.

수집 방법 설명 구분
Chip-off 임베디드 기기의 보드에서 플래시 메모리를 분리하여 메모리 리더기를 통해 데이터를 수집하는 방법이다.
기기가 고장, 침수 등의 문제로 인해 다른 방법을 이용할 수 없는 경우에 한하여 사용해야 한다.
전체 수집
JTAG 임베디드 시스템 프로그램은 개발자가 어떤 부분에서 문제가 발생하는지를 알아내기가 매우 어렵다.
이러한 어려움을 해결하기 위해 PCB에 표준화된 로직과 테스트를 위한 핀을 내장하도록 한 것이 JTAG이다.
전체 수집
루팅 루팅 커널 제작은 안드로이드 기기의 부팅과 관련된 루트 권한을 갖는 커널 이미지를 만드는 것이 핵심이다.
커널의 보안 설정 값 변경과 ADB 데몬의 교체 등을 통해 최소한의 변경만으로 루트 권한을 획득할 수 있는 커널을 생성하여
기기의 원본 커널과 교체(Flashing)함으로써 루팅을 수행할 수 있다.
전체, 선별 수집
임시 루팅 임시 루팅은 ADB(Android Debug Bridge) 및 안드로이드 전역 변수 RLIMIT_NPROC의 취약점을 공격하여
기기가 재부팅되기 전까지 관리자 권한을 유지한다. “rageagainstthecage”는 이러한 취약점을 이용하는 공격 코드로
안드로이드 시스템 내에서 동작하여 임시 루팅을 가능하게 한다.
전체, 선별 수집
탈옥 OS 피지컬 획득 방법은 iOS 기기의 내부 데이터 파티션에 대해 이미징을 수행하여 데이터를 획득하는 방법이다.
이는 iOS 기기에 대해 관리자 권한을 획득하여야 수행할 수 있으며 이를 위해 탈옥(Jailbreak)이 필요하다.
전체, 선별 수집
ADB 안드로이드의 프로토콜인 ‘ADB(Android Debug Bridge)‘를 사용하여 선택적으로 사용자 데이터를 추출하는 방법 선별 수집
백업 프로그램 제조사에서 제공하는 프로그램을 이용하여 데이터를 추출하는 방법 선별 수집

전체 수집 대상 데이터

  • 애플리케이션 및 외부 저장 장치 데이터

adb backup’ 명령어를 이용하여 모든 애플리케이션 데이터를 백업할 수 있다. ‘adb backup’은 안드로이드 4.0 이상에서만 사용할 수 있으며 ‘-all’ 옵션을 통해 안드로이드 스마트기기의 모든 애플리케이션과 sdcard 데이터를 백업할 수 있다.
‘[-all]’은 안드로이드 스마트기기의 모든 애플리케이션과 sdcard 데이터를 백업하는 옵션이다.
‘[shared|-noshared]’는 sdcard에 존재하는 데이터를 백업 대상에 포함 할 것인지를 지정하는 옵션이다. ‘-all’ 옵션이 이미 지정되어 있는 경우 선언할 필요 없다. ‘-shared’ 옵션을 지정할 경우 백업 파일에 sdcard의 데이터가 백업 된다.
‘[-system|-nosystem]’은 백업 대상에 시스템 애플리케이션을 포함 할 것인지를 지정하는 옵션이다. ‘-all’ 옵션을 사용한다면 지정할 필요 없다.

  • 파티션 데이터

스마트 기기의 내부 데이터를 파일단위로 수집하고 분석하는 방법은 할당 영역에 정상적으로 존재하는 파일 이외 비할당 영역에 존재하는 삭제되거나 데이터가 수정되면서 생성될 수 있는 잉여데이터에 대한 분석에 한계가 있기 때문에 파티션 단위 이미징 방법이 필요하다. 파티션 단위로 이미징을 하기 위해서는 사용자 데이터가 있는 data 파티션 및 sdcard 파티션과 같이 디바이스에 마운트되어 있는 파티션 정보를 확인해야 한다. 이와 같은 정보를 확인해야 하는 이유는 루팅 커널 이미지 제작 시 사용자 데이터의 무결성을 최대한 유지하기 위해 system, cache 파티션 등만 마운트 시키기 때문에 수집할 data 파티션과 sdcard 파티션 정보를 사전에 알아야한다. 다음으로 루트 권한을 획득할 수 있는 커널을 생성하여 해당 기기에 플래싱(Flashing)을 수행한 후, ‘dd’ 바이너리 또는 NetCat을 사용하여 data 파티션 및 sdcard 파티션을 이미징한다.