前言
注:正在分析的应用程序不是我自己的,因此我省略了任何识别信息。这只是对搜索类似漏洞的步骤的演示。
本文将演示如何在运行时使用Cycript从应用程序中提取信息,从而使攻击者能够访问应用程序的PIN。这个漏洞是通过运行iOS 10.2的越狱iPhone 5s发现的。请注意,早期/较晚版本的IOS可能与本文使用的工具不兼容。
一、 Clutch
我们将使用“Clutch2”(一个公共iOS解密工具)来解密和解压缩应用程序的.ipa文件,接着我们将需要转储和检查应用程序类的Objective-C头文件。
Clutch可在这里下载: https://github.com/KJCracks/Clutch
按照安装说明在设备上安装Clutch。
如果运行Clutch2并看到“Permission Denied/拒绝权限”错误,则可能需要首先运行以下命令:
$ chmod a+x /usr/bin/Clutch2
然后可以运行:
$ Clutch2 -i
你会看到你安装的应用程序的列表。选择要使用的应用程序并复制它的bundleID值。
然后运行:
$ Clutch2 –b <BundleID>
应该会看到一条消息,告诉你已将破解的二进制文件与保存位置的路径一起转储。
接下来,需要将二进制文件传输到Mac上进行分析。可以通过很多方法做到这一点,但我更喜欢使用CyberDuck。你可以使用任何合适的文件传输软件,或者可以只使用ssh到你的手机和scp的.ipa到你的计算机。
一旦你的笔记本电脑上有了.ipa,就可以简单地解压文件访问它的内容。(在执行此操作之前,可能必须手动将文件类型更改为.zip)。
二、class-dump
下一步是使用类转储工具转储应用程序的运行时头文件。通过运行以下命令,可以使用BREW在计算机上安装此程序:
$ brew install class-dump
首先,找到应用程序的可执行文件。可以在复制到计算机的.ipa文件夹中找到它,位于路径/Payload/<AppName>.app/AppName。
运行:
$ class-dump /Payload/<AppName>.app/AppName > dumpedHeaders
其中,“dumpedHeaders”是要创建的文件,将在其中写入转储。
现在,应该能够在任何文本编辑器如Sublime中看到dumpedHeaders。对于这个应用程序,我们打开文件并搜索。我首先搜索“授权/authorize”、“登录/login”或“PIN”等词语。我很快就找到了我要找的东西:
我可以看到,在DTPinLockController类中,有属性NSString *pin。现在我已经找到了一个目标,可以进行下一步了。
三、cycript
首先,在你的计算机上下载最新版本的Cycript:http://www.cycript.org/
然后,通过传输文件在设备上放置Cycript(通过CyberDuck、sftp、scp或任何你喜欢的方式)。
最后,运行一下命令:
$ dpkg -i cycript.deb
现在,你可以尝试运行Cycript并确认出现了#Cy提示符。(确保在下一步之前退出Cycript)。
现在,我们已经准备好连接到我们的目标应用程序的过程。要查找应用程序的进程ID,请确保应用程序正在你的手机上运行:
$ ps aux
复制目标应用程序的PID,然后运行:
$ cycript -p <PID>
现在已经hook到这个进程,并且可以在运行时开始探索这个应用程序。
由于这个应用程序需要一个PIN,此时在我的手机上打开应用程序,并输入PIN。
为了确认我看到的ViewController的名称,我在Cycript中运行:
cy# UIApp.keyWindow.rootViewController
然后:
DTPinLockController
现在,回顾一下我的类转储,我可以看到这确实是我在前面找到的“pin”NSString属性所在的屏幕,因此我应该能够在运行时访问它的值。要查看PIN是否存储得不安全,运行:
cy# UIApp.keyWindow.rootViewController.pin
神奇的是,用户的PIN就会被显示出来:
现在,我们在运行时成功地窃取了用户的PIN。我可以通过简单地在应用程序上输入PIN来确认这一点,并且我被授予了访问权限。
审核人:yiwang 编辑:边边