안드로이드 폰을 우분투에 연결합니다. 테스트한 폰은 SKY 폰입니다. 


 USB 저장소를 사용 중으로 변경하면, 아래와 같이 /dev/sdb1 장치가 /media/6663-6233에 마운팅 된것을 확인 할 수 있습니다. Physical sd card가 4기가 존재합니다. 파일 시스템은 FAT32로 동작합니다. 

 
 

USB Debugging
대부분의 모바일 포렌식 도구들은 모바일에 Debugging 옵션을 선택해야 가능한 경우가 많습니다. 
Debugging옵션을 활성화 하면, ADB(Android Debug Bridege)를 이용하여, 
장치(모바일)의 로그나 시스템 쉘을 사용할 수 있습니다.

적용 방법 : 모바일에서 Devices Setting > Applications > Development > USB debugging > check
sky 모바일 폰 : 설정 > 시스템 > 응용프로그램 > 개발 > USB 디버깅 > 체크 



장치가 연결된 후, 우분트엣서는 adb를 사용하여 모바일에 접근할 수 있습니다. 
로컬 adb client program은 5037port를 사용합니다.  


adb devices를 사용할 때, device가 no permissions라고 나올 경우, vendor ID를 확인하여 rule에 추가합니다.
참고 : vendor ID를 추가하는 법은 이미 배워서 넘어갑니다.
참고 : 연결된 ubs의 정보를 확인하는 명령어는 아래와 같습니다.

 

- 사용되는 명령어
dorumugs@ubuntu:~$ adb devices - 장치에 연결
dorumugs@ubuntu:~$ adb kill-server  - 연결된 장치 refresh
dorumugs@ubuntu:~$ sudo restart udev - usb 장치 재시작
dorumugs@ubuntu:~$ adb shell - 장치에 존재하는 shell을 사용 

 

'Forensics' 카테고리의 다른 글

Windows 8 Forensics - 1. Interface  (0) 2012.05.14
안드로이드 포렌식 3편 Log  (2) 2011.08.14
안드로이드 포렌식을 시작합니다. 1편 세팅  (0) 2011.08.14
MAC live data 수집  (0) 2011.03.10
ENCE 준비 1. 시험 신청  (0) 2011.03.09
Posted by 도시형닌자
:
안드로이드는 Linux 2.6 Kernel을 사용합니다.

2008년 10월에 처음 모바일폰이 나왔죠..  기종은 

HTC DREA100 

T-Mobile G1 

Global System for Mobile Communications(GSM)

구글의 꿈은 세계 정복이며, 그들의 야망은 정보를 대량으로 수집하는 것입니다. 

안드로이드를 Open Source로 제공하는건 위 꿈과 야망 둘 중에 하나가 일치해서가 아닐까 합니다.

--------------------------------------------------------------------------------------------------------

안드로이드 부팅 순서
1. 전원이 들어오고 boot ROM 코드가 chip에서 실행됩니다.
2. boot loader가 읽어 들이고
3. Linux kernel로 넘어 갑니다.
4. init process가 실행되고
5. Zygote와 Dalvik
6. 시스템 서버
7. 부팅이 완료!


 --------------------------------------------------------------------------------------------------------

모든 테스트는 우분트에서 진행합니다. 우분트는 아래 사이트에서 받아서 VM으로 설치하였습니다.
URL: http://www.ubuntu.com/download/ubuntu/download

우분트 설치 후, 기본적으로 사용할 도구인 Sleuth kit을 설치합니다.

그리고 포렌식 부분에서 중요하게 생각되는 automount를 비활성 시킵니다.
방법 : apps > nautilus > preferences > media_automount > uncheck

 --------------------------------------------------------------------------------------------------------

우분투에서 포렌식 테스트를 막힘없이 진행하기 위해 필요한 라이브러리와 AOSP(Android Open Source Project)를 받아서 설치하거나 저장합니다.

root@ubuntu:~# sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"

root@ubuntu:~# apt-get update
root@ubuntu:~# apt-get upgrade -u
root@ubuntu:~# sudo reboot

root@ubuntu:~#sudo apt-get install git-core gnupg flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev squashfs-tools build-essential zip curl libncurses5-dev zlib1g-dev sun-java6-jdk pngcrush g++-multilib lib32z1-dev lib32ncurses5-dev lib32readline5-dev gcc-4.3-multilib g++-4.3-multilib

