CN101944167B - 识别恶意程序的方法及系统 - Google Patents
识别恶意程序的方法及系统 Download PDFInfo
- Publication number
- CN101944167B CN101944167B CN2010102970485A CN201010297048A CN101944167B CN 101944167 B CN101944167 B CN 101944167B CN 2010102970485 A CN2010102970485 A CN 2010102970485A CN 201010297048 A CN201010297048 A CN 201010297048A CN 101944167 B CN101944167 B CN 101944167B
- Authority
- CN
- China
- Prior art keywords
- function
- behavior
- information
- rogue program
- remote
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明一种识别恶意程序的方法和系统,方法包括:步骤1,获取计算机系统中所有进程的信息和进程行为,根据进程之间的父子关系建立进程关系树,对应每个进程保存进程的信息和进程行为的列表;步骤2,将父进程的进程行为列表中的进程行为分类,按进程关系树从上到下的顺序,依据分类将父进程信息分配到子进程;步骤3,按进程关系树和进程信息进行符号化,依据预设的恶意行为阈值判断出恶意程序,将恶意程序在计算机系统中运行,得到用于判断恶意程序的专家系统;步骤4,当新程序进程产生时,利用专家系统判断新程序是否为恶意程序。本发明的实现复杂度相对于现有技术较低,能够提高效率。
Description
技术领域
本发明涉及信息安全领域中,尤其涉及识别恶意程序的方法及系统。
背景技术
随着计算机及互联网的快速发展,病毒、木马、蠕虫等具有恶意行为的软件(以下统称为恶意软件)层出不穷,几乎每天都有新的病毒产生,大肆传播破坏,给广大互联网用户造成了极大的危害,对系统安全造成了严重的威胁。因此计算机与网络的安全性日益引起人们的普遍关注,目前为止相对应的防治策略的应用程序包括,杀毒软件、入侵检测系统、防火墙、物理网闸等等。由于恶意软件的技术随着计算机技术的发展而不断更新,因此呈现出数数量的与日俱增和特征的多化,并且由于不断加入了针对反恶意软件的技术的使用,恶意软件与反恶意软件的技术进入“矛与盾”的僵持阶段,因此传统的基于特征值扫描的反恶意软件(也叫静态程序分析)(目前恶意软件的检测率在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地址所需要的服务;
所述步骤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的方法获取进程信息。
步骤S101,通过本地的获取函数地址的系统调用,如GetProcAddress(基于windows),函数获取在远程进程中需要执行的用于获取进程信息的函数的地址。
步骤S102,使用建立远程线程函数,如CreateRemoteThread(基于windows),启动远程线程,使远程线程执行远程函数。
步骤S103,通过等待线程执行结束的函数,如WaitForSingleObject(基于windows),等待远程线程的结束。
步骤S104,通过获得远程线程的退出码函数,如GetExitCodeThread(基于windows),获得远程线程的退出代码,也就是远程线程中远程函数的返回值。同时也是返回值的起始地址。
步骤S105,使用以上相同的方法获得字符串长度函数,如lstrlenA(基于windows),的信息。这种信息将用于以上字符串返回值信息的获取。
通过本地的获取函数地址的系统调用函数获取在远程进程中需要执行的获得字符串长度函数的函数地址,使用建立远程线程函数启动远程线程,使远程线程执行远程函数,通过等待线程执行结束的函数等待远程线程的结束,通过获得远程线程的退出码函数获得远程线程的退出代码。
步骤S106,根据字符串返回值已经返回值长度使用读取系统内存信息的函数,如ReadProcessMemory(基于windows),得到实际信息。
获得进程行为的方法如图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、使用以上相同的方法获得字符串长度函数lstrlenA的信息。这种信息将用于以上字符串返回值信息的获取。
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还用于当新程序被判断为恶意程序时,依据所述新程序的进程行为更新专家系统。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。
Claims (12)
1.一种识别恶意程序的方法,其特征在于,包括:
步骤1,获取计算机系统中所有进程的信息和进程行为,根据进程之间的父子关系建立进程关系树,对应每个进程保存进程的信息和进程行为的列表;
步骤2,将父进程的进程行为列表中的进程行为分类,按进程关系树从上到下的顺序,依据分类将父进程信息分配到子进程;
步骤3,按进程关系树和进程信息进行符号化,依据预设的恶意行为阈值判断出恶意程序,将恶意程序在计算机系统中运行,得到用于判断恶意程序的专家系统;
步骤4,当新程序进程产生时,利用专家系统判断新程序是否为恶意程序;
所述按进程关系树和进程信息进行符号化进一步为:
按进程关系树和进程信息将操作标记为数字,操作对象标记为对象名称的hash值;
所述步骤2进一步为:
步骤51,将父进程的进程行为的列表中的进程行为分类,产生进程类;
步骤52,将父进程的进程号与进程类作为一个单元放入一个数据结构中;
步骤53,将所有单元按进程号排列,含有同一进程号的不同单元按单元中进程类产生的先后顺序排列;
步骤54,按进程关系树从上到下的顺序,将父进程的单元按子进程产生的先后顺序分配给子进程。
2.如权利要求1所述的识别恶意程序的方法,其特征在于,
所述步骤4还包括:
步骤21,当判断新程序为恶意程序时,采用阻断的方法阻止所述新程序的运行。
3.如权利要求1所述的识别恶意程序的方法,其特征在于,
所述步骤4还包括:
步骤31,当新程序被判断为恶意程序时,依据所述新程序的进程行为更新专家系统。
4.如权利要求1所述的识别恶意程序的方法,其特征在于,
父进程每连接一个IP地址便产生一个子进程用来处理连接该IP地址所需要的服务;
所述步骤51进一步为,
步骤61,父进程的每一个IP连接对应一个进程类。
5.如权利要求1所述的识别恶意程序的方法,其特征在于,
所述步骤1中获取计算机系统中所有进程的信息进一步为
步骤71,通过本地的获取函数地址的系统调用函数获取在远程进程中需要执行的用于获取进程信息的函数的地址;使用建立远程线程函数启动远程线程,使远程线程执行远程函数;通过等待线程执行结束的函数等待远程线程的结束;通过获得远程线程的退出码函数获得远程线程的退出代码;
步骤72,通过本地的获取函数地址的系统调用函数获取在远程进程中需要执行的获得字符串长度函数的函数地址,使用建立远程线程函数启动远程线程,使远程线程执行远程函数,通过等待线程执行结束的函数等待远程线程的结束,通过获得远程线程的退出码函数获得远程线程的退出代码;
步骤73,根据字符串返回值中已经返回值长度使用读取系统内存信息的函数得到实际信息。
6.如权利要求1所述的识别恶意程序的方法,其特征在于,
所述获取计算机系统中所有进程的进程行为进一步为,
步骤81,通过进程过滤驱动捕获进程创建信息;
步骤82,通过文件系统过滤驱动捕获文件系统操作行为的信息;
步骤83,若是在windows下,监控注册表操作行为;
步骤84,使用键盘钩子捕获进程的用户操作输入信息;
步骤85,通过网络过滤驱动捕获网络行为的信息。
7.一种识别恶意程序的系统,其特征在于,包括:
进程树建立模块,用于获取计算机系统中所有进程的信息和进程行为,根据进程之间的父子关系建立进程关系树,对应每个进程保存进程的信息和进程行为的列表;
进程信息分配模块,用于将父进程的进程行为列表中的进程行为分类,按进程关系树从上到下的顺序,依据分类将父进程信息分配到子进程;
专家系统生成模块,用于按进程关系树和进程信息进行符号化,依据预设的恶意行为阈值判断出恶意程序,将恶意程序在计算机系统中运行,得到用于判断恶意程序的专家系统;
恶意程序判断模块,用于当新程序进程产生时,利用专家系统判断新程序是否为恶意程序;
所述专家系统生成模块按进程关系树和进程信息进行符号化时进一步用于按进程关系树和进程信息将操作标记为数字,操作对象标记为对象名称的hash值;
所述进程信息分配模块进一步用于将父进程的进程行为的列表中的进程行为分类,产生进程类;将父进程的进程号与进程类作为一个单元放入一个数据结构中;将所有单元按进程号排列,含有同一进程号的不同单元按单元中进程类产生的先后顺序排列;按进程关系树从上到下的顺序,将父进程的单元按子进程产生的先后顺序分配给子进程。
8.如权利要求7所述的识别恶意程序的系统,其特征在于,
所述恶意程序判断模块还用于当判断新程序为恶意程序时,采用阻断的方法阻止所述新程序的运行。
9.如权利要求7所述的识别恶意程序的系统,其特征在于,
所述恶意程序判断模块还用于当新程序被判断为恶意程序时,依据所述新程序的进程行为更新专家系统。
10.如权利要求7所述的识别恶意程序的系统,其特征在于,
父进程每连接一个IP地址便产生一个子进程用来处理连接该IP地址所需要的服务;
所述进程信息分配模块在将父进程的进程行为的列表中的进程行为分类,产生进程时进一步用于将父进程的每一个IP连接对应一个进程类。
11.如权利要求7所述的识别恶意程序的系统,其特征在于,
所述进程树建立模块在获取计算机系统中所有进程的信息时进一步用于通过本地的获取函数地址的系统调用函数获取在远程进程中需要执行的用于获取进程信息的函数的地址,使用建立远程线程函数启动远程线程,使远程线程执行远程函数,通过等待线程执行结束的函数等待远程线程的结束,通过获得远程线程的退出码函数获得远程线程的退出代码;
通过本地的获取函数地址的系统调用函数获取在远程进程中需要执行的获得字符串长度函数的函数地址,使用建立远程线程函数启动远程线程,使远程线程执行远程函数,通过等待线程执行结束的函数等待远程线程的结束,通过获得远程线程的退出码函数获得远程线程的退出代码;
根据字符串返回值中已经返回值长度使用读取系统内存信息的函数得到实际信息。
12.如权利要求7所述的识别恶意程序的系统,其特征在于,
所述进程树建立模块在获取计算机系统中所有进程的进程行为时进一步用于通过进程过滤驱动捕获进程创建信息;通过文件系统过滤驱动捕获文件系统操作行为的信息;若是在windows下,监控注册表操作行为;使用键盘钩子捕获进程的用户操作输入信息;通过网络过滤驱动捕获网络行为的信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102970485A CN101944167B (zh) | 2010-09-29 | 2010-09-29 | 识别恶意程序的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102970485A CN101944167B (zh) | 2010-09-29 | 2010-09-29 | 识别恶意程序的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101944167A CN101944167A (zh) | 2011-01-12 |
CN101944167B true CN101944167B (zh) | 2011-12-21 |
Family
ID=43436155
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010102970485A Active CN101944167B (zh) | 2010-09-29 | 2010-09-29 | 识别恶意程序的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101944167B (zh) |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9349006B2 (en) | 2010-11-29 | 2016-05-24 | Beijing Qihoo Technology Company Limited | Method and device for program identification based on machine learning |
CN102073818A (zh) * | 2011-01-17 | 2011-05-25 | 北京神州绿盟信息安全科技股份有限公司 | 一种漏洞检测设备和方法 |
CN102142068A (zh) * | 2011-03-29 | 2011-08-03 | 华北电力大学 | 一种未知恶意代码的检测方法 |
CN103795703A (zh) * | 2011-04-18 | 2014-05-14 | 北京奇虎科技有限公司 | 一种保证用户网络安全性的方法及客户端 |
CN102208004B (zh) * | 2011-05-13 | 2013-07-03 | 南京邮电大学 | 一种基于最小化特权原则的软件行为控制方法 |
CN102750475B (zh) * | 2012-06-07 | 2017-08-15 | 中国电子科技集团公司第三十研究所 | 基于虚拟机内外视图交叉比对恶意代码行为检测方法及系统 |
CN103577301B (zh) * | 2012-07-20 | 2017-12-05 | 腾讯科技(深圳)有限公司 | 一种显示进程信息的方法和终端 |
CN102902919B (zh) * | 2012-08-30 | 2015-11-25 | 北京奇虎科技有限公司 | 一种可疑操作的识别处理方法、装置和系统 |
CN103679013B (zh) * | 2012-09-03 | 2017-10-31 | 腾讯科技(深圳)有限公司 | 系统恶意程序检测方法及装置 |
CN103164649B (zh) * | 2013-02-18 | 2016-08-17 | 北京神州绿盟信息安全科技股份有限公司 | 进程行为分析方法及系统 |
CN103942493B (zh) * | 2014-03-28 | 2017-02-15 | 北京工业大学 | 一种Windows下智能化主动防御系统及方法 |
CN105302707B (zh) * | 2014-06-06 | 2019-01-08 | 腾讯科技(深圳)有限公司 | 应用程序的漏洞检测方法和装置 |
CN105512555B (zh) * | 2014-12-12 | 2018-05-25 | 哈尔滨安天科技股份有限公司 | 基于文件字符串聚类的划分同源家族和变种的方法及系统 |
CN105809033A (zh) * | 2014-12-30 | 2016-07-27 | 北京奇虎科技有限公司 | 恶意进程处理方法及装置 |
CN104850394B (zh) * | 2015-04-17 | 2018-04-17 | 北京大学 | 分布式应用程序的管理方法和分布式系统 |
US10089465B2 (en) * | 2015-07-24 | 2018-10-02 | Bitdefender IPR Management Ltd. | Systems and methods for tracking malicious behavior across multiple software entities |
CN105608377A (zh) * | 2015-12-24 | 2016-05-25 | 国家电网公司 | 一种信息系统进程安全管理系统及管理方法 |
CN105630636A (zh) * | 2016-01-26 | 2016-06-01 | 陈谦 | 一种智能电子设备操作系统的动态恢复方法及其装置 |
CN105893847B (zh) * | 2016-04-22 | 2019-01-25 | 珠海豹趣科技有限公司 | 一种保护安全防护应用程序文件的方法、装置及电子设备 |
CN106411879B (zh) * | 2016-09-23 | 2019-06-14 | 北京网康科技有限公司 | 一种软件识别特征的获取方法和装置 |
CN108334404B (zh) * | 2017-01-20 | 2022-02-22 | 腾讯科技(深圳)有限公司 | 应用程序的运行方法和装置 |
CN107203626B (zh) * | 2017-05-27 | 2021-07-13 | 网宿科技股份有限公司 | 一种业务流程管理方法及系统 |
CN107135235B (zh) * | 2017-07-05 | 2019-11-05 | 湖北鑫英泰系统技术股份有限公司 | 一种多级跳转后的ssh连接源追踪方法及装置 |
CN107590389B (zh) * | 2017-10-18 | 2020-09-11 | 北京奇虎科技有限公司 | 安全性测试方法及装置、电子设备、计算机存储介质 |
CN108038374A (zh) * | 2017-12-26 | 2018-05-15 | 郑州云海信息技术有限公司 | 一种检测实时威胁的方法 |
CN108804920B (zh) * | 2018-05-24 | 2021-09-28 | 河南省躬行信息科技有限公司 | 一种基于跨进程行为监控恶意代码同源性分析的方法 |
CN109522179B (zh) * | 2018-10-12 | 2022-05-27 | 网易(杭州)网络有限公司 | 服务器运行状态的监控方法、装置、处理器及服务器 |
CN109684842B (zh) * | 2018-12-24 | 2023-07-21 | 普华基础软件股份有限公司 | 一种监测和清除分裂炸弹程序攻击的方法 |
CN109784053B (zh) * | 2018-12-29 | 2021-04-27 | 360企业安全技术(珠海)有限公司 | 过滤规则的生成方法、装置、及存储介质、电子装置 |
CN111444506B (zh) * | 2020-05-22 | 2023-08-18 | 南京大学 | 一种同源恶意代码的细粒度分类识别方法 |
CN112257065A (zh) * | 2020-09-28 | 2021-01-22 | 网宿科技股份有限公司 | 一种进程事件处理方法和装置 |
CN115373834A (zh) * | 2021-05-27 | 2022-11-22 | 北京火山引擎科技有限公司 | 一种基于进程调用链的入侵检测方法 |
CN113704202A (zh) * | 2021-09-03 | 2021-11-26 | 杭州雾联科技有限公司 | 一种进程监控方法、进程监控系统及相关装置 |
CN114880189A (zh) * | 2022-03-08 | 2022-08-09 | 统信软件技术有限公司 | 应用程序的监控方法、装置及计算设备 |
CN116089955B (zh) * | 2022-12-01 | 2023-09-26 | 之江实验室 | 一种基于windows操作系统的系统调用去噪方法及装置 |
CN115659322B (zh) * | 2022-12-15 | 2023-03-10 | 中国海洋大学 | 一种基于运行时顺序调度装载的代码复用攻击防御方法 |
CN116938605B (zh) * | 2023-09-18 | 2024-01-05 | 腾讯科技(深圳)有限公司 | 网络攻击防护方法、装置、电子设备及可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6742124B1 (en) * | 2000-05-08 | 2004-05-25 | Networks Associates Technology, Inc. | Sequence-based anomaly detection using a distance matrix |
CN101154258A (zh) * | 2007-08-14 | 2008-04-02 | 电子科技大学 | 恶意程序动态行为自动化分析系统与方法 |
-
2010
- 2010-09-29 CN CN2010102970485A patent/CN101944167B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6742124B1 (en) * | 2000-05-08 | 2004-05-25 | Networks Associates Technology, Inc. | Sequence-based anomaly detection using a distance matrix |
CN101154258A (zh) * | 2007-08-14 | 2008-04-02 | 电子科技大学 | 恶意程序动态行为自动化分析系统与方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101944167A (zh) | 2011-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101944167B (zh) | 识别恶意程序的方法及系统 | |
CN106557695B (zh) | 一种恶意应用检测方法和系统 | |
CA2735600C (en) | System and method for detection of malware | |
CN101924761B (zh) | 一种依据白名单进行恶意程序检测的方法 | |
CN102254111B (zh) | 恶意网站检测方法及装置 | |
CN103679031B (zh) | 一种文件病毒免疫的方法和装置 | |
CN108520180B (zh) | 一种基于多维度的固件Web漏洞检测方法及系统 | |
CN100485703C (zh) | 一种计算机恶意代码处理方法和系统 | |
CN104252592B (zh) | 外挂应用程序的识别方法及装置 | |
CN114077741B (zh) | 软件供应链安全检测方法和装置、电子设备及存储介质 | |
CN103839003A (zh) | 恶意文件检测方法及装置 | |
KR101132197B1 (ko) | 악성 코드 자동 판별 장치 및 방법 | |
CN106529294B (zh) | 一种用于手机病毒判定与过滤的方法 | |
CN103810428A (zh) | 一种宏病毒检测方法及装置 | |
CN104680065A (zh) | 病毒检测方法、装置及设备 | |
CN103428212A (zh) | 一种恶意代码检测及防御的方法 | |
CN114090406A (zh) | 电力物联网设备行为安全检测方法、系统、设备及存储介质 | |
CN110543765A (zh) | 一种恶意软件检测方法 | |
CN104252594A (zh) | 病毒检测方法和装置 | |
CN112307478A (zh) | 一种脚本病毒检测方法、系统及电子设备和存储介质 | |
CN107302530B (zh) | 一种基于白名单的工控系统攻击检测装置及其检测方法 | |
CN112565278A (zh) | 一种捕获攻击的方法及蜜罐系统 | |
CN111291377A (zh) | 一种应用漏洞的检测方法及系统 | |
CN113468524A (zh) | 基于rasp的机器学习模型安全检测方法 | |
CN112632538A (zh) | 一种基于混合特征的安卓恶意软件检测方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20110112 Assignee: Branch DNT data Polytron Technologies Inc Assignor: Institute of Computing Technology, Chinese Academy of Sciences Contract record no.: 2018110000033 Denomination of invention: Method and system for identifying malicious program Granted publication date: 20111221 License type: Common License Record date: 20180807 |
|
EE01 | Entry into force of recordation of patent licensing contract |