移动应用程序和网页应用程序
在快速发展的移动生态系统中,移动应用程序安全性是IT安全人员,研究人员和领导者的热门话题。 移动应用程序开发采用了新的设计原则,要求开发人员注意确保数据安全的新方法。 测试您的移动应用程序和关联的基础架构可以是提高移动解决方案安全性的有效方法。
本文讨论了移动应用程序安全性,并提供了使用IBM Security AppScan Standard Edition配置移动应用程序服务器动态测试的动手技术。 了解如何设置AppScan来扫描具有三种不同模型的移动应用程序:
- 通过设置移动用户代理来扫描移动Web应用程序
- 在iOS和Android上使用模拟器
- 为Android和iOS配置实际的移动设备
图1显示了三种不同的配置。
图1.扫描和测试移动应用程序的方法
移动应用程序的类型
正如Omri Weisman在最近的网络广播中所描述的那样(请参阅参考资料 ),移动应用程序可以分为几类。 您的移动应用程序类别决定了可以最有效地使用哪些测试技术和相应的工具。
移动本机应用程序
移动本机应用程序旨在在设备上运行,并以本机语言编写,例如Android应用程序的Java或Apple iOS应用程序的ObjectiveC。 此类应用程序最好使用静态分析工具进行测试。 IBM Security AppScan Source Edition 8.6和更高版本支持对Android应用程序的静态分析。 但是,许多本机应用程序还使用标准的Web和Web服务通信接口,这些接口通常可以使用IBM Security AppScan Standard Edition进行测试。
移动网络应用
顾名思义,移动Web应用程序就是如此。 许多组织不会为每个移动平台开发本机应用程序,而是将对移动设备的支持添加到其现有网站中。 或者,他们将开发特定的网站来支持移动应用程序。 该支持通常包括简化的导航,减少的带宽要求,针对较小的屏幕尺寸的优化,不同的技术(例如HTML5与Flash),等等。 因此,部署到移动设备的“应用程序”通常只不过是快捷方式或书签。 该类别的应用程序非常适合使用AppScan Source Edition进行静态测试和使用AppScan Standard Edition进行动态测试。
移动混合应用
混合移动应用程序通常由基于Web的(HTML,CSS,JavaScript)用户界面(WebView / UIWebView)组成,并被本机应用程序层包围。 此类别中的应用程序也非常适合使用AppScan Source Edition(适用于Android)对本机层进行静态测试,以及使用AppScan Standard Edition进行应用程序基于Web层的动态测试。
移动应用程序和Web服务
对于每种类型的移动应用程序,都有一个通用模型,涉及在部署到移动设备的移动部分和部署到服务器的中央处理或数据存储部分之间拆分处理。 该模型通常使用可使用AppScan直接测试的Web服务界面。 AppScan支持对各种Web服务的测试,包括基于SOAP和REST的Web服务。
本文介绍的方法应测试您的应用程序使用的Web服务的接口。 但是,为了获得更高的安全性,您仍然必须确保对Web服务进行了全面测试,包括移动应用程序当前未使用的所有已实现功能。 AppScan仅在探索阶段测试它知道的接口。
与移动Web或应用程序服务器的通信通常是通过可拦截的标准协议和数据格式进行的,例如HTTP,HTTPS,SOAP,REST,JSON和XML。 可以使用IBM Security AppScan Standard Edition对移动应用程序服务器进行测试。 以下各节描述了配置AppScan来捕获这些交互的方法,这是测试移动Web应用服务器的必不可少的步骤。 您将了解使用AppScan测试移动应用程序服务器的三种方法( 图1 ):配置用户代理,使用仿真器以及使用实际的移动设备。
配置用户代理
测试移动应用程序服务器的最简单方法是将AppScan配置为发送模拟移动设备的User-Agent字符串。 AppScan增加了对多种设备的本机支持。 它具有配置任何必要的自定义User-Agent字符串的功能。
您可以通过从“扫描配置”窗口中选择“ 浏览选项”来设置User-Agent字符串,如图2所示。然后,像往常一样使用URL,手动记录,Web服务交互等来测试移动应用程序的服务器部分。上。
图2.设置用户代理
此方法非常适合移动Web应用程序,如果您有使用AppScan测试Web应用程序的经验,则应该熟悉该方法。 进行简单的配置更改就足以测试大多数应用程序。
配置仿真器
测试移动应用程序的另一种技术是在软件仿真器中运行该应用程序,并通过AppScan代理其流量。 本部分提供有关Android和iOS的详细信息。
Android模拟器配置
您可以使用Android SDK随附的模拟器来配置Android模拟器。 当应用程序在仿真器中运行时,网络流量可以通过位于AppScan > 工具 > 选项窗口中指定端口的本地主机地址(127.0.0.1)上的AppScan代理端口进行定向,如图3所示。默认情况下,此端口是动态选择的。 如果您正在积极使用此功能,请考虑将其设置为静态值,方法是取消选中“让AppScan自动选择端口”复选框,然后在“ AppScan代理端口”字段中设置首选端口。
图3.设置代理
使用以下命令,将Android模拟器配置为在模拟器命令行的localhost地址上使用此代理端口。
emulator -avd myAVD -http-proxy 127.0.0.1:{port from appscan config}
如果要从Eclipse启动仿真器,则可以从窗口 > 首选项 > Android > 启动 > 默认仿真器选项中配置此设置。 请注意,某些应用程序可能不使用设备和仿真器中的代理配置。 在这种情况下,可能需要其他方法,包括开发支持。
Android OS级配置
在某些版本的Android OS中,您可以从模拟器中配置代理,而不必使用命令行。 如果这样做,请注意,在Android OS中,您将需要使用其他代理地址:10.0.2.2。 这是一个特殊的地址,对应于本地PC(127.0.0.1)上的回送接口。 之所以需要它,是因为仿真的Android OS使用127.0.0.1作为其自己的内部环回端口。
在Android 4.1中,要调整代理设置:
- 转到“设置”菜单。
- 在“无线和网络”下选择“ 更多 ”。
- 选择“ 移动网络设置” 。
- 选择访问点名称 。
- 选择列出的网络。
- 修改Proxy和Port字段,如图4所示。
- 确保用户名为空,并且未设置密码。
图4. Android OS级配置
iOS模拟器
iOS模拟器没有专用的代理设置,但是使用Mac计算机为所有网络流量设置代理很容易。 在“首选项” >“ 系统首选项”中 ,选择“ 网络”,然后选择您正在使用的接口(有线或wi-fi)。 在Advanced设置下,您将看到一个proxy选项卡,如图5所示。将IP和端口设置为运行AppScan的计算机的IP和端口。 AppScan代理仅绑定到本地流量,因此您需要进行配置更改以将传入流量转发到本地适配器(请参阅使用iOS移动设备 )。
图5.设置iOS代理
配置移动设备
如果要从实际的移动设备中浏览,则需要一些其他配置。 如前所述,AppScan代理仅绑定到本地主机回送地址(127.0.0.1)。 您需要能够在可用接口上使该代理端口可用。
有许多实用程序可帮助您配置移动设备。 在rinetd本文使用的例子(见相关信息 ),一个开源(GPL 2+)实用程序,使用方便,广泛使用,而且免费。 将rinetd实用程序下载到安装了AppScan的PC后,rinetd的安装就像提取zip文件并将可执行文件放在您选择的位置一样简单。
安装后,您需要创建一个非常简单的配置文件。 该文件的格式和功能已在rinetd网站上完整记录。 本文中的示例仅需一行:
(IP to listen on) (port to listen on) (IP to forward to) (port to forward to)
192.168.1.114 28080 127.0.0.1 18080
此配置行指示rinetd侦听端口28080上的IP地址192.168.1.114并将所有流量转发到端口18080上的127.0.0.1(大概是AppScan配置为侦听的位置)。 您可以将该行放入一个名为rinetd.conf的文本文件,或您选择的任何其他文件,然后使用以下语句从命令行运行rinetd。
rinetd -c c:\PATH\TO\CONFIG\rinetd.conf
rinetd运行之后,您将能够通过可用的IP地址和端口将设备的流量代理到本地环回地址上的AppScan代理端口。
使用Android移动设备
配置rinetd之后,您需要将Android设备配置为使用rinetd IP和端口(示例中为192.168.1.114和28080)进行代理。 选择设置 > Wi-Fi并修改当前网络,如图6所示。
图6.设置Android代理
使用iOS移动设备
同样,在iOS设备上,您需要从设置 > Wi-Fi配置屏幕设置 HTTP代理。 将服务器和端口设置为rinetd中配置的服务器和端口(在示例中为192.168.1.114和28080)。
图7.设置iOS
记录
使用上述任何一种方法设置代理配置后,下一步就是配置扫描并开始进行手动浏览。
在仿真器或设备中,运行要测试的应用程序。 当您探索应用程序功能时,生成的流量将通过AppScan代理进行路由以进行记录。 使用模拟器或设备手动浏览完成后,请关闭浏览器,并将流量加载到配置中。 完成所有记录后,就可以开始测试了。 您可以重新配置移动设备,并应关闭rinetd(如果已使用)。
测试中
安全性测试与典型的Web应用程序和Web服务的测试非常相似。 您选择的测试策略很可能适合于测试移动Web应用程序,可能仅包含应用程序,很少使用或具有开发人员的必备条件。 最好还定期测试关联的基础结构。 尽管从本质上来说,组织通常经常是Web应用程序服务器和Web服务器,但组织有时在策略,过程和标准方面对移动应用程序服务器的处理有所不同。
您可能需要进行一些其他配置,以支持应用程序的通信方法。 可能经常使用诸如SOAP或REST之类的Web服务方法。 AppScan包含用于测试SOAP方法的测试。 还可以将其配置为测试RESTful服务。 在Application Security Insider博客上查看Ory Segal关于该主题的文章(请参阅参考资料 )。
传输层加密
移动应用程序可以在各种高风险的网络环境中运行,因此传输层加密(SSL / HTTPS)常常很关键。 在使用仿真器或仿真器或从实际设备进行测试时,正确实施的传输层加密可能会带来挑战。 AppScan代理必须充当“中间人”才能捕获加密的流量。
传输层加密的挑战通常可以通过调整应用程序或设备或模拟器中的配置设置来克服,从而建立与AppScan证书的信任。 但是,在某些情况下,可能需要开发支持,例如针对不可配置的固定证书。 移动设备或模拟器的详细配置设置不在本文讨论范围之内。
结论
如果您的组织当前不支持移动应用程序,则可能很快就会支持。 在本文中,您了解了移动应用程序安全性,并通过一些动手技术使用IBM Security AppScan Standard Edition动态测试了移动应用程序服务器的安全性。
翻译自: https://www.ibm.com/developerworks/security/library/se-testing/index.html
移动应用程序和网页应用程序