发明名称 一种恶意软件行为特征标识方法
摘要 本发明公开了一种恶意软件行为特征标识方法,通过沙盒或者其他分析工具获取带有时间戳的恶意软件的一个或者多个行为序列,对这些行为序列按照时间戳进行排序,并组合为当前行为序列;分析当前行为序列中可能出现的行为特征的上限;选择是否需要使用可视的单字节字符;根据行为特征的上限值和是否需要可视字符的要求,构建行为特征编码表;根据编码表,将当前行为序列转换为单字节字符序列或者多字节字符序列;对单字节字符序列或者多字节字符序列进行对数级的高重复度压缩。本发明的方法能够在不失去行为序列具有的分析价值前提下,降低运算代价和存储代价,提高或者保持恶意软件不同变种间行为序列的相似性。
申请公布号 CN103065093B 申请公布日期 2014.09.17
申请号 CN201210579642.2 申请日期 2012.12.27
申请人 中国人民解放军国防科学技术大学 发明人 杨岳湘;乔勇;曾迎之;唐川;叶昭晖;李强
分类号 G06F21/56(2013.01)I 主分类号 G06F21/56(2013.01)I
代理机构 长沙正奇专利事务所有限责任公司 43113 代理人 马强
主权项 一种恶意软件行为特征标识方法,其特征在于,该方法的步骤为:1)通过分析工具获取带有时间戳的恶意软件的一个或者多个行为序列,其中恶意软件的每个进程对应一个行为序列,对所述行为序列按照时间戳进行排序,组合为当前行为序列;2)分析当前行为序列中可能出现的行为特征的上限,此处的行为特征表示所述当前行为序列中描述一个特定系统行为的标识对象,设定所述行为特征上限值为UpFeatures;3)设定布尔变量为IsVisible,选择是否需要使用可视的单字节字符,所述的可视的单字节字符是指ASCII码表中从33到126之间的可以被屏幕显示的字符,不包含控制字符;4)根据UpFeatures和IsVisible的赋值,构建行为特征编码表;5)根据行为特征编码表,将原有文本格式或者XML格式的行为序列编码为单字节字符序列或者多字节字符序列,从而有效减小当前行为序列的存储代价和作为机器学习方法的输入参数时带来的运算代价;6)计算连续重复度L:在一个单字节字符序列或者多字节字符序列中,定义每一个字符为一个特征,如果一个特征在所述单字节字符序列或者多字节字符序列中连续出现的次数大于1,则认为所述特征存在连续重复度,其中连续出现的次数即为连续重复度L;7)设定重复度压缩起始值StartNum;8)如果L&gt;=StartNum,则进入步骤9),否则,所述单字节字符序列或者多字节字符序列长度保持不变;9)对所述单字节字符序列或者多字节字符序列进行对数级重复度压缩,从而提高或者保持恶意软件不同变种间行为序列的相似性;所述步骤1)中,对所述序列按照时间戳进行排序时,满足以下规则:1)同一进程的行为序列按时间顺序排列,越早调用的行为特征位置越靠前;2)在合并后的总序列中,不同进程的行为序列不交叉,把每个行为序列当做一个整体放入总序列;3)总序列中,不同进程对应的行为序列顺序按照每一个进程对应的第一个行为特征所发生的时间点进行排序,最早调用的进程排在最前面;所述步骤4)中:1)在构建行为特征编码表的过程中,如果IsVisible为TRUE,则表示编码表全部采用可视单字节字符,根据以下规则构建行为特征编码表:当UpFeatures&lt;=94时,在ASCII码表的33到126之间任意选择UpFeatures个不同的ASCII字符来与行为特征一一对应构成编码表,其中33和126均为十进制;当UpFeatures&gt;94时,一个行为特征不能只用一个单字节字符表示,需要2个或者多个字符来表示,字符个数最小值N通过如下公式计算:94<sup>N‑1</sup>&lt;UpFeatures&lt;=94<sup>N</sup>;得到N值后,利用N个单字节字符表示一个行为特征,构建编码表;2)在构建行为特征编码表的过程中,如果IsVisible为FALSE,则表示编码表可不全部采用可视单字节字符,此时一个字节可以独立的对应2<sup>8</sup>=256个行为特征,构建行为特征编码表的规则为:当UpFeatures&lt;=256时,则在0到255之间随机的选取UpFeatures个数值来对应行为特征,此时表示0到255的数值采用十六进制形式来构建行为特征编码表;当UpFeatures&gt;256时,一个行为特征不能只用一个字节的字符表示,需要2个或者多个字节的字符来表示,最小字节数N通过如下公式计算:256<sup>N‑1</sup>&lt;UpFeatures&lt;=256<sup>N</sup>  (2)得到N值后,利用2N个十六进制字符来表示一个行为特征,构建行为特征编码表;所述步骤9)中,利用如下公式对所述单字节字符序列或者多字节字符序列进行对数级重复度压缩:newL=StartNum+β*Round(log<sub>α</sub>(L‑StartNum),其中,β为扩展系数,α为压缩系数,newL表示所述单字节字符序列或者多字节字符序列被压缩后的长度,Round()函数表示对括号中的值进行四舍五入,L为连续重复度,StartNum为重复度压缩起始值,如果L&gt;=StartNum,则启动压缩,否则,所述单字节字符序列或者多字节字符序列长度保持不变。
地址 410073 湖南省长沙市开福区砚瓦池正街47号