上一篇Android-APP 安全(五),通过对android系统文件系统与数据结构的认识(应用程序运行时产生的数据、数据的存储方式、存储路径、内存中可能包含的应用程序用户数据、android使用的文件系统以及查看方式等。)可以尝试手工对android系统进行检查取证,手工取证虽然繁琐以及耗费时间,但是却能更好的了解android系统。
下面是针对android系统的两种取证方式:逻辑采集以及物理采集的快速取证的介绍。我在Android-APP 安全(四)中对逻辑采集以及物理采集的概念有过提到:
Android取证:ADB push
adb push用于将文件系统的不同部分复制到工作站中进行进一步分析。除非对android终端设备具有root访问权限,或者运行的是一个定制的只读内存(ROM),否则,运行在终端设备上的adb后台进行只能在拥有shell访问权限的状态下运行,因此,它无法访问某些与取证更加相关的文件。但还是可以访问到一定数量的文件。
如果需要对某些shell用户没有访问权限的文件进行访问,很简单,这些文件不会被复制出来。但是,如果拥有足够的访问权限,这个方法就非常简单,也非常有效。
由于大多数的手机都没有root权限(至少默认情况下),此技术显得没有什么价值。然而,这是一个非常强大的、需要很好理解的工具,也有一些场景非常适合应用此技术。这些场景包括:
- 对于没有root访问的终端设备,adb pull仍然可以用来访问非常有用的文件(如未加密的应用程序)、大多数可能包含诸如浏览器记录一类用户数据的tmpfs文件系统以及存在于/proc、/sys及其他可读目录下的系统信息。对于具有root访问权限的终端设备,获取几乎所有的目录非常简单,某些存在于/data下的文件和目录将是有用的。当使用物理技术时,挂在诸如YAFFS2之类用于取证的文件系统不一定总是可行的。如果adb运行在root访问权限下,则可以使用adb pull快速地抽取文件系统的一个逻辑副本。
由于adb不但在Android软件开发套件(SDK)中是一款免费的应用程序,而且它的用途非常广泛,因此,adb应该作为使用的终端设备上的主要逻辑工具之一。
注:某些使用adb的递归拉取可能在数据传输过程中失败,可能由于访问权限问题或者其他问题。因此,对于执行命令的结果要进行密切监控,以确定是否遇到任何问题。将对一个大目录的递归拉取分解为若干个小的数据拉取也许会产生更好的结果。
在之前文章Andorid-APP 安全测试(二)中进程注入保护部分就需要用到adb push以及adb pull,但是并未提及太多。
输入命令adb remount ,意思是将设备改为可读可写;
显示remount succeeded就代表命令执行成功;
这里做一个引申:
Android中adb push和adb install的使用区别
在Android实际开发中,经常会使用adb命令,安装应用程序可以使用adb push 或者adb install。下面就来讲讲这两种安装方式的区别。
1、adb push 能够指定安装目录。比如执行”adb push xxx.apk system/app” 后,xxx.apk被安装到了system/app目录下,此目录下的软件为system application。(注意,system/app是只读的,所以只有有root权限才能push apk进去,而且在push进去的apk会把原本的apk覆盖掉。)adb push本身的意思是将文件复制到系统中的某个文件夹下,但是将apk push到system/app下并且重启手机以后会注册应用程序。
2、adb install 用此命令安装的软件位于 data/app 目录,带有参数 -r才能强制安装,为user application。
push
install
目录
System/app
Data/app
权限
系统级(权限全开)
用户级(没全开)
卸载
root后删除
可卸载
大小
无限制,自定义
有限制
安装
pm重新注册
不会重新注册
Android取证:手动转储应用的数据库
上面已经介绍到,使用adb pull帮助我们进行数据转储。我们还可以使用adb 和我们的手动技能从设备中提取一些信息。前面学到,应用程序文件存储在/data/data/[应用程序的报名]/位置。大多数应用程序都使用数据库来存储数据,我们在做渗透测试时分析本地敏感文件的存储时都会注意到/data/data/[应用程序的报名]/databases的文件夹。然后将.db文件格式的文件导出到本地用sqlite工具打开。
手动提取步骤:(我在我前面文章Andorid-APP 安全测试(二)中有详细介绍:
注:这里我们可以使用一个简单的命令行绝技来查找和复制/data/data中的所有.db文件。首先使用find命令查找所有.db文件:find . –name “*.db” –type f
如图:(打码很专业~)
然后可以简单的时候cp和find复制:find . -name "*.db" -type f -exec cp {} E:\ad \;
Android取证:数据备份
在Android第一次被推出时,Android没有提供任何备份个人数据的机制。后果就是,很多人开发出备份应用软件,并在Android市场上进行发布。对于使用定制的只读内存(ROM
)的用户,甚至开发出了一款更加强大的叫做nandriod的备份应用。
介绍下nandriod:
NANDroid,如何加载NANDroid备份?
什么是Nandroid备份?
基本上,它是您的Android设备的镜像。Nandroid备份将绝对保存您设备上的所有内容,包括图片,音乐,铃声,系统设置,存储的密码等。你将有一个完整的复制品你手机上的一切。这还包括您的自定义ROM的副本,您的游戏和您的进度。一个完整的体统镜像可以被重新刷回手机。其不仅仅是简单备份,因为他包含了当前在你手机内存里的所有内容:Boot、Recovery、系统、数据、缓存,等。他是你手机整个ROM的快照。
执行NANDroid备份的方法:进入clockwork recovery,进到“Backup and Restore”选项中执行。NANDroid备份将会被保存在sd卡ClockworkMod文件夹内。
如何加载NANDroid备份?
如果你可以进入clockwork recovery的话,只需简单的从他的菜单里加载NANDroid
如果你的手机变砖从而无法进入clockwork recovery的话,也有最后一个方法:单独下载clockwork recovery至PC里,然后打开cmd控制台,进入存有clockwork recovery的目录,使用以下ADB命令刷写:“fastboot flash recovery recovery-clockwork-2.5.1.2-vi”。(前提是你的PC上有ADB环境,不过好像这招对白卡解锁的机器无用)
如何创建Nandroid Backup:
1.通过按音量调低和电源按钮(可以使用大多数设备)启动引导加载程序。
2.启动进入恢复模式。
3.打开备份和还原。
4.选择备份,如果有足够的空间备份进程将开始。一旦备份过程结束,您将被带到CWM主屏幕。
很多这些备份软件都有一个“Sava to SD Card”的选项,还有几个保存在“the cloud“的选项。无论采用何种方式,用户需要亲自对他们的终端设备进行备份,在需要时又将备份的数据进行修复。这不但是一个用户保护数据不受损害的方法,而且还是一个取证分析师可以获取大量数据的来源。
其中一个很流行的备份应用程序是RerWare公司的My Backup Pro,用于将终端设备上的数据在内容服务提供商处进行备份,如果具有root访问权限,还可以将整个/data/data中的文件进行备份。用户可以选择是将数据保存在SD卡上,还是保存在RerWare的服务器上。
My Backup Pro
MyBackup Pro是一款简单却强大的备份工具,能够备份你的软件、通讯录、呼叫历史、书签、信息、设置、桌面快捷方式、闹钟音乐播放列表等等到SD卡或云端,备份和还原都很方便。
很有趣的是,这一款应用软件不但可以在Android上运行,而且还可以在windows mobile、黑莓上运行。用户可以将数据备份在一个平台上,然后在另外一个完全不同的平台上进行恢复。如果将终端设备的备份保存在本地,RerWare会在SD卡上保存一个SQLlite文件。
不论是否有备份应用软件,取证分析师都必须确定是否安装了任何备份应用软件,而如果有的话,备份数据保存在哪里,与其他的终端设备如个人计算机或笔记本电脑一样。很明显,保存在备份中的数据对于取证检查来说具有巨大的价值。
adb backup
Android 从 4.0 起引入了使用adb的备份功能。 此功能可用于创建应用程序的备份及其整个数据。 这在取证上非常有用,因为取证员可以捕获应用程序及其整个数据。 请参阅以下步骤:
1、这可以通过在终端中执行adb backup命令,后面附带应用程序的包名来完成。 如果我们不知道应用程序的准确包名称,我们可以使用pm列出所有包,然后过滤应用程序名称。
2、执行此操作的另一种方法是使用pm list package命令,其中-f标志指定要在包名称中查找的字符串
3、接下来,我们可以简单地使用应用程序的包名称,来备份任何我们需要的应用程序。
4、目标文件将以文件扩展名.ab(Android 备份)存储。 在这里,我们采集了 h..应用程序的备份。
5、一旦我们运行命令,它将暂停,并要求我们在设备上确认,如下面的截图所示:
6、在这里,我们需要选择Back up my data(备份我的数据)选项,并且还可以为备份指定加密密码。 一旦备份过程完成,我们将获得22.ab文件。
7、接下来,我们需要解压此备份,以便从.ab文件获取数据库。 为此,我们将使用dd和openssl创建一个.tar文件,然后我们可以解压它。
dd if=22.ab bs=24 skip-1 | opensssh zlib –d > 22.tar8、现在,由于我们获得了.tar文件,我们可以使用tar xvf简单解压它。
9、一旦它解压完成,我们可以访问apps/[h..]下的db文件夹,来获取数据库。 这里,程序包名称为com.h..。
让我们快速使用ls -l来查看db文件夹中的所有可用文件。
Android取证:android手机falsh物理镜像获取概述
这里引用在一篇博客上看到的一个利用adb连接漏洞提取镜像的思路:内容来源:
ADB连接漏洞:当Android手机和PC或其他设备通过USB连接,选择USB调试模式时,即使用户设置了开机密码和解锁图案,PC或设备仍可以通过ADB连接到手机,也即android系统没有对adb连接设置密码保护验证。
1、打开USB端口,用于设备和手机通过ADB协议通信,设备驱动层使用libusb等usb协议库实现了usb协议的细节,使得应用程序上层像操作串口和文件一样操作usb口。
2、通过端口向手机发送指令,打开ADB连接。
3、发送指令,打开ADB shell。
4、对手机进行root,获得操作手机的最高权限。
5、三种Root方法:ZergRush,Psneuter,fourrunnerStatic。
6、下载/proc/mtd MTD flash分区信息。
7、上传读取flash的apk,之后连接apk,和apk交互获得整个flash物理镜像。
8、过程中使用到adb工具,以及usb分析仪等抓包工具。
Android取证:供应商支持
Android现在已经得到很多商业的移动取证软件商家的支持。到目前为止,取证软件只能支持对Android终端设备进行逻辑检查,使用的是与AFLogical相同的内容提供商技术。对取证检查师来说,理解每一个取证软件商家如何实现对Android的支持,这对工作的开展很有帮助。
简单列举几个取证软件包(按照字母排列先后顺序)
Cellebrite公司的UFED
Compelson公司的MOBILedit
EnCase公司的Neutrino
Micro Systemation公司的XRT
美亚柏科的Forensics取证大师
云帆赢通的IEDF
UFED 手机取证设备支持约1600 款的手机,其中包括使用 Palm、微软、黑莓和 Symbian 操作系统的型号,获取的重要数据,如电话本、照片、视频、音频、短信、通话记录、ESI 与 IMEI 信息等。此设别便携式设计,可独立操作,无论在现场或实验室均能使用。数据可以复制到任何标准的 SD 卡、USB 闪存,并能制成清晰的报告。
MOBILedit支持几千种不同的手机,包括如三星,HTC,诺基亚,索尼,LG 以及摩托罗拉等生产的普通手机。它还支持所有的智能手机操作系统,包括 Android, iPhone, Blackberry, Symbian, Windows Mobile, Windows Phone, Bada, Meego, 中国手机和 CDMA 手机。从 iPhones 和 Androids 中提取数据。MOBILedit 能够检索已安装的应用程序的列表,并为您提供访问所有应用程序数据,例如 Dropbox, Evernote, Skype, WhatsApp 等。如果可能的话,它甚至能够从移动应用程序检索已删除的数据。
IEDF电子数据镜像ROOT、取证分析系统技术参数:
其余工具的了解请自行百度~
Android取证:取证大师
接上一个供应商取证:取证大师(Forensics Master),是厦门市美亚柏科信息股份有限公司自主研发的计算机取证拳头产品,国内第一个自主知识产权的计算机犯罪取证调查的综合软件。
提供电子证据固定、分析、报告生成等取证功能;提出了自动取证技术概念,并形成专业取证产品;多项全球领先技术创新(反取证软件检测、即时通讯软件综合调查等)。
在手机取证的过程中,第一步的工作是从手机各个相关证据源中获取有线索价值的电子证据。手机的SIM卡、内存、外置存储卡和移动网络运营商的业务数据库一同构成了手机取证中的重要证据源。
取证大师手机取证源:
1.SIM卡
在移动通信网络中,手机与SIM卡共同构成移动通信终端设备。SIM(SubscribeIdentityModule)卡即为客户识别模块,它也被称为用户身份识别卡。移动通信网络通过此卡来对用户身份进行鉴别,并且同时对用户通话时的语音信息进行加密。目前,常见SIM卡的存储容量有8kB、16kB、32kB和64kB这几种。从内容上看,SIM卡中所存储的数据信息大致可分为五类:
(1)SIM卡生产厂商存储的产品原始数据。
(2)手机存储的固有信息,主要包括各种鉴权和加密信息、GSIM的IMSI码、CDMA的MIN码、IMSI认证算法、加密密匙生成算法。
(3)在手机使用过程中存储的个人数据,如短消息、电话薄、行程表和通话记录信息。
(4)移动网络方面的数据中包括用户在使用SIM卡过程中自动存入和更新的网络服务和用户信息数据,如设置的周期性位置更新间隔时间和最近一次位置登记时手机所在位置识别号。
(5)其它的相关手机参数,其中包括个人身份识别号
(PIN),以及解开锁定用的个人解锁号(PUK)等信息。
2.手机内/外置存储卡
随着手机功能的增强,手机内置的存储芯片容量呈现不断扩充的趋势。手机内存根据存储数据的差异可分为动态存储区和静态存储区两部分。动态存储区中主要存储执行操作系统指令和用户应用程序时产生的临时数据,而静态存储区保存着操作系统、各种配置数据以及一些用户个人数据。
从手机调查取证的角度来看,静态存储区中的数据往往具有更大的证据价值。GSIM手机识别号IMEI、CDMA手机识别号ESN、电话薄资料、收发与编辑的短信息,主/被叫通话记录、手机的铃声、日期时间以及网络设置等数据都可在此存储区中获取。但是在不同的手机和移动网络中,这些数据在读取方式和内容格式上会有差异。另外,为了满足人们对于手机功能的个性化需求,许多品牌型号的手机都提供了外置存储卡来扩充存储容量。当前市面上常见的外置存储卡有SD、MiniSD和MemoryStick。外置存储卡在处理涉及版权或著作权的案件时是一个重要的证据来源。
3.移动网络运营商
移动网络运营商的通话数据记录数据库与用户注册信息数据库存储着大量的潜在证据。通话数据记录数据库中的一条记录信息包括有主/被叫用户的手机号码、主/被叫手机的IMEI号、通话时长、服务类型和通话过程中起始端与终止端网络服务基站信息。另外,在用户注册信息数据库中还可获取包括用户姓名、证件号码、住址、手机号码、SIM卡号及其PIN和PUK、IMSI号和所开通的服务类型信息。在我国即将实行手机实名制的大环境下,这些信息可在日后案件调查取证过程中发挥巨大的实质性作用。
取证大师专业版取证流程,参考链接:
Android取证:使用logcat记录
Android logcat有时在取证调查期间很有用。它包括在电话以及收音机上执行的所有活动的日志。虽然不完整,它可以帮助调查员了解设备中发生了什么。
为了捕获和保存logcat转储文件,我们可以简单地使用adb logcat并将输出保存到一个文件,稍后我们可以分析它。
adb logcat adb logcat > E:\ad\logcat.log看E:\ad路径下已经有logcat.log文件。
我们还可以使用logcat以更加详细和有用的方式获取日志,我们可以通过指定-p参数和radio来获取收音机日志。-b标志用于显示缓冲区(如收音机或事件)的logcat。-v标志用于控制输出格式,它代表verbose(详细),也可以是time,boref,process,tag,raw,threadtime或long。除了-v,我们还可以使用-d(调试),-i(信息),-w(警告)或-e(错误)。
adb logcat –v time –b radio –d我们还可以使用其他工具,如dmesg,它将打印内核消息,以及getprop,它将打印设备的属性:
adb shell dmesg它将打印内核消息
adb shell dmesg > E:\ad\dme adb shell getprop它将打印设备的属性
adb shell getprop > E:\ad\get.txt以上对Android 取证技术的讲解,思路取材部分来源于网络以及《Android 取证实战》一书。
作者:Lemon
欢迎来安全脉搏查看更多的干货文章和我们一起交流互动哦!
脉搏地址:安全脉搏 | 分享技术,悦享品质
微博地址:Sina Visitor System