移动应用渗透测试动态分析方法

时间:2019-09-16 15:47责任编辑:SSTL
前言 随着移动端应用的兴起,移动APP的安全已成为当今社会越来越关注的焦点,移动APP的脆弱性日益彰显,恶意扣费、个人隐私泄露、资金被盗等安全问题频频发生,令人堪忧。 据统计,大量的APP安全事件中,主要是用户姓名、地址、账号、密码、手机号等信息泄露

前言

 

随着移动端应用的兴起,移动APP的安全已成为当今社会越来越关注的焦点,移动APP的“脆弱性”日益彰显,恶意扣费、个人隐私泄露、资金被盗等安全问题频频发生,令人堪忧。

 

据统计,大量的APP安全事件中,主要是用户姓名、地址、账号、密码、手机号等信息泄露严重,尤其是游戏娱乐和生活服务类的APP是安全事件爆发的重灾区。

 

移动应用的渗透测试相比于WEB渗透测试具有以下特点:

● 定制化的客户端相对有限的浏览器类型,存在更多不安全的开发风险,风险种类更加多样;

 相对于浏览器单一的HTTP(S)数据传输协议与证书认证机制,客户端的数据传输接口异化,可能存在自定义协议与内部自建证书认证机制。

 

针对移动应用存在的特点,我们不能完全采用与WEB渗透测试相同的策略,仅仅单一的对网络接口进行测试。对移动应用的渗透测试,需要将客户端安全也作为测试重点,同时由于异构的数据传输接口,针对移动应用的网络接口测试也需要更多的方法和策略。

 

归纳来说,移动应用的渗透测试方法可分为以下两大类:

 

 对应用程序的静态分析:

通过逆向与调试客户端程序源码、检查交互操作等方法,测试应用是否满足安全的开发规范。该测试方法的目标与影响主要是针对客户端,发现问题的危害影响范围较为有限。常见的问题有:木马病毒检测,反编译保护,应用二次打包风险,组件导出风险,Webview漏洞,密码回显风险,屏幕截屏风险,本地数据存储风险,日志记录敏感信息风险等。

 

 对网络接口的动态分析:

通过抓取移动APP与服务器之间的通讯数据包,分析程序执行逻辑,判断程序可能存在的安全风险。该测试方法的目标与影响主要是针对服务器端,发现问题的危害影响范围较大。常见的问题有:敏感信息明文传输,数据接口重放风险,业务逻辑漏洞,SQL注入,XSS,文件上传漏洞,暴力破解风险等。

 

图1 移动应用渗透测试方法分类

 

1

动态分析

 

移动应用的动态分析,主要采用的方法是中间人攻击(MITM)。

 

中间人攻击,是攻击者为了截获客户端与服务器的通信数据,将自己接入到客户端和目标网站之间,通过伪造身份,使待测客户端将攻击者作为服务器,待测服务器将攻击者作为客户端。对于明文传输(HTTP)的数据,攻击者只要接入客户端与服务器的网络之间就可以实现中间人攻击;对于使用了加密传输(HTTPS)的数据,攻击者接入客户端与服务器之间的网络后,即使截取到数据包也无法解密,此时攻击者需要伪造服务器的证书,将服务器的公钥替换成自己的公钥,从而解密客户端和服务端的通信数据。

 

移动应用的动态分析方法,就是通过伪造证书,对移动应用进行流量劫持,重放、修改和恶意构造移动应用与应用服务器交互数据包,发现系统弱点。

 

图2 中间人攻击示意图

 

针对HTTP(S)协议的中间人攻击,可以使用Burp Suite,Charles,Fiddler等工具。这里演示使用Burp Suite对移动应用进行动态分析。

 

● 设置Burp Suite监听端口

在电脑上运行Burp Suite,设置Burp Suite中的Proxy Listeners为All interfaces,这样就可以监听来自任意目标的数据。

 

图3 设置Burp Suite监听来自所有地址的请求

 

 设置移动端代理

Burp Suite就是作为图4中的攻击者,用来执行中间人攻击。我们需要在手机上安装待测移动应用,然后将手机与安装了Burp Suite的电脑连接在同一局域网下,将手机代理设置为运行Burp Suite的电脑地址。

 

图4 Android设置网络代理

 

图5 iOS设置网络代理

 

 伪造证书

完成以上操作后,Burp Suite就已经成功接入了移动应用与网络服务器之间,此时Burp Suite可以对使用未加密协议传输(HTTP)的数据进行中间人攻击。为了能够测试HTTPS下传输的数据,我们还需要在客户端植入由Burp Suite签发的根证书,用来伪造待测服务器的CA证书。

 

在手机浏览器中输入http://burp,访问Burp Suite提供的网页,选择下载CA Certificate,之后根据提示在手机上安装CA证书。

 

图6 访问http://burp

 

Android安装根证书,需要先将下载的证书后缀名从.der改为.pem,然后在“高级WLAN”设置中选择下载的证书文件,根据提示完成安装。

 

图7 Android安装证书

 

iOS安装根证书,在使用Safari浏览http://burp后,点击下载证书,系统会提示安装过程,根据提示完成安装。这里有一个非常重要的点就是,在根据提示“安装描述文件”后,还需要手动打开设置 => 通用 => 关于本机 => 证书信任设置,选择打开名为PortSwigger CA的CA证书。

 

图8 iOS安装证书

 

 开始抓包

完成以上操作后,在移动应用中执行任意操作,可以在Burp Suite中看到访问的网络数据,此时就可以利用WEB渗透测试的分析技巧,对移动应用进行动态分析。

 

2

测试案例

 

以下结合案例,演示对移动应用的渗透测试技巧。

 

 漏洞名称

短信验证码绕过

 

 漏洞等级

高危

 

 测试过程

截取用户发送短信验证码请求,同时截取返回数据包,发现用户在点击获取手机验证码后,服务器端将短信验证码返回给了客户端,攻击者可以直接使用返回的手机验证码注册成功。

 

图9 获取手机短信验证码

 

图10 截取获得手机短信验证码数据包

 

 漏洞危害

攻击者可以使用任意手机号码批量操作,造成大量垃圾注册,使系统资源浪费,导致系统不可用。

 

 修复建议

所有关键操作在服务器端验证,在用户请求短信验证码时,服务器不将短信验证码返回给前端。

 

3

总结

 

通过以上方法可以对当前大部分的移动应用进行动态分析。

 

有些移动应用为了进一步保证数据安全,会开启SSL Pinning、信息摘要签名、数据二次加密、Socket传输等方法增加动态分析难度。但是,这些方法并不建议过度使用,原因是这种基于接口隐蔽的安全设计,理论上都可以被破译,并且这些方法可能会掩盖系统本身的安全性问题,使得系统的安全问题很难在测试中发现,这仅仅增加了时间成本,对系统本身的安全性提高不大。

 

保证应用数据接口的处理逻辑安全才是保证系统安全的关键。

------分隔线----------------------------

上海计算机软件技术开发中心 © 版权所有 沪公网安备 31011202012394号  沪ICP备14033306号-2