一种拦截应用程序行为的方法及终端的制作方法

文档序号:10594483阅读:295来源:国知局
一种拦截应用程序行为的方法及终端的制作方法
【专利摘要】本发明实施例公开了一种拦截应用程序行为的方法,包括:监控应用程序通过本地过程调用LPC向子系统发送的消息,判断所述消息是否为用于创建服务的消息;当监控到所述消息为用于创建服务的消息时,对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序;当确定所述应用程序为恶意程序时,对所述消息进行拦截,以拦截所述应用程序通过所述消息进行创建服务。本发明实施例还公开了一种终端。采用本发明,降低终端拦截恶意程序的恶意行为的处理压力,提高终端的拦截准确性。
【专利说明】
一种拦截应用程序行为的方法及终端
技术领域
[0001]本发明涉及电子技术领域,尤其涉及一种拦截应用程序行为的方法及终端。
【背景技术】
[0002]随着互联网技术发展,病毒,木马等恶意软件技术层出不穷。恶意程序可利用特殊恶意代码进行恶意行为攻击服务系统。目前大多恶意程序多是在用户未知的情况下可进行创建服务,或者删除服务等行为,使得恶意程序可通过创建的服务进行盗用个人信息,或者恶意程序可通过删除服务进行删除杀毒应用程序,这均使得用户的个人隐私信息可遭泄露,并可导致服务系统崩溃,从而给用户造成财产损失。
[0003]为了避免恶意程序进行恶意创建服务或恶意删除服务的恶意行为,目前终端可对服务注册表进行监测,当监测到服务注册表进行创建或删除时,终端可对创建或删除服务的注册表的行为进行判断是否为应用程序进行创建服务或者删除服务,当确定为创建服务或者删除服务的行为时终端将对发起创建服务或删除服务的相关文件进行安全检测,并当检测为危险时进行拦截应用程序进行修改注册表。但是,由于终端中的各种应用程序并不仅仅是在创建服务时才进行创建服务注册表,在删除服务时才进行删除服务注册表,其他操作行为也不断在创建或删除注册表,这使得终端需对大量的创建或删除服务注册表的行为进行判断是否为创建服务或删除服务,这使得终端的处理压力过重,并且终端判断准确度有限,从而导致终端无法准确拦截恶意程序进行的恶意创建服务或恶意删除服务的行为。

【发明内容】

