计算机病毒与防范技术
安徽师范大学——计算机与信息学院————作者(授课老师):周文
第6章 计算机病毒常用技术
一、病毒的加密与多态技术
1.1 计算机病毒加密技术
- 对自身代码、数据按照某种特定的算法进行变换,使原有的代码、数据特征消失,这种技术可以称之为加密技术
- 病毒体中所有的持续性数据都可以加密,在使用反汇编工具对病毒进行反汇编,涉及到多个被加密的病毒代码片段时,用户必须逐个解密这些代码片段才能理解整个病毒代码的功能
- 主要针对于通过字符串扫描或者通过字符串进行启发检测的反病毒扫描器
1.2 高级代码变形
- 代码重组可以理解为将原代码按照一定的条件分块切割后,随机地无序地分布在宿主文件中,但在执行时,保持代码的执行流程和功能不发生改变
- 这种方法经常用于感染型病毒之中,它们在感染一个新的目标文件时,会根据目标宿主文件中可利用缝隙的分布情况来切分代码。为了达到准确切分指令的目的,它们还会携带一个用于计算汇编指令长度的函数
1.3 采用组装器进行代码重组
1.4 通过跳转串连代码块
1.5 寡型病毒
- 病毒体内有多种加解密算法,但是在每次产生新的副本时,仅使用其中一种,有些算法被使用的几率很小,以至于不完整分析该病毒,将无法彻底防御该病毒
- 当病毒体内携带的解密引擎超过一定数量时,反病毒软件继续通过“识别解密代码,硬编码解密”的方法就会变得相当的不切实际了,这类病毒在
DOS
下较为多见
1.6 多态变形病毒
- 多态变形病毒通常是指在自我复制过程中,能够大幅度改变自身代码表现形式、存储形式的计算机病毒
- 它们能没有相同的指令,更没有相同的数据,执行时无需做任何代码和数据的还原工作(可对比加密技术)
- 想要通过依赖于特征码的检测技术来检测这些多态病毒,是几乎不可能完成的工作,即使是有仿真技术支持的特征码检测技术
1.7 加壳技术
- “包裹”在程序之外另一段程序,它对原程序的代码、数据进行一定的变换后作为数据放在壳内;当原程序需要被执行时,再通过相应的逆向变换还原原程序。对于源程序来说,不刻意检测,那么这个过程则是透明的
- 被木马、蠕虫、后门等以程序文件形式(有别于代码形式,例如:感染型病毒是典型的以代码形式出现的计算机病毒)出现的计算机病毒所青睐
- 反病毒软件若不先将原程序还原,将无法再采用提取自原程序的特征串来识别它们
二、计算机病毒的反调试、反跟踪、反分析技术
2.1 扫描引擎分类
2.2 花指令(Junk Code)
- 静态分析的第一步就是通过反汇编软件对计算机病毒进行反汇编,这样分析员才可以阅读汇编指令。
- 为了欺骗反汇编软件、迷惑分析人员,给分析工作增添障碍,计算机病毒作者通常会在计算机代码中看似有用,其实一无是处的代码,称这些废指令为“
花指令
”(Junk Code
)
2.3 添加“花指令”主要目的
- 欺骗反汇编软件,让其显示不正确的反汇编结果。以下展示了一段汇编代码(采用IDA反汇编)
改变程序代码特征
2.4 反动态分析、检测技术
检测商用虚拟机
– 利用虚拟机预留的“后门”
– 检测附带工具
反-反病毒仿真技术
– 虚拟CPU
– 虚拟内存管理单元
– 虚拟的操作系统环境
2.5 反病毒仿真技术的应用
2.6 反-反病毒仿真的方法
- 隐藏技术主要通过挂接系统正常的信息查询途径,对返回的信息进行检测,并从这些信息中去掉自身信息
2.7 反制技术
本节结束 2019年10月4日
返回目录