root@ubuntu:~/Desktop# mkdir -p ~/bin
root@ubuntu:~/Desktop# mkdir -p ~/android
root@ubuntu:~/Desktop# curl http://android.git.kernel.org/repo > ~/bin/repo
root@ubuntu:~/Desktop# chmod 755 ~/bin/repo 

root@ubuntu:~/android# cd ~/android/
root@ubuntu:~/android# time ~/bin/repo init -u git://android.git.kernel.org/platform/manifest.git

root@ubuntu:~/android# time ~/bin/repo sync

cd ~/android
source build/envsetup.sh
lunch
time make

--------------------------------------------------------------------------------------------------------

Linux SDK 설치

root@ubuntu:~/wget http://dl.google.com/android/android-sdk_r12-linux_x86.tgz

첨고 : 접속이 안될경우 http://developer.android.com/sdk/index.html로 들어가서 다운로드 합니다.
참고 : 리눅스가 64bit일 경우, sudo apt-get install ia32-libs로 32bit 라이브러리를 설치합니다.

- android 실행
root@ubuntu:~# tar -xvzf android-sdk_r12-linux_x86.tgz
root@ubuntu:~# cd ~/android-sdk-linux_x86/tools
root@ubuntu:~/android-sdk-linux_x86/tools# ./android

안드로이드를 실행하면, Android SKD and Android Virtual Device(AVD) manager가 실행됩니다.
available packages > SDK Platform Android 2.3, API 9, revision 1> check > install selected > Accept ALL > Install

- PATH 설정

nano -w ~/.bashrc
export PATH=$PATH:/home/dorumugs/android-sdk-linux_x86/tools/
export PATH=$PATH:/home/dorumugs/android-sdk-linux_x86/platform-tools/

- 안드로이드 USB profile생성
sudo nano -w /etc/udev/rules.d/51-android.rules
벤더사들의 ID 확인하기 위해서는 아래 URL 확인하면됩니다.
참고 : http://developer.android.com/guide/developing/device.html#VendorUds

#Acer
SUBSYSTEM=="usb", SYSFS{idVendor}=="502", MODE"0666"
#Dell
SUBSYSTEM=="usb", SYSFS{idVendor}=="413c", MODE"0666"
#Foxconn
SUBSYSTEM=="usb", SYSFS{idVendor}=="489", MODE"0666"
#Garmin-Asus
SUBSYSTEM=="usb", SYSFS{idVendor}=="091E", MODE"0666"
#HTC
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE"0666"
#Huawei
SUBSYSTEM=="usb", SYSFS{idVendor}=="12d1", MODE"0666"
#Kyocera
SUBSYSTEM=="usb", SYSFS{idVendor}=="482", MODE"0666"
#LG
SUBSYSTEM=="usb", SYSFS{idVendor}=="1004", MODE"0666"
#Motorola
SUBSYSTEM=="usb", SYSFS{idVendor}=="22b8", MODE"0666"
#Nvidia
SUBSYSTEM=="usb", SYSFS{idVendor}=="955", MODE"0666"
#Pantech
SUBSYSTEM=="usb", SYSFS{idVendor}=="10A9", MODE"0666"
#Samsung
SUBSYSTEM=="usb", SYSFS{idVendor}=="400000000", MODE"0666
#Sharp
SUBSYSTEM=="usb", SYSFS{idVendor}=="04dd", MODE"0666"
#Sony Ericsson
SUBSYSTEM=="usb", SYSFS{idVendor}=="0fce", MODE"0666"
#ZTE
SUBSYSTEM=="usb", SYSFS{idVendor}=="19D2", MODE"0666"

- 파일 권한 변경
dorumugs@ubuntu:~$ sudo chmod a+r /etc/udev/rules.d/51-android.rules 


 --------------------------------------------------------------------------------------------------------

설치한 에뮬레이터 동작

에뮬레이터를 사용하여 기존에 모바일에서 동작하는 시스템을 그대로 구현할 수 있습니다. 

시스템을 그대로 구현하고 테스트를 진행할 수 있는 것은 포렌식에 있어서 증명할 수 있는 기회를 제공하므로

매우 중요합니다. 에뮬레이터를 동작 시켜 보도록 합니다.

