发明名称 一种在取证场景下自动检测恶意进程的方法
摘要 本发明提供了一种在取证场景下基于进程的动态链接库数据自动检测恶意进程的方法。方法包括下列步骤:1)建立从动态链接库数据到N元元组的映射方式;2)根据贪婪算法计算相对最优的关键动态链接库集;3)采用隐藏朴素贝叶斯方法建立识别模型并进行检测。与现有的恶意软件检测方法相比,本发明实现了在无恶意软件特征码库无相关经验的情况下在众多未知进程中对恶意软件进程的自动识别,并能够在训练集和待识别集来源不一致时采用确认集进行校正。此外,本发明可以处理来自不同来源的原始动态链接库数据。本发明特别适用于无先验知识和大规模自动化恶意进程检测的场景。
申请公布号 CN104376261B 申请公布日期 2017.04.05
申请号 CN201410705875.1 申请日期 2014.11.27
申请人 南京大学 发明人 伏晓;端一恒;骆斌
分类号 G06F21/56(2013.01)I 主分类号 G06F21/56(2013.01)I
代理机构 南京瑞弘专利商标事务所(普通合伙) 32249 代理人 陈建和
主权项 一种在取证场景下自动检测恶意进程的方法,其特征在于,包括下列步骤:1)建立从动态链接库数据到N元元组的映射方式;定义1:一个N元元组是一个长度为N的由0或者1组成的序列,这里N为非负整数;定义2:标志位是添加到N元元组末尾的一个特殊位,它用来表示这个元组所代表的进程是否是恶意进程,它被用于恶意软件的识别过程;为了能通过识别算法来快速分析和处理动态链接库数据,需要将每个进程的动态链接库数据映射成一个数据结构,即定义1中的N元元组;动态链接库集是映射的标准,针对一个包含N个动态链接库的动态链接库集,对应的数据结构为一个N+1元元组、包括一个定义2中的标志位,待识别集中的进程对应的动态链接库数据结构没有这一位,为N元;映射方式陈述如下:a.将元组每一位都设为0;b.遍历作为标准的动态链接库集,对于每个动态链接库,在进程的动态链接库数据中搜索,如果存在,则把进程所对应的记录的该动态链接库所对应的位置设为1;c.如果该进程属于训练集或者确认集,是否为恶意进程已知,是则设为1,如果是待识别集即测试集,则去掉该标志位;2)根据贪婪算法计算相对最优的关键动态链接库集;在建立了从N个动态链接库数据到N元元组的映射方式之后,需要选择动态链接库来形成动态链接库集,而这些被选中的动态链接库被称之为关键动态链接库;这个集的选择会对建立的检测模型产生影响进而对识别准确率产生影响;定义3:理论最优动态链接库集为这样一个集,没有任何其他集使用同一算法在同一训练集上建模之后在同一测试集的表现优于该集,这个理论最优动态链接库集依赖于训练集、测试集以及算法的选择;定义4:相对最优动态链接库集不等于理论最优动态链接库集,但在类似训练集和测试集的情况下,都有着相对较好的表现,此外,该集能通过可控的运算复杂度在一定步骤内获得;在选择关键动态链接库时,由于关键动态链接库是用来描述各个分类中进程的公共属性的,进程相关的动态链接库不能被选为关键动态链接库;在没有先验知识的情况下,首先需要考察的是windows的系统动态链接库,不直接作为关键动态链接库,否则建立模型时会发生“维度爆炸”;考虑到各个动态链接库在样本中出现的概率并不平均,则通过对样本进行统计的方式来初始化关键动态链接库集,统计出在训练集的常规软件进程和恶意软件进程中均出现的动态链接库,它们组合的集为I;为了提高识别的准确率,往往需要较多的训练数据;如果需要鉴别的恶意进程的动态链接库数据和用于训练的动态链接库来源不同,需要首先采用枚举动态链接库dll出现比率上下限组合,并在验证集、验证反馈的方式来获得一个在组合测试中最优的动态链接库集作为开始,验证集必须和待鉴别数据来自同一来源;从而将一个数量过于巨大的可能性组合映射到了一个有限可计算的区间中;具体操作陈述如下:a.以一个设定的步长、步长取0.5%,和一个设定的方式,设下限从0到49.5%共100个、上限从50%到100%共101个来枚举,这样一共有10100种上下限组合;b.对于每一个组合,都对应一个关键动态链接库集,计算方式为如果一个动态链接库在训练集的常规软件进程和恶意软件进程中概率都出现在该上下限组合之间,则将该动态链接库放入该关键动态链接库集;c.对这些组合对应的关键动态链接库集一一在验证集上测试,找出相对最优关键动态链接库集S:采用贪婪算法和验证数据结合的方式来优化关键动态链接库集;通过逐步添加动态链接库到备选关键动态链接库集进行建模并使用验证集来反馈结果,逐步找到一个相对最优的关键动态链接库集;具体操作陈述如下:a.设相对最优关键动态链接库集S中有n个元素,循环将集I中S没有的元素加入集S,每次加入一个,建模得到在验证集上的结果,拿出,加入下一个,重复,直到循环结束;b.统计得到在验证集上结果最好的拥有n+1个元素的集合T,用它代替S,重复a;c.该过程结束直到验证集上的结果不再改善,这时得到最终的集合S;3)采用隐藏朴素贝叶斯方法建立识别模型并进行检测:在获得了相对最优关键动态链接库集之后,需要确定建模算法;由于动态链接库之间耦合度较高,存在较强的相互依赖性,而隐藏朴素贝叶斯方法(hidden naive Bayes)适合处理较高的耦合度;在隐藏朴素贝叶斯方法中,每个属性存在一个隐藏的父节点来表达其他属性对于该属性的影响;在确定了隐藏朴素贝叶斯方法后,使用训练集建立模型,将待识别集中的进程按照1)中的方式转化为元组;隐藏朴素贝叶斯方法通过计算条件概率来最终确定识别集中的进程的标志位;标志位为1代表恶意进程,0代表常规进程。
地址 210093 江苏省南京市鼓楼区汉口路22号