Group of Software Security In Progress

GoSSIP @ LoCCS.Shanghai Jiao Tong University

Mo(bile) Money, Mo(bile) Problems:Analysis of Branchless Banking Applications in the Developing World

论文下载:http://www.cise.ufl.edu/~traynor/papers/reaves-usenix15a.pdf

本文的主要研究点是分析目前Android平台无网点银行(branchless banking system)app的安全性,作者从246个提供无网店银行服务的服务提供商中中选取了46个有代表性的Android app进行自动化分析,之后又对其中的7个进行了人工分析。发现了很多问题。

Introduction

主要的contribution在于:

  1. 第一个对无网点银行app进行综合性研究文章。设计并实现了一套用于分析整个app交互流的方法,对目前无网点银行类app的现状有一个很好的总结。
  2. 发现了很多问题,人工分析的7个app中有6个无法保证交易过程的安全性。同时也发现目前的自动化分析工具并没有什么卵用。
  3. 责任分析,对照了app的服务条款,发现这个问题和用户无关,都是开发商的锅。

Mobile Money in the Developing World

Fig

  • 移动支付系统(Mobile Payment):允许移动设备使用传统的银行基础设施进行支付的系统,比如PayPal,Google钱包,Apple Pay。
  • 移动钱包(Mobile Wallets):存储各种用于移动支付或支付凭证的系统。
  • 无网点银行(Branchless Banking):不需要基础设施,但是提供银行服务。特点在于没有最低余额、低廉的交易费。这类服务同样也不依靠互联网,可以使用SMS或USSD(Unstructured Supplementary Service Data。

App Selection and Analysis

用Mallodroid对47款app进行SSL/TLS漏洞扫描,结果如下:

Fig

问题在于Mallodroid检测到的问题并不一定存在,在Mallodroid的paper里,检测到的问题真正能够导致中间人攻击的只有41%。所以选了7个来做人工分析,根据所在国家分布、下载数量、开发商、静态分析结果等特征来选。

先做简单的逆向,baksmali成dalvikbytecode,然后寻找使用到敏感api的类,比如网络、密码学库、知名的第三方广告库、能够规避静态分析的API(classloader),对整个apk代码形成一个概述。最后用Qualys SSL Server Test对SSL服务端进行测试。

之后做深入的逆向分析,跟随app的生命周期,重点分析注册、登录、用户认证、金钱交易这些功能。可能出现的错误包括,不恰当的身份验证、信息的机密性和完整性错误(包括密码学误用)、隐私信息泄漏(金钱相关信息、认证token)、不合规的实践(允许弱密钥)。

Results

发现的问题如下图:

Fig

接下来深入分析各种问题,首先把自动化扫描工具Mallodroid黑了一通,结论就是还是要靠人工分析。

  1. SSL/TLS 最常见的问题,不验证证书。此外就是SSL/TLS服务器的问题,用Qualys跑下来,结果如下表。
  2. Non-Standard Cryptography 硬编码密钥、密钥随机性不够、密钥明文传输、使用Java的Random函数来制造随机数(伪随机)、一些用于身份认证或是签名的key不够随机。
  3. Access Control 服务器端API访问控制没做好、客户端API访问控制没做好、用SMS来传输数据。
  4. Information Leakage log信息泄漏、敏感信息本地存储。

Fig

后面都是一些讨论和责任分析,感兴趣自己看文章吧。