iOS平台个人网银APP的安全测试报告

标签: 终端安全 SSL加密 SSL协议 网银 | 发表时间:2014-11-17 22:30 | 作者:liaoxj2046
出处:http://www.freebuf.com

几年来,我一直在从事有关个人网银APP的安全性研究。在这份报告中,我使用了黑盒和静态分析的方法,对全球最具影响力的四十个iPhone/ipad网银APP进行了安全测试。

以下国家的个人网银APP被纳入测试

研究说明

本研究在40小时内(不连续)完成

为了保护这些应用程序的所有者及其用户,本研究没有公布发现的漏洞以及利用它们的方法

所有的测试都只在应用程序(客户端)上执行;研究排除了任何服务器端的测试

已经联系了一些受影响的银行并提交了漏洞报告

测试过程

我们对每个网银应用程序进行了如下测试:

传输安全
明文流量
不当的会话处理
正确验证SSL证书
编译器的保护
反破解保护
PIE编译
用stack cookies编译
自动引用计数
uiwebviews
数据验证(输入,输出)
分析UIWebView的实现
不安全的数据存储
SQLlite数据库
文件缓存
检查属性列表文件
请检查日志文件
Logging
自定义日志
nslog报表
崩溃报告文件
二元分析
分解应用
检测的汇编代码保护混淆
检测防篡改保护
检测反调试保护
协议处理程序
客户端注入
第三方的库

结果概述

黑盒分析结果

下列工具被用于黑盒分析:

otool (object file displaying tool)[1]
Burp pro (proxy tool)[2]
ssh (Secure Shell)

40%通过APP Store审核的APP不会验证SSL证书,这使得他们容易受到中间人攻击。[ 3 ]

少量应用程序(小于20%)不具备位置独立的可执行程序(PIE)和堆栈溢出保护功能。这些功能可能有助于减轻内存泄漏攻击的风险。

>#otool –hv MobileBank
Mach header
magic cputype cpusubtype     caps    filetype ncmds        sizeofcmds      flags
MH_MAGIC     ARM         V6  0×00     EXECUTE    24       3288        NOUNDEFS DYLDLINK 
PREBOUND TWOLEVEL

许多应用程序(90%)包含几个无SSL的链接贯穿在应用中。这允许攻击者截获流量,注入任意JavaScript / HTML代码,进而创建伪造登录。

此外,发现50%的程序很容易通过UIwebview受到JavaScript注入攻击,通过不安全注射的UIWebView JavaScript实现。在某些情况下,原生iOS功能被暴露,允许受害者的设备发送短信或电子邮件。

一种新的网络钓鱼攻击正在流行:当受害者因为网上银行密码已过期,而按提示输入自己的用户名和密码。攻击者此事可以窃取受害者的凭证并完全获得了访问用户帐户的权限。

下面的示例显示个人银行应用UIWebView漏洞

它允许一个虚假的HTML形式被注入攻击者利用来诱骗用户输入他们的用户名和密码,然后把他们的凭据发送到恶意网站。

 

另外一个引起我注意而做的测试,是70%的APP没有替代认证的解决方案,如多因素认证,可能有助于减轻钓鱼攻击的风险。

大多数由应用程序产生的日志文件暴露敏感信息,如崩溃报告。这种信息可能被泄露,帮助攻击者利用0day 漏洞应用寻找和开发针对目标用户的应用。

大多数应用程序通过苹果系统日志公开敏感信息。

下面的例子是从控制台系统使用iPhone配置实用工具(IPCU)。身份验证过程的应用程序转储的用户凭据。

…CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.Jun 22 16:20:37 Test Bankapp[2390] <Warning>: <v:Envelope xmlns:i=”http://www.w3.org/2001/XMLSchema-instance” xmlns:d=”http://www.w3.org/2001/XMLSchema” xmlns:c=”http://schemas.xmlsoap.org/soap/encoding/” xmlns:v=”http://schemas.xmlsoap.org/soap/envelope/”><v:Header /><v:Body>
<n0:loginWithRole id=”o0″ c:root=”1″ xmlns:n0=”http://mobile.services.xxxxxxxxx.com/”>
<in0 i:type=”d:string”>USER-ID</in1>
<in1 i:type=”d:string”>XRS</in2>
<in2 i:type=”d:string”>PASSWORD</in3>
<in3 i:type=”d:string”>xxxxxxxx</in4>
</n0:loginWithRole>
</v:Body>
</v:Envelope>
Jun 22 16:20:37 Test Bankapp[2390] <Warning>: ]]]]]]]]]]]]] wxxx.xxxxx.com
Jun 22 16:20:42 Test Bankapp[2390] <Warning>: RETURNED:
Jun 22 16:20:42 Test Bankapp [2390] <Warning>: CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
…
Static Analysis Results
The following tools were used for the static analysis and decryption:
IDA PRO (disassembler tool) [4]
Clutch (cracking utility) [5]
objc-helper-plugin-ida [6]
ssh (Secure Shell)
gdb (debugger tool)
IPCU [7]
The binary code of each app was decrypting using Clutch. A combination of decrypted code and code disassembled with IDA PRO was used to analyze the application.
Hardcoded development credentials were found in the code.
__text:00056350  ADD             R0, PC ; selRef_sMobileBankingURLDBTestEnv__
__text:00056352 MOVT.W          R2, #0×46
__text:00056356 ADD             R2, PC  ; “https://mob_user:T3stepwd@db.internal/internal/db/start.do?login=mobileEvn”
__text:00056358 LDR             R1, [R0] ; “setMobileBankingURLDBTestEnv_iPad_mobil”…
__text:0005635A MOV             R0, R4
__text:0005635C BLX             _objc_msgSend
__text:00056360 MOV             R0, (selRef_setMobileBankingURLDBTestEnvWithValue_iPad_mobileT_ – 0×56370) ; selRef_setMobileBankingURLDBTestEnvWithValue_iPad_mobileT_
__text:00056368 MOVW            R2, #0xFA8A
__text:0005636C ADD             R0, PC ; selRef_setMobileBankingURLDBTestEnvWithValue_i_mobileT_
__text:0005636E MOVT.W          R2, #0×46
__text:00056372 ADD             R2, PC  ; “https://mob_user:T3stepwd@db.internal/internal/db/start.do?login=mobileEvn&branch=%@&account=%@&subaccount=%@”
__text:00056374 LDR             R1, [R0] ; “setMobileBankingURLDBTestEnvWith_i”…
__text:00056376 MOV             R0, R4
__text:00056378 BLX             _objc_msgSend
By using hardcoded credentials, an attacker could gain access to the development infrastructure of the bank and infest the application with malware causing a massive infection for all of the application’s users.
Internal functionality exposed via plaintext connections (HTTP) could allow an attacker with access to the network traffic to intercept or tamper with data.
__text:0000C980 ADD             R2, PC  ; “http://%@/news/?version=%u”
__text:0000C982 MOVT.W          R3, #9
__text:0000C986 LDR             R1, [R1] ; “stringWithFormat:”
__text:0000C988 ADD             R3, PC  ; “Mecreditbank.com”
__text:0000C98A STMEA.W         SP, {R0,R5}
__text:0000C98E MOV             R0, R4
__text:0000C990 BLX             _objc_msgSend
__text:0000C994 MOV             R2, R0
…
__text:0001AA70 LDR             R4, [R2] ; _OBJC_CLASS_$_NSString
__text:0001AA72 BLX             _objc_msgSend
__text:0001AA76 MOV             R1, (selRef_stringWithFormat_ – 0x1AA8A) ; selRef_stringWithFormat_
__text:0001AA7E MOV             R2, (cfstr_HttpAtmsOpList – 0x1AA8C) ; “http://%@/atms/?locale=%@&version=%u”
__text:0001AA86 ADD             R1, PC; selRef_stringWithFormat_
__text:0001AA88 ADD             R2, PC; “http://%@/atms/version=%u”
__text:0001AA8A
__text:0001AA8A loc_1AA8A                               ; CODE XREF: -[BranchesViewController processingVersion:]+146j
__text:0001AA8A MOVW            R3, #0x218C
__text:0001AA8E LDR             R1, [R1]
__text:0001AA90 MOVT.W          R3, #8
__text:0001AA94 STMEA.W         SP, {R0,R5}
__text:0001AA98 ADD             R3, PC  ; “Mecreditbank.com”
__text:0001AA9A MOV             R0, R4
__text:0001AA9C BLX             _objc_msgSend

