안드로이드
안드로이드는 휴대 전화를 비롯한 휴대용 장치를 위한 운영체제와 미들웨어, 사용자 인터페이스 그리고 표준 응용 프로그램을 포함하고 있는 소프트웨어 스택이자 모바일 운영 체제 이다. 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 파티션을 이미징한다.