本篇文章介绍如何对一款iOS应用进行基本的安全审计,主要方式为黑盒或灰盒的手动审计。注意红色字体部分为做安全审计时的checklist。

一、IPA安装包分析(静态分析)

1. Mach-O可执行文件分析(地址为 /private/var/mobile/Application/[GUID]/Appname.app/)

注意对于来自APP store的mach-o文件需要先解密

clutch AppName

strings Mach-OFileName

class-dump-z Mach-OFileName > FileName_classdump.h

$THEOS/bin/logif.pl FileName_classdump.h>tweak.xm

otool -tV Mach-OFileName > FileName_assembledump

cycript

检查对象:越狱/非越狱设备
检查列表:
(1)是否开启PIE功能
待续。。。
检查工具:class-dump,class dump z,IDA Pro, IDA plugin:runtime tracer,Hopper ,cycript ,otool,lsof,

2. 应用主目录文件分析

App store应用存放在/private/var/mobile/Application/[GUID]中
(1)Documents文件夹
用户存档文件,检查是否有不安全的文件存储,例如明文存储,base64编码存储,可以用 iToolsGUI工具检查

(2)Library文件夹
1) Library/Preferences/  偏好设置文件,一般为plist格式,可以用 plist editor Pro for windowsGUI工具打开,也可以直接用 plutil命令行工具编辑

plutil plistFileName

2) Library/Caches/ 保存应用的持久化数据,用于应用升级或者应用关闭后的数据保存,为永久保存,一般为sqlite3格式,可以用 SQLite Database BrowserGUI工具打开,也可以直接用 sqlite3命令行工具编辑。当然也有plist格式存储的,查看方法见上面。
该文件夹下有个 Library/Caches/Snapshots/文件夹,用于存储应用的屏幕快照。在进行源码审查时,请检查keyWindow.hidden选项的设置,避免存储敏感应用屏幕

sqlite3 databasename

3) Library/Cookies/  保存Safari浏览器和iOS应用的持久性cookie,一般文件名为Cookies.binarycookies, 我们已经很熟悉PC上的cookie存储了,例如IE将持久性cookie以明文文本的形式存储在临时目录中,而firefox与chrome则采用sqlite3数据格式存储。我们可以使用SecurityLearn提供的python脚本工具 Cookies.binarycookies Reader 读取其中的内容

python BinaryCookieReader.py Cookies.binarycookies

4) Library/Webkit 保存webkit本地存储文件,有的应用没有该文件夹
(3)AppName.app文件夹
1)Info.plist文件 APP相关信息
2)iTunesMetadata.plist文件 购买者信息文件
3)SC_Info文件夹, 签名相关文件
4) _CodeSignature文件夹,签名相关文件
5)其他资源文件

详见iOS平台游戏安全再议之存档修改与防御

检查对象:越狱/非越狱设备
检查列表:
(1)重要信息是否加密存储
(2)本地存档是否可修改(包括明文格式,base64格式,二进制格式),检查应用是否会检测存档的完整性
(3)本地存档是否可替换,用低版本存档替换高版本存档(往往低版本应用的安全性都不好,因此可作弊的几率大),不同id存档替换(例如用高分存档替换低分存档),检查应用是否会检测存档的唯一性
工具:各种文件格式对于的编辑器 iTools  、 plist editor Pro for windows 、 SQLite DatabaseBrowser  、 Cookies.binarycookies Reader 、 UltraEdit
二、内存数值分析(动态分析)

详见iOS平台游戏安全再议之八门神器内存修改,IAP Free游戏内购破解的防御

检查对象:越狱设备
检查列表:
(1)检查内存中游戏进程中的重要数值是否可定位修改
工具:八门神器,gdb
三、APP store IPA破解(动态分析)
详见 iOS平台游戏安全之IPA破解原理及防御
检查对象:越狱设备
检查列表:
(1)

app store版IPA是否可破解,应用是否对破解版本
的IPA进行检测处理

工具: Clutch
四、支付分析(动态分析)

1. IAP (in-appstore-purchase)

详见in-appstore.com免费内购方法的完整分析

检查列表:
(1)对越狱设备,IAP Cracker是否有效
(2)对越狱设备,IAP Free是否有效
(3)对越狱设备,LocalIAPFree是否有效
(4)对越狱设备,俄罗斯伪造苹果服务器是否有效
(5)对越狱设备,xCon+IAP Cracker是否有效
(6)对越狱设备,xCon+IAP Free是否有效
(7)对越狱设备,xCon+LocalIAPFree是否有效
(8)对越狱设备,xCon+俄罗斯伪造苹果服务器是否有效

(9)对非越狱设备iOS 5.1.1,俄罗斯伪造苹果服务器是否有效
工具:IAP cracker,IAP Free,LocalIAPFree,xCon
2. 第三方支付平台
可参考  支付漏洞的三种常见类型
分析方法主要从通信包分析和对API接口进行源码审计
待续。。。
五、通信包分析(动态分析)
1. http/https
( 1 ) HTTP
详见 mobile app 通信分析方法小议(iOS/Android)
工具: BurpSuite , Fiddler
( 2 ) HTTPS

详见iPhone上使用Burp Suite捕捉HTTPS通信包方法,iOS SSL kill switch

工具: BurpSuit , ios-ssl-kill-switch , turstme
检查列表: 同web应用漏洞
( 1 ) 关注移动广告平台是否收集移动设备中的隐私数据 (目前发送设备 UDID , Mac 地址貌似时稀松平常的事情,但发送设备内部应用安装列表,联系人方式就需要禁止了)
( 2 ) 0Auth安全性

待续
2 sockets

详见:实时抓取移动设备上的通信包(ADVsock2pipe+Wireshark+nc+tcpdump)

工具: wireshark , ADVsock2pipe , TCPdump , Mallory  
检查列表:(主要是中间人攻击)
(1)封包是否可以修改
(2)封包是否可以重放

六、后续工作

前面介绍的都是手动的从应用的各个方面(文件系统,通信,可执行文件,业务逻辑)进行安全审计,比较期望将来能有一款像web应用安全审计/漏洞检测那么成熟的自动化工具。目前为止,我知道的唯一有作用的iOS半自动化审计工具是 iAuditor——iOS APP安全审计工具,这款工具,存在目前市场上免费工具共有的缺陷,那就是过于理论,对实际APP的安全审计有点鸡肋,但聊胜于无。 (欢迎推荐好的自动化/半自动iOS应用安全审计工具)
总的来说,对iOS应用安全审计而言,除了黑盒/灰盒审计外,再就是对源码进行的白盒审计,HP的 Fortify SCA貌似还蛮成熟的,我也收集了一些国外安全团队的 源码审计白皮书, 但总觉得对于真实的iOS应用都过于理论 。 计划后期写一篇对真实应用有参考作用的iOS应用源码审计checklist,或者能更近一步编写一个开源的自动化审计工具。加油

iOS APP黑盒/灰盒审计checklist相关推荐

  1. 【测试理论基础之黑盒/灰盒/白盒测试案例设计方法】

    1.常见黑盒测试用例设计方法 等价类划分法.边界值分析法.因果图法.状态迁移法.判定表法.流程分析法.正交试验法.错误猜测法.输入/输出域测试法.异常分析法. 1.1.等价类划分法 概念:某个输入域的 ...

  2. 全局置灰操作:小程序置灰、app置灰、H5置灰

    微信小程序全局置灰: 只需要在app.wsxx文件中添加一行代码: page {filter: grayscale(100%);} 也可以写到对应的页面中,xxx.wsxx 文件中添加:page {f ...

  3. 软件测试有白和黑盒和灰盒,白盒测试、灰盒测试和黑盒测试的区别

    1黑盒测试黑盒,顾名思义,就是把所有东西装到一个盒子里,看不到内部逻辑,只能通过外部的可见的功能模块,对软件进行测试.比如说一个网站的登陆功能,你不知道它的内部逻辑是怎样的,只能通过网页的注册输入文本 ...

  4. 深入到系统组件是否白盒测试_南京豪之诺软件测试:白盒、黑盒、灰盒优缺点(知识普及)...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 白盒测试概念 白盒测试也称结构测试或逻辑驱动测试,重点关注软件内部的实现细节,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规 ...

  5. 黑盒、白盒、灰盒验证

    黑盒验证: 所有的代码只局限于与rtl的外部信号进行连接,验证环境对于rtl的细节是不知道的 黑盒验证的关键在于能否根据输入预测出输出. 优点为验证环境较易维护 缺点是缺乏内部信号的控制和观测点 白盒 ...

  6. 覆盖标准(白盒、黑盒和灰盒)

    覆盖标准(白盒.黑盒和灰盒) 覆盖标准Coverage Criteria 覆盖标准采用软件的抽象表示并将其划分为可测试的功能. 每个功能构成了测试需求的基础--需要由软件的测试套件进行测试的东西. 当 ...

  7. 选择灰盒安全测试工具,看准以下几点

    渗透测试是模拟黑客攻击站在第三方的角度上来测试系统的安全性,通过渗透测试发掘企业系统潜在的安全漏洞.通过对网站及APP应用等,进行非破坏性质的入侵攻击,获取系统权限,并将入侵过程和漏洞细节编写成测试报 ...

  8. iOS 开发之沙盒机制 文件操作 (NSFielManager)

    原文链接:http://www.jianshu.com/p/349855b5a8ae iOS APP 可以在自己的沙盒里读写文件,但是,不可以访问其他 APP 的沙盒.每一个 APP 都是一个信息孤岛 ...

  9. iOS开发:沙盒机制以及利用沙盒存储字符串、数组、字典等数据

    iOS开发:沙盒机制以及利用沙盒存储字符串.数组.字典等数据 1.初识沙盒:(1).存储在内存中的数据,程序关闭,内存释放,数据就会丢失,这种数据是临时的.要想数据永久保存,将数据保存成文件,存储到程 ...

最新文章

  1. 如何评价LoRa这项应用于低功率长距离场景的物联网传输技术?
  2. 2017-1-11 css3布局
  3. 死磕Java并发:J.U.C之重入锁:ReentrantLock
  4. 简单的socket通信实现
  5. Lua 协同程序(coroutine)
  6. mysql savepoint 什么意思_关于MySQL中savepoint语句使用时所出现的错误
  7. 云南干旱 谁人受损 心有戚戚 愤怒哀伤
  8. c++ qt获取电脑的内存_Qt官方示例信号量
  9. PHP中cURL的curl_getinfo函数返回的CURLINFO_HTTP_CODE是0
  10. matlab求解pde,matlab求解pde问题
  11. Java周记(第五周)
  12. transform: translateY(-50%)实现垂直居中效果
  13. Linux批量追加文件名后缀
  14. java实现将PDF文件拆分成图片
  15. [附源码]java毕业设计逸尘房屋销售管理系统
  16. (linux vm虚拟机网络连接失败,重启网卡失败原因及解决办法)
  17. DSP学习笔记之系统时钟、定时器、GPIO篇
  18. python爬取虎扑评论_Python爬取NBA虎扑球员数据
  19. 洪水填充算法_洪水填充算法分析
  20. 系统加速比(amdahl定律)

热门文章

  1. [zt] 什么是气虚
  2. 脚本关6逗比验证码第二期
  3. Flutter 自定义路由动画案例
  4. 网络社交媒体的情感认知与计算
  5. 一篇有关主板跳线设置的文章,推荐!!!
  6. 2021计算机专业笔记本推荐,2021适合学生的笔记本电脑推荐
  7. VR全景智慧门店,助家居建材打造个性化营销模式
  8. 安装程序 Repack 攻略 之 MSI 篇
  9. ZOJ2313 Chinese Girls' Amusement(大数运算,找规律)
  10. C++程序设计:实验一 CMatrix类设计与实现