此外,20%的程序通过http明文发送帐户激活码。即使这个功能对设置初始帐户是有限制的,其相关风险也很高。如果攻击者可以拦截流量的话,那么他就可以劫持一个会话并盗取受害者的账户信息,而且最重要的是没有任何证据可以检测到这种攻击。

在仔细研究每个应用程序的系统之后,我们发现有些人使用一个未加密的SQLite数据库存储诸如银行账户详细信息、交易历史等类的敏感信息。攻击者可以漏洞利用程序远程的访问这些数据;如果攻击者可以通过物理方式访问这台设备的话,那么他就会在受害者机器上安装一些可以从文件系统中窃取信息的越狱软件。

下面的例子展示了从APP的文件系统中获取一个SQLite数据库存储的未加密的银行账户资料。

其他镜像信息泄露被发现,包括:

内部IP地址

__data:0008B590 _TakeMeToLocationURL DCD cfstr_Http10_1_4_133
__data:0008B590                                         ; DATA XREF: -[NavigationView 
viewDidLoad]+80o
__data:0008B590                                         ; __nl_symbol_ptr:_TakeMeToLocationURL_ptro
__data:0008B590                                      ; 
“http://100.10.1.13:8080/WebTestProject/PingTest.jsp”

内部系统地址:

__cstring:000CC724 aUsersXXXXPro DCB 
“/Users/Scott/projects/HM_iphone/src/HBMonthView.m”,0

尽管披露这些信息不会产生什么重大影响,但是如果攻击者收集了很多这类的漏洞,那他就可以更好地理解应用程序的内部布局和服务器端的基础设施。这样一来攻击者就可以针对应用程序的客户端和服务器端实施特定的攻击。

结论

从防守的角度来看,使用以下建议可以降低安全风险:

1、确保所有的连接都使用安全传输协议
2、用SSL证书检查客户端应用程序
3、使用iOS数据保护的API加密储存在客户端的敏感信息
4、检测设备是否有越狱
5、使用混淆汇编代码和反调试技巧,增加攻击者逆向的难度
6、删除所有调试语句和符号文件
7、删除应用程序中的开发信息

现在移动设备(智能手机、平板电脑)上也可以安装个人网银应用程序了,这对全球金融公司来说又是一个巨大的安全挑战。金融业应提高移动个人网银APP的安全性。

参考文献

[1] http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/otool.1.html

[2]  http://portswigger.net/burp/editions.html

[3]  https://www.owasp.org/index.php/Man-in-the-middle_attack

[4]  https://www.hex-rays.com/products/ida/

[5]  https://www.appaddict.org/forum/index.php?/topic/40-how-to-crack-ios-apps/

[6]  https://github.com/zynamics/objc-helper-plugin-ida

[7]  http://support.apple.com/downloads/#iphone%20configuration%20utility

本文由liaoxj2046翻译整理,FreeBuf小编进行了翻译修订,转载请注明译文链接 http://wx.wosign.com/?p=1413

原文 http://blog.ioactive.com/2014/01/personal-banking-apps-leak-info-through.html

[本文由作者liaoxj2046翻译、投稿并发布,FreeBuf小编翻译修订,转载请注明来自FreeBuf.COM]

相关 [ios 平台 个人] 推荐:

iOS平台个人网银APP的安全测试报告

- - FreeBuf.COM | 关注黑客与极客
几年来,我一直在从事有关个人网银APP的安全性研究. 在这份报告中,我使用了黑盒和静态分析的方法,对全球最具影响力的四十个iPhone/ipad网银APP进行了安全测试. 以下国家的个人网银APP被纳入测试. 本研究在40小时内(不连续)完成. 为了保护这些应用程序的所有者及其用户,本研究没有公布发现的漏洞以及利用它们的方法.

开发者应如何看待iOS平台和Android平台

