对手机应用程序的攻击并不是什么新鲜事了,网络上也有很多这方面的教程。不过即便如此,依然有很多渗透测试员无法对其攻击技术进行分类,甚至也做的不好。手机应用的攻击手法和其他形式的攻击非常相似。但是如果你不经常练习这些手法,也是毫无用处。
所以我们该如何提高自己的水平呢?事实上google应用商店有超过1.5百万的App,其中也不乏存在漏洞的App,甚至也有专门的测试App,大家都可以下载来玩。
我们总结下移动应用的分析手法,主要包括:
文件系统分析
网络分析
源代码分析
动态分析
在本文中,我们将针对文件系统分析进行说明。如果有必要的话,将来还会对这进行一些扩展。
要想访问文件系统的内容,我们需要获取一定的权限。在Android中通常指的就是Root权限。有很多人说:“有root权限当然好办了,如果没有的话你不就什么都做不了,而且大多数用户的设备都没有root过” 。这点问的好,在我为一个企业演示什么是真正的安全威胁的时候,就想着能不能写一个工具可以不用通过root权限就能访问文件系统,于是 BackHack 就诞生了。
BackHack大概是2年开始创建的,但是由于工作忙,一直把它放在一边。直到前几周,我发现了一款新游戏: Alto’s Adventure。这个游戏很适合用来消磨时间,制作的也非常漂亮。我花了很长时间闯关并且收集金币,就是这种情况下,我决定让backHAck重见天日,看看我对这个APP做些什么。
首先,我们得确保安装了Android Studio,或者至少安装了Android Debug Bridge.当然我们也需要我们的设备开启调试模式。这个时候,发送“adb devices”指令,并且确定你的设备已连接。
现在,我们运行backHack。(python backHack.py)
backHack使用一个很简单的目录系统做的界面,非常容易使用。首先我们需要选择想要“嘿嘿嘿”的app。进入选项1出现右图,然后选择1选项可以列出设备上的app列表,选项2提供搜索app的功能,或者选择选项3直接输入app的名称。我们的目的是分析Alto’s adventure,所以我们选择用选项2搜索’alto’,如下图,可以看到找到一个名字是“com.noodlecake.altosadventure”的app,然后我们把这个名字复制粘贴到选项3中,返回主目录:
接下来,我通过选项2 Backup and Extract App来备份app。在这一步骤,程序将会提醒你解锁你的设备,并且确定这个备份操作:
一旦备份成功,backHack就会提取出这个备份, 将文件系统的内容放在apps/<APPNAME>目录下。本案例中的路径是apps/com.noodlecake.altosadventure。
然后我们可以随便看看文件系统里面有什么。通常,sp(shared_prefs)文件夹和db文件夹(database)是个好地方。在Alto’s Adventure中,有一个名叫“com.noodlecake.altosadventure.xml”的XML文件夹。
我们查看这个文件,发现app的配置信息,包括金币和等级。我发现可以很容易更改这个值,看下改了后会发生什么事,我们把金币设置成999999999 并且等级设置成60。(60是最高等级,而我就不把金币设置到$1,000,000,000,就不就不,急死强迫症患者—。—)
保存文件后,我们返回backHack并且选择选项3,这样就能重新打包你的app然后重启你的设备。然后,软件提示恢复app,如下图:
现在,app已经恢复了,我们打开app看看会发生什么。
999,999,999的金币,等级变成了61级!(注意,XML文件中我们设置成60的参数是的是currentGoalLevel,这个参数实际上意味这着“完成目标等级”。当然,金币达到 1,000,000,000。猜猜他们是否已经达到上限了?)
好吧,这是个很有趣的方式,可以在游戏的时候得到一些额外的金币和等级,同样这个方法可以用在任何app上。
很多时候,这不仅仅只是修改下app数据,你还能可能找到一些密码和其他敏感信息,backHack很好的展示了没有root的设备也会有的风险,因此,其实所有没有锁的设备都能被获取到。
*参考来源: community.rapid7 ,FB小编东二门陈冠希编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)