计算机网络病毒防范中数据挖掘技术的应用
2020-10-22薛慧敏
薛慧敏
(山西财贸职业技术学院 山西太原 030031)
网络病毒是与计算机相伴而生的产物,它是一种恶意的代码程序,主要是对计算机系统进行破坏,窃取重要的数据信息。因此,对网络病毒进行有效地防范显得尤为必要。常规的杀毒软件虽然在病毒防范中具有一定的效果,但对于未知的病毒和新型病毒却很难防范。可以利用数据挖掘技术构建起一个病毒检测系统,从而达到全面防范网络病毒的目的。
1 数据挖掘技术
所谓数据挖掘,就是从海量的数据当中,找出未知的、有利用价值的数据的过程。数据挖掘技术也被称之为数据库中的知识发现,即KDD,它是一个人机交互过程,由多个步骤组合而成,数据挖掘是其中一个步骤,如图1所示。
图1 知识发现过程示意图
由图1可知,数据库是知识发现的基础,通过数据选择、数据预处理、数据挖掘和模式评估等步骤,最终完成对知识的发现。数据挖掘虽然是知识发现中的一个步骤,但从实际情况来看,它是不可或缺的关键步骤,因此对数据挖掘技术进行深入研究具有重要的现实意义。业内一些专家学者认为,数据挖掘技术与KDD之间存在着诸多重叠之处,常规数据挖掘系统的结构如图2所示。
图2 数据挖掘系统结构示意图
2 数据挖掘技术在计算机网络病毒防范中的应用
2.1 网络病毒行为检测
2.1.1杀毒软件 网络病毒现已成为计算机系统的头号威胁,由此使得病毒检测技术成为计算机安全领域研究的主要课题之一。基于签名的检测技术是目前应用较为广泛的病毒检测方法,具有病毒查杀功能的杀毒软件,一般都能够对非法入侵进行拦截,并对恶意攻击进行防御。但从实际来看,这些功能仅仅是对修改注册表行为的检测,杀毒软件的检测流程如图3所示。
图3 杀毒软件的检测流程
通常情况下,只要杀毒软件检测到某个行为准备修改注册表时,便会自动提醒用户,并给出解决措施,如允许、禁止等,然后按照用户的选择执行。
2.1.2行为分析 在计算机网络木马病毒检测体系中,进程监视具有不可替代的作用,主要涉及如下技术:
(1)比较判定。将新挂起的进程与病毒库当中现有的进程进行比较,若是相同或是相似,则会判定进程为病毒。
(2)行为跟踪。对新的进程进行跟踪,并开启行为追踪,利用函数调用列表监视进程。
大量实践证明,只通过进程监视的方法,很难达到彻底防范网络木马程序及病毒的效果,尤其是各种各样的新型病毒层出不穷,且很多病毒的隐蔽性越来越强,能够隐蔽进程,进程监视无法察觉。不仅如此,进程监视在启动运行时,会占用大量的系统资源,漫无目的的监视则会导致系统误报。为解决这一问题,可以对进程监视加以改进,借助API函数调用,结合数据挖掘技术,开发新的网络病毒检测系统,以此来提高病毒的检测效率,增强计算机系统的安全性。计算机网络中的木马病毒为了更好地隐藏自己,一般都会做成比较小的程序,从而使得它们只能完成一些简单的任务,并利用API函数来实现某些功能。病毒变种的特征码通常都会被修改,如果以静态检测的方法,很难检测出变种后的病毒。但无论病毒是否变种,其调用API函数的过程都基本相同,所以只要可以将病毒调用的API函数提取出来,便可对未知的变种病毒进行检测。API函数的拦截过程如图4所示。
图4 API函数拦截情况
正常情况下,API函数在执行的过程中,需要对系统空间内的函数进行调用。如果权限不够,则会在监视后进入到核心态,此时SSDI会被MDL锁定并进行修改,而API函数的调用基本上都是发生在某个进程的线程上。因此,对API函数的拦截,就是要记录线程的ID。
2.2 基于数据挖掘的病毒检测流程
计算机网络病毒通常都是以恶意代码的形式进行攻击,因恶意代码的数目较多,并且每个恶意代码会调用大量的API函数,对于病毒检测系统来说,从大量的API函数当中快速挖掘出对恶意代码检测有帮助的信息是整个系统的核心。恶意代码有两个非常典型的特征,一个是对计算机网络的破坏性,另一个是本身的隐蔽性。因此,可以针对恶意代码的这个特性,选取特这函数,据此构建向量空间,然后采用数据挖掘的方法做出最终判断,达到检测木马病毒的目的。基于数据挖掘的计算机网络木马病毒检测流程如图5所示。
图5 基于数据挖掘的计算机网络木马病毒检测流程
图5中的检测流程主要由以下几个部分组成:①预处理模块,该模块主要负责样本的批量载入;②VMware模块,该模块能够对样本进行监控,每个样本执行完毕后,VMware会恢复至初始状态;③跟踪模块,该模块可以对指定的API函数进行监视,当检测到被定义的API后,检测系统便会中断;④数据挖掘模块,这是检测系统的决策核心。
2.3 API函数追踪
2.3.1 API函数监视的基本原理 程序调用的API函数可以通过如下方法获得,即Windows Debus API或是API Hook技术。跟踪模块的核心是监视程序调用的API函数,然而,API Hook技术只能已知API原型的前提下才能实现。由于未公开的函数比较多,从而限制了API Hook技术的应用。因此,只能采用Windows Debus API,获取调用的API序列。Debus API可以简单地理解为调试API,它可以加载一个程序,可也以将自身捆绑到正处于运行的程序上,由此为调试的进行提供了便利,在调试时,能够获得映像基址、进程ID以及引入地址等。若是某个事件与调试相关,便会触发调试器,监控进程随之被激活,事件发生之后,调试器会快速响应,并对事件进行处理,调试器与被调试进程的交互由子模块负责,协助调试器实现访问、进程控制等功能。Windows SDK发布了大量的子模块,其中大部来源于KERNEL22.dll。
2.3.2监视步骤向检测 系统内输入样本,并启动监视程序,所有样本的进程线程被全部挂起;对被调试程序调用的库文件Export table进行分析,借此来获取导出函数,并对其它函数的入口地址进行获取;在OxCC处设置断点,作为函数的入口地址,如果该位置处出现中断及调试事件,则系统会对进程进行自动中断,获取调试进程信息;对调试进程进行循环执行,直至最终结束。
2.3.3函数调用拦截 在Windows系统当中,可以采用如下方法来实现对进程启动操作的截获,即修改SSDT,或是用shadow SSDT拦截函数。由于函数最终会被相应的程序所调用。故此,可以判断该程序是否为病毒进程。SSDT与Windows中API导向的作用类似,它能够帮助系统搜索到的指定的API地址。
2.3.4监视函数的系统服务 在计算机系统当中,对进程的创建进行监视时,可以借助SSDT Hook技术来完成。几乎所有的RING3进程在创建时,都要对系统服务NtCreateProcessEX()进行调用。而出于多线程安全性方面的考虑,可以通过MDL锁住SSDT,在此基础上完成修改。下面重点对NtCreateProcessEX()参数进行详细说明。OUTPHANDLE Process Handle是一个比较重要的参数,该参数作为主要的作用是当需要创建与RING3有关的进程时,如果成功创建,则会返回HANDLE,由此能够准备捕捉到进程的创建路径。但必须指出的一点是,驱动程序本身并不具备独立的进程,其必须依附在调用程序的进程当中。因此,可以借助Section Handle来获取File Object。
2.4 数据挖掘
2.4.1挖掘工具 WEKA是一款具有开源架构的系统应用软件,该软件平台是数据挖掘与机器学习最为常用的分析工具之一,以Java作为运行环境,能够在大部分操作系统下工作,包含数据挖掘中常用的项目,如数据预处理、聚类分析、分类预测等等。
2.4.2交叉验证 在进行交叉验证的过程中,采用k-fold,即将数据集以随机的方式分为k个子集,选择其中一个作为测试集,剩余的作为训练集,通过重复执行,将平均结果作为测试结果。本次研究中,子集数确定为5,据此对全部数据进行测试。
2.4.3向量空间 利用追踪模块,对API函数进行捕获,以此作为特征,建立网络木马病毒样本的向量空间。当木马病毒当中包含该API函数时,它的特征值为1,不包含时,其特征值为0,由此便可对网络病毒进行快速、准确地检测。
3 结论
综上所述,为确保计算机系统的安全、稳定运行,必须对网络病毒进行有效防范。文章提出的基于数据挖掘的网络病毒检测系统能够,在病毒检测方面具有良好的应用效果,能够快速、准确地完成病毒检测。由此可见,该系统具有一定的推广使用价值。未来一段时期,应当加大对数据挖掘技术的研究力度,在对现有技术进行改进和完善的基础上,开发一些新的技术,从而使能够其更好地为计算机网络病毒防范服务。