2019 年 10 月,00 后田某因非法获取计算机信息系统数据罪判处有期徒刑三年,并处罚金人民币一万元。当事人田某只有初中文化,但却拥有极强的计算机天赋,在 2019 年 1 月 5 日到 1 月 15 日期间,通过软件抓包、PS 身份证、重放攻击等手段,在某银行手机银行 App 内使用虚假身份信息注册银行Ⅱ、Ⅲ类账户非法销售获利。
案例分析
很多人会好奇银行 App 是如何被一步步通过抓包、入侵、重放攻击,从而让黑客有利可图。让我们具体分析下作案过程:
- 首先,田某通过本人身份证信息,在注册账号正常流程中,通过「软件抓包」技术将银行系统下发的人脸识别身份认证数据包进行拦截并保存。
- 其次,在输入开卡密码环节,田某将 App 返回到第一步(上传个人身份证照片),并输入伪造的身份证信息,并在此进入人脸识别身份认证环节。
- 最后,田某使用先前拦截的身份认证数据包(含本人信息)进行上传验证,使得银行系统误以为此环节需比对本人身份信息,遂而成功验证本人人脸,使得其能够成功利用虚假身份证信息注册到银行账户。
客户端 App 数据安全刻不容缓
在以上案例中,涉及到银行开户系统遭受重放攻击的事件正好映证了移动端针对数据传输的加密验签的重要性。我们应当如何重新审视客户端的数据安全问题?通过解析支付宝目前在“端上安全”的设计机制,也许能够带给我们一些新的启发。
首先,我们以移动网关能力举例,试着重新梳理在重放攻击的层层环节中如何保障数据传输及存储的安全性。
客户端 App 数据安全传输、安全存储
针对客户端的数据传输与验签,要做到精细化的安全一直是老大难的挑战。借助“安全黑匣子”,目前支付宝已实现针对应用级别数据如 AppSecret 采用加密存储,通过数据加签接口实现各类上层业务的封装。
借助安全黑匣子,客户端通过应用公钥和秘钥加密针对生成的数据进行离散存储,保证加密秘钥的安全性。而安全黑匣子本身的代码混淆、多重反调试机制,使其安全性能极大提升保障。
除此之外,安全黑匣子基于反调试技术使得常见的调试工具如 GDB、IDA Pro 的动态调试分析技术失效,基于导出表混淆、垃圾指令等手段充分提升攻击者静态分析应用的难度。如此动静结合,客户端数据传输及存储安全能够充分保障。
- 当用户提交个人信息至客户端 App 时,MGS 移动网关能够通过 API 接口进行数据加密,使得下发的身份认证数据包无法被篡改;
- 即使用户尝试使用伪造的身份信息针对数据包进行解密篡改,MGS 移动网关同样具备验签机制,使得数据包无法被解密成功。
- 除却借助移动网关能力多方面的验签加密能力提升 App 被重放攻击的门槛之外,在业务服务器的设计中,仍然需要增加对用户及业务数据的多重验证,从而彻底保障端上数据的安全防护。
当然,App 数据安全不止于传输与存储。如何提前在开发期做风险预估及安全机制设计,针对用户端实现信息多重验证,以及构建围绕 App 全生命周期的防护措施,从而能够真正实现覆盖“App 开发、上线到使用”全链路的安全规范:
App 开发期的安全机制设计
支付宝通过打造多层次的端上安全机制从而防止 App 被黑客或木马攻击,具体主要分为“本地域”、“线上运行”以及“App 端”三个层面。在本地域方面,通过代码混淆、加密等手段实现二进制防护;线上运行时,通过“安全黑匣子”打造的数据安全环境以及加密等手段实现数据防泄露;在 App 端,借助数据安全存储、安全签名等手段充分确保业务功能的稳定运行。
用户信息验证
随着终端设备算力的持续增强,目前移动端设备借助强大的 CPU 和 GPU 完全可以进行非常复杂的运算。而由此催生出的一系列移动端 AI 引擎,如支付宝的 xNN,帮助我们能够进一步加强用户信息验证的智能化。
结合端上金融业务属性,如银行卡及身份证 OCR 识别、人脸识别、活体检测等智能服务,已经过近 2 亿用户验证,具备识别准确率高、速度快、模块丰富等特点,同时在支付宝小程序中也已开放。
App 全生命周期防护
关于客户端 App 安全,实际上是一套从 App 开发、上线及使用的一站式解决方案。在 App 开发阶段,提供代码混淆、数据加密、数据库加密等安全开发以及数据安全能力;在上线阶段,提供 App 加固的能力,通过 DEX 加壳、SO 加壳、防反编译、防重打包等能力,提升 App 的整体安全水位;在使用阶段,通过 API 签名、API 数据加密等手段来保障数据的完整性及安全性,同时借助安全加密键盘从而保护用户输入的信息安全性。
mPaaS 客户端 App 安全能力
作为源自支付宝的移动开发平台,mPaaS 目前已完成支付宝金融级的端上安全能力沉淀,不仅能够提升 App 应对高峰带宽下的服务质量挑战,同时在弱网情况下的可用性、针对网络请求的危险识别能力均属于行业前列。目前,借助 mPaaS 客户端的加固技术与黑匣子,能够保障移动端的代码安全和网络层的数据安全,提供加签、加密等方式,同时网关能够识别出客户端环境,并有能力针对可疑请求做拦截。
结合中国人民银行于 2019 年 9 月出台的《移动金融客户端应用软件安全管理规范》,针对客户端应用在数据安全、身份认证安全、功能安全设计、密码秘钥管理、数据安全、安全输入、抗攻击能力等方面均提出明确要求,全面覆盖客户端应用在设计、开发、发布及运维的全生命周期。
mPaaS 产品目前已通过中国金融认证中心的安全测评,并服务银行、证券、政务、交通等众多行业超过 2000 家客户。同时,针对客户端安全方面 mPaaS 提供全方位安全防护方案,真正帮助企业打造安全稳定的移动应用,更好地做到技术驱动业务创新、为业务带来美好体验。