代码重组可以理解为将原代码按照一定的条件分块切割后,随机地无序地分布在宿主文件中,但在执行时,保持代码的执行流程和功能不发生改变。这种方法经常用于感染型病毒之中,它们在感染一个新的目标文件时,会根据目标宿主文件中可利用缝隙的分布情况来切分代码。为了达到准确切分指令的目的,它们还会携带一个用于计算汇编指令长度的函数
3.采用组装器进行代码重组
图2-1病毒代码重组示例
4.通过跳转串连代码块
图2-2病毒代码跳转示例
5.寡型病毒
病毒体内有多种加解密算法,但是在每次产生新的副本时,仅使用其中一种,有些算法被使用的几率很小,以至于不完整分析该病毒,将无法彻底防御该病毒。当病毒体内携带的解密引擎超过一定数量时,反病毒软件继续通过“识别解密代码,硬编码解密”的方法就会变得相当的不切实际了,这类病毒在DOS下较为多见。
(二)计算机病毒的反调试、反跟踪、反分析技术
1.花指令(Junk Code)
静态分析的第一步就是通过反汇编软件对计算机病毒进行反汇编,这样分析员才可以阅读汇编指令。为了欺骗反汇编软件、迷惑分析人员,给分析工作增添障碍,计算机病毒作者通常会在计算机代码中看似有用,其实一无是处的代码,称这些废指令为“花指令”(Junk Code)。
添加“花指令”主要有以下几个目的:
(1)欺骗反汇编软件,让其显示不正确的反汇编结果。以下展示了一段汇编代码(采用IDA反汇编)
(2)干扰病毒分析人员,给分析工作增添正障碍
(3)改变程序代码特征
2.反动态分析、检测技术
检测商用虚拟机通过利用虚拟机预留的“后门”和检测附带工具来进行反动态分析。
反-反病毒仿真技术则通过虚拟CPU、虚拟内存管理单元和虚拟的操作系统环境等虚拟技术达到仿真目的。
反-反病毒仿真的方法:
(1)使用未公开的CPU指令
(2)使用不被仿真器支持的系统原生API
3)使用多线程、多进程
4)使用超大的循环
5)检测指令运行间隔时间
3.执行体隐藏保护技术
计算机病毒为了获得最长的存活时间,总是希望不被发现,因此计算机病毒常常采用了各种方法来隐藏自己的蛛丝马迹。蛛丝马迹可以理解为:存在于磁盘上的病毒文件、活动于系统中的病毒进程、可以让病毒启动的自启动项目等。
隐藏技术主要通过挂接系统正常的信息查询途径,对返回的信息进行检测,并从这些信息中去掉自身信息。
例如:文件隐藏,将病毒文件设置为隐藏属性,挂接遍历文件相关API。
另外还有:进程隐藏、文件保护、进程保护、注册表保护等
4.反制技术
(1)禁止反病毒软件的运行
通过钩取相应的API(如”CreateProcess”)来检测并禁止反病毒软件的运行或者通过映像劫持禁止反病毒软件的运行,还可以利用反病毒软件的漏洞来禁止其运行。
(2)破坏反病毒软件的功能
主要通过卸载反病毒软件的API钩子来破坏反病毒软件的监控和拦截功能,或者破坏反病毒软件的提示、确认信息窗口。
(三)移动终端恶意代码技术
移动终端恶意代码是一种以移动终端设备为攻击目标的程序,它以手机或PDAwei感染对象,以无线通信网和计算机网络为平台,通过发送恶意短信等形式,对终端设备进行攻击,从而造成设备异常状态。
随着GPRS、3G技术的发展,以及手机硬件设备的迅速升级,手机趋向一部小型计算机,有计算机杀光你的恶意软件就会有手机上的恶意代码。当前,手机恶意代码已经成为新的恶意代码研究热点。
目前被恶意代码利用的计算机漏洞分别有PDU格式漏洞、特殊字符漏洞、Vcard漏洞、Siements的“%String”漏洞和Android浏览器漏洞等。
三、计算机病毒的防治技术
计算机病毒入侵的途径与防治研究(三)由免费论文网(www.jaoyuw.com)会员上传。