运用程序行为知识库判断已知程序被攻击的方法
技术领域
本发明涉及一种计算机病毒、攻击防护方法,特别是运用程序行为知识库判断已知程序被攻击的方法。
背景技术
一直以来,对计算机病毒的入侵和反入侵的斗争都在激烈地进行着,随着计算机越来越广泛地使用,这种斗争的激烈程度也上升到一个新的高度。经过长期的斗争实践,人们总结出许多的具体方法来防止对计算机病毒的入侵,研制出许多相应的防范产品。这些产品大体上可以分为两类,一类是对入侵病毒进行隔离,例如防火墙,通过对通讯端口、协议等进行限制来防止入侵病毒的进入;另一类是对可能形成入侵的染病毒文件进行搜寻,例如杀毒软件,利用可能形成入侵染病毒文件的代码特征,通过扫描发现并清除有害染病毒文件。这两类产品虽然在反病毒入侵的斗争中起了不少的作用,但都具有一些无法克服的缺点,它们分别是:
(一)防火墙虽然能够阻断一些非法病毒或黑客的入侵,但防火墙的监控对象为主要端口和协议,需要由用户自己设置要么允许通过、要么不允许通过。其主要缺陷,1.要求用户对系统非常熟悉,才能对它进行有效设置;2.由于监控颗粒太大,对于网络应用中必须用到的端口和协议基本无法设置,如果允许通过,则可能导致病毒或黑客入侵发生;若不允许通过,则可能又直接影响网络的正常运行。
(二)利用病毒特征码的杀毒软件将永远滞后于病毒的发展,因为只有捕获到病毒样本后,才能提取到病毒的特征码,这使得这种杀毒软件对新出现的未知病毒入侵无法防范,用户即使装备了杀毒软件,也会再次受到该病毒的攻击伤害,只有通过升级、更新病毒数据库才可以解决,而这种解决是滞后于病毒发生的。
发明内容
本发明就是为了解决上述问题,其目的在于提供一种能够快速、有效的检查出已知程序是否遭到攻击或破坏的方法,本发明就是提供了一种使用程序行为知识库,来检查已知程序是否正常运行,从而判断已知程序是否受到攻击。
本发明的运用程序行为知识库判断已知程序被攻击的方法,就是通过监控已知程序的动作行为,与程序行为知识库中记录的合法行为相比较,判断已知程序是否被攻击;
所述程序行为知识库为,利用自动化工具,逐一对合法的已知程序所执行的可能影响计算机安全动作行为进行分析列表,并将所述分析列表进行存储的数据库。
本发明的运用程序行为知识库判断已知程序被攻击的方法中,所述动作行为分为:
监控动作,指该动作可能影响计算机安全、需要对其进行实时监控;
危险动作,该动作首先是一个监控动作,在程序运行中,该动作可能威胁计算机安全;
非监控动作,不影响计算机安全无需进行监控的动作。
本发明的运用程序行为知识库判断已知程序被攻击的方法中,所述程序行为知识库为,利用自动化工具,逐一对合法的已知程序所执行的可能影响、危害计算机安全的监控动作和危险动作进行分析列表,并将所述分析列表进行存储的数据库。
监控并记录已知程序运行时的监控动作和危险动作,并与程序行为知识库中记录的已知程序合法行为进行比较。
本发明的运用程序行为知识库判断已知程序被攻击的方法中,所述程序行为知识库结构包括:程序ID、程序类型、程序运行层级、写PE文件权限、调用系统SHELL权限、网络行为和注册表操作。
其中,所述程序类型为程序分类枚举类型,分为可被缓冲区溢出攻击的程序和普通应用程序;所述网络行为,其结构描述包括:网络连接动作类型、使用端口数量以及连接描述;所述连接描述包括:本地端口、本地地址、远程端口、远程地址以及使用协议;所述注册表操作,其结构描述包括:该程序所操作的注册表项数、每项操作的键值。
本发明的运用程序行为知识库判断已知程序被攻击的方法,还包括:对于未记录在程序行为知识库中的程序,由用户自定义添加到程序行为知识库。因此在使用过程中,可以按照用户需要,对程序行为知识库进行不断扩充。
因此,可以对于未记录在程序行为知识库的程序,通过使用过程中用户对其监控动作与危险动作进行授权,并按照程序行为知识库的结构添加到所述程序行为知识库。
本发明的运用程序行为知识库判断已知程序被攻击的方法,其特征在于,将未记录在程序行为知识库中的程序添加到程序行为知识库,包括如下步骤:
12.1)运行该程序;
12.2)判断是否为已知程序?是,则利用自动化工具收集该程序的监控动作和危险动作,并与程序行为知识库中的记录进行比较;否,则进入下一步;
12.3)判断是否有程序来源?是,则利用自动化工具收集该程序的监控动作和危险动作,并在所述程序行为知识库中添加新纪录;否,则进入下一步;
12.4)利用自动化工具监控并记录该程序所执行的监控动作和危险动作,并向用户报警;
12.5)用户确认是否允许该动作进行?是,则作为合法程序,利用自动化工具收集该程序的监控动作和危险动作,并在所述程序行为知识库中添加该程序的新纪录;否,则不对该程序的监控动作和危险动作进行记录。
并且,在步骤12.5)中,当用户不允许所述动作进行时,还包括终止该动作进行,并阻止该程序继续执行的步骤。
本发明的运用程序行为知识库判断已知程序被攻击的方法中,所述合法程序包括已知程序和经过用户确认的无程序来源信息的未知程序。
本发明的运用程序行为知识库判断已知程序被攻击的方法中,所述利用自动化工具收集程序的监控动作和危险动作,是通过勾挂系统的API函数,对程序进程进行监控并记录。
本发明的运用程序行为知识库判断已知程序被攻击的方法中,判断已知程序是否被攻击,包括如下步骤:
16.1)程序运行;
16.2)是否为已知程序;是,则进入下一步;否,则转到12.3);
16.3)勾挂程序API函数,监控程序行为动作,捕获到监控动作或危险动作;
16.4)将捕获到的监控动作或危险动作与程序行为知识库中的信息相比较,判断是否为合法动作;是,则进入下一步;
16.5)程序继续运行,返回16.3)。
本发明的运用程序行为知识库判断已知程序被攻击的方法,其特征在于,所述步骤16.4)中,还包括判断为非法动作后,阻止该程序继续运行的步骤。
本发明的运用程序行为知识库判断已知程序被攻击的方法中,所勾挂的API函数为可能影响计算机安全的API函数。
本发明的运用程序行为知识库判断已知程序被攻击的方法,可以应用于基于程序行为方式的病毒防护实时监控系统中,对已知程序进行实时监控,保证已知程序正常运行。
附图说明
图1为本发明的运用程序行为知识库判断已知程序被攻击的方法的流程图。
具体实施方式
下面将结合实例对本发明的运用程序行为知识库判断已知程序被攻击的方法作以详细说明。
所述程序行为知识库为,利用自动化工具,逐一对合法的已知程序所执行的可能影响计算机安全动作行为进行分析列表,并将所述分析列表进行存储的数据库。
本发明的运用程序行为知识库判断已知程序被攻击的方法中,所述动作行为分为:监控动作,指该动作可能影响计算机安全、需要对其进行实时监控;危险动作,该动作首先是一个监控动作,在程序运行中,该动作可能威胁计算机安全。此外对不影响计算机安全无需进行监控的非监控动作,不进行监控和记录。
本发明的运用程序行为知识库判断已知程序被攻击的方法中,所述程序行为知识库为,利用自动化工具,逐一对合法的已知程序所执行的可能影响、危害计算机安全的监控动作和危险动作进行分析列表,并将所述分析列表进行存储的数据库。
监控并记录已知程序运行时的监控动作和危险动作,并与程序行为知识库中记录的已知程序合法行为进行比较。
本发明的运用程序行为知识库判断已知程序被攻击的方法中,所述程序行为知识库结构实体描述如下:
struct Know
{
DWORD type1;
BOOL bAllowedWriteFile;
BOOL bCreateShell;
DWORD NetOffset;
DWORD RegOffset;
};
其中:type1为程序分类枚举类型,目前暂时分为可被缓冲区溢出攻击的程序和普通应用程序两类,描述如下,
enum KnowType{OVERFLOW,NORMAL};
bAllowedWriteFile,表示该程序是否可以写可执行PE文件。
bCreateShell,表示该程序是否可以调用系统shell。
NetOffset,表示在知识库文件中偏移多少的位置为对该程序网络行为的描述。
RegOffset,表示在知识库文件中偏移多少的位置为对该程序注册表操作行为的描述。
在程序行为知识库中使用以下分结构描述该程序的网络动作行为的结构实体描述为:
struct Net
{
short type2;
int num;
ListenPort port[];
};
其中,Type2,用来描述网络连接的动作类型,分为两类,监听和连接,使用如下枚举量描述,
enum NetType{Listen,Connect};
num,为涉及到的端口数量;
ListenPort,针对每一个连接的具体描述,使用如下结构表示,
struct ListenPort
{
short lport;
IPADDR lipaddr;
short dport;
IPADDR dipaddr;
short protocol;
};
lport:使用的本地端口;
lipaddr:使用的本地地址;
dport:所连接的远程端口;
dipaddr:所连接的远程地址;
protocol:所使用的协议,使用TCP/IP协议定义。
在程序行为知识库中使用以下分结构描述该程序的注册表操作动作行为的结构实体描述为:
struct Reg
{
int num;
char*fullregname[];
};
num,表示该程序所操作的注册表项数。
fullregname,每一项操作的键值。
本发明的运用程序行为知识库判断已知程序被攻击的方法,还包括:对于未记录在程序行为知识库中的程序,由用户自定义添加到程序行为知识库。因此在使用过程中,可以按照用户需要,对程序行为知识库进行不断扩充。
如图1所示,为本发明的运用程序行为知识库判断已知程序被攻击的方法的流程图。
因此,可以对于未记录在程序行为知识库的程序,通过使用过程中用户对其监控动作与危险动作进行授权,并按照程序行为知识库的结构添加到所述程序行为知识库。
根据本发明的运用程序行为知识库判断已知程序被攻击的方法,将未记录在程序行为知识库中的程序添加到程序行为知识库,包括如下步骤:
12.1)运行该程序;
12.2)判断是否为已知程序?是,则利用自动化工具收集该程序的监控动作和危险动作,并与程序行为知识库中的记录进行比较;否,则进入下一步;
12.3)判断是否有程序来源?是,则利用自动化工具收集该程序的监控动作和危险动作,并在所述程序行为知识库中添加新纪录;否,则进入下一步;
12.4)利用自动化工具监控并记录该程序所执行的监控动作和危险动作,并向用户报警;
12.5)用户确认是否允许该动作进行?是,则作为合法程序,利用自动化工具收集该程序的监控动作和危险动作,并在所述程序行为知识库中添加该程序的新纪录;否,则不对该程序的监控动作和危险动作进行记录。
并且,在步骤12.5)中,当用户不允许所述动作进行时,还包括终止该动作进行,并阻止该程序继续执行的步骤。
本发明的运用程序行为知识库判断已知程序被攻击的方法中,所述利用自动化工具收集程序的监控动作和危险动作,是通过勾挂系统的API函数,实现对程序进程进行监控并记录。
本发明的运用程序行为知识库判断已知程序被攻击的方法中,判断已知程序是否被攻击,包括如下步骤:
16.1)程序运行;
16.2)是否为已知程序;是,则进入下一步;否,则转到12.3);
16.3)勾挂程序API函数,监控程序行为动作,捕获到监控动作或危险动作;
16.4)将捕获到的监控动作或危险动作与程序行为知识库中的信息相比较,判断是否为合法动作;是,则进入下一步;
16.5)程序继续运行,返回16.3)。
本发明的运用程序行为知识库判断已知程序被攻击的方法,其特征在于,所述步骤16.4)中,还包括判断为非法动作后,阻止该程序继续运行的步骤。
本发明的运用程序行为知识库判断已知程序被攻击的方法中,所勾挂的API函数为可能影响计算机安全的API函数。
下面以病毒攻击为例,对本发明作详细说明。
对于一个已知程序,如果程序行为描述为不能修改程序文件,当该程序运行时,却修改了其他程序文件,上述危险动作被系统监控,然后与程序行为知识库中存储的该已知程序的合法动作行为相比较,产生不不同的动作,因此可以判断该已知程序一定是被病毒感染。利用这一方法可以发现CIH等病毒,对于被CIH等病毒感染的已知程序运行时,该已知程序就会试图感染其他PE文件,因此可以在对病毒并不了解的情况下,将其阻止,从而避免了由于病毒代码更新的滞后性而使新生的病毒有机可乘。
综上所述,本发明的运用程序行为知识库判断已知程序被攻击的方法,可以应用于基于程序行为方式的病毒防护实时监控系统中,对已知程序进行实时监控,保证已知程序正常运行。
通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。因此,本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利范围来确定其技术性范围。