基于IBM Security AppScan测试移动应用程序安全性

引言
   移动互联网的迅速发展,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 代理

点击下一步,选择默认选项直到“登陆管理”页面。到达登陆管理页面以后,打开移动应用程序并进行登陆操作,AppScan 会自动记录下客户端和服务端的登陆过程以及登陆信息。由于安全性或者其他设置,AppScan 有时无法成功记录登陆信息,此时通过“完全扫描配置 -> 登陆管理”选择自动登陆,输入相应的账号信息即可解决问题。
  
图 5. 配置登陆管理
  选择测试策略,可以导入测试策略文件,按测试策略来进行有针对想的扫描。
   
图 6. 配置策略文件
  以上选项都已经配置完成以后,AppScan 会自动打开外部流量记录器,安全性测试人员只需要在 mobile 端手动测试即可。AppScan 会自动记录用户的流量和行为,模拟人的使用方式从而探测出实际使用中可能会产生的安全性问题。
  
图 7. 启动流量监控器
   使用 AppScan 测试移动应用程序
  配置完成以后,AppScan 作为代理会记录客户端和服务器端的交互,并基于用户行为进行安全性探测和分析。由于安全性分析是基于用户对移动应用程序的操作,因此迭代的方式更有助于保证安全性测试质量。在实践中,安全性测试人员通常先选择“探索”,然后在移动端完整的覆盖所有的页面和输入控件,AppScan 代理记录完这些流量信息以后,点击“测试”。得到一轮测试结果。通过分析这些测试结果,安全性测试人员确立下一轮测试的重点和目标,在问题高发的区域用更多的输入组合进行探索,进一步发现问题。通过不断的迭代,可以使得安全测试达到一个很高的覆盖率。
  
图 8. 获取迭代测试结果
  除了手工迭代进行探索测试以外,安全性测试人员还可以通过配置 AppScan 的参数测试基于 REST 构建的移动应用程序。默认情况下,AppScan 会以 HTTP&HTML 标准格式来识别参数,如果参数是以其他格式构建的(比如 RESTful 消息),必须手工配置 AppScan 才能进行有效的解析参数,从而进行扫描。下面以获取用户详细信息为例,来说明如何配置 AppScan 来测试:
   清单 1.REST 消息示例
  GET /data/users/UserName/ HTTP/1.1
  Host: www.ibm.site
  Connection: close
  登陆 AppScan,扫描 -> 扫描配置 -> 参数和 Cookie-> 高级:定制参数,点击“+”按钮即可添加新的识别模式:
  
图 9. 定制 AppScan 高级参数
  首先用户自定义引用名称,然后根据 RESTful 配置正则表达式设置模式。通过配置正则表达式(/data/([\d\w\s%]+)/([\d\w\s%]+)/),可以提取出 RESTful 消息里的用户和对应的 Value 值。应用定制的正则表达式扫描应用程序,登陆数据 -> 脚本参数列表可以查看到如下数据解析:
   表 1. 定制参数解析结果
  识别出关键属性和路径以后,AppScan 可以执行进一步的扫描和安全分析。
   结束语
  移动应用程序和人们的生活联系日趋紧密,应用程序的安全性问题也得到越来越多的重视。本文分析了移动应用程序的交互模式和常用的网络协议,基于 IBM Security AppScan 提供了测试移动应用程序安全性的方法介绍和实践:包括如何配置 AppScan 使其适应移动测试的特性;如何使用 AppScan 进行高级参数配置,使其可解析主流的 RESTful 消息,对安全测试感兴趣的工程师有一定的借鉴意义。





文章转载:http://www.51testing.com/html/79/n-3715379-2.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值