本篇文章3021字,读完约8分钟
今天,我将与大家分享移动金融应用安全的风险分析和解决方案。我希望通过今天的演讲,我可以给大家一些关于如何构建安全的移动应用客户端的基本理解。让我先自我介绍一下。我是“安全”首席技术官陈彪,主要负责“安全”的整体研发,包括基于云的服务平台和个人用户产品的研发。他参与了北京航空航天大学和空航空航天大学软件开发环境国家重点实验室的多个研究项目,获得了多项全球和国家发明专利。
首先,我们分享对移动应用现状的分析。我们知道安卓有一个非常大的市场,基本上覆盖了中国的大小应用商店。目前,安卓移动应用市场存在很多安全隐患,如用户信息泄露、交易安全风险、二次打包以及暴露移动和服务器漏洞等,最大的问题实际上是大量的二次打包和篡改。
通过调查,我们发现安卓市场上的每个手机客户端基本上都被篡改、重新包装和盗版了。例如,如果你随机寻找一个应用商店,排名靠前的应用的盗版率是100%。事实上,从安卓的应用内核或整套控制来看,其技术可与苹果媲美。那么,为什么像严重抄袭和维护安卓市场困难这样的混乱现象仍然普遍存在呢?
第一个原因是签名机制。安卓系统没有中央签名机制,安卓市场的二次打包现象非常严重。
第二个原因是技术问题。Android是用java语言开发的,源代码很容易泄露。
第三个原因是安卓的开放性。苹果控制着签名,这使得下载程序的来源单一。在安卓系统上,你可以在任何地方下载应用。事实上,这是安卓不安全的真正原因。
因此,国家开始慢慢关注安卓市场,最近发布了一份关于安卓管理措施的文件,以确保下载应用相对安全。目前,国外的手机银行也存在同样的问题,它们的代码是可以复制的。在这种情况下,我们经常会遇到一些问题,现在我们将暴露一些服务器漏洞。为了支持手机的客户端,开发了一个新的windows套接字,但是这个接口还没有调试。黑客复制你的客户端,通过调试的界面,他们会在你的后台发现一些相关的漏洞,从而以这种方式进行一些入侵。
面对这些风险,我们如何确保我们的客户相对安全?在这里,我想重点谈谈邦安全的一些主要业务。
首先是对移动应用进行全面的安全评估。安全评估是指由高技能、高素质的安全服务人员发起的对目标系统的模拟入侵,模拟普通黑客使用的攻击手段。其目的是充分探索和暴露系统的弱点,以便管理人员能够了解他们的系统所面临的威胁。渗透测试作为风险评估的重要组成部分,往往为风险评估提供重要的原始参考数据。
基于数据生命周期安全测试,对移动银行客户的程序、数据、通信、业务和系统环境进行全面测试,检测数据输入、处理和输出的安全性以及数据运行时的系统环境。移动银行客户安全测试标准基于中国人民银行发布的《中国金融移动支付测试规范第3部分:客户软件》。“安全地制作这些工具:反编译和重新打包dex2jar、baksmali、ida pro、apktool;调试工具gdb等。;代码注入工具曝光,基板等。;网络打嗝套件等。
Bang security还制作了一个测试内容,使用黑盒渗透攻击和白盒代码审计来发现移动应用的安全缺陷和安全漏洞,包括程序安全、安装和卸载、人机交互、登录检测、发布规范、第三方sdk安全等七个方面。;代码安全性,是否具有反逆向、反动态注入、反篡改等能力;数据安全,应用数据录入、数据访问、数据存储、数据传输和数据显示是否存在安全风险;组件安全性,移动应用程序暴露的组件是否会受到恶意攻击;通信安全,检查客户端软件和服务器之间的通信协议是否安全,是否会受到攻击;业务安全,移动应用的核心业务是否存在安全缺陷。例如,银行客户应对转账过程进行安全测试,以检测是否可能篡改转账;系统安全性移动应用的运行环境是否安全。
让我们看看代码安全性。反编译测试是逆向工程中的一种常用手段,它将二进制程序转换成人们易于阅读的描述语言。反编译的结果是可读代码,它公开了客户端的所有逻辑,如与服务器的通信模式、加密和解密算法、密钥、传输业务流程、软键盘技术实现等。
重新打包测试,添加或修改客户程序代码,修改客户资源图片,配置信息,图标等。,然后生成新的客户端程序来实现应用程序钓鱼。对于金融客户,可以添加病毒代码和广告SdK来推广他们的产品;添加恶意代码窃取登录账户密码、支付密码、拦截验证码短信、修改转账目标账户和金额等。
动态调试测试是指攻击者利用调试器跟踪目标程序的运行,查看和修改内存代码和数据,分析程序逻辑,进行攻击和破解的行为。对于金融行业客户,这种风险可以修改客户业务操作的数据,如账号和金额。
代码注入测试,将代码写入目标进程并通过特定于操作系统的技术让它执行的技术。攻击者可以向目标进程写入一段恶意代码,目标进程可以加载其他可执行程序,然后实现钩子,监控程序的运行行为,获取敏感信息。对于金融客户,恶意代码可以通过代码注入技术注入到客户中,窃取输入的登录账号、密码和支付密码,修改转账目标账号和金额,窃取通信数据等。
根据安全评估,移动金融安全现状如下:首先,根据“安全与安全实验室”的统计测试,国内大部分移动金融应用都没有通过这些安全测试,移动安全机制缺失。第二,未能通过这些安全测试意味着移动金融客户可能面临以下业务风险:移动金融应用的安全风险;用户信息安全风险;交易安全风险。二次包装风险。暴露移动终端和服务器终端的漏洞风险。
通过反编译和逆向分析,我们可以发现移动金融客户端的许多代码缺陷和逻辑漏洞。当处理取款服务时,客户端首先向服务器请求绑定到该账户的银行卡交易账户信息。url请求为* *(略):此时,服务器返回与cusno对应的绑定的银行卡信息。经过测试,发现绑定到相应账户的银行卡信息可以通过枚举cusno获得,导致用户信息严重泄露,例如cusno为2000098909。
“Bang Security”移动金融客户端应用安全解决方案主要包括以下几个方面:
安全开发规范和安全评估:开发者应遵循移动应用的安全开发规范,开发移动金融应用客户端;使用一些成熟的安全组件,如软键盘sdk、间隙等。;定期评估客户的安全性。
安全加固:在发布前加固应用程序以确保代码安全。上线后的渠道监控:监控第三方应用市场,及时发现盗版、钓鱼、山寨等恶意应用。特别是,谈谈安全强化技术:代码加密,以防止代码被反编译;反调试,防止应用程序运行时被动态注入。完整性检查:防止应用被重新打包。apk的广度防御-资源、编程框架等库。资源文件:加密和保护apk中的资源(图片,xml和其他文件)。加密和保护由编程框架开发的程序:dll(c # unit 3d)、lua、html/javascript(ibm worklight、phonegap等)。)、闪光灯等。So库:二进制c/c++的外壳保护。
上线后的渠道监控:“安全”在全球有100多个监控点,可以实时监控全球400多个渠道,第一时间发现钓鱼小屋的手机银行,给出预警,获取证据,帮助移动金融机构尽快将钓鱼应用的威胁降到最低,减少威胁。
最后,我将总结一下。作为一个新的门户和用户交互平台,移动金融应用面临着:用户信息安全风险;交易安全风险。暴露手机和服务器的漏洞风险;捕鱼和重新包装的风险。加强移动金融应用安全的方法:遵循安全规范的客户端开发、定期移动安全评估、合规性评估/源代码审计/渗透测试。应在移动客户端上线前进行安全加固,以防止在线后的渠道监控,如反编译、反向分析和动态注入攻击。谢谢大家!
标题:梆梆安全CTO陈彪:移动金融应用安全风险分析及解决方案
地址:http://www.jcpa.cn/blgxw/12719.html