KASU Tech your loyalty business partner

凯苏网络科技

网站首页 > 行业咨询 > 业界资讯

浅议安卓客户端移动应用加固技术

2017-11-03 18:55:22 凯苏网络科技 阅读

安卓客户端移动应用加固技术经历了从代码混淆保护技术到虚拟机保护技术的五个代际迭代更新。本文以通付盾移动安全实验室讲师的讲解为依托,详细阐述了安卓客户端不同种类移动应用加固技术的性能差别,以期能够为移动应用加固产品的选择提供参考依据。

随着移动互联网和智能手机的普及,加之移动应用体验的不断提升,各类APP迅速覆盖了人们日常出行、购物娱乐、金融理财等各个领域,一边是移动应用带来的方便快捷的生活,一边是系统漏洞、病毒木马、山寨APP带来的隐私侵犯,现如今APP安全备受争议。

据中商产业研究院大数据库数据显示,2017年第二季度安卓智能手机覆盖量接近9亿,Android平台定位是面向开发者的开放系统,安卓系统的开源性和自签名客观上为恶意软件的滋生提供了温床。而在多数的移动应用开发者之中,仅有7.1%的开发者重视移动应用安全,加之大部分的移动应用分发市场审核并不严格,导致了整个市场上盗版、仿冒、内嵌木马的恶意应用层出不穷,整个移动应用安全问题十分严重,亟需有效的解决方案和措施。

现有移动应用加固保护技术介绍

移动应用加固的主要从技术层面对DEX文件、SO文件、资源文件等进行保护,为应对不断出现的新型黑客攻击手段,加固技术也经历了代码混淆保护技术、Dex文件整体加密保护技术、Dex函数抽取加密保护技术、混合加密保护技术、虚拟机保护技术的迭代更新。

第一代保护技术——代码混淆保护技术

Android平台采用使用Java作为原生语言进行开发,Java字节码中包括了很多源代码信息,如变量名、方法名,并且通过这些名称来访问变量和方法,这些符号带有许多语义信息,很容易被反编译成Java源代码。为了防止这种现象,需要对Java字节码进行混淆,比较常见的代码混淆有proguard和dexguard,其中包括了名称混淆、字符串加密、反射替换、日志清除、花指令等。

第一代保护技术加固效果

代码混淆保护技术在保护效果上增加了逆向成本,一定程度上保护了程序的逻辑,但是保护强度有限,无法对抗静态分析、动态调试、与反射调用冲突。

第二代保护技术——Dex文件整体加固保护技术

DEX文件整体加固保护技术是基于类加载的方式来实现的,整个加壳的过程涉及到三个程序:源程序,加壳程序,解壳程序。基本原理是对Dex文件进行整体加密后存放在APK的资源中,运行时将加密后的Dex文件在内存中解密,并让Dalvik虚拟机动态加载执行。

第二代保护技术加固效果

DEX文件整体加固 目的是增加静态分析的难度,可以有效对抗静态分析、二次打包,同时也存在明显的缺点无法完全对抗动态调试、内存dump、自动化脱壳工具、定制化虚拟机等攻击方式。 第三代保护技术——Dex函数抽取加密保护技术

针对DEX文件整体加固可以被内存Dump的弱点,第三代保护技术对代码中的每个方法抽出并进行单独加密,基本原理是利用Java虚拟机执行方法的机制来实现。利用这个机制将解密操作延迟到某个方法在执行之前才开始加载该方法的代码,同时解密后的代码在内存是不连续存放的。例如通过抽取Dalvik虚拟机运行一个DEX必不可缺少DEXCode中的部分,然后对字节码指令添加nop,这种方式极大的提高了代码安全性。

1.png

DEX函数抽取加密保护技术的执行流程如下:

  1. 打包时,将原APK中的所有方法的代码提取出来,单独加密到一个文件。

  2. 2. 运行时,加固引擎首先会动态修改当前进程Dalvik虚拟机,初始化动态解密的虚拟机适配层。

    3. 当Dalvik虚拟机要执行某个方法时,加固引擎才解密该方法的代码,并将解密后的代码交给虚拟机执行引擎执行。

第三代保护技术加固效果

优点:加密粒度变小,加密技术从Dex文件级变为方法级;按需解密,解密操作延迟到某类方法被执行前,如果方法不被执行,则不被解密;解密后的代码在内存不连续,克服了内存被Dump的缺点,有效保护了移动客户端的Java代码。

缺点:

