识别恶意程序的方法及系统的制作方法

文档序号:6333035阅读:386来源:国知局
专利名称:识别恶意程序的方法及系统的制作方法
技术领域
本发明涉及信息安全领域中,尤其涉及识别恶意程序的方法及系统。
背景技术
随着计算机及互联网的快速发展,病毒、木马、蠕虫等具有恶意行为的软件(以下 统称为恶意软件)层出不穷,几乎每天都有新的病毒产生,大肆传播破坏,给广大互联网用 户造成了极大的危害,对系统安全造成了严重的威胁。因此计算机与网络的安全性日益引 起人们的普遍关注,目前为止相对应的防治策略的应用程序包括,杀毒软件、入侵检测系 统、防火墙、物理网闸等等。由于恶意软件的技术随着计算机技术的发展而不断更新,因此 呈现出数数量的与日俱增和特征的多化,并且由于不断加入了针对反恶意软件的技术的使 用,恶意软件与反恶意软件的技术进入“矛与盾”的僵持阶段,因此传统的基于特征值扫描 的反恶意软件(也叫静态程序分析)(目前恶意软件的检测率在30%左右),已经不能满足 人们对安全性的需求了,其有限的资源消耗随着恶意软件特征库规模的不断扩大而轻易占 满,使得反恶意软件系统难以进行高效,准确的运行。因此当前的防治策略转而选择动态分 析技术,以期得到较高的查杀准确度(90%以上的准确度)。相较于静态程序分析技术,动态分析技术拥有查杀准确度高、易于使用的优点。以 基于API钩子的动态分析为例来说,不论恶意软件怎么加密,加壳,最后都要进行相应的自 解密,自加壳,如果用静态分析技术,要研究相应的解密密钥,算法,或相应的解壳算法。软 件的分析复杂度都很高。与此同时,如果恶意软件进行二进制代码变形使之不在反恶意软 件的特征库中,那么基于静态分析的二进制就束手无策了。而与此相反,基于API钩子的动 态分析技术,首先等待病毒程序的自解密,自加壳。然后利用API hook原理得到系统调用 的API函数序列。无论恶意软件如何的进行二进制变形,它的API函数序列是不会变的。此 时根据此序列判断是否是恶意就显得非常的高效,而且准确度很高。实际上对于有更高要 求的用户,还可以加入API函数参数来进行恶意软件行为检测,从而得到理论上更高的查 杀准确度。进程关联歧义的定义进程关联歧义是指一个进程产生两个或两个以上的子进程 时,由于进行的子进程具有继承父进程信息的特点,因此这两个子进程继承父进程信息时 会导致的无法确定获取父进程信息中属于自己那一部分的信息。从而产生进程的歧义性。虽然动态分析技术的理念已经广泛应用与各种反恶意软件系统中,但是在实现细 节方面,仍然有很多值得深入探讨和研究的问题第一,动态分析技术可以分为“coarse-grained"(粗粒度)与“fine-grained"(细 粒度)两种策略。粗粒度是指捕获系统调用函数序列层次的动态分析技术。细粒度是指捕 获指令级序列的动态分析技术。细粒度动态分析技术由于捕获的数据量大,有NP问题从而 导致查杀准确度并不比基于粗粒度的动态分析技术来得高,甚至更低。因此人们往往使用 粗粒度的动态分析技术。但是粗粒度的动态分析技术由于仅仅是捕获系统调用,而系统调 用本身不具有恶意与否的性质,而判断的条件仅仅是基于统计学的方法,比如某一系统调用太频繁就被判断为是恶意行为。这种恶意行为表示方法无法给人带来主观上(语义层 面)的理解。造成对恶意行为的误判断(误报率很高)。如何使用语义层面的恶意行为表 示方法,并降低语义层面的表示方法的歧义性,当前还没有明确的方案。第二,动态分析技术又可以分为“ in-the-box”(系统内)与“out-of-the-box,,(系 统外)两种策略。系统内策略是指反恶意软件系统与恶意程序在同一系统环境中,即同一 系统中。而系统外的策略指是指反恶意软件系统与恶意程序不在同一系统环境中,如沙盒 方法,恶意程序在反恶意程序的系统中运行。因此系统内的策略容易受到恶意程序的干扰, 从而得到不准确的结果。而系统外程序虽然没有这种缺陷,但是由于恶意程序能很容易的 检测出是否在反恶意程序的系统中运行(真实环境与反恶意软件构造的环境差别很大), 从而导致动态分析的失败。

