iOS应用安全Part40:在Mac上测试APP

【说明】英文原文发表时间:2015.4.8,原文链接:点击这里 

本文中我们将学习如何在Mac电脑上直接测试APP。为什么不直接在iOS设备上测试呢?原因有很多,有时你可能并没有一个iOS越狱设备,但却想要得到APP中漏洞的POC。所以,这篇博文中我们将讨论在Mac上测试APP时能够做什么。为了在Mac上测试测试APP,首先需要在Mac上安装Xcode,然后我们会在iOS模拟器上运行APP。

从iTunes安装ipa文件到模拟器上

遗憾的是,并没办法直接实现从iTunes安装ipa文件到模拟器上,因为iTunes应用程序编译为ARM平台,而模拟器上运行的应用程序应该编译为x86/x64平台。所以,为了在Mac上正常测试任何APP,必须拥有APP的源代码,然后才能将其在模拟器上运行。

本文中作为例子,我们将对Damn Vulnerable iOS app进行测试。

分析本地数据存储

在对iOS应用进行渗透测试时,其中一个最重要的事情是检测不安全的本地数据存储漏洞。可以很容易地做到这一点,只需要查看Xcode在Mac上创建的该应用对应的文件夹。这个文件夹一般会在下面指定的位置:

iOS 8 – /Users/[username]/Library/Developer/CoreSimulator/Devices/[a unique number]/data/Containers/Data/Application/[another unique number]/

iOS 7 – /Users/[username]/Library/Application Support/iPhone Simulator/[ios version]/Applications/[a unique id]/

接下来就是,确保检查APP的这个文件夹,看看该文件夹下是否存储了任何敏感数据。

检查设备日志

查看设备日志非常容易,只需要查看Xcode中的日志区域就行。例如,在下图中我们可以看到应用打印了敏感数据到设备上。然而,如果你看到了这种日志,那么不要过早断定它是一个漏洞。因为有些开发者会增加一个检测功能来检测应用是否运行在模拟器或真实iOS设备上,只有运行在模拟器上时才会打印日志信息。如果应用中并没有这个检测功能的话,那么可以确定这就是一个漏洞。


附加调试器并跟踪方法调用

可以将调试器附加在模拟器中正在运行的应用程序上,最好是使用LLDB调试器,因为Xcode中内置了该工具。此时,模拟器中运行的iOS应用程序可以看作是Mac电脑上运行的一个进程,同时也可以用指令“ps aux”来查看该进程的信息。然后,通过使用该进程的pid或者进程名将调试器附加到该进程上面。


使用Xcode内置的调试器LLDB,就可以轻松地跟踪程序的方法调用。不过要做到这一点,需要在Xcode中添加一个符号断点。在左下角看到添加箭头,点击它就可以添加一个符号断点。


现在,为objc_msgSend调用设置一个断点。点击添加按钮并添加调试器指令“p (void)printf(“[%s, %s]\n”、(char*)object_getClassName($arg1), $arg2)”,并确保将选项设置为程序继续执行,然后就可以发现现在可以跟踪所有的方法调用了。


附加cycript

此外,你甚至可以将Cycript附加到模拟器中正在运行的应用程序,并演示漏洞的POC。Cycript同样可以在Mac上正常工作,而且跟在iOS设备上的使用方法一样。


监控网络流量

你几乎可以毫不费力地查看到通过HTTP/HTTPS协议的所以网络流量,要实现这一点既可以用Burpsuite也可以是Charles。对于HTTPS流量来说,你需要先在模拟器上安装SSL证书。安装证书也很简单,只需要将证书文件拖拽到模拟器上,然后点击安装该证书就可以。


本篇文章就到此结束,在下一篇文章中,我们将着手于使用调试器LLDB调试iOS应用程序。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值