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