dorumugs@ubuntu:~$ android (PATH를 지정하여 어디서든 실행이 가능합니다.)

 




 
에뮬레이터를 구동한 후 저장되는 디렉터리는 아래와 같습니다.
Ubuntu => /hoome/<username>/.android

구동되고 있는 에뮬에이터의 디렉터리 구조를 확인해보면 아래와 같은 디렉터리 구조를 확인 할 수 있습니다.
cache.img - 디스크의 /cache 파티션 => YAFFS2 file system
sdcard.img - SD 카드의 이미지 => fat32 file system
userdata-qemuu.img - 디스크의 /data 파티션 => YAFFS2 file system

dorumugs@ubuntu:~/.android/avd/dorumugs_test.avd$ file sdcard.img
sdcard.img: x86 boot sector, code offset 0x5a, OEM-ID "MSWIN4.1", Media descriptor 0xf8, sectors 51200 (volumes > 32 MB) , FAT (32 bit), sectors/FAT 397, reserved3 0x800000, serial number 0xd06340e, label: "     SDCARD"

dorumugs@ubuntu:~/.android/avd/dorumugs_test.avd$ file cache.img
cache.img: VMS Alpha executable

dorumugs@ubuntu:~/.android/avd/dorumugs_test.avd$ file userdata-qemu.img
userdata-qemu.img: VMS Alpha executable

 
 --------------------------------------------------------------------------------------------------------


 

'Forensics' 카테고리의 다른 글

안드로이드 포렌식 3편 Log  (2) 2011.08.14
안드로이드 포렌식 2편 adb 사용  (0) 2011.08.14
MAC live data 수집  (0) 2011.03.10
ENCE 준비 1. 시험 신청  (0) 2011.03.09
침해대응시 사용하는 스크립트 툴  (0) 2011.02.10
Posted by 도시형닌자
:

모든 테스트는 Windows xp service pack 3에서 수행되었습니다.

- winDBG download
http://msdn.microsoft.com/en-us/windows/hardware/gg463009

- winDBG symbol download
http://msdn.microsoft.com/en-us/windows/hardware/gg463028


-LiveKD download
http://technet.microsoft.com/en-us/sysinternals/bb897415

위 URL에서 테스트시 사용할 파일을 다운로드 한 후 설치하였습니다.

winDBG는 기본설정으로 설치하였으며, symbol은 c:\symbols에 설치하였습니다.


1. LiveKD
설치 후 winDBG로 커널 접근을 쉽게 도와주는 LiveKD를  사용하였습니다.

-w 옵션을 사용하여, LiveKD를 사용함과 동시에 winDBG를 사용하였습니다.

사용자 삽입 이미지








2. PROCESS 내역 보기

!process 0 0 을 사용하여 현재 동작하고 있는 프로세스 내역을 확인해 봅니다.

0: kd> !process 0 0
**** NT ACTIVE PROCESS DUMP ****
PROCESS 825b7830  SessionId: none  Cid: 0004    Peb: 00000000  ParentCid: 0000
    DirBase: 02b40020  ObjectTable: e1002e40  HandleCount: 264.
    Image: System

PROCESS 82429948  SessionId: none  Cid: 0220    Peb: 7ffd8000  ParentCid: 0004
    DirBase: 02b40040  ObjectTable: e14558d8  HandleCount:  19.
    Image: smss.exe

PROCESS 82446da0  SessionId: 0  Cid: 0260    Peb: 7ffd7000  ParentCid: 0220
    DirBase: 02b40060  ObjectTable: e15e3858  HandleCount: 378.
    Image: csrss.exe

PROCESS 82344020  SessionId: 0  Cid: 0278    Peb: 7ffd8000  ParentCid: 0220
    DirBase: 02b40080  ObjectTable: e14f2590  HandleCount: 460.
    Image: winlogon.exe

PROCESS 8242f6e8  SessionId: 0  Cid: 02a4    Peb: 7ffdb000  ParentCid: 0278
    DirBase: 02b400a0  ObjectTable: e17ac350  HandleCount: 261.
    Image: services.exe

PROCESS 82449b88  SessionId: 0  Cid: 02b0    Peb: 7ffd7000  ParentCid: 0278
    DirBase: 02b400c0  ObjectTable: e17a6dd0  HandleCount: 349.
    Image: lsass.exe



