论文部分内容阅读
程序是用计算机程序设计语言编写的用于实现某种操作的指令集合,程序为了对抗逆向分析或者是代码窃取,通常会采取一些自我保护技术,程序行为或者代码隐藏技术属于其中的一种。程序通过将自身的一些特定行为进行隐藏,增加攻击者对二进制程序进行逆向工程的难度,同时使攻击者无法分析程序的行为和结构。恶意代码通常会采取很多自我保护措施躲避杀毒软件的检测,虽然有很多种程序保护的方法,但是有的方法设计困难、有的方法会遗留特征、有的方法会增加程序复杂度、影响程序性能以及有的方法隐藏强度不够等。 本文提出了一种基于神经网络和返回导向编程( Return-Oriented Programming,ROP)的程序行为隐藏方法,该方法利用神经网络的函数模拟功能,将程序中的关键条件分支和触发ROP代码的条件分支用神经网络函数替换,由于神经网络的黑盒性和不可解释性,想要提取神经网络的复杂规则是不可能的;然后将程序中需要隐藏的特定行为的代码用ROP技术中短指令工具(Gadgets)替换,不同于其他隐藏技术,这里是完全的隐藏,程序中存储的是这些Gadgets的地址(Payload)。本文通过将这些Payload动态的写入到神经网络的存储空间中,更加有效地对抗了特征匹配分析方法,比其它ROP技术有更好的隐蔽性。同时本文利用神经网络函数对ROP技术中的Payload进行自校验,有效地抵抗了针对ROP技术的重写或替换系统函数库的攻击,增强了本方法的强健性。 为了有效地体现本文所提方法对程序行为的隐藏效果和性能,本文分别对各种恶意代码和性能测试程序SPEC CPU2006进行了实验,利用多个常用杀毒软件对隐藏恶意行为后的恶意代码进行扫描,同时使用两种比较流行的分析工具BitBlaze平台和KLEE对神经网络混淆后的程序进行逆向分析。实验表明本文所提方法在隐蔽性、强健性和性能上都有很好的表现,是一种新的程序行为隐藏方法,有效地保护了程序的行为。