DEX函数抽取加密技术本质上也是一种代码隐藏技术,最终代码还是通过Dalvik或者ART 虚拟机进行执行,因此破解者可以构建一个自己修改过的虚拟机来脱壳,且第三代保护技术无法保护所有方法,控制权获取较晚,集成其他保护功能困难,这需要寻求更加强大、安全的防逆向技术来保证 APK 的安全。

第四代加固保护技术——Dex文件混合加密保护技术

混淆加密主要是为了隐藏 dex 文件中关键的代码,力度从轻到重包括:静态变量的隐藏、函数的重复定义、函数的隐藏、以及整个类的隐藏。混淆后的 dex 文件依旧可以通过 dex2jar jade 等工具的反编译成 Java 源码,但是里面关键的代码已经看不到了。

2.png

DEX函数抽取加密保护技术的执行流程如下:

1. 打包时,将原APK中的所有方法的代码提取出来,单独加密到一个文件。

2. 运行时,加固引擎首先会动态修改当前进程Dalvik虚拟机,初始化动态解密的虚拟机适配层。

3. 当Dalvik虚拟机要执行某个方法时,加固引擎才解密该方法的代码,并将解密后的代码交给虚拟机执行引擎执行。

第三代保护技术加固效果

优点:加密粒度变小,加密技术从Dex文件级变为方法级;按需解密,解密操作延迟到某类方法被执行前,如果方法不被执行,则不被解密;解密后的代码在内存不连续,克服了内存被Dump的缺点,有效保护了移动客户端的Java代码。

缺点:

DEX函数抽取加密技术本质上也是一种代码隐藏技术,最终代码还是通过Dalvik或者ART 虚拟机进行执行,因此破解者可以构建一个自己修改过的虚拟机来脱壳,且第三代保护技术无法保护所有方法,控制权获取较晚,集成其他保护功能困难,这需要寻求更加强大、安全的防逆向技术来保证 APK 的安全。

第四代加固保护技术——Dex文件混合加密保护技术

混淆加密主要是为了隐藏 dex 文件中关键的代码,力度从轻到重包括:静态变量的隐藏、函数的重复定义、函数的隐藏、以及整个类的隐藏。混淆后的 dex 文件依旧可以通过 dex2jar jade 等工具的反编译成 Java 源码,但是里面关键的代码已经看不到了。

3.png

第五代加固保护技术——VMP(虚拟机)保护技术

4.png

VMP(虚拟机)保护技术是当下最前沿移动应用安全加固技术,虚拟机软件保护技术是被动型软件保护技术的分支,具体来说是添加有意义的混淆代码的一种变型使用。根据应用层级不同,基本可分为硬件抽象层虚拟机、操作系统层虚拟机和软件应用层虚拟机。用于保护软件安全的虚拟机属于软件应用层虚拟机,是对被保护的目标程序的核心代码进行“编译”,这里被编译的不是源文件,而是二进制文件,将由编译器生成的本机代码(Native code)转换成效果等价的byte-code,然后为软件添加虚拟机解释引擎。用户最终使用软件时,虚拟机解释引擎会读取byte-code,并进行解释执行,从而实现用户体验完全一致的执行效果。

一套高质量的自定义指令集和解释器是判断VMP技术真伪的唯一标准。目前国内多数厂商都推出了移动应用VMP保护技术,经研究多采用的是代码抽取和隐藏、代码混淆等技术,大多数技术方案并不成熟,有的方案甚至和VMP的核心思想有本质上的区别。据了解,国内VMP(虚拟机)保护技术相对成熟的公司有通付盾等安全公司,通付盾也是国内首家将VMP虚拟机保护技术运用到APP加固领域的安全公司,目前通付盾安全虚拟机已经更新到第三代PayegisVM3.0,加固上也达到了系统全兼容、性能零损耗、安全防破解的效果,成为业界公认的最高强度的VMP防护技术。

总结

在对Android进行保护的同时衍生出了对so文件、资源文件、js文件、防注入等其他安全功能的需求,最终形成了对Android应用程序的一整套的保护方案。

在长期的攻防实战之中,通付盾移动安全实验室推出了一站式、全生命周期移动安全解决方案,从移动应用的开发发布到运营监测,提供APP检测与加固、终端威胁感知、全渠道应用监测等全生命周期防护,目前面对中小企业免费提供APP检测与加固服务,登录通付盾官网即可免费申请使用。




Powered by MetInfo 6.2.0 ©2008-2024 www.metinfo.cn