iOS应用程序安全(15)-使用iNalyzer对iOS应用进行静态分析

作者:Prateek Gianchandani
译者:吴发伟
原文网址:http://resources.infosecinstitute.com/part-15-static-analysis-of-ios-apps-using-inalyzer/
版权声明:自由转载-非商用-保持署名

在前面的文章当中,我们看到了如何使用Sogeti Data protection tools利用bottom的漏洞,使用定制的ramdisk来启动iOS设备。本文我们将学习用iNalyzer工具来对iOS 应用进行黑盒测试。iNalyzer允许我们查看类信息,执行运行时分析和其他一些事情。基本上它把解密应用、导出类信息这些事情自动化了,并且更好的展示了出来。我们也可以像Cycript那样挂钩运行的进程。iNalyzer由AppSec Labs开发和维护,它的官方地址在。iNalyzer同时也已经开源了,gitub地址在

在用iNalyzer之前,有些依赖的软件需要先安装。请确保Graphviz 和Doxygen已经安装了,因为没有这2个工具,iNalyzer不会正常工作。并且,请注意, 我在Mac OS X Mountain Lion 10.8.4上做的测试,但是我们用最新版本的Graphviz的时候它经常会挂起(hang)。因此,我下载了Graphviz的一个较老的版本(v 2.30.1) ,并且这个老版本工作正常。你可以在找到Graphviz for Mac的老版本。

第一步就是在你的iOS 设备上安装iNalyzer。先到Cydia->管理, 确保源http://appsec-labs.com/cydia/被成功添加,如下图。

然后到Cydia的搜索,搜索 iNalyzer。根据你现在设备上正在运行的iOS版本,选择对应版本的iNalyzer。

如你所见,我已经把iNalyzer安装好了。

现在ssh进入设备,,然后转到iNalyzer应用所在的目录。iNalyzer安装在/Applications目录,因为它需要以root用户权限运行。如果你不了解这个概念,请确保你读过本系列 前面的文章。

输入./iNalyzer启动iNalyzer。

现在如果你到主屏幕,然后看看iNalyzer应用图标,你会看到有个提醒数字。这表明这个应用 可以通过web接口访问,然后这个提醒数字就代表的是端口号。 如果你再次运行 ./iNalyzer,那么iNalyzer就会停止。因此,请确保记得./iNalyer是开启还是关闭这个应用。

现在你可以找到你的设备的IP地址,然后用ip:port的方式在浏览器上打开。这里端口是5544,IP地址是10.0.1.23.因此url地址是http://10.0.1.23:5544/。一旦你打开这个页面, 你会看到如下图的界面。你可以选择一个应用,然后iNalyzer就会准备一个zip文件,然后下载到你的系统上以便分析。

不过,我在这行这一步的时候却遇到一些问题。因此,我们将使用一个替代方法来完成这一步。首先确保iNalyer正在运行。然后转到iNalyer的目录下,然后不带任何参数的运行 iNalyer5。

现在你可以看到一系列可以用来分析的应用。这里我们选择Defcon应用来分析。

你可以看到iNalyer已经开始工作。它首先解密应用,找出对应的类信息和其它一些信息。如下图所示,一旦iNalyzer完成它的工作,它就会创建一个ipa文件,然后把它 保存到下图高亮的地址。

现在我们需要得到这个ipa文件,然后把它下载到我们的系统上(电脑上)。我们可以用sftp。

一旦我们得到ipa文件,把它后缀名改为zip,然后解压这个文件。

在终端(Terminal, 命令行)下,转到其内部的Payload-> Doxygen目录下。如下图。

你会看到有一个叫做doxMe.sh的shell脚本。如果你看看它的内容,你会看到它把运行Doxygen的工作自动化了。 Doxygen也会运行Graphviz来产生图表,结果会保存在内部一个叫做html的文件夹下。基本上,iNalyzer已经把所有的类信息替我们保存在 内部一个叫做Reversing Files的目录下了,而且它用Doxygen和Graphviz来把信息更友好的展示出来了。这个脚本同时也会把新创建的html文件夹内部的 index.html文件打开。

现在,我们来运行这个脚本,让iNalyzer为我们做所有的事情。

一旦这个命令完成,iNalyer会把新创建的html文件夹内部的index.html文件打开。 下面就是打开的样子。在这里,我用的是chrome。不过,这个工具的开发者 推荐我再进行运行时分析的时候使用firefox浏览器,因为其它浏览器用起来可能会有问题。如下图所示,第一页给出了对整个应用的字符串分析。它把字符串分成了 SQL和URL字符串。

你也可以看看应用中使用的所有的view controller。

点击任意的View controller,你可以看到它的方法和属性。

你也可以看看Info.plist文件的内容。

如果你选择Classes这个Tab,在Class Index下面你回看到所有应用中使用的类的列表。有些是苹果自己的类,有些是这个应用的开发者创建的。

如果你到Class Hierarchy Tab(类层次标签)下,你可以看到以图像方式展示的类信息和它们之间的关系。这会给你大量关于应用如何工作的知识。 这些图使用Graphviz这个工具产生的。

如果你选择文件标签(files tab), 你可以看到iNalyer生成的所有接口文件。


总结

本文我们学习了如何使用iNalyer对iOS应用程序进行静态分析,可以看到它使我们的工作变得非常容易。在接下来的文章中,我们将看看如何用iNalyer对iOS应用进行运行时分析。


本文原文是 IOS Application Security Part 15 – Static Analysis of IOS Applications using iNalyzer

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、LinuxmacOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
应用安全渗透测试是指对iOS应用程序进行安全性评估和漏洞检测的过程。它旨在发现应用程序中的安全漏洞,并提供修复建议,以保护用户的数据和应用程序免受恶意攻击。 在进行iOS应用程序安全渗透测试时,可以采取以下步骤: 1. 静态分析:通过对应用程序的源代码、二进制文件或反编译代码进行分析,来检测潜在的安全漏洞和弱点。这可能涉及到查找不安全的函数调用、密码存储和数据传输等问题。 2. 动态分析:通过运行应用程序并模拟真实的攻击场景,来发现可能存在的漏洞。这可以包括输入验证不足、认证和授权问题,以及数据泄露等。 3. 漏洞利用:在已确认存在漏洞的情况下,渗透测试人员可以尝试利用这些漏洞来获取未经授权的访问或执行特权操作。这有助于验证漏洞的严重性,并为开发人员提供修复建议。 4. 数据保护和加密:渗透测试人员还应关注应用程序中的数据保护和加密机制。他们应该检查是否正确地使用了加密算法、是否存在数据泄露的风险,并评估应用程序在数据传输和存储方面的安全性。 5. 授权和认证:渗透测试人员应验证应用程序的授权和认证机制是否安全。他们应该检查是否存在弱密码、不安全的用户身份验证、会话管理问题等。 总结来说,iOS应用程序安全渗透测试是一个综合性的过程,旨在发现并修复应用程序中的安全漏洞。通过进行静态和动态分析,漏洞利用,保护数据和加密,以及验证授权和认证机制,可以提高应用程序安全性,保护用户的数据免受攻击。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值