• 学前教育
  • 小学学习
  • 初中学习
  • 高中学习
  • 语文学习
  • 数学学习
  • 英语学习
  • 作文范文
  • 文科资料
  • 理科资料
  • 文档大全
  • 当前位置: 雅意学习网 > 高中学习 > 正文

    恶意代码多种运行分支的探索_恶意代码是运行在你的机器上

    时间:2019-01-28 03:18:14 来源:雅意学习网 本文已影响 雅意学习网手机站

      摘要:传统的恶意代码检测工具一般都是基于恶意代码的单次执行,但是有些恶意的活动只是在一些特定的环境下才能被触发。本文提出了一个探索多种运行分支的方法,这个方法不但能发现传统恶意代码能检测出来的运行分支,还能识别只在遇到某种特定环境才会触发的恶意行为。
      关键词:恶意代码
      快照
      恶意行为
      
      恶意代码,是所有带有恶意的各类代码的通称(比如病毒、蠕虫、特洛伊木马)。恶意代码不仅仅对电脑用户的隐私构成威胁,它还能造成电脑用户巨额的经济损失。这个问题的严重性已经使非计算机专业的人都知道了CodeRed(红色代码)或者Sasser(震荡波),这是因为安全问题已经影响到了几百万人,而且还成为了主流新闻。
      
      一、传统恶意代码的检测方法和缺陷
      
      恶意代码检测的传统方法是在一个在虚拟的计算机环境下运行这个程序,当程序运行时跟操作系统之间的活动都会被记录下来,同时还记录哪些系统调用和参数被使用。然后自动报告这个程序已经创建或访问过的系统资源,如文件或者注册表项。但是,传统的分析系统有一个很严重的缺陷:它们仅仅是基于单次跟踪执行的,也就是说,它们的报告只能显示这个软件在特定的测试环境下一段时期内被发现的活动,因此,这个方法有可能不会知道在改变了的环境中会有那些行为。
      
      二、解决传统恶意代码检测缺陷的方法
      
      为了解决这个问题,就需要扩大测试范围。在不同的环境中运行程序,或者使用不同的操作系统版本、安装不同的软件和不同的时间设置。这就需要以下两个主要步骤:第一,需要追踪程序怎么使用输入的数据。第二,当找到一个重要的分支点,需要保存当前的程序状态并且能在将来重新载入这个状态,以便于执行另外一条分支。
      1,跟踪输入的数据
      在传统的基于Taint模式的系统中,通过输入一两个值就能很容易的知道某个内存地址。要想获得这个信息,需要依赖三个因素:一个污点源、一个影像存储器和传播Taint信息的机器指令扩展。
      可以依赖传统的污点系统来追踪程序读入的数据。我们使用很多系统准备读入的并且作了标签的污点源,同时还用影像存储器来跟踪被指定到每一个内存地址的当前标签。当系统调用被程序使用,我们就可以为每一个收到结果的内存地址指定一个标签。
      2,保存和重新载入程序快照
      存储输入信息的每一个内存地址都会附上一个标签,约束系统可以知道具有不同标签的值之间是怎么联系的。基于这些信息,我们就呵以探索程序的多个运行分支了,肖一个分支被识别,就可以创建当前程序状态的快照。
      当前运行状态的快照包含了使用中的完整的虚拟地址空间内容。程序被允许继续执行以前,还必须保证条件运算本身也被考虑到了,原因是在实际中,无论那条分支被执行,条件运算在一系列可能的标签参数的值中执行了一个约束。我们把这个约束称为分支约束。当标签的值被重写的时候必须考虑和记着这个分支约束。否则,我们可能创建一个不统一的状态或者运行到一个不可能的分支。当if分支执行的时候,条件被直接使用与分支约束。否则,当else分支被执行,约束条件在被加到约束系统之前必须被重置。
      当程序状态被重载的时候,需要载入以前保存的内容,这些内容包括程序的地址空间和用存储的值覆盖当前的值。这样我们就可以发现恶意代码的程序分支。接着,我们就可以检测约束系统来确定在哪种情况下这个分支被执行。
      
      三、结论
      
      本文讨论了一个探索恶意代码多运行分支的方法,目的就是对未知的程序可能执行的动作做一个更综合的概述。
      我们可以通过追踪程序输入的数据(如本地时间、文件检查和从网络上读取资料等)来对程序的条件分支进行动态的分析。当程序沿着一个分支执行时,就对当前状态创建一个快照,当程序随后结束时,我们就重置回先前所保存的那个状态并且修改条件的参数,使另外的分支被执行。

    推荐访问:分支 恶意代码 多种 探索

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章