Android智能手机的取证
L引言
手机已经成为人们日常生活中不可或缺的设备,尤其是配备了独立的操作系统的智能手机越来越受到人们的青睐,智能手机可以像个人电脑一样支持用户自行安装软件、游戏等第三方服务商提供的程序,是一个功能强大,集通话、短信、网络接入、影视娱乐为一体的综合性个人手持终端设备。据易观国际(AnalysysInternational)统计2010年全球智能手机销量达到2.93亿部,与2008年的1.51亿部相比几乎增长一倍。
与此同时,利用智能手机进行犯罪活动也屡见不鲜,例如通过电子邮件进行诈骗,短信息进行骚扰,未成年人色情买卖、毒品交易等。手机取证正是打击这类犯罪的一个有效手段,对手机内存、SIM卡、闪存卡中的电子证据进行提取、保护与分析,整理出有价值的案件线索,这对于法庭裁决相当重要。而智能手机包含了更多有价值的信息,例如电子邮件、浏览器历史、聊天记录等。
但是,目前市面上流行的智能手机在硬件、软件以及数据接口等标准方面存在着不统一,表现在操作系统类型和数据存储方面,即使是同一手机厂商生产的两种不同款的手机也存在着某种程度的不兼容性。手机的这种缺乏统一的多样性导致取证困难重重。
有许多学者对智能手机的结构和工作方式进行了研究,从而使得对智能手机取证变得容易。对于黑莓手机和iPhone手机,鉴于目前已有大量的操作指南和软件资源,因此对这两类手机进行取证比较方便。Android第一款智能手机在2008年才刚刚上市,但是作为一个新兴的智能手机系统,呈快速发展趋势。本文的目的旨在对Android智能手机的取证方法进行研究和探讨,在简述了Android手机的基本结构和工作方式后,详细描述了取证的具体操作步骤。
在系统最底层,Android系统基于Linux2.6内核来提供系统的核心服务,例如安全机制,内存管理,进程管理,网络堆栈和驱动模块;中间件层包含C/C++程序库和Android运行库,C/C++程序库能被Andruid系统中不同的组件使用,通过Android应用程序框架为开发者提供服务。Android运行库提供了Java语言核心库内的大部分功能,每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例,Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统;应用程序框架层简化了组件的重用,任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块.同样该应用程序重用机制也使用户可以方便的替换程序组件;应用程序层包括email客户端、短信、日历、地图、浏览器、联系人管理程序等。所有的应用程序都是使用JAVA语言编写的,
Android的文件系统采用的是-种针对NAND设备的新型文件系统Yaffs2,读写速度更快,并支持大容量的NAND闪存(Flash)芯片„
本文的取证手机为HTC公司生产的第二代An-droid智能手机,操作系统版本为Rom2.1,用到的取证T.具主要有AndroidSDK.SQI.iteExpertfllEnCaseAndroidSDK是Google公司为在Android手机上开发应用程序提供的开发包API和一系列开发工具,其中的Android调试桥(AndroidDebugBridge,adh)可以让用户在模拟器或设备上安装应用程序,并从命令行访问模拟器或设备,SQLiteExpert是一个可以在SQLite数据库上执行创建、编辑、复制、提取等操作的可视化管理工具。EnCase作为专业的司法取证软件,可以从镜像文件中发现、分析、展示电子证据。
3.2连接设备
首先确保鉴定工作站上安装AndroidUSB驱动,开启手机上的USB调试模式(图2),然后通过mini-USB数据线连接手机和计算机。为了验证手机设备已经连接上,通过AndroidSDK工具箱中的adb命令查看,adb位于SDK目录下的platform-tools或者tools目录下。在命令行敲人adbdevices,这时系统会列出已连接的Amhni(l设备(图3)。
手机已经成为人们日常生活中不可或缺的设备,尤其是配备了独立的操作系统的智能手机越来越受到人们的青睐,智能手机可以像个人电脑一样支持用户自行安装软件、游戏等第三方服务商提供的程序,是一个功能强大,集通话、短信、网络接入、影视娱乐为一体的综合性个人手持终端设备。据易观国际(AnalysysInternational)统计2010年全球智能手机销量达到2.93亿部,与2008年的1.51亿部相比几乎增长一倍。
与此同时,利用智能手机进行犯罪活动也屡见不鲜,例如通过电子邮件进行诈骗,短信息进行骚扰,未成年人色情买卖、毒品交易等。手机取证正是打击这类犯罪的一个有效手段,对手机内存、SIM卡、闪存卡中的电子证据进行提取、保护与分析,整理出有价值的案件线索,这对于法庭裁决相当重要。而智能手机包含了更多有价值的信息,例如电子邮件、浏览器历史、聊天记录等。
但是,目前市面上流行的智能手机在硬件、软件以及数据接口等标准方面存在着不统一,表现在操作系统类型和数据存储方面,即使是同一手机厂商生产的两种不同款的手机也存在着某种程度的不兼容性。手机的这种缺乏统一的多样性导致取证困难重重。
有许多学者对智能手机的结构和工作方式进行了研究,从而使得对智能手机取证变得容易。对于黑莓手机和iPhone手机,鉴于目前已有大量的操作指南和软件资源,因此对这两类手机进行取证比较方便。Android第一款智能手机在2008年才刚刚上市,但是作为一个新兴的智能手机系统,呈快速发展趋势。本文的目的旨在对Android智能手机的取证方法进行研究和探讨,在简述了Android手机的基本结构和工作方式后,详细描述了取证的具体操作步骤。
- Android系统简介
在系统最底层,Android系统基于Linux2.6内核来提供系统的核心服务,例如安全机制,内存管理,进程管理,网络堆栈和驱动模块;中间件层包含C/C++程序库和Android运行库,C/C++程序库能被Andruid系统中不同的组件使用,通过Android应用程序框架为开发者提供服务。Android运行库提供了Java语言核心库内的大部分功能,每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例,Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统;应用程序框架层简化了组件的重用,任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块.同样该应用程序重用机制也使用户可以方便的替换程序组件;应用程序层包括email客户端、短信、日历、地图、浏览器、联系人管理程序等。所有的应用程序都是使用JAVA语言编写的,
Android的文件系统采用的是-种针对NAND设备的新型文件系统Yaffs2,读写速度更快,并支持大容量的NAND闪存(Flash)芯片„
- Android手机取证方法
本文的取证手机为HTC公司生产的第二代An-droid智能手机,操作系统版本为Rom2.1,用到的取证T.具主要有AndroidSDK.SQI.iteExpertfllEnCaseAndroidSDK是Google公司为在Android手机上开发应用程序提供的开发包API和一系列开发工具,其中的Android调试桥(AndroidDebugBridge,adh)可以让用户在模拟器或设备上安装应用程序,并从命令行访问模拟器或设备,SQLiteExpert是一个可以在SQLite数据库上执行创建、编辑、复制、提取等操作的可视化管理工具。EnCase作为专业的司法取证软件,可以从镜像文件中发现、分析、展示电子证据。
3.2连接设备
首先确保鉴定工作站上安装AndroidUSB驱动,开启手机上的USB调试模式(图2),然后通过mini-USB数据线连接手机和计算机。为了验证手机设备已经连接上,通过AndroidSDK工具箱中的adb命令查看,adb位于SDK目录下的platform-tools或者tools目录下。在命令行敲人adbdevices,这时系统会列出已连接的Amhni(l设备(图3)。
IC:\HBB01S\»jrstc»32\c»d.e*«
E:NAndroid\androi<l-adK-2.2Spl*tfam-tools>adbdevicesListofd«vicec*tt*chf>dWT94SKF10079dsvice
2:NAndroid\androld-adk-2.2'vpl*tfomtuols>
图3查看手机与电脑的连接情况
3.3制作内存镜像
Android手机通常在出厂或者预装操作系统时已经取得root权限,这时可以通过adhshellIs-1查看
文件系统根目录的结构,其大体上与Linux文件系统的根目录类似,cache是缓存临时文件夹,data存放了用户安装的应用程序以及所有应用程序的用户数据,etc指向/system/etc是众所周知的配置文件存放目录,sdcard是SD卡中的FAT32文件系统挂载的目录,system在Android文件系统占有及其重要的位置,存放了基本上所有的工具、库和系统应用程序,对于Android手机取证,一般我们只需要关注以上几个目录就可以。
一般地,读取手机内存(包括外置存储卡和内置闪存)中的数据,是利用手机操作系统或手机制造商提供的接口软件来读取的,但这样操作有可能会破坏原始数据,也不能恢复被删除的数据最好的方法是像计算机取证那样镜像备份手机内存的数据,然后进行数据提取与分析。
对于手机外置存储卡,也就是上面描述的sdcard目录,可以通过读卡器连接到计算机上,然后利用EnCase制作该存储卡的镜像文件,注意存储卡与电脑连接时必须打开写保护,以防止不当操作破坏存储卡里的证据。
对于手机内置存储,取证时需要关注系统以及用户的所有信息,通过命令adbshellmount或者adbshellcat?/proc/mtd查看手机所有的文件系统装载情况,图4告诉我们Android上几个重要文件目录所对应的设备号,这些设备都位于/dev/mtd目录下,mt(13对应于系统目录system,mtd4对应于缓存目录cache,mtd5对应于用户数据目录data。
:\fmOVS\ffy*tea32\cad.eze
E'VindroidNAndwid-sdk-2.2\platforn^toeIs>Adbshellnount
E:NAndroid\androi<l-adK-2.2Spl*tfam-tools>adbdevicesListofd«vicec*tt*chf>dWT94SKF10079dsvice
2:NAndroid\androld-adk-2.2'vpl*tfomtuols>
图3查看手机与电脑的连接情况
3.3制作内存镜像
Android手机通常在出厂或者预装操作系统时已经取得root权限,这时可以通过adhshellIs-1查看
文件系统根目录的结构,其大体上与Linux文件系统的根目录类似,cache是缓存临时文件夹,data存放了用户安装的应用程序以及所有应用程序的用户数据,etc指向/system/etc是众所周知的配置文件存放目录,sdcard是SD卡中的FAT32文件系统挂载的目录,system在Android文件系统占有及其重要的位置,存放了基本上所有的工具、库和系统应用程序,对于Android手机取证,一般我们只需要关注以上几个目录就可以。
一般地,读取手机内存(包括外置存储卡和内置闪存)中的数据,是利用手机操作系统或手机制造商提供的接口软件来读取的,但这样操作有可能会破坏原始数据,也不能恢复被删除的数据最好的方法是像计算机取证那样镜像备份手机内存的数据,然后进行数据提取与分析。
对于手机外置存储卡,也就是上面描述的sdcard目录,可以通过读卡器连接到计算机上,然后利用EnCase制作该存储卡的镜像文件,注意存储卡与电脑连接时必须打开写保护,以防止不当操作破坏存储卡里的证据。
对于手机内置存储,取证时需要关注系统以及用户的所有信息,通过命令adbshellmount或者adbshellcat?/proc/mtd查看手机所有的文件系统装载情况,图4告诉我们Android上几个重要文件目录所对应的设备号,这些设备都位于/dev/mtd目录下,mt(13对应于系统目录system,mtd4对应于缓存目录cache,mtd5对应于用户数据目录data。
:\fmOVS\ffy*tea32\cad.eze
E'VindroidNAndwid-sdk-2.2\platforn^toeIs>Adbshellnount