- ADB 사용법 추가 확인 주소 : http://developer.android.com/guide/developing/tools/adb.html#commandsummary
@ 안드로이드 파일시스템과 데이터 구조
: 물리 메모리와 파일시스템과 데이터 구조는 안드로이드 기기의 데이터 저장소를 위한 기본요소다. 그러한 요소들을 깊이 있게 이해하게 되면 안드로이드 기기를 잘 이해할 수 있을 뿐만 아니라 새롱누 파일시스템과 데이터 구조를 보게 되더라도 스스로 조사할수 있게 된다.
- yaffs2.tar.gz 를 다운 받아서 설치한 뒤 디바이스에 마운트해서 해당 값을 확인할 수 있다.
- Shared Preferences
-- boolean, float, int, long, strings 에 대한 값이 저장된다.
-- 경로 : /data/data/apk_pkg_name/shared_prefs
- SQLite 정보 위치 ( /data/data/com.android.webkit )
-- app_icons, app_cache, app_geolocation : 아이콘 DB 1개 , 웹 어플 데이터 캐시 1개, GPS 위치와 권한과 관련된 DB 2개
-- app_databases 웹사이트 지원을 위한 로컬 데이터 베이스 저장소를 제공하는 21개의 데이터 베이스
-- databases : 브라우저와 브라우저 캐시를 위한 데이터 베이스 3개
- db 보는 명령어
-- sqlite3 db.db
@ 안드로이드 포렌식 기술
: 안드로이드 기기에서 포렌식 이미지를 획득하기 위한 기술을 여러가지가 있다. 만약 분석 대상 기기가 패스코드로 보호돼 있다면 그것을 회피하거나 우회해서 데이터를 추출해야만 한다. 패스코드를 회피하기 위한 기술을 여러가지가 있지만 어느 상황에서나 항상 패스코드를 회피하는 것은 불가능하다. 일단 기기에 접근 가능하면 포렌식 분석가는 삭제되지 않은 데이터에 초점이 맞춰진 콘텐트 프로바이더를 통한 논리적인 데이터 획득이나 물리적인 데이터 획득 방법 중에서 어느 기술을 사요할 것인지 선택할 수 있다. 물리적 데이터 획득 기술은 이용하면 더 많은 데이터를 얻을 수 있지만 일반적으로 더 복잡한 분석 기술을 필요로 한다.
- APK 보안 검토 툴 : http://viaforensics.com/appwatchdog/
- AFLogical : 콘텐트 프로바이더로 접근할 수 있는 정보를 추출한다. viaForensics에서 무료 배포.
: 조사할 안드로이드 기기를 획득하는 것은 연구나 개발, 논의 에 있어서 매우 주요한 부분이지만 안드로이드 포렌식에서는 단지 시작일 뿐이다. 분석을 위해서는 논리적 물리적 기술이 모두 필요하다. 하지만, 물리적 데이터 획득 이후에 더 많은 양의 분석이 요구 된다. 이 부분에서 목적은 포렌식 분석가나 보안 엔지니어가 안드로이드 기기를 조사할 수 있는 기술, 심지어 포렌식 툴이 제대로 지원하지 못하는 파일시스템이라고 하더라도 그것을 조사할 수 있는 기술을 제공하는 것이다. 기존의 포렌식 툴과 리눅스 명령. 그리고 경우에 따라서는 헥스 분석을 사용하면 조사가 필요한 데이터 대부분을 분석할 수 있다.
- Hex : 포렌식 분석가의 좋은 친구
-- $ sudo apt-get install ncurses-hexedit // 매우 빠른 터미널 기반의 헥스 에디터; 다른 것을 써도 된다.
- strings 를 활용해서 정보의 갯수를 알 수 있다; 정보의 유/무
-- $ strings --all --radix=x mmssms.db | grep 312123123 | wc -l // 해당 정보 312123123가 몇 개 존재하는 지 알수 있다.
- FAT 포렌식 분석
-- log2timeline을 이용한다. 그 전에 앞에서 활용했던 SD 카드 이미지 만들기, TSK의 mmls로 이미지를 조사하고, 이미지를 마운트해야 한다. ( 기타 추가 설명은 p 384에 있다. )
오늘 버추얼박스에 우분투 9.04를 새로 설치했다. 그리고 sudoers 와 sudo 명령어들을 테스트해보려고 /etc/sudoers 를 편집한 뒤 재로그인을 했더니, /etc/sudoers 에서 파서 에러가 나면서 접근이 불가능했다. 이런! 이 문제를 해결하려면 sudo 권한이 필요한데, 에러 때문에 sudo 를 쓸 수 없게 된 것이다.
문득 복구 모드가 있다는 것이 생각나서 재부팅 후 ESC 키를 눌러 표준 그럽 화면(아래 화면)으로 들어갔다.
위 화면에서 복구 모드(recovery mode)를 선택하면 아래와 같은 복구 모드 화면이 나타난다.
나의 경우 루트 쉘(root shell)을 선택했다. 이를 선택하면 비밀번호 없이 루트 계정에 접근할 수가 있다. /etc/sudoers 를 수정하고 재부팅을 하니 문제 해결.
우분투 9.04 의 복구 모드에서는 다음과 같은 기능을 제공한다.
resume - Resume normal boot : 기본 부팅 모드로 부팅을 한다.
clean - Try to make free space : 디스크 여유 공간이 부족하여 시스템이 마비되었을때 유용하다.
dpkg - Repair broken packages : 망가진 패키지를 복구할 수 있다. 패키지 설치 후 시스템에 문제가 생긴 경우 유용하다.
fsck - File system check : 파일 시스템 오류를 수정할 수 있다.
grub - Update grub bootloader : 그럽 부트 로더 업데이트
netboot - Drop to root shell prompt with networking : TCP/IP 네트워크 설정을 이용하여 부팅. 루트쉘로 로그인된다. 네트워크 관련 문제 해결에 유용하다.
root - Drop to root shell prompt : 기존 루트 쉘. 설정 파일 편집을 하는데 적합하다.
xfix - Try to auto repair graphic problems : X 윈도 시스템을 재설정한다.