基于行为轨迹的特征码检测方法.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于行为轨迹的特征码检测方法 0 静态行为轨迹检测 2016年,360互联安全中心发布了2015年中国互联安全报告。 目前恶意代码的检测可以分为静态和动态两种方法 动态方法主要通过跟踪代码运行时的行为轨迹来判断是否是恶意代码。王蕊等人 针对上述检测方法的不足, 本文提出一种基于静态行为轨迹的恶意代码检测技术, 通过IDA Pro反编译工具, 提取出二进制代码的函数调用关系图, 再利用变长的n-gram算法对已经获得的系统调用序列进行分片, 从而获得恶意代码特征库, 最后利用分片技术与判决阈值构建匹配模型, 检测恶意样本。与传统的方法相比, 该方法具有效率高且能够识别未知的恶意代码的优点。 1 反汇编提取特征 任何程序的运行, 在内核级都是通过系统调用体现的。程序运行后会留下运行的轨迹是时序关系的系统调用序列, 即行为轨迹。 对恶意代码的静态检测方法大部分是基于字节序列的特征码检测, 这种方式数据量大, 特征复杂且不确定性很高, 在一定程度上会将正常程序的特征送入特征库中。本文利用IDA Pro将正常样本与恶意样本进行反汇编处理, 通过Hex-rays插件对生成的汇编代码进行反编译处理, 得到每个样本的类C代码, 然后通过Graphviz得到函数调用关系图 (API graph) , 如图1所示。APIG可以拆分出若干路径, 每一个路径实际上就是程序在实际运行时一条可能执行的轨迹, 称这条轨迹就是一条程序的静态行为轨迹。 定义1静态行为轨迹 (static behavior trajectories) 。用来表征程序执行过程的函数调用关系图中的函数调用序列被称为静态行为轨迹。即SBT= (S 定义2轨迹段。存在SBT= (S 2 资源提取 定义3特征 (static signature) 。用于表征程序执行过程中特定行为的轨迹段, 并且可以判断程序的行为是否具有恶意性。 2.1 n-gram算法 n-gram是自然语言处理的一种模型, 该模型基于这样一种假设 例如文献[14], 一段二进制序列可以由n个字节的二进制码组成, 即S= (b 但是n-gram也有其自身的缺陷, 首先n-gram难以获得不同长度的序列特征, 如果一条APIG中有多个序列特征但是不等长, 或者不是n的整数倍时, 则会产生错误的匹配, 造成有效的特征片段丢失或出现异常;另外n-gram会产生庞大的特征库, 造成巨大空间消耗, 同时也降低了匹配效率。本文在提取特征时以API函数作为特征的基本组成单元, 并将系统的API函数与整数一一对应, 与基于字节序列的异常检测相比, 可以极大地减少特征的存储空间, 提高匹配效率。 2.2 特征序列筛选 变长n-gram与n-gram的区别在于, 它的长度是可变的, 可以提取出一串不定长且有效的特征序列, 在一定程度上避免了若干个有意义的特征序列被分离的可能。为了寻找有意义的子序列, 必须在原始的序列中设置断点, 两个相邻断点之间的连续序列就是需要寻找的可能的特征序列。本文则采用Cohen等人 专家投票算法有两个属性值。一个是边界熵属性, 每一个单独的序列特征都会按照它的子序列进行分配, 例如子序列“en”在一段话中出现了7次, 而跟在“en”之后的有“c”“t”等分别出现了不同的次数 (7) , 此时就可以算出“en”在这段话中的边界熵值, xi表示以“en”为开始的所有子序列。如果边界熵越大, 说明序列之后是断点的可能性越大。另一个是频率属性。如果一段话中不同子序列出现的频率越高, 说明这个子序列是一个单词 (特征) 的可能性越大;反之其中包含断点的可能性则越小。在滑动窗口内求得每一个位置的频率和边界熵后, 将频率和边界熵最大的两个位置分数加1。最后, 根据每个位置所得到的分数来判断可能的断点, 而两个相邻断点之间的序列就是本文需要提取的特征。 2.3 子节点检出限点的确定 构造一个d=n+1的Trie树实现专家投票算法, 其中d代表树的深度, 以长度n为窗口依次从左至右读取子序列, 并将读取的子序列按单元依次插入Trie树中, 如图2所示。如果单元在Trie树中不存在, 则将其频率置1;否则频率加1。本文中取d=4。 假设有一段英文序列“a b c a b d”, 它所生产的Trie树如图2所示。 在这个结构中, 字母右边括号内的数字代表其出现的次数。例如左边叶子节点中的c (1) , 表示序列“a|b|c|”出现了一次, 父节点b (2) 表示序列ab出现了两次。在寻找断点时, 窗口按顺序滑过序列, 首先经过“a|b|c|”, a与b之间为第一个可能的断点, 分别计算此断点的频率和熵。 定义4频率。每个位置的频率是该位置在窗口内前后两个序列的频率之和, 如f (a) =f (a) +f (bs) 。其中f (bc

文档评论(0)

lgjllzx + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档