- Xiujun Ma - 36氪
随着智能手机和应用的发展,通过开发App变成百万富翁的新闻已经屡见不鲜,那么对于还没有加入进来的开发者或创业者,应如何看待iOS平台和Android平台呢. Dan Frommer给出了以下建议:. 1、如果你做免费的手机应用,那么2个平台一起开发. 至少目前应该如此,Android市场太大以致于你不可能忽略掉它,但同时它又没大到你可以作为你唯一的平台,你可能要考虑到支持多个Android应用商店,比如亚马逊的.

Qik 升级:让 Android 和 iOS 跨平台视频聊天

- zeng - 爱范儿 · Beats of Bits
Qik 原本是一个视频分享服务,最大的特点是可以一边拍摄一边上传,玩现场直播. 后来这个团队被 Skype 收购,想把它做成一个跟 Skype 略微不同的聊天服务. 今天,基于 Android 版本的 Qik 终于升级到新版,获得了跟 iOS 版本一样的功能. 最低安装要求是 Android 2.1 ,它能利用手机的摄像头(前置后置皆可),实时拍摄和分享,或者进行跨平台视频聊天.

iOS应用的广告平台最全PK

- nanoac - 天涯海阁 | Web2.0Share
本文由one4one投递,one4one主要从事移动互联网产品和运营工作. 作为一名全职的iOS开发者,最好的办法莫过于一边出售付费应用,一边提供嵌入广告的免费应用,我现在就是如此. 在不断更换移动广告平台的过程中,我对各大广告平台都有不少心得,排名不分先后. 1、广告平台的广告条设计将影响用户体验,选择华丽的广告条显得很重要,特别对于iOS开发者.

Evernote达到400万用户,移动平台iOS遥遥领先

- application - 善用佳软
Evernote(介绍)于2010年8月17日,达到了第 400万 个用户. 新版发布两年来,用户数稳步增长,势头强劲. 最近的100万个新用户,仅用了 108 天的时间(见图1). Evernote用户在不同平台的分布情况如何呢. 数据显示,移动设备端iOS平台以超过 75% 的份额占绝对主导地位,其次是 Android 占 20%,其后的 BlackBerry、Mobile Web、Windows Mobile、PalmOS 都低于 2%(见图2).

Google發表iOS平台「Blogger」網站管理軟體

- Amo - RakunaMac
根據気になる、記になる…網站消息,稍早Google針對免費網站服務「Blogger」釋出iOS平台管理軟體(App Store),提供中文介面.

《百战天虫:疯狂高尔夫》即将登陆iOS平台

- 洞箫 - cnBeta.COM
喜欢高尔夫游戏的玩家和喜欢《百战天虫》的玩家,虽然两个群体听起来没什么共同点,但是开发商Team 17觉得没有什么是做不到的. 他们今天公布了《百战天虫:疯狂高尔夫》的预览视频,将经典的蠕虫对战和18洞高尔夫游戏混合到一起,创造出了新的疯狂玩法.

iOS平台上最给力的免费摄影应用

- kent.zhu - 雷锋网
拍照应用是Appstore上最为热门的分类之一,重要原因在于iPhone本身自带的拍照功能已经足以满足普通用户的要求,甚至有人断言iPhone将彻底颠覆传统相机产业. 虽然小编不是很认同这个观点,但是iOS平台上各种拍照应用还是层出不穷,有些确实让人拍案叫绝. 为此,小编特意从Appstore上精选出以下免费应用,相信总有一款适合你.

Opera:Android與iOS平台使用者瀏覽行為大不同

- votis - UDN數位資訊
【文/楊又肇】 Opera近期針對行動上網行為釋出新版報告內容,這次同時加入先前併購的AdMarvel旗下服務統計累.

Android、iOS & Windows Phone平台的15个设计要点

- - GamerBoom.com 游戏邦
1.在开发者的引导下理解手机框架. 手机应用顾问Jonathan Stark撰写了两本关于iPhone和Android开发的书籍. 在此他陈述如何判定最佳应用制作方式,并分享了若干优秀的开发工具. 2.如何基于“触屏”装置设计内容. 手指和拇指触控彻底改变了台式机的操作惯例. 互动设计师Josh Clark强调了在针对触屏装置设计内容时应该注意的重要问题.