-
-
[翻译]OWASP iOS crackme 的教程:使用Frida来解决
-
发表于: 2017-5-6 17:22 6091
-
在这篇文章中,我将解释如何使用Frida解决OWASP移动安全测试指南(MSTG)1级的Crackme。 非常感谢Bernhard Mueller创建这些crackme,并鼓励人们写教程阐述如何使用开源工具来攻破他们。 最后,我将再次使用OWASP iOS crackme教程,并展示如何使用NowSecure上的一些工具打破crackme。
OWASP iOS crackme 指导的概述
首先,我下载这个app并重新签名,这样就能把它安装到我的测试机上。 由于本教程是关于动态分析的,所以我得使用一个真实机器,还得安装Frida。安装了app后,运行起来,观察UI,然后用我的工具来解决这个谜题。 如果没有工具来揭开这个app的面具,几乎不可能猜到答案并解决问题。 这才是关键,动态分析不仅是得以一窥app奥秘的的强大工具,也是逆向app和执行app安全测试的强大工具。 我将展示一下如何使用UI完全自动化的解决方案来处理这个crakeme,其中有一些构建在Frida之上的非常强大的工具。
继续!
下载&给app重签名
你可以在这拿到crakeme.ipa
你可以在这儿followOWASP的crakeme工具,或者使用Cydia Impactor,iSign等等。
我会使用nowsecure/applesign工具,这是一套非常实用的苹果相关的签名相关的工具。
使用Applesign有一大优点,它能自动启用重签名的app的get-task-allow权限,这对于附加调试器是很有用的。
现在我有一个重新签名版本的.ipa可以安装在设备上 - 我将使用libimobiledevice工具。
所以现在我可以在设备上运行这个app,如果你也跟着做到这儿了,应该在屏幕上看到类似的内容:
我需要使用“在隐藏标签中发现一个秘密!”的提示来寻找解开crackme所需要的文本。
如果我不能输入正确的数值,那我会得到下面的结果:
提示
** 前方警惕 ** - 过了这一步我得警告一下,再继续就得风险自负。
现在我要动用提示和一些聪明才智来解决这个问题。 我可以尝试的一件事是dump应用程序的视图层次结构。
来自于苹果的档案:
Only one window at a time can be the key window, and you can use a window’s keyWindow property to determine its status.(一次只能有一个窗口是关键窗口,您可以使用窗口的keyWindow属性来确定其状态。)
所以我可以在应用程序运行时使用Frida询问当前的UIWindow及其视图层次结构。 随着Frida及其python命令行界面(CLI)工具的安装,我将执行以下操作:
您可以在这里了解更多关于Frida的Obj-C API。 使用这些API,我可以弄清楚如何绑定到UIWindow,获取它的keyWindow,然后,通过足够的研究,找到将dump整个视图层次结构的recursiveDescription函数来查看。
终极解决
如果你仔细观察,你会发现隐藏的UILabel有秘密:
在那里 - “我是小孩!” 我输入框中,点击验证,我完成了:
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课