几维资讯> 行业资讯

网络安全新契机,KiwiVM虚拟机的创新发布

几维安全 2017-12-04 16:42:02  2358
分享到:

网络病毒是指人为编写的特制程序,具有自我复制能力、很强的感染性,一定的潜伏性,特定的触发性和很大的破坏性。

网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。

看似对立的两种行为却又是相互依存相互提高的。正因为黑客们不断的改写代码入侵网络,所以网络安全家们才能开发出效率更高安全性更强的安全防护工具。

几维安全作为一家移动应用安全服务商,一直以来致力于为用户及企业打造更安全的移动互联网。针对IOSAndroid两大平台,实现国内首个免费的移动应用攻击防御平台,并且在此次峰会中推出了全新安全加密的产品KiwiVM虚拟机。

传统的加密方式

Android SO为例

SO加壳—黑盒方式

功能:SO进行二进制加壳,破坏ELF文件信息,导致静态反编译工具解析失败,静态加密的方式,是通过干预系统对SO的加载过程进行动态解密。

缺陷:1.恢复简单,通过内存dump或者二进制修复即可

2.平台依赖严重,由于Android版本众多,各家厂商对系统进行了不同程度的定制,所以针对不同的系统库加载器均需要进行适配;

3.容易被脱壳,由于Android环境为开源环境,导致修改系统非常容易,脱壳手段层出不穷。

SO源代码混淆—白盒方式

功能:基于OLLVM开源项目改造的代码混淆加密,包括指令平展化,逻辑混淆和字符串加密。

缺陷:基于代码基本块混淆粒度太大,只增加了假基本块来迷惑分析者,仔细分析的情况下,真实块很明显。

KiwiVM代码虚拟化技术

功能:针对代码顶级加密方案,虚拟代码指令执行。

应用场景:针对C/C++开发的应用,SDK中的核心代码,关键数据保护代码,反欺诈数据采集核心逻辑,支付及通信加解密模块。

应用原理介绍

几维安全KiwiVM虚拟化编译器基于LLVM编译器中间层实现,通过设计独有保密的虚拟CPU解释器以及完备虚拟指令,将原始CPU指令进行加密转换处理为只能由KiwiVM虚拟解释器解释执行的虚拟指令,能够完全隐藏函数代码逻辑,以及函数及变量之间的依赖关系。

由于编译器基于LLVM编译器中间层实现,使得加密代码与业务代码紧密结合,有效阻挡逆向分析;由于是从编译器内部生成平台依赖代码前实现无平台依赖代码虚拟化过程,不依赖于特定系统环境,无兼容性问题,天然兼容所有CPU架构,包括IOSAndroidarmv7arm64),WindowsLiunxX86X64),OtherMips)等。

如图所示:

移动应用安全.png

KiwiVM代码虚拟化技术

(代码效果展示)

传统的原始代码反编译(使用IDA F5功能)

{

  v2 = c;

  _aeabi_memmove(c, p, 16);

  shift_rows(v2);

  v3 = 0;

  v4 = t_boxes;

  do

  {

    v5 = 0;

    v6 = v4;

    do

    {

      v7 = (*v6)[0][v2[v5]];

      v6 = (uint8_t (*)[16][256])((char *)v6 + 256);

      v2[v5++] = v7;

    }

    while ( v5 != 16 );

    v8 = 0;

    do

    {

      *(_DWORD *)&v2[4 * v8] = ty_tables[0][v2[4 * v8]] ^ ty_tables[1][v2[4 * v8 + 1]] ^ ty_tables[2][v2[4 * v8 + 2]] ^ ty_tables[3][v2[4 * v8 + 3]];

      ++v8;

    }

    while ( v8 != 4 );

    shift_rows(v2);

    ++v3;

    ++v4;

  }

  while ( v3 != 9 );

  v9 = t_boxes[9];

  v10 = 0;

  do

  {

    v11 = (*v9)[v2[v10]];

    ++v9;

    v2[v10++] = v11;

  }

  while ( v10 != 16 );

}

使用KiwiVM虚拟机施行代码反编译(使用IDA F5功能)

KVMVoid __fastcall wbaes128_enc(void *p1, void *p2)

{

  v5 = p2;

  v6 = p1;

  v3 = (int *)&v6;

  v4 = (int *)&v5;

  v7 = __KVM_RELOCS___;

  v8 = __KVM_SIGNS___;

  v9 = __KVM_MODULE___;

  v10 = _kvm_init_gv__;

  v11 = 1278;

  v12 = 2;

  v13 = (int *)&v3;

  return *(_DWORD *)kiwisec_vm_interpreter(&v7);

}

相同的代码下不仅减少了代码行数,同时加深了代码安全能力。

KiwiVM代码虚拟化技术的优势

01

顶级安全防护

自定义虚拟CPU,代码一旦加密,很难解密,其不可逆的特性能有效避免攻击者通过DUMP内存,还原原始代码。

02

函数级虚拟化

CC++源文件函数为单位进行虚拟化,具有粒度细、可控性高、隐蔽性强的特性,虚拟化之后函数完全隐藏。

03

全平台全构架

支持iOS与安卓双平台的Native代码虚拟化,包括armv7arm64armv7ax86x86_64等架构。

04

兼容情况良好

CC++代码编译时直接虚拟化,其兼容性与原始应用一样。

广告及反欺诈SDK应用场景

移动应用安全1.png

新产品KiwiVM虚拟机加密相比于以往的加密方式,它的可操作性、安全性、高效性等都有显著的提升。并且,在实际操作方面,KiwiVM虚拟机也将更加的便捷,对于公司的安全部门和个人开发者而言,这项技术将大大减少多余的工作量,提高工作效率。


分享到:



《安卓应用加密》 《Unity3D手游加密》 《源代码加密》 《移动端的KiwiVM虚拟机》