1 绪 论
研究背景
网络环境随着技术的发展变得越来越复杂,病毒、木马、蠕虫等各种恶意代码技术随着反病毒技术的进步得到了不断的发展[1]。如何对抗各种恶意代码,是当前计算机安全研究的主要内容之一。同时,在网络取证以及信息对抗中,恶意代码作为一种攻击手段,研究其使用的技术也具有非凡的价值。由此看来,研究恶意代码如何使用代码迷惑技术伪装自身,以便提前预警,抑或应用于国家安全相关领域,对于网络安全乃至国家安全都具备实际价值。
尽管人们对系统及网络设施的安全做出了很多努力,但病毒、木马、蠕虫等各种恶意代码仍长期存在于网络的各个角落,从未被真正的杜绝过。其原因主要有两个方面,一方面是:防御恶意攻击需要考虑方方面面的因素,但人们的思维往往有其一定的局限性,因此这些努力只能做到减少攻击,而不能完全杜绝;另一方面是: 恶意代码针对性强,只需要针对系统的一个脆弱点,就能突破整个防御系统,这就带来了恶意软件所关注的单个漏洞与安全人员所关注的全局防御存在的差异。例子如 Autorun 病毒[2]就是利用了操作系统针对移动设备自动运行功能上的单个漏洞,从而通过 激活。
虽然从理论上来说通用判断方法不可判定恶意代码[3],但是因为互联网的高度共享特性,一旦某段恶意代码使用了独特的方法突破过了某防御系统,则其突破方法很快就得到传播,从而安全公司可以弥补被该突破方法针对的漏洞,最终达到检测恶意代码的效果。因此恶意代码使用者使用各种迷惑技术来混淆安全工具视听,并期望找到一种无须通过太多精力即可使一段恶意代码在较长的一段时间内不失效的方法。从当前病毒分析及安全研究的现状看来,代码迷惑技术不失为这样的一种方法。
国内外发展现状
计算机信息迷惑概念最早是随着公钥密码系统一并提出,早期尝试于机器码级别的指令方面的修改[4],代码迷惑属于信息迷惑的一个分支。Collberg 给出的代码迷惑的通用定义是:代码迷惑是一种变换技术,其将程序 P 变换成 P’,且 P’难以被逆向工作者所理解,P 和 P’可观察行为相同[5]。在数十年的发展中,针对符合该定义的研究取得了长足的进步。
代码迷惑研究现状
代码迷惑研究主要集中于恶意主机问题和恶意客户问题。恶意主机问题指代码运行于不明身份主机之时,如何确保代码自身的安全,保证其不被篡改,窃取等。恶意客户问题指不明身份代码在运行于本地主机时,如何确保该代码不会破坏主机资源等[6]。
Collberg 最早在他的文章中给出了代码迷惑的基本概念[6],同时还给出了关于代码迷惑有效性的评价测度,分别是程序复杂度强度,抗攻击能力以及迷惑变换的代价[7]。之后他又发表了一系列文章,提出了多种代码迷惑算法[8-9],为相关研究夯实了基础。而 ChenXi Wang 则在他的一系列文章中提出基于 C 语言源代码所实现的控制混淆和数据混淆这两种代码迷惑方法[10-12],并从理论上证明如果想通过静态分析经迷惑后的代码获取源代码,是一个 NP 问题[12]。面向可执行代码迷惑方面,Wroblewski 做出了卓越贡献,提出了面向可执行代码的一系列迷惑方法[13]。
代码迷惑相关研究在国内开展并不太久,尚处于跟踪国外相关研究的阶段。现阶段已经有人研究出了 Java 程序保护[14-15]、控制流迷惑[16-17]、移动代码安全[18]等方面的理论成果。
代码迷惑应用现状
根据恶意主机恶意客户问题上的相关研究,代码迷惑技术主要集中应用在两个不同的方面,一是应用于软件保护[19-20]中,另一是应用于恶意代码构造中[21]。
代码迷惑在软件保护中的应用
安全研究先驱 Cohen 提出使用一种程序进化技术来保护操作系统[22],用能够完成语义等效功能的指令或指令序列替换原来的指令或指令序列,这就是一种代码迷惑方法的应用。与此同时,也正是 Java 语言[23-24]快速发展的时期,由于 Java 是一种基于中间码的设计语言,很多符号信息都包括在中间字节码中, 文件,因此 Java 程序很容易被反编译成源代码,于是针对 Java 程序的保护应用代码迷惑技术得到深入发展[25]。代码迷惑技术不只是能应用于源代码及中间代码的迷惑,针对目标代码的应用也得到发展,例如国内外当前有多种软件版权保护工具是基于各种迷惑算法而设计实现的,当前有很多加壳软件使用一种虚拟机技术[26],其中就穿插着许多控制流迷惑以及数据迷惑技术,例如俄罗斯人 Alexey 开发的 ASProtect SKE 就是一种关键部分使用虚拟机,并使用了乱序引擎干扰分析的软件加壳工具。现在风靡国内外的软件版权保护工具 Winlicense、VMProtect,都是基于使用虚拟机模拟反汇编
基于压缩加密及多态变形的代码迷惑方法分析 来自淘豆网m.daumloan.com转载请标明出处.