一、恶意软件检测

3.1 常用恶意软件检测技术

目前,常用的恶意软件检测技术有特征码检测技术、校验和技术、行为分析技术、虚拟机技术、启发式检测技术等。

(1)特征码检测技术

特征码检测技术依赖邻域专家的行业经验和个人能力提取恶意软件的特征码,让该特征码唯一性的映射到对应的恶意软件。该技术的前提 是必须先捕获恶意软件样本,捕获样本的常见方法有用户上报、蜜罐技术、定向采集等,然后根据恶意软件样本进行特征码抽取,在抽取时需要遵循“在保持特征代码唯一性的前提下,尽量使特征代码长度短些,以减少时空开销”的原则。

(2)校验和技术

校验和技术采用文件的校验和作为检测恶意软件的依据,在系统中建立新文件时,计算并保存正常文件的校验和。在文件使用时,计算文件当前的校验和,并将其与先前的校验和进行比较,如果不一致,判断该文件感染了恶意软件。

(3)行为分析技术

行为分析技术采用行为特征序列来作为判别恶意软件的依据,根据邻域专家多年经验找出恶意软件的一些共通性行为来建立行为序列特征库。该技术在检测恶意软件时,监测程序运行过程中产生的行为信息,分析程序的执行流程及其对系统的影响,构建程序行为特征序列,并将该行为序列与特征库进行比较,如有一致,则判断正在执行的程序为恶意软件。

(4)虚拟机技术

虚拟机技术采用程序代码虚拟CPU寄存器和硬件端口,用调试程序调入可疑恶意程序样本,将每个语句放到虚拟环境中执行,通过虚拟的内存、寄存器以及端口的变化来了解程序的执行,可以让变种病毒特别是加密病毒自动解密露出原形,而不用研究各个恶意软件的解密算法及密钥。

(5)启发式检测技术

启发式检测技术采用邻域专家分析的经验,建立经典指令集,如典型感染指令集、典型传播指令集、典型破坏指令集等,对每个经典指令集赋以不同的权值。在检测恶意软件时,在用恶意软件特征码未查到已知恶意软件的情况下,再搜索这个指令集库,如果找到符合的记录的权值之和超过某一阈值,则判断被检测文件是恶意软件。启发式检测技术能够对特征码检测技术形成有效补充。

3.2 恶意软件特征提取技术

1.恶意软件特征表达

对恶意软件的特征表达通常有静态特征和动态特征两种表达方式

(1)静态特征

静态特征指在不运行程序的情况下,将程序的指令、代码、控制流或者其他特征抽取出来。
该方法优点是:样本覆盖率高,提取速度快。缺点是:对于一些采用变形或多态技术的恶意软件识别需要多角度分析。

(2)动态特征

动态特征指将程序在真实环境或虚拟环境下运行起来,并监视其各种行为。
该方法的优点是:能准确捕获运行程序的行为,对采用变形或多态技术的恶意软件具有较强的识别能力。缺点是:样本覆盖率低,特征提取速度慢。
特征提取一定要有效、自动、高效,因此静态特征更适合于作为大规模样本识别的特征表达。

2.恶意软件特征提取

(1) Win API函数

下面介绍从引入表中静态提取PE文件(可移植的可执行的文件)所包含的Win API函数的具体提取步骤:
检验文件是否是有效的PE→从DOS Header 定位到PE Header→获取位于Optional Header 的数据目录地址→转至数据目录的第二个成员,提取其Virtual Address值→利用上值定位第一个IMAGE_IMPORT_DESCRIPTOR结构→检查OriginalFirstThunk值:若不为0,沿着OriginalFirstThunk里的RVA值转入RVA对应的数组;否则,改用FirstThunk值→对每个数组元素,判断其元素值的最高二进制是否为1,若是,则函数是由序数引入的,可以从该值的低字节提取序数;若不是(既元素值的最高二进制位为0),则可将该值作为RVA转入IMAGE_IMPORT_BY_NAME数组,跳过Hint即为函数名。→跳至下一个数组元素提取函数名一直到数组底部(以null结尾)→当遍历完一个DLL的引入函数,接下去处理下一个DLL;既跳转到下一个IMAGE_IMPORT_DESCRIPTOR并处理它,循环直到数组底部(IMAGE_IMPORT_DESCRIPTOR数组以一个全0域元素结尾)

(2)文件字符串信息

文件字符串特征是指PE文件中同一字符集的连续字符序列,文件字符串特征提取方法为:通过反编译PE文件,从文件头开始读取文件连续的字符,直到遇见“0X00”或字符与前面的字符序列不在同一个字符集为止。

(3)文件资源信息

可以按照文件资源的树状结构进行相应资源信息的提取,提取的资源信息主要有:cursor\bitmap\icon\menu\dialog等。提取后的资源信息,转换为整型向量,并存储于数据库中以便相应的分类算法进行学习。

(4)文件指令信息

文件的指令信息是指将文件进行反汇编之后,从其代码段提取相应的汇编指令信息。

3.3 数据挖掘在恶意软件检测中的应用

3.3.1 基于分类方法的恶意软件检测

常用分类算法:决策树归纳算法、朴素贝叶斯算法、K-近邻分类算法、集成分类器Boosted J4.8等

3.3.2 基于聚类分析方法的恶意软件归类

常用聚类算法:k-均值聚类、层次聚类等
1.层次聚类方法在恶意软件归类中的应用
(1)恶意软件特征 (2)行为特征近似度计算 (3)构建层次聚类关系树 (4) 恶意软件归类
加权子空间的k-medoids聚类方法在恶意软件归类的应用
(1)提取样本文件特征 (2)使用聚类算法

3.3.3 基于数据挖掘技术的钓鱼网站检测

1.钓鱼网站检测技术
(1)基于黑白名单的钓鱼网站检测技术
该技术核心在于维护黑名单库,在库中出现的URL/IP被认为是不可信的。
优点:高效、准确、简单 缺点:滞后性、失效率高
(2)基于页面的启发式钓鱼检测技术
该算法从各个方面挖掘钓鱼网站页面存在的特征,利用机器学习算法和训练样本对分类模型进行训练,从而区别正常网页和钓鱼网页。
(3)基于视觉相似的钓鱼检测技术
主要有:基于HTML的检测、基于网页图像的检测