1.一种用于阻止恶意程序访问网络的方法,包括:
监控步骤,将监控动态库注入到系统中的一个或多个进程中以对其进行监控;
拦截步骤,当所述一个或多个进程中的一个进程要创建受信任的网络应用程序的对象时,拦截该进程创建所述受信任的网络应用程序的对象的动作;
判断步骤,根据定义的规则判断是否允许该进程访问网络;以及
处理步骤,如果允许所述进程访问网络,则允许该进程创建所述受信任的网络应用程序的对象,使得该进程能够通过该对象间接访问网络,以及如果不允许该进程访问网络,则禁止该进程创建所述受信任的网络应用程序的对象。
2.根据权利要求1所述的方法,其中,在所述拦截步骤中,对进程调用组件对象模型(COM)库的对象创建函数来创建所述受信任的网络应用程序的对象的动作进行拦截。
3.根据权利要求2所述的方法,其中
要创建的所述受信任的网络应用程序的对象是通过传入所述对象创建函数的参数clsid来识别的。
4.根据权利要求3所述的方法,其中
所 述 对 象 创 建 函 数 是 CoGetClassObject、CoCreateInstance、 或CoCreateInstanceEx。
5.根据权利要求3所述的方法,其中
所述受信任的网络应用程序是微软的Internet Explorer、Outlook、Outlook Express或Windows Mail。
6.根据权利要求1所述的方法,其中,在所述监控步骤中,对系统中的每一个进程均进行监控。
7.根据权利要求1所述的方法,其中,所述判断步骤包括:
根据预定义的规则文件中的相关条目进行判断。
8.根据权利要求7所述的方法,其中,所述判断步骤还包括:
如果所述规则文件中不存在相关条目,则提示给用户由用户进行选择,并将用户的选择结果记入所述规则文件中。
9.一种用于阻止恶意程序访问网络的装置,包括:
监控模块,用于将监控动态库注入到系统中的一个或多个进程中以对其进行监控;
拦截模块,用于当所述一个或多个进程中的一个进程要创建受信任的网络应用程序的对象时,拦截该进程创建所述受信任的网络应用程序的对象的动作;
判断模块,用于根据定义的规则判断是否允许该进程访问网络;以及
处理模块,用于如果允许所述进程访问网络,则允许该进程创建所述受信任的网络应用程序的对象,使得该进程能够通过该对象间接访问网络,以及如果不允许该进程访问网络,则禁止该进程创建所述受信任的网络应用程序的对象。
10.根据权利要求9所述的装置,其中,所述拦截模块对进程调用组件对象模型(COM)库的对象创建函数来创建所述受信任的网络应用程序的对象的动作进行拦截。
阻止恶意程序访问网络的方法和装置\n技术领域\n[0001] 本发明涉及一种阻止恶意程序访问网络的方法和装置,更具体地,涉及一种阻止恶意程序创建通过受信任的网络应用程序对象来访问网络的方法和装置。\n背景技术\n[0002] 随着计算机技术的飞速发展和网络的迅速普及,诸如木马病毒这样的恶意程序也层出不穷,严重危害了计算机用户的信息安全。\n[0003] 通常,用户的计算机在感染了恶意程序后,恶意程序会在用户不知情的情况下通过自身去访问网络,从而进行传递所窃取的用户信息等操作。对此,现有的防火墙等安全软件会对这样的网络访问动作进行拦截,确定该动作的发起者,根据规则或由用户进行选择来采取相应的放行或阻止操作。\n[0004] 近来,出现了一类新的恶意程序,为了绕开现有安全软件的保护,其并不通过自身来直接访问网络,而是调用系统中受信任的程序来访问网络,从而间接地向外发送帐号、密码等敏感信息。例如,一些木马病毒调用微软的Internet Explorer浏览器标准接口来访问网络发送信息。从表面上看,这样的访问动作的发起者是受信任的网络访问程序,因此现有的安全软件通常会对该网络访问动作放行,即便给出提示,用户在看到发起者是受信任的程序时,也不会对其进行阻止,结果是该恶意软件成功地突破了安全软件的保护而实现自身的非法目的。\n发明内容\n[0005] 为了解决上述问题,弥补现有的安全软件功能上的不足,本发明提供了一种用于阻止恶意程序访问网络的方法,包括:监控步骤,将监控动态库注入到系统中的一个或多个进程中以对其进行监控;拦截步骤,拦截进程创建网络应用程序的对象的动作;判断步骤,根据定义的规则判断是否允许该进程访问网络;以及处理步骤,按照判定结果执行相应处理。\n[0006] 本发明还提供了一种用于实现上述方法的装置。\n附图说明\n[0007] 图1是一种根据本发明的阻止恶意程序访问网络的方法的流程图;以及[0008] 图2是根据本发明的方法的一个示例性实施例的流程图。\n具体实施方式\n[0009] 以下,结合附图详细描述本发明。\n[0010] 首先参照图1,说明了一种根据本发明的阻止恶意程序访问网络的方法的流程图,其中:\n[0011] 在步骤S10中,监控动态库被注入到系统中的进程中,以便实时地监控各个进程的动作。要注意的是,可以注入到系统中的所有进程中,也可以根据具体需求而选择注入到系统中的部分进程中,这都在本发明的保护范围之内。\n[0012] 在步骤S20中,当发现某个进程要创建能够访问网络的应用程序的对象时,对该对象创建动作进行拦截。此处需要特别注意的是,本发明的方法并不对某些进程通过自身来直接访问网络的动作进行拦截(这是一般防火墙均已实现的功能),而是专门针对下面一种情况,即,某些恶意程序的进程会通过创建系统中受信任的网络应用程序的对象,从而间接地利用所创建的受信任对象提供的方法来访问网络。\n[0013] 在步骤S30中,根据定义的规则来进行判断,确定是否允许该进程(或者说是与该进程相对应的程序)访问网络。例如,这样的规则可以是预先定义好的,并被记录在表状数据结构中,其中以条目的形式,记载有针对该进程的相关规则,即是否允许其访问网络、以及其它信息;或者这样的规则也可以是在未预定义的情况下,由用户根据进程信息当时确定的。显然,本发明并不局限于此,而是可以有各种定义规则的方式和记录规则的形式。\n[0014] 在步骤S40中,根据步骤S30的判定结果,执行相应的处理,亦即禁止或放行。具体地,如果允许该进程访问网络,则本方法不再对该进程的组件对象创建动作进行拦截,该进程从而得以继续执行该动作以创建受信任的网络应用程序对象来接入网络;反之,如果不允许该进程访问网络,则本方法最终禁止该进程继续执行该组件对象创建动作,使其无法通过前述的这种间接方式接入网络,从而使用户的信息安全得到保护。\n[0015] 下面结合图2,以恶意程序调用受信任的微软Internet Explorer浏览器程序来间接访问网络为例,说明本发明的一个实施例的方法的流程图,其中的各个小标题分别对应于图1所示的方法中的相应步骤。\n[0016] 监控过程\n[0017] 在步骤S101,防火墙启动保护,将监控动态库注入到Windows系统中正在运行的每一个进程中,从而开始对进程的动作进行监控。所述监控动态库对组件对象模型(Component Object Model,COM)库中的对象创建函数进行了HOOK,并记录了相应函数的入口地址,所述函数例如CoGetClassObject、CoCreateInstance或CoCreateInstanceEx等,但并不限于此。同时,防火墙也可以监视进程创建,每当有新进程创建时,就自动向其注入监控动态库。启动保护之后,该过程转入到步骤S201。本领域技术人员可以理解,该监控过程可以是常驻在系统中的,后续的各个过程则针对的是一次拦截。\n[0018] 拦截过程\n[0019] 在步骤S201中,在某一时刻,系统中的一个进程P调用上述对象创建函数,以便创建一个组件对象。当发生这样的调用时,注入到进程P中的监控动态库对该函数进行拦截,使得进程P调用COM库函数的动作被暂停,并且根据本实施例的过程转入到步骤S202。\n[0020] 在上述组件对象创建函数被调用时,传入的参数中均包括有一个参数clsid,例 如,CoCreateInstance 函 数 原 型 是 HRESULTCoCreateInstance(const CLSID & clsid,...),该clsid值唯一地标识一种组件对象。因此,在步骤S202中,通过检查传给该函数的参数clsid,来确定该进程P通过调用COM库函数要创建的对象是否为设定好要监视的组件对象。例如,在本实施例中,要监视的是Internet Explorer,其clsid应为{0002DF\n01-0000-0000-C000-000000000046}。\n[0021] 如果根据clsid确定进程P调用的组件对象创建函数要创建的是我们所要监视的组件对象,在本实施例中,也就是Internet Explorer组件对象(在步骤S202中为“是”),则该过程转到步骤S301。\n[0022] 如果确定要创建的不是我们要监视的组件对象,例如,在本实施例中,确定不是Internet Explorer组件对象(在步骤S202中为“否”),则该过程转到步骤S401。\n[0023] 判断过程\n[0024] 在步骤S301中,获取该进程P的相关信息,例如,该进程的主模块(EXE文件)的完整路径、加载的动态库、公司信息等。然后,该过程转到步骤S302。\n[0025] 在步骤S302中,根据所获取的该进程P的相关信息,在预定义的规则文件中查找对应的规则条目。规则条目的定义和规则文件的组织形式以及查找方法可以采用本领域中常用的方式,在此省略其说明。\n[0026] 如果在预定义的规则文件中找到有与该进程P相对应的规则条目(在步骤S302中为“是”),则该过程转到步骤S303。在步骤S303中,根据所找到的规则条目来判断是否允许该进程P访问网络。\n[0027] 如果并未找到与该进程P相对应的规则条目(在步骤S302中为“否”),则该过程转到步骤S304。在步骤S304中,向用户报警,向其告知该进程P的相关信息,由用户来作出选择。可选地,用户的选择结果也被作为一条新增的规则条目记录到预定义的规则文件中供以后使用。\n[0028] 如果预定义的规则条目或者用户的选择不允许该进程P访问网络,也就是说,认定与该进程P对应的程序是恶意程序(在步骤S303中为“否”,或者在步骤S304中为“否”),则该过程转到步骤S401,以进行相应的禁止处理。\n[0029] 如果预定义的规则条目或者用户的选择允许该进程P访问网络(在步骤S303中为“是”,或者在步骤S304中为“是”),则该过程转到步骤S402,以进行相应的放行处理。\n[0030] 处理过程\n[0031] 在步骤S401中,最终决定禁止进程P调用的组件对象创建函数的对象创建动作,并返回一个错误值。由此,使得进程P创建InternetExplorer组件对象的动作失败,从而成功阻止了恶意进程P对网络的间接访问。\n[0032] 或者,在步骤S402中,由于确认了进程P的动作的合法性,因此直接返回到之前的拦截点处,也就是在步骤S101中记录的该组件对象创建函数的入口地址。从而,进程P可以恢复执行组件对象创建动作。对于Internet Explorer的情况,上述操作使得进程P得以成功调用COM库函数创建一个Internet Explorer组件对象,从而通过该对象访问网络。\n[0033] 在步骤S401或S402之后,本实施例的方法针对一次拦截的处理操作结束。\n[0034] 要注意的是,微软公司定义的组件对象模型(COM)是关于如何建立组件以及如何通过组件来建构应用程序的一个规范。就本发明所涉及的方面而言,对于多种能够访问网络传递信息的应用程序,例如Internet Explorer、Outlook等,均有相应的COM组件对象接口,允许利用COM库的对象创建函数(例如但不限于前面提及的CoGetClassObject、CoCreateInstance或CoCreateInstanceEx等),来创建相应的组件对象,并使用所创建的组件对象的标准方法来访问网络。显然,恶意程序也可以通过这些应用程序来间接访问网络从而隐藏其自身,因此,上述实施例给出的方法也同样能够针对Outlook、Outlook Express和Windows Mail以及其它提供有标准COM接口来访问网络的程序进行保护。\n[0035] 尽管前面已经结合实施例详细描述了本发明,但是本领域的技术人员能够理解,这些实施例是说明性的而非限制性的;对于这些实施例,可以有各种变型,而不背离本发明的实质。因此,所有这样的变型都落入由所附权利要求书限定的本发明的范围之内。
法律信息
- 2018-03-16
专利权人的姓名或者名称、地址的变更
专利权人由北京瑞星信息技术股份有限公司变更为北京瑞星网安技术股份有限公司
地址由100190 北京市海淀区中关村大街22号中科大厦1301室变更为100190 北京市海淀区中关村大街22号中科大厦1301室
- 2016-05-11
专利权人的姓名或者名称、地址的变更
专利权人由北京瑞星信息技术有限公司变更为北京瑞星信息技术股份有限公司
地址由100190 北京市海淀区中关村大街22号中科大厦1301室变更为100190 北京市海淀区中关村大街22号中科大厦1301室
- 2013-06-12
- 2010-12-01
实质审查的生效
IPC(主分类): H04L 29/06
专利申请号: 200710162446.4
申请日: 2007.10.15
- 2010-05-19
专利申请权的转移
登记生效日: 2010.04.13
申请人由北京瑞星国际软件有限公司变更为北京瑞星信息技术有限公司
地址由100080 北京市中关村大街22号中科大厦1305室变更为100190 北京市海淀区中关村大街22号中科大厦1301室
- 2009-04-22
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2006-07-12
|
2004-12-31
| | |
2
| |
2007-01-24
|
2006-04-28
| | |
3
| |
2001-08-29
|
2000-02-24
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |