iOS教程:对App的内存堆内容进行转储

2015-01-14 10,869

 

对iOS应用进行渗透测试的一个重要方面就是分析应用程序的runtime 。本文中,我将介绍怎样对iOS应用进行堆内容转储,并发布一个可以在iOS设备上转储App堆内容的小脚本。

你可以在 NetSPI Github 下载这段脚本。该脚本基本上围绕着GDB做文章,只能转储内存中拥有“子区域(sub-regions)”的部分。

我通常会在这些子区域中发现有效的认证 信息,当前正在使用的界面UI,以及实例化后的类属性。

目前,该技术只适用于iOS7及以下版本。对iOS8而言,除非有一个可用的GDB版本,否则无法 正常使用。

你不要使用从Cydia仓库中下载的默认GDB版本,而应该使用从“ http://cydia.radare.org ”下载的修正版。你可以点击这里 直接下载deb包 。下面将展示该过程中的截图,并演示脚本如何工作:

首先,启动我们想要捕获堆数据并登入的App,本文以Facebook示例:

 

MB_iOS_Dump_1

然后我们登入App,此时主屏上显示的应该是Facebook的用户时间线,我们保持这种状态不要动。

接下来,我们使用SSH链接该设备,这样就能让App继续保持运行而不会被iOS变成后台应用。

 用法:
./heapdump.sh <binary>

 

以下是在 运行时 期间该脚本所输出的内容。这里我们能看到我们想要转储的二进制内容的名称

MB_iOS_Dump_2.png

 

下面列出了所有转储后的.dmp文件,现在我们就能从中搜索认证信息和其他敏感数据。

你通常能在其中发现密钥,或是在负责加密以及处理登录过程的实例化的类当中发现密码。

我个人倾向于组合使用“string”和“xxd”命令来查看十六进制内容,但你可以选择使用任何顺手的十六进制编辑器。

MB_iOS_Dump_3

该技术可用于检测App中处理敏感数据的类,查看其在完成实例化之后是否已从内存中删除了这些敏感信息。

所有的App都应当释放用于处理敏感数据的类和方法的内存空间,否则你就要承担被入傁者看到内存中所有可用数据的风险。

下面,我列出了在该脚本中用到的GDB命令

gdb –pid=”<PID>”
info mach-regions (look for sub-regions)
dump binary memory heap1.dmp <sub-region range from above>

 

 

【原文:ios-tutorial-dumping-the-application-heap-from-memory 翻译:yiyanghuadan

本文作者:SP小编

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/4183.html

Tags:
评论  (0)
快来写下你的想法吧!

SP小编

文章数:209 积分: 25

交流和分享以及愉快的玩耍

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号