Android取证:使用ADB和DD对文件系统做镜像

栏目: 后端 · 发布时间: 7年前

内容简介:从本文开始我将为大家带来一系列与数字取证相关的文章,并将重点关注移动设备方面的取证技术。在这篇文章中,我将为大家分享一些关于我对Android设备镜像采集的想法。在Android设备上,有两种我们可以执行的镜像采集类型:实时采集:在正在运行的设备上执行。通常,分析人员会使用各种工具获取root权限,并使用DD提取镜像;

Android取证:使用ADB和DD对文件系统做镜像

从本文开始我将为大家带来一系列与数字取证相关的文章,并将重点关注移动设备方面的取证技术。在这篇文章中,我将为大家分享一些关于我对Android设备镜像采集的想法。在Android设备上,有两种我们可以执行的镜像采集类型:

实时采集:在正在运行的设备上执行。通常,分析人员会使用各种 工具 获取root权限,并使用DD提取镜像;

死采集:在设备上执行启动到另一个状态。例如,如果设备安装了ClockwordMod,则分析人员可以重启设备恢复并获取root shell。

在本文中我将为大家展示如何执行Android data分区的实时采集。

注意:为了执行过程的顺利,设备必须已获取root权限。

Root Android

如今,root Android设备已成为一种非常普遍的现象,在我的取证工作中我经常会碰到已root的手机设备。此外,在某些情况下为了提取某些数据,取证人员必须要自己root设备。Root的过程特定于每个手机型号,Android版本以及内部版本号,因此想要成功root必须根据你的手机型号找到合适的工具。

大多数现代Android手机都可以使用一款名为KingoRoot的工具获取root权限,如果你的手机并不适用(bootloader锁定,Knox等),你可以在 XDA Developers 上寻求帮助。

Android root软件有时会使用恶意软件重新打包一些可能不需要的程序,这可能会改变文件系统,必须在分析过程中进行过滤。因此,为了安全起见我建议大家,只在官方方法不起作用时再使用这些软件。

镜像 /data 分区

我们将使用“dd”工具来完成我们的工作。默认情况下,“dd”在Android的“/system/bin”目录下。

为了限制设备文件系统的更改,镜像将使用NetCat创建的隧道传输到工作站。

因此,root后的第一步必须先安装Busybox( 在这里下载 ),这是一个集成了三百多个最常用 Linux 命令和工具的软件。

下载busybox Apk后,使用adb命令在设备上进行安装:

adb -d install BusyBox.apk

然后,连接到手机并检查root访问权限:

adb -d shell
ls /data
su
ls /data

我们使用 ls /data 来测试我们是否可以访问受保护的目录。

第一次运行它时,应该会出现失败的情况。我们使用 su 命令将用户切换到root。然后,再次使用 ls /data 命令进行测试看现在我们是否可以访问受保护的目录。

接下来,我们需要检查设备上已安装的分区:

root@VF-895N:/ # mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,seclabel,nosuid,relatime,size=450904k,nr_inodes=112726,mode=755 0 0
devpts /dev/pts devpts rw,seclabel,relatime,mode=600 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
adb /dev/usb-ffs/adb functionfs rw,relatime 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,seclabel,relatime 0 0
selinuxfs /sys/fs/selinux selinuxfs rw,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
none /sys/fs/cgroup tmpfs rw,seclabel,relatime,size=450904k,nr_inodes=112726,mode=750,gid=1000 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,seclabel,relatime,size=450904k,nr_inodes=112726,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,seclabel,relatime,size=450904k,nr_inodes=112726,mode=755,gid=1000 0 0
/dev/block/bootdevice/by-name/system /system ext4 ro,seclabel,relatime,discard,data=ordered 0 0
/dev/block/bootdevice/by-name/userdata /data ext4 rw,seclabel,nosuid,nodev,relatime,discard,noauto_da_alloc,data=ordered 0 0
/dev/block/bootdevice/by-name/cache /cache ext4 rw,seclabel,nosuid,nodev,relatime,data=ordered 0 0
/dev/block/bootdevice/by-name/persist /persist ext4 rw,seclabel,nosuid,nodev,relatime,data=ordered 0 0
/dev/block/bootdevice/by-name/tctpersist /tctpersist ext4 rw,seclabel,nosuid,nodev,relatime,data=ordered 0 0
/dev/block/bootdevice/by-name/modem /firmware vfat ro,context=u:object_r:firmware_file:s0,relatime,uid=1000,gid=1000,fmask=0337,dmask=0227,codepage=437,iocharset=iso8859-1,shortname=lower,errors=remount-ro 0 0
/dev/fuse /storage/uicc1 fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
/dev/fuse /storage/uicc0 fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
/dev/fuse /mnt/shell/emulated fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
/dev/fuse /storage/usbotg fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
/dev/fuse /storage/sdcard0 fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
/dev/block/vold/179:65 /mnt/media_rw/sdcard1 vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1023,gid=1023,fmask=0007,dmask=0007,allow_utime=0020,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/block/vold/179:65 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1023,gid=1023,fmask=0007,dmask=0007,allow_utime=0020,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/fuse /storage/sdcard1 fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0

我们重点来关注data分区,在本例中为“ /dev/block/bootdevice/by-name/userdata ”。

接下来,我们需要设置工作站和移动设备之间的连接路由,转发端口为8888。

在工作站上运行:

adb forward tcp:8888 tcp:8888

现在让我们使用“dd”启动镜像过程并使用netcat管道传输数据。

在手机设备的root shell下运行:

root@VF-895N:/ #dd if=/dev/block/bootdevice/by-name/userdata | busybox nc -l -p 8888

并在取证工作站上运行:

nc 127.0.0.1 8888 > android_data.dd

镜像过程完成后,将如下图所示:

Android取证:使用ADB和DD对文件系统做镜像

然后,我们可以使用sleuthkit或Autopsy对镜像进行分析。

Android取证:使用ADB和DD对文件系统做镜像

*参考来源: andreafortuna ,FB小编secist编译,转载请注明来自FreeBuf.COM


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web Caching

Web Caching

Duane Wessels / O'Reilly Media, Inc. / 2001-6 / 39.95美元

On the World Wide Web, speed and efficiency are vital. Users have little patience for slow web pages, while network administrators want to make the most of their available bandwidth. A properly design......一起来看看 《Web Caching》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

MD5 加密
MD5 加密

MD5 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具