发明内容
为解决上述问题,本发明提供了自动实现地图注记的方法及其系统,本发明的实 现复杂度相对于现有技术较低,能够提高效率。本发明公开了一种识别恶意程序的方法,包括步骤1,获取计算机系统中所有进程的信息和进程行为,根据进程之间的父子关系 建立进程关系树,对应每个进程保存进程的信息和进程行为的列表;步骤2,将父进程的进程行为列表中的进程行为分类,按进程关系树从上到下的顺 序,依据分类将父进程信息分配到子进程;步骤3,按进程关系树和进程信息进行符号化,依据预设的恶意行为阈值判断出恶 意程序,将恶意程序在计算机系统中运行,得到用于判断恶意程序的专家系统;步骤4,当新程序进程产生时,利用专家系统判断新程序是否为恶意程序。所述步骤4还包括步骤21,当判断新程序为恶意程序时,采用阻断的方法阻止所述新程序的运行。所述步骤4还包括步骤31,当新程序被判断为恶意程序时,依据所述新程序的进程行为更新专家系 统。所述按进程关系树和进程信息进行符号化进一步为按进程关系树和进程信息将操作标记为数字,操作对象标记为对象名称的hash值。所述步骤2进一步为步骤51,将父进程的进程行为的列表中的进程行为分类,产生进程类;步骤52,将父进程的进程号与进程类作为一个单元放入一个数据结构中;步骤53,将所有单元按进程号排列,含有同一进程号的不同单元按单元中进程类 产生的先后顺序排列;步骤54,按进程关系树从上到下的顺序,将父进程的单元按子进程产生的先后顺 序分配给子进程。父进程每连接一个IP地址便产生一个子进程用来处理连接该IP地址所需要的服 务;
6
所述步骤51进一步为,步骤61,父进程的每一个IP连接对应一个进程类。所述步骤1中获取计算机系统中所有进程的信息进一步为步骤71,通过本地的获取函数地址的系统调用函数获取在远程进程中需要执行的 用于获取进程信息的函数的地址;使用建立远程线程函数启动远程线程,使远程线程执行 远程函数;通过等待线程执行结束的函数等待远程线程的结束;通过获得远程线程的退出 码函数获得远程线程的退出代码;步骤72,通过本地的获取函数地址的系统调用函数获取在远程进程中需要执行的 获得字符串长度函数的函数地址,使用建立远程线程函数启动远程线程,使远程线程执行 远程函数,通过等待线程执行结束的函数等待远程线程的结束,通过获得远程线程的退出 码函数获得远程线程的退出代码;步骤73,根据字符串返回值中已经返回值长度使用读取系统内存信息的函数得到 实际信息。所述获取计算机系统中所有进程的进程行为进一步为,步骤81,通过进程过滤驱动捕获进程创建信息;步骤82,通过文件系统过滤驱动捕获文件系统操作行为的信息;步骤83,若是在windows下,监控注册表操作行为;步骤84,使用键盘钩子捕获进程的用户操作输入信息;步骤85,通过网络过滤驱动捕获网络行为的信息。本发明公开了一种识别恶意程序的系统,包括进程树建立模块,用于获取计算机系统中所有进程的信息和进程行为,根据进程 之间的父子关系建立进程关系树,对应每个进程保存进程的信息和进程行为的列表;进程信息分配模块,用于将父进程的进程行为列表中的进程行为分类,按进程关 系树从上到下的顺序,依据分类将父进程信息分配到子进程;专家系统生成模块,用于按进程关系树和进程信息进行符号化,依据预设的恶意 行为阈值判断出恶意程序,将恶意程序在计算机系统中运行,得到用于判断恶意程序的专 家系统;恶意程序判断模块,用于当新程序进程产生时,利用专家系统判断新程序是否为 恶意程序。所述恶意程序判断模块还用于当判断新程序为恶意程序时,采用阻断的方法阻止 所述新程序的运行。所述恶意程序判断模块还用于当新程序被判断为恶意程序时,依据所述新程序的 进程行为更新专家系统。所述专家系统生成模块按进程关系树和进程信息进行符号化时进一步用于按进 程关系树和进程信息将操作标记为数字,操作对象标记为对象名称的hash值。所述进程信息分配模块进一步用于将父进程的进程行为的列表中的进程行为分 类,产生进程类;将父进程的进程号与进程类作为一个单元放入一个数据结构中;将所有 单元按进程号排列,含有同一进程号的不同单元按单元中进程类产生的先后顺序排列;按 进程关系树从上到下的顺序,将父进程的单元按子进程产生的先后顺序分配给子进程。
父进程每连接一个IP地址便产生一个子进程用来处理连接该IP地址所需要的服 务;所述进程信息分配模块在将父进程的进程行为的列表中的进程行为分类,产生进 程时进一步用于将父进程的每一个IP连接对应一个进程类。所述进程树建立模块在获取计算机系统中所有进程的信息时进一步用于通过本地的获取函数地址的系统调用函数获取在远程进程中需要执行的用于获 取进程信息的函数的地址,使用建立远程线程函数启动远程线程,使远程线程执行远程函 数,通过等待线程执行结束的函数等待远程线程的结束,通过获得远程线程的退出码函数 获得远程线程的退出代码;通过本地的获取函数地址的系统调用函数获取在远程进程中需要执行的获得字 符串长度函数的函数地址,使用建立远程线程函数启动远程线程,使远程线程执行远程函 数,通过等待线程执行结束的函数等待远程线程的结束,通过获得远程线程的退出码函数 获得远程线程的退出代码;根据字符串返回值中已经返回值长度使用读取系统内存信息的函数得到实际信 肩、ο所述进程树建立模块在获取计算机系统中所有进程的进程行为时进一步用于通 过进程过滤驱动捕获进程创建信息;通过文件系统过滤驱动捕获文件系统操作行为的信 息;若是在windows下,监控注册表操作行为;使用键盘钩子捕获进程的用户操作输入信 息;通过网络过滤驱动捕获网络行为的信息。本发明的有益效果(1)由于现有技术的恶意软件技术中,不论是静态的,还是动态的分析方法,都是 基于特征值匹配,查杀效果精确度低,误报率高,而使用本发明的进程关联与进程行为分析 技术可以建立恶意软件分析实验平台,配置好相应的专家系统,可以发现未知攻击,未知恶 意软件,或者未知漏洞;(2)计算机系统的专家系统随着时间的积累不断地更新,查杀的准确度不断地提 高,能够提高查杀准确率,降低误报率;(3)对检测信息符号化特征信息,能够提高规则匹配的速度;(4)本发明基于进程行为分析语义层面的行为表示方法,易于理解,从而可以方便 的写出判断规则;(5)本发明进程关联分析歧义解决方案易于运用到进程分析的各个方面。


