引言
移动互联网的迅速发展,4G 和 Wifi 无线网络的大面积覆盖,智能手机和平板电脑的普及迅速吸引了大量的终端用户。2014 年,移动端上网的用户比例为 83.4%,首次超过传统 PC 端用户使用率。移动应用程序不仅涵盖生活中的方方面面,也越来越多的应用到商业领域中帮助提高办公效率,实现随时随地的信息处理。由于移动端应用程序已经与人们的生活和工作紧密相连,其安全性也越来越重要。移动端应用程序的安全漏洞可能会造成重大的经济损失,如何保证移动端应用程序的安全性是一个急需解决的问题。
IBM Security AppScan 产品系列是 IBM 安全框架解决方案中应用安全的一个重要部分,可以实现对网络应用安全漏洞的动态扫描、代码静态分析,以及针对已上线的系统做网络安全攻击测试。除了应用在传统的 PC 端外,IBM Security AppScan 还可用于移动端应用程序的安全性测试。本文介绍如何利用 IBM Security AppScan 测试移动应用程序安全性。
移动应用程序安全性测试特点
移动应用通常包括 Mobile 端和 Server 端,Mobile 端和 Server 端的数据交互一般通过 Web Service 的方式进行。Web Service 是使应用程序以与平台和编程语言无关的方式进行相互通信的一种技术, Web Service 通常采用 SOAP 协议进行交互,这些 Web Service 具有标准的 WSDL 文件来描述其接口规范。通过扫描 WSDL 文件,可以轻易的从根节点开始获取所有接口的输入输出参数,并在此基础上进行分析和模拟黑客攻击找出漏洞。使用 IBM Security AppScan,测试人员录入根 URL 或者 WSDL 文件地址,即可以实现自顶向下的安全性探索和验证。AppScan 会根据 WSDL 信息来遍历待测程序,根据安全测试领域已有的六大类安全威胁来组合参数,寻找潜在的安全问题和模拟黑客攻击,探测出待测应用程序的漏洞,定义其严重性并给出修复建议。
移动端应用程序根据其编程特点分为三大类:
Mobile Native Application:使用移动设备 native language 开发的应用程序,开发速度快,应用程序稳定,但依赖于平台。(eg: iphone 上使用 object-C, android 上使用 Java)
Mobile Hybrid Application:由 Web UI 和底层 Native Layer 共同组成,可以跨平台。
Mobile Web Application:通过浏览器进行交互,在已有的 PC 端网站上增添对移动端的支持,使其能适应移动端的特性。
无论是哪一类的应用程序,都是由移动平台客户端和服务器共同组成,移动平台客户端和服务器之间有多种通信协议,包括 XML,REST,SOAP 等。移动端应用比较多的是 REST(Representational State Transfer),因为 REST 模式的 Web Service 与复杂的 SOAP 和 XML-RPC 相比明显的更加简洁。越来越多的移动端 Web Service 开始采用 REST 风格设计和实现。由于其轻量级和简单的特性,基于 REST 构建的 Web Service 往往没有对应的“WSDL”文件定义。缺乏入口信息,采用安全扫描工具直接扫描很难达到有效覆盖。为了更有效的测试出移动应用程序的安全问题,在实践中通常采用探索 -> 测试 -> 再探索 -> 测试的方式;或者在 IBM Security AppScan 中配置参数和模式使得扫描的结果更准确。
配置 AppScan 测试移动应用程序
在采用 IBM Security AppScan 进行安全性测试之前,首先要配置移动端,AppScan 和 Server 端的连接。通过设置 AppScan 为移动端代理,监听移动端和服务器端的交互,拦截和转发移动端与 Server 端交互的数据流,AppScan 可以对移动应用程序进行有效的安全性扫描。下图以 iOS 为例来说明如何进行配置。
图 1. 移动应用程序交互图
首先,通过端口映射工具配置移动端和 AppScan 之间的数据连接。本文采用 rinetd 进行配置,rinetd 是为重定向传输控制协议 (TCP) 连接的一个开源工具( http://www.boutell.com/rinetd/ ),支持 Unix, Linux 和 Windows 多种操作系统。下载安装 rinetd 以后,配置端口转发文件并基于配置文件启动 rinetd 即可。
rinetd 配置文件示例:
9.125.65.126 28080 127.0.0.1 18080
9.125.65.126:AppScan 所在 Server 端 IP 地址
28080:移动端配置的端口号
127.0.0.1:AppScan 代理默认绑定地址
18080:AppScan 代理默认绑定端口号
配置完端口映射工具以后,根据信息配置 iOS 端网络,使移动端应用程序数据通过发往 AppScan 代理。进入 iPhone, 选择设置 -> 无线局域网 -> 当前网络 -> 详细信息 ->HTTP 代理,配置相应的服务器和端口信息。服务器 IP 为 AppScan 所在 Server 端 IP 地址,端口为 rinetd.conf 里配置的端口信息,如下图所示:
图 2. 移动端配置
移动端和 AppScan 通过代理建立完链接以后,启动 AppScan 新建常规扫描,进入配置向导。首先选择探索站点的基本方法:外部设备 / 客户机(AppScan 作为记录代理),点击下一步。
图 3. 配置 AppScan 连接外部客户机
选择代理端口和记录位置,代理端口为 rinetd.conf 里配置的端口,记录位置选择“该机器上的外部客户机”
图 4. 配置 AppScan 代理
... ...