3. 프로세스 링크 따라가기

작업관리자 -> 프로세스에서 확인되는 프로세스를 winDBG로 따라 들어 가보겠습니다.

0: kd> dt _EPROCESS 8238ea00
   +0x174 ImageFileName    : [16]  "cmd.exe"

   +0x088 ActiveProcessLinks : _LIST_ENTRY [ 0x821dc0a8 - 0x81f03658 ]


0: kd> dd 8238ea00+0x088
8238ea88  821dc0a8 81f03658
                  FLINK       BLINK


0: kd> dt _EPROCESS 81f03658-0x88
   +0x174 ImageFileName    : [16]  "AYServiceNT.aye"

   +0x088 ActiveProcessLinks : _LIST_ENTRY [ 0x8238ea88 - 0x82366280 ]



4. 프로세스 특징

윈도우는 Memory Pool에 8바이트 단위로 메모리를 할당합니다. Memory Pool에는 Ethread와 Eprocess와 같은 커널 오브젝트가 존재합니다.


- Pool_Header
메모리 풀에 할당된 메모리 블록은 관리를 위한 자료구조인 Pool_Header를 포함합니다.


- windbg에서
dt _POOL_HEADER 를 확인하면 0x004 offset에 PoolTag가 있습니다.


4-1. _POOL_HEADER에서 확인된 주소가 process와 thread를 담고있으면 0xe36f7250, 0xe5726854값을 가지게 됩니다.


PROCESS 82283370  SessionId: 0  Cid: 0574    Peb: 7ffde000  ParentCid: 0638
    DirBase: 02b403a0  ObjectTable: e1624420  HandleCount:  56.
    Image: notepad.exe


0: kd> dt _POOL_HEADER 82283370-0x18-0x8
nt!_POOL_HEADER
   +0x000 PreviousSize     : 0y000000001 (0x1)
   +0x000 PoolIndex        : 0y0000000 (0)
   +0x002 BlockSize        : 0y001010000 (0x50)
   +0x002 PoolType         : 0y0000101 (0x5)
   +0x000 Ulong1           : 0xa500001
   +0x004 ProcessBilled    : 0xe36f7250 _EPROCESS
   +0x004 PoolTag          : 0xe36f7250
   +0x004 AllocatorBackTraceIndex : 0x7250
   +0x006 PoolTagHash      : 0xe36f


4-2. Object_Header
Object_HEADER는 Type필드를 가지고 있으면 오브젝트에 대한 일반적인 속성을 담고 있습니다. 해당 값이 프로세스일 경우 PsProcessType과 같거나 0xbad040값을 갖습니다.

PROCESS 82283370  SessionId: 0  Cid: 0574    Peb: 7ffde000  ParentCid: 0638
    DirBase: 02b403a0  ObjectTable: e1624420  HandleCount:  56.
    Image: notepad.exe

0: kd> !object 82283370
Object: 82283370  Type: (825b7e70) Process
    ObjectHeader: 82283358 (old version)
    HandleCount: 2  PointerCount: 17

0: kd> dd PsProcessType L1
805659b8  825b7e70



4-3. DISPATCHER_HEADER
Eprocess구조체 가장 앞부분에 존재하는 DISPATCHER_HEADER의 type과 size를 확인해보면, 프로세스의 경우 type은 0x3 size는 0x1b라는 것을 알 수 있습니다.


PROCESS 82283370  SessionId: 0  Cid: 0574    Peb: 7ffde000  ParentCid: 0638
    DirBase: 02b403a0  ObjectTable: e1624420  HandleCount:  56.
    Image: notepad.exe


0: kd> dt _DISPATCHER_HEADER 82283370
ntdll!_DISPATCHER_HEADER
   +0x000 Type             : 0x3 ''
   +0x001 Absolute         : 0 ''
   +0x002 Size             : 0x1b ''
   +0x003 Inserted         : 0 ''
   +0x004 SignalState      : 0
   +0x008 WaitListHead     : _LIST_ENTRY [ 0x82283378 - 0x82283378 ]



'Header 가지고 놀기' 카테고리의 다른 글

PE구조 알아보자  (0) 2011.02.10
Prefetch Header 분석  (4) 2010.01.08
Thumbs.db을 통한 사진파일 복구  (3) 2009.09.02
Posted by 도시형닌자
: