iOS安全测试
2024-03-04 14:28:14 0 举报
AI智能生成
iOS安全测试笔记
作者其他创作
大纲/内容
程序崩溃
显示错位
业务逻辑错误
用户体验问题
找Bug
需求文档/测试用例
传统业务功能测试
本地存储
网络通信
源码
业务
挖漏洞
应用安全测试
漏洞类型 Checklist
与普通业务功能测试的区别
手势路径保存在本地
配置文件
.../Caches
身份证、卡号、操作等
用户历史操作敏感信息
缓存
订单信息等
数据表结构
数据库
测试数据
冒充服务端进行通讯
攻击者寻找证书
秘钥(私钥)相关的文件
证书数据
http明文通信
https证书认证
易逆向、破解
敏感参数弱加密
添加后可防篡改
加签/验签策略
内部数据上传到外部数据存在安全隐患
外接第三方SDK
开发环境可能被植入木马
外发不明数据
可能包含变量信息
开发时忘记抹去日志
日志打印
对逆向难度大大降低(有什么类、类里有什么方法都可以轻松看到)
源码未混淆
可通过工具导出,找到app key对应的位置、对应字符串
app key等字符串
字符串未加密
提高调试门槛
未做反调试
越权
扫号
认证绕过
短信
重放
XSS/SQL注入...
漏洞分类
安全测试介绍
需求
开发
测试
上线
运营
白盒
业务逻辑Review
代码Review
dumpdecrypt可脱壳
APP Store会把开发者提交的应用加一层壳
安装/脱壳
头文件dump/反编译
info plist
APP应用包资源(Bundle)
APP本地数据资源(Data)
头文件
符号表
字符串
静态分析
特定模块
第三方组件
敏感信息
关键方法
未公开业务/后门
产出
lldb
进程
idevicesyslog
Burpsuite
动态分析
业务逻辑
可能的漏洞利用方法
越狱开发平台
Theos
对应用进行二次打包(对改过的二进制文件重新进行签名)
ldid
漏洞利用
黑盒
如何做安全测试
代码签名
沙盒
KeyChain
TouchID
StoreApp Vs EnterpriseApp
隐私权限控制
IOS系统安全机制
用户身份信息
Cookie信息
程序关键调试信息
密码信息
...
定义
加密存储 不存储在共享区域
存
加密传输 迪米特法则 (最少知道) 例如星号
取
存取原则
UDID
AdSupport
IDFA
Model
WifiInfo
OSversion
设备信息
默认|共享
系统剪贴板
搜索控件中|共享
搜索剪贴板
自行创建|独享
自定义剪贴板
剪贴板
加密|不共享
监听应用退出前台事件
对当前页面进行截屏
进行模糊处理
覆盖到最上层
截屏缓存
迪米特法则
默认对非密码非数字进行缓存
调整TextField的属性,关闭自动修正选项。
特定TextField仅限系统输入法。
键盘缓存
不共享
不要将密码明文存放在实例变量中
敏感数据及时加密/擦除
内存中的实例变量
加密|不共享|迪米特
处理方法
敏感信息保护
如何存储信息
何时存储信息
本地数据存储考虑的两个问题
用户体验VS安全性
folder/to/AppData/Library/Preferences/[BundleID].plist
配置信息
用户数据
NSUserDafaults
数据加密后入库
对数据文件加密
免费版无加密
SQL注入
SQLite
KeyChain
URL Loading API
HyBird
NSURLRequestReloadlgnoringLocalCacheData
NSURLRequestReloadlgnoringCacheData
网络请求缓存
网站源码泄露
关键业务逻辑
加密
验证
离线网站缓存
本地存储安全
加密/加签
网络通信安全
connection didFailWithError:(NSError*)error
该方法为连接失败的回调,若证书验证失败,会触发该方法。
1
connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpae*)protectionSpac;
声明对连接作认证,返回YES。
2
connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge*)challenge
当收到HTTPS服务端认证的challenge时回调方法,在该方法中实现对服务端证书的认证。
3
-(BOOL)shouldTrustProtectionSpace:(NSURLProtectionSpace*)protectionSpace;
证书认证的具体表现,非协议方法,需自行实现。
4
NSURLConnectionDelegate
[AFHTTPSessionManager manager].securityPolicy = [self cutomSeucurityPolicyWithCertName@"pa18"];
设定安全策略未读取指定证书文件进行证书验证
AFSecurityPolicy*securityPolicy = [AFSecurityPolicy policyWithPinning Mode:AFSSLPinningModeCertificate];
进行SSL证书认证
AFNetworkinng
无论设备是否越狱,都可以轻松获取设备日志信息,可使用宏定义在Release版本中抹除打印语句
日志打印的抹除
Control Flow Flattening
Instructions Substitution
Bogus Control Flow
方法名混淆
代码混淆
Strings
所有的字符串 @“”
加密后编码,使用时动态解密。
字符串加密
ptrace()
实时监控应用进程加载的动态库
反调试
源码安全
XGhost
开发环境安全
包名
应用名
系统版本
语言
国家
收集信息
打开钓鱼网站
进入指定APP下载界面
向第三方应用发送消息
安装企业应用(用户交互)
打电话,发短息(用户交互)
弹警告窗口
init.iCloud-analysis.com
恶意行为
恶意行为分析
/Application/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/路径下有无Library文件夹
在Gatekeeper打开的情况下执行spctl --assess --verbose /Applications/Xcode.app
开发者自查
strings [executable file] | grep "http://init.iCloud-analysis.com"
ipa静态检测
检测方法
编写安全的IOS应用
安全编码
IOS安全测试
0 条评论
回复 删除
下一页