当前位置:安全客 >> 知识详情

安卓hacking Part 15: 使用备份技术黑掉安卓应用

2014-12-29 16:38:33 阅读:0次 收藏 来源: 360安全播报

http://p7.qhimg.com/t019f03bac693564763.jpg

在前面的文章中,我们介绍了如何使用备份技术来分析安卓的特定数据。本文建立在前一篇文章的基础之上。我们将看到怎么利用备份技术来检查没有root过的手机的本地数据存储。这里展示出了一些不安全应用存在的风险。

在开始本篇文章之前,我建议大家复习一遍前面的文章。

预备工作:

安装Star命令行工具,链接如下:

http://sourceforge.net/projects/adbextractor/

使用命令行,切换到Star命令行工具的目录,如下所示:

t01d17f0249d6502e02.png

运行下面的命令:

dpkg -i star_1.5final-2ubuntu2_i386.deb


运行结束后就安装了Star工具。

我将会使用上一篇文章中相同的目录来执行所有的步骤

步骤概览:

t0145639540a0528a52.png

Step 1: 备份目标应用

Step 2: 去掉头部信息然后保存文件

Step 3: 做必要的修改

Step 4: 从原始的”.ab”文件获得头部信息

Step 5: 把修改过的内容附加在头信息后面

Step 6: 使用修改过的内容来恢复备份

尽管以上步骤看上去简单,去包含着复杂的技术细节。接下来我们来详细介绍每个步骤。

整个过程在XDA论坛主题中有详细的介绍。如果你想深入了解,请参考那篇文章。

在这篇文章中,我们在一个没有root的设备上来尝试修改一个简单程序的内容。

实例程序可以在以下链接下载

在一个没有root的设备上运行目标应用,然后在图片中输入一些文字就会把文字保存到XML文件中。

t013f22468a628ab92e.png

就像我们前一篇文章,我们先给目标应用做一个备份,使用以下命令:

adb backup -f mybackup.ab com.androidpentesting.sharedprefs


t013d67adc5642792a0.png

我们可以看到以上图片中,程序会提示我们去确认备份。因此我们需要在设备上点击确认。

http://p7.qhimg.com/t01122c82d375cc43c1.png

当我们确认之后,它会创建一个”.ab”后缀的安卓备份文件。通常情况下,前24字节是头。因此我们使用dd工具来去除前24字节然后压缩为tar文件,使用以下命令:

dd if=mybackup.ab bs=24 skip=1| openssl zlib -d > mybackup.tar


t0178d6b900f46d9c9b.png

以上命令从输入读取源文件并跳过了头部的24字节

接着使用tar创建一个”.list”文件,这是为了保证在重新打包备份时保持顺序正确。

t01ed2d0dc7b7f5059f.png

目前为止,我们应该拥有了以下文件:

mybackup.ab – 从设备导出的备份文件

mybackup.tar – 从dd命令生成的文件

mybackup.list – 从tar文件产生的list文件

t01eeb55a820af19542.png

我们可以使用以下命令解压tar文件:

tar -xf myback.tar


t019a043dad04fb28a4.png

从上图可以看到,一个新文件夹”apps”生成。我们可以在这个目录中找到应用相关的信息。

t01d39b3780e9207066.png

在上图可以看到,在”sp”目录中存在一些XML文件存储了目标应用的数据信息。

t01cbab0c1efd8cf820.png

我们浏览XML文件的内容,如下所示。

http://p2.qhimg.com/t01cc9d3b96e642f6d2.png

接下来,我们来修改这个文件的内容。我使用”vim”,然后改为以下内容。

t0182917edee50778ab.png

接下来我们需要把修改后的文件恢复到设备上。

为了恢复修改后的文件,需要把文件转换成(.ab)格式

我们需要把”.ab”文件头附加回去。首先,我们需要创建”.tar”文件,然后把文件头附加回去。

我们可以使用star命令来完成上述目的:

star -c -v -f newbackup.tar -no-dirslash list=mybackup.list


t016692a905a23da442.png

至此我们获得了“newbackup.tar”文件

然后我们把原始的文件头附加在修改后的tar文件前面。

dd if=mybackup.ab bs=24 count=1 of=newbackup.ab


t01aa9ef7b20d2ba1bc.png

你可以从上图中看到,我们只拷贝了一块文件。文件为” newbackup.ab”

最后一步是把修改后的内容附加在头后面。

我们可以使用以下命令:

openssl zlib -in newbackup.tar >> newbackup.ab


t0192219138cc0101d7.png

至此,我们的备份文件准备完成。我们使用以下命令把备份文件恢复到设备上:

adb restore newbackup.ab


执行后会出现以下提示信息

t012be066e62e55bf16.png

它会显示一个提示窗口在设备上,我们需要点击确认。

http://p9.qhimg.com/t01f21462dd67db7996.png

当我们点击了“Restore my data”后,数据就会恢复到设备之中,我们能够在应用中看到改动。我们也可以浏览到应用的路径中去查看shared preferences(需要root来查看)。

在不root的情况下,你可以通过再次备份并使用上述步骤查看。

从下图可以看到文件已经被修改:

t013c4b8f309008fc1a.png

如果你想了解真实的案例研究,可以参考以下视频:

http://blog.deepsec.net/?p=1740

怎样保护我们的应用:

如果你的应用中存在敏感信息,你可以停用备份功能。可以修改AndroidManifest.xml文件为:

android:allowBackup=”false”

参考:

http://forum.xda-developers.com/showthread.php?t=2011811

http://nelenkov.blogspot.in/2012/06/unpacking-android-backups.html


本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:

参与讨论,请先 | 注册 | 匿名评论
发布
用户评论
无任何评论