iOSSecAudit:一个iOS APP安全审计工具

*本文原创作者:薛定谔的大表哥

0×00前言

App安全审计对于安全人员是一项苦逼的工作,但对于厂商却非常重要,因为App属于客户端产品,一旦出现漏洞由于更新推送需要时间、且新版本更新率等原因,导致其不能像服务端程序那样很短时间内修复,对于App的漏洞应该尽量控制在发布之前发现并解决。

目前世面已有的漏洞扫描工具还远没有达到替代人工审计的地步,无法解放劳动力;然而App安全审计经常需要安全人员在手机端和pc端来回切换操作,造成大量而又毫无意义的重复劳动,如果没有积累、没有总结就会让这项工作变得无味,而且对审计人员的能力提升非常小。

年底,我写了个iOS App审计工具,用于辅助人工审计,这个工具不是漏洞扫描器,旨在简化或替代安全审计中的各种乱七八糟的繁琐操作,将所有的工作合并在一个shell中进行,免去来回切换shell的过程。也算是帮忙建设移动端工具链了。

工具介绍

相对于Android,iOS上的安全问题要少很多,笼统的可以分为本地和网络两大块,网络端已有burp suite和fiddler等非常好用的工具,因此这个工具主要是针对本地问题。

下面以一个简化的安全审计步骤来介绍如何使用该工具。

一般来说iOS App安全审计只需要拿到一个ipa包就够了,能拿到源码当然更好,这时候可能连ipa的bundleID都不知道,甚至都没签名;还有更坑的是告诉你一个应用的名字,让你自己去App Store上下载(嗯,目前没遇到要自己付费下载进行安全审计的情形)。

1.1使用环境

开发环境:Mac OS X with python2.7

测试设备:iPhone4 withiOS6;

iPhone5 with iOS8;

iPhone5s with iOS9

目前没在Linux和windows下测试过,因为我太烂了……而且我也不建议在Linux或windows下进行iOS安全研究。最最最重要的是,该工具的部分功能仅支持Mac OS X。

1.2安装前的一些命令

启动工具,命令为pythonmain.py,启动之后如图1。

iOSSecAudit:一个iOS APP安全审计工具

图 1 审计工具主界面

该工具是建立在ssh连接上的,通过ssh连接执行命令并获取结果。因此首先必须连接手机设备,连接命令有两个:usb和ssh。使用usb命令连接必须先使用usb线连接pc和手机,ssh命令连接只需要知道手机的IP地址就好了,不过我还是强烈建议使用usb连接,网络连接有的时候会很卡很卡。连接命令的使用如图2。

iOSSecAudit:一个iOS APP安全审计工具

图 2 连接设备

使用help或help [cmd]命令可查看所有命令,以及命令介绍、使用说明、使用举例,如图3。

iOSSecAudit:一个iOS APP安全审计工具

图 3 help命令

如果ipa未签名,首先使用resign命令对ipa文件进行签名(当然就算这个ipa是已经签名过的,这个命令也会对其进行重签名),如图4。要用自己的证书进行签名当然得有自己的证书,这里多提一句,关于iOS的签名机制已经有文章讲的非常透彻了,比如:http://objccn.io/issue-17-2/

iOSSecAudit:一个iOS APP安全审计工具

图 4 重签名

如果在审计的过程中需要注入一个dylib到ipa文件进行测试,可以使用命令dlinj,使用方法如图5。

iOSSecAudit:一个iOS APP安全审计工具

editors

相关文章
发表回复