MTP模式恢复取证是通过媒体传输协议(Media Transfer Protocol,简称MTP模式)1,对手机无法插拔SD卡所导致传统数据恢复软件和方法都无法恢复的被删除信息进行恢复提取的取证方法。
MTP模式及其体系结构基于MTP的USB连接模式MTP模式(如图1所示)是一种新的USB连接模式,该协议允许用户在移动设备上线性访问媒体文件。PTP只是被设计用于从数码相机下载照片,而MTP可以支持数字音频播放器上的音乐文件和便携式媒体播放器上的媒体文件,以及个人数字助理中个人信息的传输。传统的USB MSC模式下,电脑操作存储设备的粒度是设备块(FAT block),而不是文件系统,当Android手机通过USB MSC将内存卡挂载到电脑后,电脑就拥有对内存卡的绝对控制权。这样,手机就无法同时访问内存卡了,而且在电脑对内存卡操作的同时也有可能破坏其文件系统,导致内存卡重新挂载到手机后不能被识别。而MTP模式连接是在逻辑文件层完成读写,内存卡的控制权其实还是属于手机,只不过智能手机通过MTP协议向电脑构建了一个虚拟文件系统,电脑在操作其中的文件时,都会通过标准 MTP协议向智能手机发起请求,这样的连接使文件更安全,减少损毁文件的风险。因此,越来越多智能手机的制造厂商支持MTP的连接模式,甚至有些型号的手机不支持USB MSC,只支持MTP模式来打开内置存储。
MTP模式的体系结构Android MTP的体系结构2如图2所示
1、C++层
C++层包括几个主要对象,如Mtp Request Packe负责 从USB驱动读取数据,并结构化命令格式及其参数; Mtp Data-Packet负责结构化手机要返回给PC的数据包;Mtp Response Packet负责结构化手机要给PC返回的response;Mtp Server负责解析来自PC的命令并调用相应 的接口函数进行处理。
2、Java层
Java层包括Usb Receiver、Mtp Service、Mtp Server等 对象。其中Usb Receiver用来监视USB事件,判断何时启动或停止Mtp Service;Mtp Service负责启动Mtp Server和加载存储设备的信息到数据库;Mtp Server负责通过jni接口去启动/停止C++层中Mtp Server以及处理Storage的添加和删除;Media Provider则负责查询和更新数据库;Mtp Database的功能用于在Media Provider和Mtp Server之间转换数据格式,例如把MTP传递过来的信息(如文件大小、文件路径等)转换成Media Provider需要的格式以方便其更新数据库。
MTP模式恢复取证的难点MTP模式提高了手机文件系统的安全性,但却给取证人员带来了难题。其一,现阶段许多手机厂商不支持外插SD卡,且仅有一个内置存储器。这样的硬件结构使得取证人员无法取下手机存储卡,来单独使用专用设备进行恢复及取证工作;其二,专用的取证设备只能恢复短信、通话记录、通讯录等文本信息,无法恢复手机内置存储卡内被删除的图片,录音等多媒体信息;其三,对于内置存储卡,传统的取证方法是:手机连接电脑以后,可以识别出盘符,这样可以用数据恢复软件(Encase、取证大师、 Easy recovery等)直接恢复并进行取证。但是,对于只支持 MTP模式的智能手机,连接电脑后,根本无法识别为盘符,而是提示“便携式媒体播放机”形式,故而传统的取证恢复方法都无法使用。
MTP模式恢复取证的对策根据以上的分析,得出对于MTP模式连接的智能手机所采用的取证方法流程如图3所示。 对于MTP连接模式的手机多媒体数据恢复取证有以下三种情况:第一种情况,手机支持外插SD卡,由于音频、图像、视频等多媒体信息一般保存在SD卡中,所以取下SD卡直接用读卡器读取里面的信息,或者使用恢复软件实现多媒体信息的数据恢复和取证,参考文献3通过分析 NAND的存储结构和YAFFS2文件系统的结构,提出一种方法来恢复Android智能手机中被删除的数据。第二种情况,手机不支持外插SD卡,即使用内置一体存储器。此时为了保证数据的完整性,参考文献4通过Android SDK工具对手机内外置存储进行镜像备份,逻辑分析利用文件系统分析,查找每个应用程序自带的数据库文件来获得有价值信息,物理分析通过对内存镜像进行数据恢复以寻找删除的文件,这种情况下手机镜像的获取是成功恢复的首要条件,但由于不同手机厂商对系统的不同设置使得并不是所有的手机都可以成功制作镜像文件,有些品牌的手机镜像甚至需要进入recovery模式才能获取。第三种情况,对于手机不支持外插SD卡,在现阶段技术手段条件下也无法获取镜像时,可以在手机端注入数据恢复APK程序来进行手机端数据恢复取证。
MTP模式取证的方法可成功镜像的手机取证方法根据以上的分析发现,MTP手机数据恢复取证的难点主要针对内置存储卡且手机仅支持MTP模式的连接方式的情况。对于上述情况,为了保证数据的完整性和有效性,首选的方法是先提取手机的镜像文件,再使用分析软件对该镜像进行分析。要提取手机的镜像文件,首先必须获取手机的root权限,然后利用取证大师或Encase等专业软件 对镜像文件进行挂载恢复。提取手机镜像的方法很多,通常可以使用网络上的免费软件获取,但由于手机平台的多样化,对于镜像无法直接获取的情况下,可以进入手机的Recovery模式,使用参考文献5的方法提取镜像。提取过程如下:
1、 获取mtd值
通过组合键(不同品牌和型号的手机组合键不同,需要上网查询)手机进入了recovery模式,进入DOS环境下,通过ADB命令中“ADB devices”连接手机,列出 ADB设备。如果返回“List of devices attached”则表示连 接成功,然后使用su指令进入superuser权限,利用cat /proc/mtd找到userdata的mtd值(一般为5),如图4所示。
2、镜像获取
可以使用mount |grep /data获取dd的镜像目标,镜像的命令为dd if=/dev/block/mtdblock5 of=/mnt/sdcard/out. Img,若dd镜像不成功时,也可直接用cat方式输出镜像文件,如图5所示。命令为cat/dev/mtd/mtd5>/mnt/sdcard/out.img.
镜像不成功时的手机取证方法对于提取成功的img镜像文件,可以用Encase、Easyrecovery等常用的硬盘恢复软件来实现数据的恢复取证。镜像的成功获取使得对于手机数据的恢复取证脱离了手机系统和手机连接模式的环境限制,同时也保证了数据的完整性和有效性。但由于一些智能手机厂家对底层操作系统的不同设置和修改,使得利用上述方法也无法获取有效镜像的情况,例如小米2、HTC one系列。对于手机镜像不成功或镜像文件无法分析的情况,即上述所说的第三种情况,图5的流程图采用在手机端注入APK恢复程序(Hexamob_Recovery_ PRO_5.0.apk)来进行手机端的数据恢复。
实验使用的智能手机为小米2,该手机不支持外插SD卡,且仅支持MTP连接模式。恢复的方法是,先打开 USB调试,获取手机root权限,连接电脑后安装APK恢复程序,并运行。但是需要注意的是,在运行该恢复程序之前,由于该程序只能一次性恢复,如果手机在恢复的过程中锁屏,就会停止数据的恢复,所以可以在恢复前将休眠时间改成永不,然后再开始进行。程序成功运行后,选择全部恢复,然后选择恢复的盘和恢复后的文件所在的位置。为了保证原始信息的完整性,即手机中原始的信息不被新恢复的信息所覆盖,故在恢复前利用OTG连接U盘或移动硬盘后,设置会数据恢复后的存储目标盘,如图6所示:
最后选择需要恢复的多媒体信息的类型,开始进行恢复,如图7所示。恢复完成后在U盘上会出现recovered目 录,存放的就是手机内存中的所有图片,包括已删除的图片,从而成功完成手机取证。
本词条内容贡献者为:
麦永浩 - 教授 - 湖北警官学院电子取证重点实验室