iOS安全测试—Sandbox
Sandbox简介
Sandbox 沙盒也叫沙箱,其原理是通过重定向技术,把程序生成和修改的文件定向到自身文件夹中。在沙盒机制下,每个程序之间的文件夹不能互相访问。
iOS
系统为了保证系统安全,在 应用程序在安装时,会创建属于自己的沙盒文件,应用程序不能直接访问其他应用程序的沙盒文件,当应用程序需要向外部请求或接收数据时,都需要经过权限认证,否则,无法获取到数据。
应用程序中所有的非代码文件都保存在沙盒中,比如图片、音频、属性列表(Plist
),sqlite
数据库和文本文件等。
Sandbox 文件存储结构
因为应用的沙盒机制,应用只能在指定的几个目录下读写文件。默认情况下,每个沙盒含有3个文件夹:Documents
, Library
和 tmp
。
SubDirectory | Description |
---|---|
AppName.app | 存储 App 执行文件和静态资源文件,该目录包含了应用程序本身的数据,包括资源文件和可执行文件等。程序启动以后,会根据需要从该目录中动态加载代码或资源到内存。 |
Documents | App的配置文件等,我们可以将应用程序的数据文件保存在该目录下。不过这些数据类型仅限于不可再生的数据,可再生的数据文件应该存放在Library/Cache 目录下。 |
Library | 用来存放默认设置或其它状态信息。 |
Library/Preference | 此目录保存应用程序的所有偏好设置,如.plist文件 ,iTunes 同步设备时会备份该目录。 |
Library/Caches | 缓存数据 (cache file and cookie file ),该文件夹内的内容不会被同步 |
tmp | 临时文件 |
获取沙盒文件
由于应用沙盒文件属于敏感信息文件,直接从Appstore
下载一个应用来查看沙盒文件是没有权限的,除非逆向破解。那么作为测试人员查看应用沙盒文件,则需要将测试设备绑定开发者证书才可以查看。
xcode
1 . 打开导航栏中 Window -> device and Simulators
- 显示设备下可以查看的APP
- 选中目标APP, 点击齿轮图标,然后点击
Download container...
保存到指定目录。
- 选择下载的文件点击右键弹出菜单,然后选择显示包内容
- 打开之后就可以查看到沙盒文件了。
iFunbox
iFunBox是iPhone以及苹果其他产品的通用文件管理软件。
Sandbox验证点
Sandbox
中存储的文件,主要有Plist files
, sqlite
、Cookie
三种类型,这三种类型的文件安全验证点分别如下:
1. Plist files (查看工具: Xcode (Mac),plistEditor(windows)
,)
- 文件中是否存储敏感信息,敏感信息是否加密
- 文件是否会被备份,备份泄露是否有风险
- 文件能否被用于跨客户端的逻辑校验(如某个存储文件的内容是客户端用于判断用户是否登陆,测试将该文件导出,拷贝至其他设备,查看能否越过登陆校验)
2. sqlite (查看工具: sqlite manager
)
- 文件中是否存储敏感信息,敏感信息是否加密
- 文件是否会被备份,备份是否有泄露风险
3. Cookie
- 查看
Cookie
有效期(有效期不能短于登录cookie
的有效期) - 敏感信息重点关注“登陆信息、用户身份信息、服务器
SQL
注入链接、管理员登陆账号密码”一类信息。