[0004]本发明实施例所要解决的技术问题在于,提供一种拦截应用程序行为的方法及终端。可降低终端拦截恶意程序的恶意行为的处理压力。
[0005]为了解决上述技术问题,本发明实施例提供了一种拦截应用程序行为的方法,包括:
[0006]监控应用程序通过本地过程调用LPC向子系统发送的消息,判断所述消息是否为用于创建服务的消息;
[0007]当监控到所述消息为用于创建服务的消息时,对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序;
[0008]当确定所述应用程序为恶意程序时,对所述消息进行拦截,以对所述应用程序通过所述消息进行创建服务的行为进行拦截。
[0009]其中,所述判断所述消息是否为用于创建服务的消息之后还包括:
[0010]当确定所述消息不是用于创建服务的消息时,判断所述消息是否为用于删除服务的消息;
[0011]当确定所述消息为用于删除服务的消息时,执行对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序步骤。
[0012]其中,所述判断所述消息是否为用于创建服务的消息包括:
[0013]检测所述消息是否携带创建服务标识符;
[0014]当确定所述消息携带所述创建服务标识符,确定所述消息为用于创建服务的消息;
[0015]所述判断所述消息是否为用于删除服务的消息包括:
[0016]检测所述消息是否携带删除服务标识符;
[0017]当确定所述消息携带所述删除服务标识符时,确定所述消息为用于删除服务的消息。
[0018]其中,所述对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序之前包括:
[0019]当确定所述消息为用于创建服务的消息时,根据所述消息确定所述应用程序所要创建的服务的启动文件;
[0020]对所述启动文件进行安全检测,判断所述启动文件是否为危险文件;
[0021]当确定所述启动文件不是危险文件时,执行对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序步骤;
[0022]当确定所述启动文件是危险文件时,执行对所述消息进行拦截步骤。
[0023]其中,所述对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序之前包括:
[0024]当确定所述消息为用于删除服务的消息时,根据所述消息确定所述应用程序所要进行删除的待删除服务文件;
[0025]判断所述待删除服务文件是否属于预置文件;
[0026]当确定所述待删除服务文件不属于所述预置文件时,执行所述对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序步骤;
[0027]当确定所述待删除服务文件属于所述预置文件时,执行对所述消息进行拦截步骤。
[0028]其中,所述消息携带启动文件路径;
[0029]所述根据所述消息确定所述应用程序所要创建的启动文件包括:
[0030]根据所述消息携带的服务启动文件路径确定所述启动文件。
[0031 ]其中,所述消息携带待删除服务文件路径;
[0032]所述根据所述消息确定所述应用程序所要进行删除的待删除服务文件包括:
[0033]根据所述消息携带的待删除服务文件确定所述待删除服务文件。
[0034]其中,所述对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序之前包括:
[0035]获取所述消息的发送进程路径;
[0036]根据所述消息的发送进程路径确定所述应用程序。
[0037]相应地,本发明实施例还提供了一种终端,所述终端包括:
[0038]第一判断单元,用于监控应用程序通过本地过程调用LPC向子系统发送的消息,判断所述消息是否为用于创建服务的消息;
[0039]第一安全检测单元,用于当所述第一判断单元监控到所述消息为用于创建服务的消息时,对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序;
[0040]拦截单元,用于当所述第一安全检测单元确定所述应用程序为恶意程序时,对所述消息进行拦截,以对所述应用程序通过所述消息进行创建服务的行为进行拦截。
[0041 ] 其中,所述终端还包括:
[0042]第二判断单元,用于当确定所述消息不是用于创建服务的消息时,判断所述消息是否为用于删除服务的消息;
[0043]当所述第二判断单元确定所述消息为用于删除服务的消息时,所述第二判断单元通知所述第一安全检测单元对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序。
[0044]其中,所述第一判断单元包括:
[0045]第一检测子单元,用于检测所述消息是否携带创建服务标识符;
[0046]第一确定子单元,用于当所述第一检测子单元确定所述消息携带所述创建服务标识符,确定所述消息为用于创建服务的消息;
[0047]所述第二判断单元包括:
[0048]第二检测子单元,用于检测所述消息是否携带删除服务标识符;
[0049]第二确定子单元,用于当所述第二检测子单元确定所述消息携带所述删除服务标识符时,确定所述消息为用于删除服务的消息。
[0050]其中,所述终端还包括:
[0051]第一确定单元,用于当所述第一判断单元确定所述消息为用于创建服务的消息时,根据所述消息确定所述应用程序所要创建的服务的启动文件;
[0052]第二安全检测单元,用于对所述启动文件进行安全检测,判断所述启动文件是否为危险文件;
[0053]当所述第二安全检测单元确定所述启动文件不是危险文件时,通知所述第一安全检测单元对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序;
[0054]当所述第二安全检测单元确定所述启动文件是危险文件时,通知所述拦单元对所述消息进行拦截。
[0055]其中,所述终端还包括:
[0056]第二确定单元,用于当所述第二判断单元确定所述消息为用于删除服务的消息时,根据所述消息确定所述应用程序所要进行删除的待删除服务文件;
[0057]第三判断单元,用于判断所述待删除服务文件是否属于预置文件;
[0058]当所述第三判断单元确定所述待删除服务文件不属于所述预置文件时,通知所述第一安全检测单元所述对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序;
[0059]当所述第三判断单元确定所述待删除服务文件属于所述预置文件时,通知所述拦截单元对所述消息进行拦截。
[0060]其中,所述消息携带启动文件路径;
[0061 ]所述第一确定单元具体用于:
[0062]根据所述消息携带的服务启动文件路径确定所述启动文件。
[0063]其中,所述消息携带待删除服务文件路径;
[0064]所述第二确定单元具体用于:
[0065]根据所述消息携带的待删除服务文件确定所述待删除服务文件。
[0066]其中,所述终端还包括:
[0067]获取单元,用于获取所述消息的发送进程路径;
[0068]第三确定单元,用于根据所述消息的发送进程路径确定所述应用程序。
[0069]实施本发明实施例,具有如下有益效果:
[0070]在本发明实施例中,终端监控应用程序通过本地过程调用LPC向子系统发送的消息,判断所述消息是否为用于创建服务的消息,当监控到所述消息为用于创建服务的消息时,对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序,当确定所述应用程序为恶意程序时,对所述消息进行拦截,这使得终端仅通过对消息的拦截即能实现对恶意程序恶意创建服务的行为进行拦截,从而简便终端的拦截操作,降低终端拦截恶意程序的恶意行为的处理压力,节省终端的运行资源,并提高终端的拦截准确性,从而提升终端的自身安全。
【附图说明】
[0071]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0072]图1是本发明实施例提供的一种拦截应用程序行为的方法的第一实施例流程示意图;
[0073]图2是本发明实施例提供的一种拦截应用程序行为的方法的第二实施例流程示意图;
[0074]图3是本发明实施例提供的一种拦截应用程序行为的方法的第三实施例流程示意图;
[0075]图4是本发明实施例提供的一种终端的第一实施例结构图;
[0076]图5是本发明实施例提供的一种终端的第二实施例结构图;
[0077]图6是本发明实施例提供的一种终端的第三实施例结构图。
【具体实施方式】
[0078]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0079]本发明实施例中的执行主体可以为终端,所描述的终端可包括:电脑、平板电脑、笔记本等智能终端,上述终端仅是举例,而非穷举,包含但不限于上述终端。
[0080]参见图1,是本发明实施例提供的一种拦截应用程序行为的方法第一实施例流程示意图。本发明实施例的一种拦截应用程序行为的方法包括如下步骤:
[0081]S100,监控应用程序通过本地过程调用LPC向子系统发送的消息,判断所述消息是否为用于创建服务的消息。
[0082]在本发明实施例中,终端上运行的系统可以为Windows系统,Windows系统下可包括支持的多个子系统,如进程管理子系统,内存管理子系统,1管理子系统和服务管理子系统等,其中,进程管理子系统用于管理终端的进程,内存管理子系统用于管理终端的内存,1管理子系统用于管理终端的10,服务管理子系统用于管理终端的服务。在本发明实施例中,子系统可以为服务管理子系统,服务管理子系统可统一管理注册表中的服务信息数据。其中,当终端的应用程序需进行更改终端的服务时,如创建、修改或删除服务时,应用程序可通过LPC(local process call,本地过程调用)向服务管理子系统发送的消息,如当应用程序需进行创建服务时,应用程序可通过LPC向服务管理子系统发送用于创建服务的消息,以使子系统响应用于创建服务的消息进行创建服务,如当应用程序需进行删除服务时,应用程序可通过LPC向服务管理子系统发送用于删除服务的消息,以使子系统响应用于删除服务的消息进行删除服务,其中,消息为服务的相关消息。
[0083]在本发明实施例中,终端可监控终端中的应用程序通过LPC向服务管理子系统发送的消息,判断消息是否为用于创建服务的消息,其中,终端可对通过LPC向子系统发送的消息进行逐个检测,检测消息是否携带创建服务标识符。当检测到消息携带创建服务标识符时,终端可确定消息为用于创建服务的消息。
[0084]在具体实施中,当应用程序需通过LPC向服务管理子系统发送消息时,应用程序调用内核层NtRequestWaitReplyPort函数使用LPC向服务管理子系统发送的消息。因此,终端可预置一个钩子函数 NewNtRequestWaitRep IyPort 函数替换原始 NtRequestWaitRep IyPort函数对应用程序通过LPC向子系统发送的消息进行监测。具体的,可在系统的SSDT(SyStemServices Descriptor Table,系统服务描述符表)表中找到NtRequestWaitReplyPort函数,保存 NtRequestWaitRep IyPort 函数地址,并定义 NewNtRequestWaitRep IyPort 函数替换原始NtRequestWaitReplyPort函数地址,当应用程序调用NtRequestWaitReplyPort函数使用L P C向服务管理子系统发送的消息时,则实际上应用程序是调用NewNtRequestWaitReplyPort函数使用LPC向服务管理子系统发送的消息。其中,在钩子函数NewNtRequestWaitReplyPort函数中,第一个参数是端口句柄,即为发送目标的端口句柄。当应用程序调用钩子函数NewNtRequestWaitReplyPor函数t进行发送消息时,终端可获取钩子函数的第一个参数端口句柄,通过内核函数ObRef erenceOb jectByHandle函数将端口句柄进行转换为发送端口的结构指针,并通过内核函数ObReferenceObjectByName函数将发送端口的结构指针转换为发送端口的名称,判断发送端口的名称是否匹配“\\RPCControl\\ntsvcs”端口,当判断匹配时,说明应用程序往名为ntsvcs端口发送消息。当终端确认应用程序往名为ntsvcs端口发送的消息时,终端可根据消息控制服务管理子系统进行服务管理。因此,当终端通过钩子函数NewNtRequestWaitReplyPort函数判断应用程序往名为ntsvcs端口发送消息时,终端可确定该消息为服务的相关消息,如创建服务消息、删除服务消息或打开服务消息等消息。
[0085]进一步的,在具体实施中,钩子函数NewNtRequestWaitReplyPort函数的第二个参数为发送的消息数据,消息数据上携带标识符,该标识符为int类型的标识符,该标识符可包括创建服务标识符、删除服务标识符和打开服务标识符,具体的,标识符的具体位置可在XP系统中的结构指针+0x2C位置上,当标识符的标识值为0x18,则标识符可为创建服务标识符,当标识符的标识值为OxlC,则标识符可为打开服务标识符,当标识符的标识值为0x02,则标识符可为删除服务标识符,其中,标识符用于标识对服务的具体操作动作,如当标识符为创建服务标识符时,则为应用程序通知子系统进行创建服务。终端可通过钩子函数NewNtRequestWaitReplyPort函数读取标识符,判断标识值是否为0x18,当判断标识符的标识值为0x18时,确定消息携带创建服务标识符,可判断消息为用于创建服务的消息。
[0086]SlOl,当监控到所述消息为用于创建服务的消息时,对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序。
[0087]在本发明实施例中,当监控到应用程序通过LPC向子系统发送的消息为用于创建服务的消息时,终端可扫描发送消息的应用程序,对应用程序进行安全检测,判断应用程序是否为恶意程序,其中,终端可调用安全杀毒应用程序对发送消息的应用程序进行安全检测,判断是否为恶意程序,其中,安全杀毒应用程序在具体的应用程序中可如毒霸应用程序,360安全卫士等安全应用程序。当安全杀毒应用程序判断其为危险文件或为未知文件时,则终端可确定应用程序为恶意程序,当安全杀毒应用程序判断其安全文件时,终端可确定应用程序不是恶意程序。
[0088]在本发明实施例中,终端可获取消息的发送进程路径,通过消息的发送进程路径确定应用程序,从而终端调用安全杀毒应用程序对其进行安全检测。在具体应用中,可以是,钩子函数 NewNtRequestWai tReplyPort 函数调用内核函数PsGetCurrentProcessId函数和ZwQuery Informat1nProcess函数获取当前监测的消息的发送进程路径,根据发送进程路径确定应用程序,并调用上层文件查杀系统进行判断应用程序的状态,如果状态是灰,红(灰代表未知文件,红代表危险文件)时,且即为恶意程序。
[0089]S102,当确定所述应用程序为恶意程序时,对所述消息进行拦截。
[0090]在本发明实施例中,当终端确定应用程序为恶意程序,终端可对消息进行拦截,如删掉消息,或者钩子函数NewNtRequestWaitReplyPort函数退出,不执行原始NtRequestWai tReplyPort函数,恶意程序创建服务就会失败,从而实现对应用程序通过消息进行创建服务的行为进行拦截。当终端确定应用程序不是恶意程序时,钩子函数NewNtRequestWaitReplyPort函数退出,并调用NtRequestWaitReplyPort函数进行处理应用程序发送的消息。
[0091]在本发明实施例中,终端监控应用程序通过本地过程调用LPC向子系统发送的消息,判断所述消息是否为用于创建服务的消息,当监控到所述消息为用于创建服务的消息时,对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序,当确定所述应用程序为恶意程序时,对所述消息进行拦截,这使得终端仅通过对消息的拦截即能实现对恶意程序恶意创建服务的行为进行拦截,从而简便终端的拦截操作,降低终端拦截恶意程序的恶意行为的处理压力,节省终端的运行资源,并提高终端的拦截准确性,从而提升终端的自身安全。
[0092]参见图2,是本发明实施例提供的一种拦截应用程序行为的方法第二实施例流程示意图。本发明实施例的一种拦截应用程序行为的方法包括如下步骤:
[0093]S200,监控应用程序通过本地过程调用LPC向子系统发送的消息,判断所述消息是否为用于创建服务的消息。
[0094]S201,当确定所述消息为用于创建服务的消息时,根据所述消息确定所述应用程序所要创建的服务的启动文件。
[0095]在本发明实施例中,用于创建服务的消息可携带应用程序所要创建的服务的启动文件的启动路径,终端可根据消息所携带的启动路径确定应用程序所要创建的服务的启动文件。
[0096]在具体应用中,钩子函数NewNtRequestWaitReplyPort函数的第二个参数中的PP0RT_MESSAGE结构类型指针+0x38的位置保存一个PSC_RPC_STRINGA结构指针,此结构指针保存所创建的服务启动文件的相关信息,终端可解析此结构指针,获取到需创建的服务的启动文件的启动路径。从而终端可根据解析到的启动路径确定应用程序所要创建的服务的启动文件。
[0097]S202,对所述启动文件进行安全检测,判断所述启动文件是否为危险文件。
[0098]在本发明实施例中,当终端确定所要创建的服务的启动文件时,终端可调用安全杀毒应用程序对启动文件进行安全检测,判断是否为危险文件,其中,安全杀毒应用程序在具体的应用程序中可如毒霸应用程序,360安全卫士等安全应用程序。当安全杀毒应用程序判断其为危险文件或为未知文件时,则终端可确定启动文件为危险文件,当安全杀毒应用程序判断其安全文件时,终端可确定启动文件为安全文件。
[0099]在具体实施中,当终端确定所要创建的服务的启动文件时,终端调用上层文件查杀系统进行判断应用程序的状态,如果状态是灰,红(灰代表未知文件,红代表危险文件)时,且即为危险文件。
[0100]S203,当确定所述启动文件是危险文件时,对所述消息进行拦截。
[0101]在本发明实施例中,当终端确定启动文件为危险文件时,终端可对消息进行拦截,如删掉消息,或者钩子函数NewNtRequestWaitReplyPort函数退出,不执行原始NtRequestWai tReplyPort函数,恶意程序创建服务就会失败。当终端确定应用程序为安全文件时,执行步骤S204。
[0102]S204,当确定所述启动文件不是危险文件时,对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序。当确定所述应用程序为恶意程序时,执行所述步骤S203对所述消息进行拦截。
[0103]其中,步骤S200、步骤S203和步骤S204的【具体实施方式】还可参见上述实施例中步骤S100、步骤SlOl和步骤S102的【具体实施方式】,在此不再进行赘述。
[0104]在本发明实施例中,终端监控应用程序通过本地过程调用LPC向子系统发送的消息,判断所述消息是否为用于创建服务的消息,当监控到所述消息为用于创建服务的消息时,对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序,当确定所述应用程序为恶意程序时,对所述消息进行拦截,这使得终端仅通过对消息的拦截即能实现对恶意程序恶意创建服务的行为进行拦截,从而简便终端的拦截操作,降低终端拦截恶意程序的恶意行为的处理压力,节省终端的运行资源,并提高终端的拦截准确性,从而提升终端的自身安全。
[0105]参见图3,是本发明实施例提供的一种拦截应用程序行为的方法第三实施例流程示意图。本发明实施例的一种拦截应用程序行为的方法包括如下步骤:
[0106]300,监控应用程序通过本地过程调用LPC向子系统发送的消息,判断所述消息是否为用于创建服务的消息。
[0107]S301,当确定所述消息不是用于创建服务的消息时,判断所述消息是否为用于删除服务的消息。
[0108]在本发明实施例中,当终端确定消息不是用于创建服务的消息时,终端可再次对消息进行检测,检测消息是否携带删除服务标识符。当检测到消息携带删除服务标识符时,终端可确定消息为用于删除服务的消息。
[0109]在具体实施中,终端可通过钩子函数NewNtRequestWaitReplyPort函数读取标识符,判断标识值是否为0x02,当判断标识值为0x02时,终端可确定消息携带删除服务标识符,确定消息为用于删除服务的消息。
[0110]S302,当确定所述消息为用于创建服务的消息时,对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序。
[0111]在本发明实施例中,当终端确定消息为用于创建服务的消息时,终端可根据消息确定应用程序所要进行删除的待删除服务文件,其中,消息携带待删除服务文件的存储路径。
[0112]在具体应用中,钩子函数NewNtRequestWaitReplyPort函数的第二个参数中的PP0RT_MESSAGE结构类型指针+0x38的位置保存一个PSC_RPC_STRINGA结构指针,此结构指针保存所删除的待删除服务文件的相关信息,终端可解析此结构指针,获取到需删除的待删除服务文件的存储路径。从而终端可根据解析到的待删除服务文件的存储路径确定应用程序所要删除的待删除文件。
[0113]在本发明实施例中,当终端确定待删除服务文件时,终端可判断待删除服务文件是否为预置文件,其中,预置文件可以是终端的安全检测文件,如毒霸检测应用程序、360安全卫士应用程序等文件。当终端判断待删除服务文件为预置文件时,终端可对消息进行拦截,如删除消息。
[0114]在本发明实施例中,当终端判断待删除服务文件不是预置文件时,终端可扫描发送消息的应用程序,对应用程序进行安全检测,判断应用程序是否为恶意程序,其中,终端可调用安全杀毒应用程序对发送消息的应用程序进行安全检测,判断是否为恶意程序,其中,安全杀毒应用程序在具体的应用程序中可如毒霸应用程序,360安全卫士等安全应用程序。当安全杀毒应用程序判断其为危险文件或为未知文件时,则终端可确定应用程序为恶意程序,当安全杀毒应用程序判断其安全文件时,终端可确定应用程序不是恶意程序。
[0115]在本发明实施例中,终端可获取消息的发送进程路径,通过消息的发送进程路径确定应用程序,从而终端调用安全杀毒应用程序对其进行安全检测。在具体应用中,可以是,钩子函数 NewNtRequestWai tReplyPort 函数调用内核函数PsGetCurrentProcessId函数和ZwQuery Informat1nProcess函数获取当前监测的消息的发送进程路径,根据发送进程路径确定应用程序,并调用上层文件查杀系统进行判断应用程序的状态,如果状态是灰,红(灰代表未知文件,红代表危险文件)时,且即为恶意程序。
[0116]S303,当确定所述应用程序为恶意程序时,对所述消息进行拦截,以拦截所述应用程序通过所述消息进行创建服务。
[0117]在本发明实施例中,步骤S303的【具体实施方式】可参见上述实施例中的步骤S102,在此不再进行赘述。
[0118]在本发明实施例中,终端监控应用程序通过本地过程调用LPC向子系统发送的消息,判断所述消息是否为用于创建服务的消息,当监控到所述消息为用于创建服务的消息时,对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序,当确定所述应用程序为恶意程序时,对所述消息进行拦截,这使得终端仅通过对消息的拦截即能实现对恶意程序恶意创建服务的行为进行拦截,从而简便终端的拦截操作,降低终端拦截恶意程序的恶意行为的处理压力,节省终端的运行资源,并提高终端的拦截准确性,从而提升终端的自身安全。
[0119]参见图4,是本发明实施例提供的一种终端的第一实施例结构图。本发明实施例中所描述的终端包括:
[0120]第一判断单元100,用于监控应用程序通过本地过程调用LPC向子系统发送的消息,判断所述消息是否为用于创建服务的消息。
[0121]第一安全检测单元200,用于当所述第一判断单元监控到所述消息为用于创建服务的消息时,对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序。
[0122]拦截单元300,用于当所述第一安全检测单元确定所述应用程序为恶意程序时,对所述消息进行拦截。
[0123]在本发明实施例中,终端上运行的系统可以为Windows系统,Windows系统下可包括支持的多个子系统,如进程管理子系统,内存管理子系统,1管理子系统和服务管理子系统等,其中,进程管理子系统用于管理终端的进程,内存管理子系统用于管理终端的内存,1管理子系统用于管理终端的10,服务管理子系统用于管理终端的服务。在本发明实施例中,子系统可以为服务管理子系统,服务管理子系统可统一管理注册表中的服务信息数据。其中,当终端的应用程序需进行更改终端的服务时,如创建、修改或删除服务时,应用程序可通过LPC(local process call,本地过程调用)向服务管理子系统发送的消息,如当应用程序需进行创建服务时,应用程序可通过LPC向服务管理子系统发送用于创建服务的消息,以使子系统响应用于创建服务的消息进行创建服务,如当应用程序需进行删除服务时,应用程序可通过LPC向服务管理子系统发送用于删除服务的消息,以使子系统响应用于删除服务的消息进行删除服务,其中,消息为服务的相关消息。
[0124]在本发明实施例中,第一判断单元100可监控终端中的应用程序通过LPC向服务管理子系统发送的消息,判断消息是否为用于创建服务的消息,其中,第一判断单元100可对通过LPC向子系统发送的消息进行逐个检测,检测消息是否携带创建服务标识符。当检测到消息携带创建服务标识符时,第一判断单元100可确定消息为用于创建服务的消息。
[0125]在具体实施中,当应用程序需通过LPC向服务管理子系统发送消息时,应用程序调用内核层NtRequestWai tReplyPort函数使用LPC向服务管理子系统发送的消息。因此,终端可预置一个钩子函数 NewNtRequestWai tReplyPort 函数替换原始 NtRequestWai tReplyPort函数对应用程序通过LPC向子系统发送的消息进行监测。具体的,可在系统的SSDT(SyStemServices Descriptor Table,系统服务描述符表)表中找到NtRequestWaitReplyPort函数,保存 NtRequestWai tReplyPort 函数地址,并定义 NewNtRequestWai tReplyPort 函数替换原始NtRequestWaitReplyPort函数地址,当应用程序调用NtRequestWaitReplyPort函数使用L P C向服务管理子系统发送的消息时,则实际上应用程序是调用NewNtRequestWaitReplyPort函数使用LPC向服务管理子系统发送的消息。其中,在钩子函数NewNtRequestWaitReplyPort函数中,第一个参数是端口句柄,即为发送目标的端口句柄。当应用程序调用钩子函数NewNtRequestWaitReplyPor函数t进行发送消息时,终端可获取钩子函数的第一个参数端口句柄,通过内核函数ObRef erenceOb jectByHandle函数将端口句柄进行转换为发送端口的结构指针,并通过内核函数ObReferenceObjectByName函数将发送端口的结构指针转换为发送端口的名称,判断发送端口的名称是否匹配“\\RPCControl\\ntsvcs”端口,当判断匹配时,说明应用程序往名为ntsvcs端口发送消息。当终端确认应用程序往名为ntsvcs端口发送的消息时,终端可根据消息控制服务管理子系统进行服务管理。因此,当终端通过钩子函数NewNtRequestWai tReplyPort函数判断应用程序往名为ntsvcs端口发送消息时,终端可确定该消息为服务的相关消息,如创建服务消息、删除服务消息或打开服务消息等消息。
[0126]进一步的,在具体实施中,钩子函数NewNtRequestWaitReplyPort函数的第二个参数为发送的消息数据,消息数据上携带标识符,该标识符为int类型的标识符,该标识符可包括创建服务标识符、删除服务标识符和打开服务标识符,具体的,标识符的具体位置可在XP系统中的结构指针+0x2C位置上,当标识符的标识值为0x18,则标识符可为创建服务标识符,当标识符的标识值为OxlC,则标识符可为打开服务标识符,当标识符的标识值为0x02,则标识符可为删除服务标识符,其中,标识符用于标识对服务的具体操作动作,如当标识符为创建服务标识符时,则为应用程序通知子系统进行创建服务。终端可通过钩子函数NewNtRequestWaitReplyPort函数读取标识符,判断标识值是否为0x18,当判断标识符的标识值为0x18时,确定消息携带创建服务标识符,可判断消息为用于创建服务的消息。
[0127]在本发明实施例中,当第一判断单元100监控到应用程序通过LPC向子系统发送的消息为用于创建服务的消息时,第一安全检测单元200可扫描发送消息的应用程序,对应用程序进行安全检测,判断应用程序是否为恶意程序,其中,第一安全检测单元200可调用安全杀毒应用程序对发送消息的应用程序进行安全检测,判断是否为恶意程序,其中,安全杀毒应用程序在具体的应用程序中可如毒霸应用程序,360安全卫士等安全应用程序。当安全杀毒应用程序判断其为危险文件或为未知文件时,则第一安全检测单元200可确定应用程序为恶意程序,当安全杀毒应用程序判断其安全文件时,第一安全检测单元200可确定应用程序不是恶意程序。
[0128]在本发明实施例中,第一安全检测单元200可获取消息的发送进程路径,通过消息的发送进程路径确定应用程序,从而终端调用安全杀毒应用程序对其进行安全检测。在具体应用中,可以是,钩子函数NewNtRequestWaitReplyPort函数调用内核函数PsGetCurrentProcessId函数和ZwQuerylnformat1nProcess函数获取当前监测的消息的发送进程路径,根据发送进程路径确定应用程序,并调用上层文件查杀系统进行判断应用程序的状态,如果状态是灰,红(灰代表未知文件,红代表危险文件)时,且即为恶意程序。
[0129]在本发明实施例中,当第一安全检测单元200确定应用程序为恶意程序,拦截单元300可对消息进行拦截,如删掉消息,或者钩子函数NewNtRequestWaitReplyPort函数退出,不执行原始NtRequestWai tReplyPort函数,恶意程序创建服务就会失败。当第一安全检测单元200确定应用程序不是恶意程序时,钩子函数NewNtRequestWaitReplyPort函数退出,并调用NtRequestWaitReplyPort函数进行处理应用程序发送的消息。
[0130]其中,所述第一判断单元100包括:
[0131]第一检测子单元,用于检测所述消息是否携带创建服务标识符。
[0132]第一确定子单元,用于当所述第一检测子单元确定所述消息携带所述创建服务标识符,确定所述消息为用于创建服务的消息。
[0133]所述终端还包括:
[0134]获取单元,用于获取所述消息的发送进程路径。
[0135]第三确定单元,用于根据所述消息的发送进程路径确定所述应用程序。
[0136]可以理解的是,本实施例的终端中的单元的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再进行赘述。
[0137]在本发明实施例中,终端监控应用程序通过本地过程调用LPC向子系统发送的消息,判断所述消息是否为用于创建服务的消息,当监控到所述消息为用于创建服务的消息时,对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序,当确定所述应用程序为恶意程序时,对所述消息进行拦截,这使得终端仅通过对消息的拦截即能实现对恶意程序恶意创建服务的行为进行拦截,从而简便终端的拦截操作,降低终端拦截恶意程序的恶意行为的处理压力,节省终端的运行资源,并提高终端的拦截准确性,从而提升终端的自身安全。
[0138]参见图5,是本发明实施例提供的一种终端的第二实施例结构图。本发明实施例中所描述的终端包括:
[0139]第一判断单元100、第一安全检测单元200和拦截单元300。
[0140]其中,所述终端还包括:
[0141]第一确定单元400,用于当所述第一判断单元确定所述消息为用于创建服务的消息时,根据所述消息确定所述应用程序所要创建的服务的启动文件。
[0142]第二安全检测单元500,用于对所述启动文件进行安全检测,判断所述启动文件是否为危险文件。
[0143]在本发明实施例中,用于创建服务的消息可携带应用程序所要创建的服务的启动文件的启动路径,终端可根据消息所携带的启动路径确定应用程序所要创建的服务的启动文件。
[0144]在具体应用中,钩子函数NewNtRequestWaitReplyPort函数的第二个参数中的PP0RT_MESSAGE结构类型指针+0x38的位置保存一个PSC_RPC_STRINGA结构指针,此结构指针保存所创建的服务启动文件的相关信息,第一确定单元400,可解析此结构指针,获取到需创建的服务的启动文件的启动路径。从而终第一确定单元400,可根据解析到的启动路径确定应用程序所要创建的服务的启动文件。
[0145]在本发明实施例中,当第一确定单元400确定所要创建的服务的启动文件时,第二安全检测单元500可调用安全杀毒应用程序对启动文件进行安全检测,判断是否为危险文件,其中,安全杀毒应用程序在具体的应用程序中可如毒霸应用程序,360安全卫士等安全应用程序。当安全杀毒应用程序判断其为危险文件或为未知文件时,则第二安全检测单元500可确定启动文件为危险文件,当安全杀毒应用程序判断其安全文件时,第二安全检测单元500可确定启动文件为安全文件。
[0146]在具体实施中,当终端确定所要创建的服务的启动文件时,终端调用上层文件查杀系统进行判断应用程序的状态,如果状态是灰,红(灰代表未知文件,红代表危险文件)时,且即为危险文件。
[0147]其中,所述消息携带启动文件路径;
[OH8] 所述第一确定单元400具体用于:
[0149]根据所述消息携带的服务启动文件路径确定所述启动文件。
[0150]可以理解的是,本实施例的终端中的单元的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再进行赘述。
[0151]在本发明实施例中,终端监控应用程序通过本地过程调用LPC向子系统发送的消息,判断所述消息是否为用于创建服务的消息,当监控到所述消息为用于创建服务的消息时,对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序,当确定所述应用程序为恶意程序时,对所述消息进行拦截,这使得终端仅通过对消息的拦截即能实现对恶意程序恶意创建服务的行为进行拦截,从而简便终端的拦截操作,降低终端拦截恶意程序的恶意行为的处理压力,节省终端的运行资源,并提高终端的拦截准确性,从而提升终端的自身安全。
[0152]参见图6,是本发明实施例提供的一种终端的第三实施例结构图。本发明实施例中所描述的终端包括:
[0153]第一判断单元100、第一安全检测单元200和拦截单元300。
[0154]其中,所述终端还包括:
[0155]第二判断单元600,用于当确定所述消息不是用于创建服务的消息时,判断所述消息是否为用于删除服务的消息。
[0156]在本发明实施例中,当第一判断单元100确定消息不是用于创建服务的消息时,第二判断单元600,可再次对消息进行检测,检测消息是否携带删除服务标识符。当检测到消息携带删除服务标识符时,第二判断单元600,可确定消息为用于删除服务的消息。
[0157]在具体实施中,第二判断单元600可通过钩子函数NewNtRequestWaitReplyPort函数读取标识符,判断标识值是否为0x02,当判断标识值为0x02时,第二判断单元600可确定消息携带删除服务标识符,确定消息为用于删除服务的消息。
[0158]在本发明实施例中,当第二判断单元600确定消息为用于创建服务的消息时,终端可根据消息确定应用程序所要进行删除的待删除服务文件,其中,消息携带待删除服务文件的存储路径。
[0159]在具体应用中,钩子函数NewNtRequestWaitReplyPort函数的第二个参数中的PP0RT_MESSAGE结构类型指针+0x38的位置保存一个PSC_RPC_STRINGA结构指针,此结构指针保存所删除的待删除服务文件的相关信息,终端可解析此结构指针,获取到需删除的待删除服务文件的存储路径。从而终端可根据解析到的待删除服务文件的存储路径确定应用程序所要删除的待删除文件。
[0160]在本发明实施例中,当终端确定待删除服务文件时,终端可判断待删除服务文件是否为预置文件,其中,预置文件可以是终端的安全检测文件,如毒霸检测应用程序、360安全卫士应用程序等文件。当终端判断待删除服务文件为预置文件时,终端可对消息进行拦截,如删除消息。
[0161]在本发明实施例中,当终端判断待删除服务文件不是预置文件时,第一安全检测单元200可扫描发送消息的应用程序,对应用程序进行安全检测,判断应用程序是否为恶意程序,其中,第一安全检测单元200可调用安全杀毒应用程序对发送消息的应用程序进行安全检测,判断是否为恶意程序,其中,安全杀毒应用程序在具体的应用程序中可如毒霸应用程序,360安全卫士等安全应用程序。当安全杀毒应用程序判断其为危险文件或为未知文件时,则第一安全检测单元200可确定应用程序为恶意程序,当安全杀毒应用程序判断其安全文件时,第一安全检测单元200可确定应用程序不是恶意程序。
[0162]在本发明实施例中,第一安全检测单元200可获取消息的发送进程路径,通过消息的发送进程路径确定应用程序,从而第一安全检测单元200调用安全杀毒应用程序对其进行安全检测。在具体应用中,可以是,钩子函数NewNtRequestWaitReplyPort函数调用内核函数 PsGetCurrentProces s Id函数和ZwQuery Informat1nProce ss 函数获取当前监测的消息的发送进程路径,根据发送进程路径确定应用程序,并调用上层文件查杀系统进行判断应用程序的状态,如果状态是灰,红(灰代表未知文件,红代表危险文件)时,且即为恶意程序。
[0163]其中,所述第二判断单元600包括:
[0164]第二检测子单元,用于检测所述消息是否携带删除服务标识符;
[0165]第二确定子单元,用于当所述第二检测子单元确定所述消息携带所述删除服务标识符时,确定所述消息为用于删除服务的消息。
[0166]所述终端还包括:
[0167]第二确定单元,用于当所述第二判断单元确定所述消息为用于删除服务的消息时,根据所述消息确定所述应用程序所要进行删除的待删除服务文件;
[0168]第三判断单元,用于判断所述待删除服务文件是否属于预置文件;
[0169]当所述第三判断单元确定所述待删除服务文件不属于所述预置文件时,通知所述第一安全检测单元所述对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序;
[0170]当所述第三判断单元确定所述待删除服务文件属于所述预置文件时,通知所述拦截单元对所述消息进行拦截。
[0171 ]所述第二确定单元具体用于:
[0172]根据所述消息携带的待删除服务文件确定所述待删除服务文件。
[0173]可以理解的是,本实施例的终端中的单元的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再进行赘述。
[0174]在本发明实施例中,终端监控应用程序通过本地过程调用LPC向子系统发送的消息,判断所述消息是否为用于创建服务的消息,当监控到所述消息为用于创建服务的消息时,对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序,当确定所述应用程序为恶意程序时,对所述消息进行拦截,这使得终端仅通过对消息的拦截即能实现对恶意程序恶意创建服务的行为进行拦截,从而简便终端的拦截操作,降低终端拦截恶意程序的恶意行为的处理压力,节省终端的运行资源,并提高终端的拦截准确性,从而提升终端的自身安全。
[0175]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
[0176]以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
【主权项】
1.一种拦截应用程序行为的方法,其特征在于,所述方法包括: 监控应用程序通过本地过程调用LPC向子系统发送的消息,判断所述消息是否为用于创建服务的消息; 当监控到所述消息为用于创建服务的消息时,对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序; 当确定所述应用程序为恶意程序时,对所述消息进行拦截,以对所述应用程序通过所述消息进行创建服务的行为进行拦截。2.如权利要求1所述的方法,其特征在于,所述判断所述消息是否为用于创建服务的消息之后还包括: 当确定所述消息不是用于创建服务的消息时,判断所述消息是否为用于删除服务的消息; 当确定所述消息为用于删除服务的消息时,执行对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序步骤。3.如权利要求2所述的方法,其特征在于,所述判断所述消息是否为用于创建服务的消息包括: 检测所述消息是否携带创建服务标识符; 当确定所述消息携带所述创建服务标识符,确定所述消息为用于创建服务的消息; 所述判断所述消息是否为用于删除服务的消息包括: 检测所述消息是否携带删除服务标识符; 当确定所述消息携带所述删除服务标识符时,确定所述消息为用于删除服务的消息。4.如权利要求1所述的方法,其特征在于,所述对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序之前包括: 当确定所述消息为用于创建服务的消息时,根据所述消息确定所述应用程序所要创建的服务的启动文件; 对所述启动文件进行安全检测,判断所述启动文件是否为危险文件; 当确定所述启动文件不是危险文件时,执行对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序步骤; 当确定所述启动文件是危险文件时,执行对所述消息进行拦截步骤。5.如权利要求2所述的方法,其特征在于,所述对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序之前包括: 当确定所述消息为用于删除服务的消息时,根据所述消息确定所述应用程序所要进行删除的待删除服务文件; 判断所述待删除服务文件是否属于预置文件; 当确定所述待删除服务文件不属于所述预置文件时,执行所述对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序步骤; 当确定所述待删除服务文件属于所述预置文件时,执行对对所述消息进行拦截步骤。6.如权利要求4所述的方法,其特征在于,所述消息携带启动文件路径; 所述根据所述消息确定所述应用程序所要创建的启动文件包括: 根据所述消息携带的服务启动文件路径确定所述启动文件。7.如权利要求5所述的方法,其特征在于,所述消息携带待删除服务文件路径; 所述根据所述消息确定所述应用程序所要进行删除的待删除服务文件包括: 根据所述消息携带的待删除服务文件确定所述待删除服务文件。8.如权利要求1所述的方法,其特征在于,所述对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序之前包括: 获取所述消息的发送进程路径; 根据所述消息的发送进程路径确定所述应用程序。9.一种终端,其特征在于,所述终端包括: 第一判断单元,用于监控应用程序通过本地过程调用LPC向子系统发送的消息,判断所述消息是否为用于创建服务的消息; 第一安全检测单元,用于当所述第一判断单元监控到所述消息为用于创建服务的消息时,对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序; 拦截单元,用于当所述第一安全检测单元确定所述应用程序为恶意程序时,对所述消息进行拦截,以对所述应用程序通过所述消息进行创建服务的行为进行拦截。10.如权利要求9所述的终端,其特征在于,所述终端还包括: 第二判断单元,用于当确定所述消息不是用于创建服务的消息时,判断所述消息是否为用于删除服务的消息; 当所述第二判断单元确定所述消息为用于删除服务的消息时,所述第二判断单元通知所述第一安全检测单元对所述应用程序进行安全检测,判断所述应用程序是否为恶意程序。
【文档编号】G06F21/56GK105956470SQ201610287148
【公开日】2016年9月21日
【申请日】2016年5月3日
【发明人】李文靖
【申请人】北京金山安全软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1