iOS APP侧恶意行为分析及应对
1、APP安装包被修改
1、检查是否有代码代码注入
- 1.1 是否注入了测试框架,通过框架来模拟操作
- 1.2 是否注入了私有API,用来模拟事件发送
测试框架名称 | 测试脚本语言 | 是否需要代码侵入 | 关键类名/API |
---|---|---|---|
XCTest | OC | 需要Xcode开发工具 配置工程进行调试、 编写测试脚本、熟悉APP业务 | |
UIAutomation | JavaScript | 需要Xcode 开发工具进行调试, Xcode 8.1(2016.10.27发布) 开始已经移除了这个框架 | |
Frank | Ruby | 需要代码侵入 | FrankLoader FrankServer |
KIF | OC | 需要代码侵入 依赖苹果私有API | KIFGSEventProxy UIEvent->_setGSEvent UIEvent->_setHIDEvent |
Calabash-ios | Ruby | 需要代码侵入 | CalabashServer |
Subliminal | OC | 基于UIAutomation编写,需要依赖Xcode | |
Kiwi | OC | 需要Xcode开发工具配置工程进行调试, 修改相应代码、 编写测试脚本、熟悉APP业务 |
系统关键私有API名单
API名称 | 关键类名 |
---|---|
_setGSEvent | UIEvent |
_setHIDEvent | UIEvent |
注:
在没有源码的前提下,如果向iOS ipa安装包内注入代码,步骤:
1、准备一台已越狱的iPhone设备
2、在App Store内下载APP
3、通过这个越狱手机砸壳解密APP,导出解密后的ipa安装包
4、向已解密的ipa二进制可执行文件内注入恶意代码
5、重新签名得到新的ipa安装包
应对:
APP启动后,利用objec-c的runtime机制,检查是否包含名单内的测试框架代码。
如某个关键类名或相应API是否存在,需要列出名单。
如果命中任意一个关键点,禁止使用APP.
2、检查手机是否越狱
应对:拒绝越狱机器使用APP
3、检查APP是否重签名
应对:重签名的APP禁止启动
2、APP被抓包工具抓包
macOS系统常用抓包工具 Charles、Wireshark
1、检查APP发起的网络请求,HTTPS服务是否使用了非可信证书
应对:非可信证书禁止使用APP
2、检查APP的网络请求是否使用了代理
应对:
基于WIFI网络时,使用代理网络禁止使用APP
如果是手机自建代理,是否放行?
如果接口响应报文均已加密,这种抓包行为可忽略。
3、无侵入模拟使用APP
调试一般都会插入USB数据线,衍生出充电行为。
方式
利用iOS的通讯机制,使用Python脚本驱动模拟真人操作的行为。
关键依赖:
脚本Python
引擎WDA (facebook/WebDriverAgent) https://github.com/openatx/facebook-wda
第三方通讯库libimobiledevice
该方式门槛较高,需要Mac电脑配置复杂的环境,连接手机进行调试。
采集、分析滚动视图的滑动特征
初级判断维度:滚动速度、滚动频率、是否充电中(连接了USB进行调试)
如果攻击方设置了随机值,此处不太好判断
4、源码泄漏
……
5、人海战术
……