这是一篇文章,总结了我在伦敦AppSec EU 2018上演讲的一个实际部分。 从理论上讲,在不越狱的情况下对iOS应用进行渗透测试的一般概念包括5点: 下载应用程序包 搭建环境 注入自定义dylib和修改可执行文件 重新包装并签署包裹 以调试模式在设备上安装应用 每个应用程序包都使用iOS设备的加密密钥加密。 该机制称为Apple FairPlay(https://en.wikipedia.org/wiki/FairPlay)。 因此,如果您没有应用程序包,则将无法使用此方法-您仍然需要越狱的iDevice。 这不是针对赏金计划参与者的解决方案。 幸运的是,在“最忙碌的世界”中,客户端通常会交付应用程序包😉。 *您当然可以从https://www.iphonecake.com/等网站下载IPA文件,但不建议这样做-应用可能感染了恶意软件,并且通常已经过时。 在我们的示例中,我们将使用漏洞赏金计划中可用的Etsy应用程序。 首先,您需要注册为开发人员。 在此示例中,我们将使用免费的开发人员帐户,因此不需要$ 99的付费开发人员帐户。 然后,您必须注意两件事:签名证书和Embedded.mobileprovision文件。 处理它的最简单方法是创建一个空的XCode项目。 按下一步进入项目设置。 插入您的iOS设备,在XCode(在顶部栏中)中将其选中,然后选中“自动管理签名”复选框。 XCode将为您完成所有工作。 然后,按“生成并运行”按钮,然后等待应用程序安装。 如果您使用免费的开发者帐户,则还必须在iDevice的“设置”中信任该应用程序。 我的演讲中详细描述了3点和4点。 如果您想深入了解这些内容,请查看OWASP的记录。 最简单的方法是打开终端并输入: 安全查找身份-p代码签名-v 这将为您显示所有有效的代码签名。 然后,您需要复制ID并使用以下参数运行异议: 异议patchipa-源./etsy.ipa-codesign-signature SIGNATUREHERE 该过程应如下图所示: 安装修补的ipa的最便捷方法是留在同一终端中并键入: 解压缩etsy-frida-codesigned.ipa 然后使用ios-deploy工具: ios-deploy-捆绑./Payload/Etsy.app -W -d 下面是描述过程的记录: 由于现在已经准备好环境,因此需要将您喜欢的工具连接到Frida的dylib。 在演示中,我使用了百香果-(ChiChou和oleavr)的荣誉。 伙计们! 现在,您可以在未越狱的iDevice上执行渗透测试! 💪🏻 本文介绍有关iOS应用程序安全测试期间的技术挑战。 如果您对更一般的移动应用程序安全性要求和最佳实践感兴趣, 请查看我们的指南 。 您还应该符合iOS安全套件 —一个Swift库,可简化iOS应用程序中防篡改机制的实现。
侧通道数据泄漏 在这一部分中,数据泄漏的另一个方面以及如何避免它。 第1部分 涵盖本地数据存储风险。 每当作为操作系统(OS)和所使用工具的功能无意中泄漏数据时,都会发生辅助通道数据泄漏。 侧信道数据泄漏的常见示例: 自动背景快照 信息通过粘贴板泄漏 按键记录 调试日志 这是数据泄漏的方式以及如何避免的方法。 自动后台快照 :每当应用转换为后台时,系统都会捕获应用主窗口的快照并将其保存在手机上的应用文件夹中。 过渡回应用程序时,捕获的快照会短暂显示给用户。 如果屏幕上有敏感信息,则该信息很容易受到黑客攻击。 避免这种泄漏的最佳方法是在应用程序过渡到背景时添加启动屏幕,并在应用程序进入前景时将其删除。 这是AppDelegate.swift中的示例代码: var backgroundImage = UIImageView(image:UIImage(named:“ backrgoundImage.png”)) func applicationDidEnterBackground( _ application:UIApplication){ //添加启动画面 self.window?.addSubview(backgroundImage) } func applicationWillEnterForeground( _ application:UIApplication){ //作为从后台到活动状态的过渡的一部分调用; 在这里,您可以撤消输入背景时所做的许多更改。 backgroundImage.removeFromSuperview() } 信息通过粘贴板泄漏 : 粘贴板是在应用程序之内和之间共享数据的安全方式。 当用户在应用程序中剪切/复制数据时,它会被复制到共享缓冲区中,并可由其他应用程序访问。 如果要避免将数据复制到共享缓冲区,则最好在应用程序过渡到后台时将应用程序的粘贴板清空为空。 这是示例代码: func applicationDidEnterBackground( _ application:UIApplication){ UIPasteboard.general.items = [] } 按键记录 :iOS的自动更正功能可缓存用户键盘上的所有条目,但以下除外:安全文本,带数字的字符串,小字符串,开发人员标记为不缓存的文本字段。 您可以通过在构建UI时将自动更正类型禁用为“否”来避免击键日志记录,或者可以通过以下编程方式完成。 textView.autocorrectionType […]