iOS安全测试—Sandbox

Sandbox简介

Sandbox 沙盒也叫沙箱,其原理是通过重定向技术,把程序生成和修改的文件定向到自身文件夹中。在沙盒机制下,每个程序之间的文件夹不能互相访问。

iOS系统为了保证系统安全,在 应用程序在安装时,会创建属于自己的沙盒文件,应用程序不能直接访问其他应用程序的沙盒文件,当应用程序需要向外部请求或接收数据时,都需要经过权限认证,否则,无法获取到数据。

应用程序中所有的非代码文件都保存在沙盒中,比如图片、音频、属性列表(Plist),sqlite数据库和文本文件等。

ios_sandbox

Sandbox 文件存储结构

因为应用的沙盒机制,应用只能在指定的几个目录下读写文件。默认情况下,每个沙盒含有3个文件夹:Documents, Librarytmp

sanbox_file

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

device and Simulators

  1. 显示设备下可以查看的APP

installed_app

  1. 选中目标APP, 点击齿轮图标,然后点击Download container... 保存到指定目录。

Download container...

  1. 选择下载的文件点击右键弹出菜单,然后选择显示包内容

open sandbox file

  1. 打开之后就可以查看到沙盒文件了。

sandbox file list

iFunbox

iFunBox是iPhone以及苹果其他产品的通用文件管理软件。

ifunbox

Sandbox验证点

Sandbox中存储的文件,主要有Plist files, sqliteCookie三种类型,这三种类型的文件安全验证点分别如下:

1. Plist files (查看工具: Xcode (Mac),plistEditor(windows),)

  • 文件中是否存储敏感信息,敏感信息是否加密
  • 文件是否会被备份,备份泄露是否有风险
  • 文件能否被用于跨客户端的逻辑校验(如某个存储文件的内容是客户端用于判断用户是否登陆,测试将该文件导出,拷贝至其他设备,查看能否越过登陆校验)

2. sqlite (查看工具: sqlite manager

  • 文件中是否存储敏感信息,敏感信息是否加密
  • 文件是否会被备份,备份是否有泄露风险

3. Cookie

  • 查看Cookie有效期(有效期不能短于登录cookie的有效期)
  • 敏感信息重点关注“登陆信息、用户身份信息、服务器SQL注入链接、管理员登陆账号密码”一类信息。

参考资料