图1是本发明识别恶意程序的方法的流程图;图2是本发明的获取进程信息的具体实施方式
的流程图;图3是本发明获得进程行为的具体实施方式
的流程图;图4是本发明的将父进程信息分配到子进程的具体实施方式
的流程图;图5是本发明实施例所支持的网络实验平台系统结构图;图6是系统进程关系树图;图7是本发明的实施例的识别恶意程序的中行为分析的示意图,7(a)是基于进程行为分析的病毒行为分析的示意图,7(b)是基于进程行为分析的木马行为分析的示意图;图8是本发明识别恶意程序的系统的结构图。
具体实施例方式下面结合附图对本发明的方法做进一步的说明。一种识别恶意程序的方法如图1所示。步骤S100,获取计算机系统中所有进程的信息和进程行为。进程信息的获取,使用计算机系统提供的API函数获取进程信息。或者按如图2 的方法获取进程信息。步骤SlO 1,通过本地的获取函数地址的系统调用,如GetProcAddress (基于 windows),函数获取在远程进程中需要执行的用于获取进程信息的函数的地址。步骤S102,使用建立远程线程函数,如CreateRemoteThread (基于windows),启动 远程线程,使远程线程执行远程函数。步骤S103,通过等待线程执行结束的函数,如WaitForSingleOb ject (基于 windows),等待远程线程的结束。步骤S104,通过获得远程线程的退出码函数,如GetExitCodeThread (基于 windows),获得远程线程的退出代码,也就是远程线程中远程函数的返回值。同时也是返回 值的起始地址。步骤S105,使用以上相同的方法获得字符串长度函数,如IstrlenA(基于 windows),的信息。这种信息将用于以上字符串返回值信息的获取。通过本地的获取函数地址的系统调用函数获取在远程进程中需要执行的获得字 符串长度函数的函数地址,使用建立远程线程函数启动远程线程,使远程线程执行远程函 数,通过等待线程执行结束的函数等待远程线程的结束,通过获得远程线程的退出码函数 获得远程线程的退出代码。步骤S106,根据字符串返回值已经返回值长度使用读取系统内存信息的函数,如 ReadProcessMemory (基于 windows),得至丨J实际信息。获得进程行为的方法如图3所示。步骤S110,通过进程过滤驱动捕获进程创建信息,包括创建时间,创建的进程或结 束的进程。步骤S120,通过文件系统过滤驱动捕获文件系统操作行为,文件系统操作行为的 信息包括文件系统操作的时间,具体的文件系统操作行为文件操作对象,改写文件大小。具 体的文件系统操作行为包括打开,关闭和写入信息。步骤S130,若是在windows下需要监控注册表操作行为,监控信息包括注册表操 作行为的时间,具体的注册表操作行为,键值对象等。具体的注册表操作行为包括创建,写 入,查询注册表键值的行为。步骤S140,使用键盘钩子捕获进程的用户操作输入信息。步骤S150,通过网络过滤驱动捕获网络行为的信息,包括连接远程Ip地址的时 间,连接的远程Ip地址,发送的数据信息。步骤S200,根据进程之间的关系,建立进程关系树,对每个进程都保存一个进程行为列表以及进程的信息。进程包括父进程和子进程。其中,关系主要指父子进程关系,比如一个进程通过CreateProcess或Fork函数 创建一个进程,被创建的函数就是创建函数的子进程。进程的信息包括进程ID,父亲进程ID,会话ID,优先级、拥有的线程,用户ID,句 柄,进程内存计数器,进程路径,进程命令行参数,进程名称,进程创建者,创建时间,退出时 间,内核时间,用户时间中的一个或多个。步骤S300,将父进程的进程行为列表中的进程行为分类,按进程关系树从上到下 的顺序,依据分类将父进程信息分配到子进程。采用该步骤使进程信息更加的全面。对于进程的信息,由于子进程继承时是无条件完全继承,不具有歧义性,因此不做 歧义性处理,而对于进程行为列表,则进行如下步骤的去歧义过程。本发明的将父进程信息分配到子进程的具体实施方式
的流程如图4所示。步骤S301,将父进程进程行为列表中的进程行为进行分类。例如,如果父进程每连接一个IP地址就产生一个子进程用来处理连接此远程IP 地址所需要的服务,则按连接行为的产生进行分类,父进程的每一个连接对应一个进程类。 进程类包括进程连接产生的网络行为。步骤S302,将该父进程的进程号与进程类作为一个单元放入一个数据结构中。进程类包含进程连接信息,例如包括远程ip地址,本地Ip地址,远程端口号,本地 端口号,连接类型,以及基于此连接的网络应用层行为。步骤S303,将所有单元按进程号排列,含有同一进程号的不同单元按单元中类产 生的先后顺序排列。步骤S304,按照进程关系树,将单元按子进程产生的先后顺序分配给子进程。步骤S400,按完整的进程关系树以及进程信息进行符号化,按一定的恶意行为阈 值来判断出恶意程序。符号化指的是将一个字符串用一个简要的字符或数字来表示,以提高计算机的处
理速度。进一步的,按进程关系树和进程信息将操作标记为数字,操作对象标记为对象名 称的hash值。按完整的进程关系树以及进程信息进行符号化,比如将文件打开、写入、关闭分别 标记为1、2、3。文件操作对象标记为文件名的hash值等。将所有的字符信息转化为数字型 表示法,以利于高效的处理系统。步骤S500,将训练集即恶意软件放到以上系统中运行,得到一个判断恶意软件的 知识库,或者称为专家系统。专家系统的建立,可以是机器学习的得到的结果,也可以是规则的建立,还可以是 特征库的建立,甚至是自动机的建立等通过训练集来产生的专家知识库。步骤S600,当一个新的恶意程序进程产生时,根据专家系统判断是否是恶意程序。专家系统的判断可以是分类器,规则匹配,特征库匹配等的方法判断分类规则。若是采用阻断的方法阻止程序的运行。
当程序被判断为恶意程序时,按此程序的行为自动更新专家系统(也可进行手动 更新)从而保证专家系统的查杀准确度越来越高。从而考虑了人机交互或是机器自行为相 关反馈来不断地学习专家系统,从而不断提高系统查杀的精确度。判断一个恶意程序,是通过将程序运行,此时以进程的形式展现在系统中,当此程 序构根据专家系统判断为是恶意行为时,则采取相应的阻断措施。实施例应用于中国科学院计算技术研究所网络重点实验室的网络靶场实验平台中。本专利所提出的进程关联与进程行为分析方法的应用场景包括,基于动态分析技 术的杀毒软件,包括系统内与系统外;基于主机的入侵检测系统;基于网络的入侵检测系 统;防火墙;网络实验平台。图5是本发明在网络实验平台系统上的实施例。相对于传统的反恶意软件的的基 于特征值的模式,进程关联与进程行为分析可以运行在分布式系统上,并且可以人工定义 恶意行为阈值以及相应值。具有发现未知攻击、漏洞、恶意软件等多方式综合检测能力。。在网络实验平台系统上的单独的主机系统中,一个恶意程序的运行会以进程的形 式存在于系统中,作为程序运行的基本单位。每个进程都有一个唯一的进程标识符,而每个 进程都有一个唯一的创建此进程的进程称为父进程。通过父子进程关系可以得到一个进程 关系树。如图6所示。系统中所有的进程都是由进程0 (system process)及其子进程派发。因此可以把 0号进程称为根进程。根据进程关系可知,当一个连接产生时,系统依次新建1688号进程 (Tlntsess. exe)用于连接远程地址。而1688号进程又产生4092号进程(cmd. exe)用于处 理远程用户的命令行操作。命令行操作行为也可以通过进程关系获得。比如ping,命令产 生“ping, exe”进程、netstat命令产生“netstat. exe”进程。它们都是4092号进程的子 进程。如图6所示,以这种取进程的方式获得用户行为操作,可以确保捕获完整的用户行为 操作。识别恶意程序的过程执行以下步骤。1、根据遍历得到的进程ID号,获取进程对应的详细信息。2、根据进程之间的创建与被创建之间的关系,建立进程关系树。每个进程都保存 一个进程行为列表以及进程的详细信息数据结构。3、按进程关系树从上到下,将父进程信息分配到子进程。从而使进程信息更加的 全面。4、按完整的进程关系树以及进程信息进行符号化,将所有的字符型数据转化为整 形。5、使用恶意软件训练集得到一个专家系统。6、当一个新的进程产生时,根据专家系统判断是否是恶意的,若是则采用阻断的 方法阻止程序的运行。7、当程序被判断为恶意程序时,按此程序的行为自动更新专家系统(也可进行手 动更新)。基于windows的进程信息获取更具体的实施方式介绍。包括以下步骤。1、通过本地的获取函数地址的系统调用GetProcAddress函数获取需要在远程进程中需要执行的获取进程信息的函数的地址。2、使用建立远程线程函数CreateRemoteThread来启动远程线程,让远程线程执 行远程函数。3、通过等待线程执行结束的函数如WaitForSingleObject来等待远程线程的结
束ο4、通过获得远程线程的退出码函数如=GetExitCodeThread来获得远程线程的退 出代码,也就是远程线程中远程函数的返回值。同时也是返回值的起始地址。5、使用以上相同的方法获得字符串长度函数IstrlenA的信息。这种信息将用于 以上字符串返回值信息的获取。6、根据字符串返回值已经返回值长度使用读取系统内存信息的函数如 ReadProcessMemory来得到实际信息。基于windows的进程行为列表获取包括以下步骤。1、通过进程过滤驱动捕获进行创建信息,包括时间,创建或结束、进程对象。2、通过文件系统过滤驱动捕获文件系统操作行为,包括时间,具体的文件系统操 作行为,例如打开,关闭或写入,文件操作对象,文件大小等。3、监控注册表操作行为,包括如时间,注册表操作行为,例如创建,写入或查询,键 值对象等。4、使用键盘钩子捕获进程的用户操作输入信息,包括字符串信息。5、通过网络过滤驱动捕获网络行为,包括时间,连接远程Ip地址,发送的数据。将父进程信息分配到子进程包括以下步骤。1、将进程行为列表中的进程行为进行分类,进程的每一个连接表示一个类。2、将进程号与进程类作为一个单元放入一个数据结构中。3、将所有单元按进程号排列,含有同一进程号的不同单元按单元中类产生的先后 顺序排列。4、按照进程关系树,将单元按子进程产生的先后顺序分配给子进程。图7是本发明实施例所支持的进程行为分析图。图7(a)表示基于进程行为分析的病毒行为分析,候选病毒进程是由操作系统运 行fork函数而触发的,接着病毒会不停的读写文件,将这种行为做标记,包括行为定义标 记,文件名标记,后缀名标记。最后表示成一个行为标识,通过专家系统判断这种行为是否
眉、ο图7(b)表示基于进程行为分析的木马行为分析;候选木马进程与远程地址建立 连接,并应用fork函数fork —个进程来,出来执行远程用户的命令或监视键盘信息。本专 利将所有这些行为都记录下来标记为一个行为用专家系统来判断。本发明一种识别恶意程序的系统如图8所示。进程树建立模块100,用于获取计算机系统中所有进程的信息和进程行为,根据进 程之间的父子关系建立进程关系树,对应每个进程保存进程的信息和进程行为的列表。在一具体实施方式
中,进程树建立模块100在获取计算机系统中所有进程的信息 时进一步用于通过本地的获取函数地址的系统调用函数获取在远程进程中需要执行的用于获取进程信息的函数的地址,使用建立远程线程函数启动远程线程,使远程线程执行远程函 数,通过等待线程执行结束的函数等待远程线程的结束,通过获得远程线程的退出码函数 获得远程线程的退出代码;通过本地的获取函数地址的系统调用函数获取在远程进程中需要执行的获得字 符串长度函数的函数地址,使用建立远程线程函数启动远程线程,使远程线程执行远程函 数,通过等待线程执行结束的函数等待远程线程的结束,通过获得远程线程的退出码函数 获得远程线程的退出代码;根据字符串返回值中已经返回值长度使用读取系统内存信息的函数得到实际信 肩、ο在一具体实施方式
中,进程树建立模块100在获取计算机系统中所有进程的进程 行为时进一步用于通过进程过滤驱动捕获进程创建信息;通过文件系统过滤驱动捕获文件 系统操作行为的信息;若是在windows下,监控注册表操作行为;使用键盘钩子捕获进程的 用户操作输入信息;通过网络过滤驱动捕获网络行为的信息。进程信息分配模块200,用于将父进程的进程行为列表中的进程行为分类,按进程 关系树从上到下的顺序,依据分类将父进程信息分配到子进程。在一具体实施方式
中,进程信息分配模块200进一步用于将父进程的进程行为的 列表中的进程行为分类,产生进程类;将父进程的进程号与进程类作为一个单元放入一个 数据结构中;将所有单元按进程号排列,含有同一进程号的不同单元按单元中进程类产生 的先后顺序排列;按进程关系树从上到下的顺序,将父进程的单元按子进程产生的先后顺 序分配给子进程。进一步实施例中,父进程每连接一个IP地址便产生一个子进程用来处理连接该 IP地址所需要的服务;进程信息分配模块200在将父进程的进程行为的列表中的进程行为 分类,产生进程时进一步用于将父进程的每一个IP连接对应一个进程类。专家系统生成模块300,用于按进程关系树和进程信息进行符号化,依据预设的恶 意行为阈值判断出恶意程序,将恶意程序在计算机系统中运行,得到用于判断恶意程序的 专家系统。在一具体实施方式
中,专家系统生成模块300按进程关系树和进程信息进行符号 化时进一步用于按进程关系树和进程信息将操作标记为数字,操作对象标记为对象名称的 hash 值。恶意程序判断模块400,用于当新程序进程产生时,利用专家系统判断新程序是否 为恶意程序。在进一步优选的实施方式中,恶意程序判断模块400还用于当判断新程序为恶意 程序时,采用阻断的方法阻止所述新程序的运行。在进一步优选的实施方式中,恶意程序判断模块400还用于当新程序被判断为恶 意程序时,依据所述新程序的进程行为更新专家系统。本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还 可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由 权利要求书的范围来确定的。
权利要求
一种识别恶意程序的方法,其特征在于,包括步骤1,获取计算机系统中所有进程的信息和进程行为,根据进程之间的父子关系建立进程关系树,对应每个进程保存进程的信息和进程行为的列表;步骤2,将父进程的进程行为列表中的进程行为分类,按进程关系树从上到下的顺序,依据分类将父进程信息分配到子进程;步骤3,按进程关系树和进程信息进行符号化,依据预设的恶意行为阈值判断出恶意程序,将恶意程序在计算机系统中运行,得到用于判断恶意程序的专家系统;步骤4,当新程序进程产生时,利用专家系统判断新程序是否为恶意程序。
2.如权利要求1所述的识别恶意程序的方法,其特征在于, 所述步骤4还包括步骤21,当判断新程序为恶意程序时,采用阻断的方法阻止所述新程序的运行。
3.如权利要求1所述的识别恶意程序的方法,其特征在于, 所述步骤4还包括步骤31,当新程序被判断为恶意程序时,依据所述新程序的进程行为更新专家系统。
4.如权利要求1所述的识别恶意程序的方法,其特征在于, 所述按进程关系树和进程信息进行符号化进一步为按进程关系树和进程信息将操作标记为数字,操作对象标记为对象名称的hash值。
5.如权利要求1所述的识别恶意程序的方法,其特征在于, 所述步骤2进一步为步骤51,将父进程的进程行为的列表中的进程行为分类,产生进程类; 步骤52,将父进程的进程号与进程类作为一个单元放入一个数据结构中; 步骤53,将所有单元按进程号排列,含有同一进程号的不同单元按单元中进程类产生 的先后顺序排列;步骤54,按进程关系树从上到下的顺序,将父进程的单元按子进程产生的先后顺序分 配给子进程。
6.如权利要求5所述的识别恶意程序的方法,其特征在于,父进程每连接一个IP地址便产生一个子进程用来处理连接该IP地址所需要的服务; 所述步骤51进一步为,步骤61,父进程的每一个IP连接对应一个进程类。
7.如权利要求1所述的识别恶意程序的方法,其特征在于, 所述步骤1中获取计算机系统中所有进程的信息进一步为步骤71,通过本地的获取函数地址的系统调用函数获取在远程进程中需要执行的用于 获取进程信息的函数的地址;使用建立远程线程函数启动远程线程,使远程线程执行远程 函数;通过等待线程执行结束的函数等待远程线程的结束;通过获得远程线程的退出码函 数获得远程线程的退出代码;步骤72,通过本地的获取函数地址的系统调用函数获取在远程进程中需要执行的获得 字符串长度函数的函数地址,使用建立远程线程函数启动远程线程,使远程线程执行远程 函数,通过等待线程执行结束的函数等待远程线程的结束,通过获得远程线程的退出码函 数获得远程线程的退出代码;步骤73,根据字符串返回值中已经返回值长度使用读取系统内存信息的函数得到实际 fn息ο
8.如权利要求1所述的识别恶意程序的方法,其特征在于, 所述获取计算机系统中所有进程的进程行为进一步为, 步骤81,通过进程过滤驱动捕获进程创建信息;步骤82,通过文件系统过滤驱动捕获文件系统操作行为的信息; 步骤83,若是在windows下,监控注册表操作行为; 步骤84,使用键盘钩子捕获进程的用户操作输入信息; 步骤85,通过网络过滤驱动捕获网络行为的信息。
9.一种识别恶意程序的系统,其特征在于,包括进程树建立模块,用于获取计算机系统中所有进程的信息和进程行为,根据进程之间 的父子关系建立进程关系树,对应每个进程保存进程的信息和进程行为的列表;进程信息分配模块,用于将父进程的进程行为列表中的进程行为分类,按进程关系树 从上到下的顺序,依据分类将父进程信息分配到子进程;专家系统生成模块,用于按进程关系树和进程信息进行符号化,依据预设的恶意行为 阈值判断出恶意程序,将恶意程序在计算机系统中运行,得到用于判断恶意程序的专家系 统;恶意程序判断模块,用于当新程序进程产生时,利用专家系统判断新程序是否为恶意 程序。
10.如权利要求9所述的识别恶意程序的系统,其特征在于,所述恶意程序判断模块还用于当判断新程序为恶意程序时,采用阻断的方法阻止所述 新程序的运行。
11.如权利要求9所述的识别恶意程序的系统,其特征在于,所述恶意程序判断模块还用于当新程序被判断为恶意程序时,依据所述新程序的进程 行为更新专家系统。
12.如权利要求9所述的识别恶意程序的系统,其特征在于,所述专家系统生成模块按进程关系树和进程信息进行符号化时进一步用于按进程关 系树和进程信息将操作标记为数字,操作对象标记为对象名称的hash值。
13.如权利要求9所述的识别恶意程序的系统,其特征在于,所述进程信息分配模块进一步用于将父进程的进程行为的列表中的进程行为分类,产 生进程类;将父进程的进程号与进程类作为一个单元放入一个数据结构中;将所有单元按 进程号排列,含有同一进程号的不同单元按单元中进程类产生的先后顺序排列;按进程关 系树从上到下的顺序,将父进程的单元按子进程产生的先后顺序分配给子进程。
14.如权利要求13所述的识别恶意程序的系统,其特征在于,父进程每连接一个IP地址便产生一个子进程用来处理连接该IP地址所需要的服务; 所述进程信息分配模块在将父进程的进程行为的列表中的进程行为分类,产生进程时 进一步用于将父进程的每一个IP连接对应一个进程类。
15.如权利要求9所述的识别恶意程序的系统,其特征在于,所述进程树建立模块在获取计算机系统中所有进程的信息时进一步用于通过本地的获取函数地址的系统调用函数获取在远程进程中需要执行的用于获取进 程信息的函数的地址,使用建立远程线程函数启动远程线程,使远程线程执行远程函数,通 过等待线程执行结束的函数等待远程线程的结束,通过获得远程线程的退出码函数获得远 程线程的退出代码;通过本地的获取函数地址的系统调用函数获取在远程进程中需要执行的获得字符串 长度函数的函数地址,使用建立远程线程函数启动远程线程,使远程线程执行远程函数,通 过等待线程执行结束的函数等待远程线程的结束,通过获得远程线程的退出码函数获得远 程线程的退出代码;根据字符串返回值中已经返回值长度使用读取系统内存信息的函数得到实际信息。
16.如权利要求9所述的识别恶意程序的系统,其特征在于,所述进程树建立模块在获取计算机系统中所有进程的进程行为时进一步用于通过进 程过滤驱动捕获进程创建信息;通过文件系统过滤驱动捕获文件系统操作行为的信息;若 是在windows下,监控注册表操作行为;使用键盘钩子捕获进程的用户操作输入信息;通过 网络过滤驱动捕获网络行为的信息。
全文摘要
本发明一种识别恶意程序的方法和系统,方法包括步骤1,获取计算机系统中所有进程的信息和进程行为,根据进程之间的父子关系建立进程关系树,对应每个进程保存进程的信息和进程行为的列表;步骤2,将父进程的进程行为列表中的进程行为分类,按进程关系树从上到下的顺序,依据分类将父进程信息分配到子进程;步骤3,按进程关系树和进程信息进行符号化,依据预设的恶意行为阈值判断出恶意程序,将恶意程序在计算机系统中运行,得到用于判断恶意程序的专家系统;步骤4,当新程序进程产生时,利用专家系统判断新程序是否为恶意程序。本发明的实现复杂度相对于现有技术较低,能够提高效率。
文档编号G06F21/00GK101944167SQ201010297048
公开日2011年1月12日 申请日期2010年9月29日 优先权日2010年9月29日
发明者余智华, 刘悦, 李金明, 林思明, 林游龙, 王元卓, 程学旗 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1