杀毒软件的病毒扫描的一个主要方法是用特征码进行识别,请问特征码是如何提取出来的?
特征码提取分为“第一代扫描技术”、“第二代扫描技术”与“算法扫描”三种方法。
一、第一代扫描技术:可以用“在文件中检索病毒特征序列”这句话概括。分为字符串扫描技术、通配符扫描技术、其它扫描技术。字符串扫描技术:一般使用一段从病毒中提取出来的具有特征的一段字符来检测病毒,当然这些字符是一般程序中不大可能出现的,如果某个应用程序包含相应的特征字符,那它就是病毒了。通配符扫描技术:一般用于跳过某些字节或字节范围,甚至现在有些扫描器还支持正则表达式。比较早期的加密病毒用这种方法都能比较容易的检测出来。其它扫描技术:1)不匹配字节数扫描技术:这是IBM Antivirous软件开发的一种技术,其原理是准许字符串中有N个字节为任意值。2)通用检测法扫描技术:用一个简单的字符串来搜索某类病毒的部分或全部已知变种。3)散列扫描技术:散列是一个常用的术语,这里指可以对特征码的首字节或第一个16或32位字节进行计算,并且允许字符串中后面的字节包含通配符。4)书签验证法:这是一种保证病毒检测与清除过程更加准确的方法。5)首尾扫描验测法:通过只扫描文件头部和尾部而加快病毒检测的复杂方法。6)入口点和固定点扫描:可以进一步提升防毒扫描工具检测速度的一种方法。
二、第二代扫描技术:代表为“近似精确识别法”与“精确识别法”。智能扫描:会忽略检测文件中像NOP这样无意义指令。而对于文本格式的脚本病毒或宏病毒,则可以替换掉多余的例如空格、换行符或制表符等空白字符,从而大大提高了扫描器的检测能力。近似精确识别法:1)多套特征码:采用两个或更多的字符串集检测每个病毒,如果扫描器检测到其中一个特征符合,就会警告发现变种,但并不会执行下一步操作(例如清除病毒体或删除文件)。如果多个特征码全部符合,则报警发现病毒,并执行下一步操作。2)效验和:将每一个无毒的文件生成一个效验和,等待下次扫描时再进行简单的效验和对比即可,有利于提高扫描器的效率。3)骨架扫描法:此方法由卡巴斯基发明,在检测宏病毒时特别有用。它既不用特征码也不用效验和,而是逐行解析宏语句,并将所有非必要字符丢弃,结果只剩下代码骨架,通过对代码骨架的分析,从而提高对变种病毒的检测能力。4)精确识别法:也是利用效验和技术,只不过应用得更广、更复杂,能通过对整个病毒进行效验和计算后生成特征图。能够保证扫描器精确识别病毒变种的唯一方法。
三、基于内存扫描的杀毒技术:由于病毒文件被映射到内存中特征码会改变,比如SMC(Self Modified Code 自修改代码)技术的运用,在运行时动态解压、改变代码。从内存中取扫描特征码同样重要。
四、杀毒技术前沿、展望:目前应用得比较广泛的是“主动防御”与“启发式扫描”这两项。其都是基于“代码仿真技术”:通过一个虚拟机环境来仿真CPU和内存管理系统,从而对模拟的代码进行执行。而又不会破坏真实环境。“基于神经网络的启发式分析”,研究者已经成功的用经过训练的神经网络检测出复杂的EPO病毒。这种复杂的技术将来可能会与启发式分析合为一体,从而产生出高识别率、小特征库且低误报的扫描器。但缺点是需要巨大的病毒样本分析学习。
另外,特征码扫描你可以参考AVAlarm,很多杀毒软件的工程师开发特征码扫描引擎时,都需要参考这个开源项目,比如江民。定位特征码有手动和机器定位两种,手动定位有专门的“病毒分析工程师”来做。很多时候偷懒的办法,是直接从别的杀软病毒库中导入特征库。
我对特征码了解不是很多。但是既然要使这个特征码能唯一标识出某一家族的病毒,并且要尽量短(考虑病毒库大小),应该只能由病毒分析人员人共提取出来吧。
既然提到了神经网络,就是机器学习的方法啦。要分为两部分来看,第一部分是特征,第二部分是特征提取方法。特征可能是字符串,机器码序列,系统调用序列等数据或者函数特征。提取方法,目前我只了解到N-Grams的方法,将这些序列进行切片。不过这种方法产生的数据库一般都非常大~~当然,巨大的样本训练也是必须的。
这两个部分完成之后还要采用一定的数据挖掘训练-预测模型。神经网络就是其中的一种,其他方法还包括支持向量机、决策树以及朴素贝叶斯。
这方面如果需要继续深入了解~可以找找论文来看。
可以找找数据挖掘 云安全 恶意软件 这些关键字的期刊论文(英文)和学位论文。一般来说学位论文里都会对相关领域作出整体的介绍,包括研究现状和存在的问题。
我大概了解过二种提取方式,一种把病毒或木马的内存中一段特定的动作指令的数据提取出来做为特征码,这个叫数据流技术
还有一种是通过病毒和木马的行为规则来提取特征码,这是一种模糊比对方案,现在比较流行的杀毒方式都采用这种方式,可以查杀未知病毒,但这种一般属于机密。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(3)
特征码提取分为“第一代扫描技术”、“第二代扫描技术”与“算法扫描”三种方法。
一、第一代扫描技术:可以用“在文件中检索病毒特征序列”这句话概括。分为字符串扫描技术、通配符扫描技术、其它扫描技术。
字符串扫描技术:一般使用一段从病毒中提取出来的具有特征的一段字符来检测病毒,当然这些字符是一般程序中不大可能出现的,如果某个应用程序包含相应的特征字符,那它就是病毒了。
通配符扫描技术:一般用于跳过某些字节或字节范围,甚至现在有些扫描器还支持正则表达式。比较早期的加密病毒用这种方法都能比较容易的检测出来。
其它扫描技术:
1)不匹配字节数扫描技术:这是IBM Antivirous软件开发的一种技术,其原理是准许字符串中有N个字节为任意值。
2)通用检测法扫描技术:用一个简单的字符串来搜索某类病毒的部分或全部已知变种。
3)散列扫描技术:散列是一个常用的术语,这里指可以对特征码的首字节或第一个16或32位字节进行计算,并且允许字符串中后面的字节包含通配符。
4)书签验证法:这是一种保证病毒检测与清除过程更加准确的方法。
5)首尾扫描验测法:通过只扫描文件头部和尾部而加快病毒检测的复杂方法。
6)入口点和固定点扫描:可以进一步提升防毒扫描工具检测速度的一种方法。
二、第二代扫描技术:代表为“近似精确识别法”与“精确识别法”。
智能扫描:会忽略检测文件中像NOP这样无意义指令。而对于文本格式的脚本病毒或宏病毒,则可以替换掉多余的例如空格、换行符或制表符等空白字符,从而大大提高了扫描器的检测能力。
近似精确识别法:
1)多套特征码:采用两个或更多的字符串集检测每个病毒,如果扫描器检测到其中一个特征符合,就会警告发现变种,但并不会执行下一步操作(例如清除病毒体或删除文件)。如果多个特征码全部符合,则报警发现病毒,并执行下一步操作。
2)效验和:将每一个无毒的文件生成一个效验和,等待下次扫描时再进行简单的效验和对比即可,有利于提高扫描器的效率。
3)骨架扫描法:此方法由卡巴斯基发明,在检测宏病毒时特别有用。它既不用特征码也不用效验和,而是逐行解析宏语句,并将所有非必要字符丢弃,结果只剩下代码骨架,通过对代码骨架的分析,从而提高对变种病毒的检测能力。
4)精确识别法:也是利用效验和技术,只不过应用得更广、更复杂,能通过对整个病毒进行效验和计算后生成特征图。能够保证扫描器精确识别病毒变种的唯一方法。
三、基于内存扫描的杀毒技术:
由于病毒文件被映射到内存中特征码会改变,比如SMC(Self Modified Code 自修改代码)技术的运用,在运行时动态解压、改变代码。从内存中取扫描特征码同样重要。
四、杀毒技术前沿、展望:
目前应用得比较广泛的是“主动防御”与“启发式扫描”这两项。其都是基于“代码仿真技术”:通过一个虚拟机环境来仿真CPU和内存管理系统,从而对模拟的代码进行执行。而又不会破坏真实环境。
“基于神经网络的启发式分析”,研究者已经成功的用经过训练的神经网络检测出复杂的EPO病毒。这种复杂的技术将来可能会与启发式分析合为一体,从而产生出高识别率、小特征库且低误报的扫描器。但缺点是需要巨大的病毒样本分析学习。
另外,特征码扫描你可以参考AVAlarm,很多杀毒软件的工程师开发特征码扫描引擎时,都需要参考这个开源项目,比如江民。
定位特征码有手动和机器定位两种,手动定位有专门的“病毒分析工程师”来做。很多时候偷懒的办法,是直接从别的杀软病毒库中导入特征库。
我对特征码了解不是很多。但是既然要使这个特征码能唯一标识出某一家族的病毒,并且要尽量短(考虑病毒库大小),应该只能由病毒分析人员人共提取出来吧。
既然提到了神经网络,就是机器学习的方法啦。要分为两部分来看,第一部分是特征,第二部分是特征提取方法。特征可能是字符串,机器码序列,系统调用序列等数据或者函数特征。提取方法,目前我只了解到N-Grams的方法,将这些序列进行切片。不过这种方法产生的数据库一般都非常大~~当然,巨大的样本训练也是必须的。
这两个部分完成之后还要采用一定的数据挖掘训练-预测模型。神经网络就是其中的一种,其他方法还包括支持向量机、决策树以及朴素贝叶斯。
这方面如果需要继续深入了解~可以找找论文来看。
可以找找数据挖掘 云安全 恶意软件 这些关键字的期刊论文(英文)和学位论文。一般来说学位论文里都会对相关领域作出整体的介绍,包括研究现状和存在的问题。
我大概了解过二种提取方式,一种把病毒或木马的内存中一段特定的动作指令的数据提取出来做为特征码,这个叫数据流技术
还有一种是通过病毒和木马的行为规则来提取特征码,这是一种模糊比对方案,现在比较流行的杀毒方式都采用这种方式,可以查杀未知病毒,但这种一般属于机密。