Service support服务支持
网络安全服务 产品更新 网络安全学堂 常见问题 下载中心

你的App如何做安全加固?

TIME:2023-08-31   click: 114 次
App安全加固技术概述
 
软件安全是如此重要,尤其是现今移动互联网的兴起,移动互联网应用软件客户端,即App的安全更是被人们看重。因此企业在对App进行安全检测后,需要对其进行安全防护来修复各种漏洞。App防护技术有方法有很多种,如代码混淆、代码加密、关键代码拆分甚至转到Native层实现等。由于Google Android系统的开源,攻防技术人员都可以分析系统源码,因此以上技术防护效果安全系数都较低。经过多年的发展和商业化,“加壳”技术被普遍认同是App安全防护技术中,安全系数最高的技术。目前市场上提供App安全加固服务的安全厂家,基本上全是基于“加壳”技术。
App加固大体从2014年开始逐渐商业化,直到目前已经发展了5年。在这5年中App防护技术与App逆向破解技术不断进行对抗。每一次防护关键技术革新应用后,相对应的逆向破解技术和工具随后就接踵而来,然后防护技术再次升级,此消彼长,各移动应用安全厂商多次进行激烈的技术对抗。关键技术发展分为4代:
第一代: 2014年-2015年中,当时App安全加固刚起步,移动安全厂商仅有3-5家,技术原理主要是通过对App进行加壳,在App执行启动时,通过壳代码拿到软件执行权,然后Hook系统中DexClassLoader接口,从而实现DEX整体加密以及字符串加密的简单防护功能。
第二代:2015年底-2016年,第一代加固由于技术局限性,逆向破解人员可以用各类开源脱壳机工具很方便的从内存中拿到完整的DEX文件。安全厂商真这对第一代脱壳机迅速进行反应,采用DEX类抽取的方法来对抗,同时增加了资源文件保护,日志保护等功能。
由于第一代加固很少厂商做SO加固,第二代技术开始移动安全厂商计划于JNI调用机制,通过加密SO文件,再通过自身壳程序加载并解密SO文件,间接调用被加固SO文件的函数,来实现SO加固功能。
第三代:2017年中,第二代壳技术领先了逆向破解技术不久,攻击者就对第一代脱壳机进行改良,通过自定义的AOSP系统来进行内存Dump。此外还通过Hook系统API、自动化脚本等手段破解第二代技术中的SO加固,来找加固壳程序的关键信息,最终达到破解目的。第三代加固技术是对第二代防护技术进行升级,把DEX抽取更细粒度化,从class类到Method方法,并通过运行时动态解密来对抗通过自定义系统内存Dump。
SO加固技术也提升了强度,通过解析SO文件头部信息对其进行变形处理,再将密钥嵌入。同时解析SO文件获得源代码的偏移与大小,对其进行加固,合并头文件和加密后的代码,获得SO文件的散列值。再通过壳程序加载,为了防止破解者Hook系统API,会对各类运行环境进行检测,有Hook或模拟器行为进行退出,如环境安全则解密函数,再内存中动态解密加密代码来对抗破解者逆向SO文件。但从技术上来说非SO加壳。
第四代:第四代开始,移动安全厂商逐渐开始以为“虚拟指令集”保护为卖点做宣传,即VMP技术。它的技术原理是使用一系列的指令序列代替具体的机器指令,在壳中使用自己构建的虚拟引擎执行这些指令序列。一条正常的指令,经过加密混淆,变成了成败上千条垃圾指令,增加破解者的难度和增大分析工作。PC上VMP技术经过十几年发展已经非常成熟,VMP最大问题执行效率得到解决,但Android系统发展时间较短,因此各移动厂家无法做到全部指令采用VMP技术,仅能对部分指令做VMP保护。同时SO保护技术也采用类似VMP的效果,改变ELF文件格式来增强防护能力。