CN103023906B - 针对远程过程调用协议进行状态跟踪的方法及系统 - Google Patents

针对远程过程调用协议进行状态跟踪的方法及系统 Download PDF

Info

Publication number
CN103023906B
CN103023906B CN201210559338.1A CN201210559338A CN103023906B CN 103023906 B CN103023906 B CN 103023906B CN 201210559338 A CN201210559338 A CN 201210559338A CN 103023906 B CN103023906 B CN 103023906B
Authority
CN
China
Prior art keywords
interface
packet
client
remote procedure
carrying
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
Application number
CN201210559338.1A
Other languages
English (en)
Other versions
CN103023906A (zh
Inventor
潘剑锋
王宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201210559338.1A priority Critical patent/CN103023906B/zh
Publication of CN103023906A publication Critical patent/CN103023906A/zh
Application granted granted Critical
Publication of CN103023906B publication Critical patent/CN103023906B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了针对远程过程调用协议进行状态跟踪的方法及系统,其中,该方法包括:拦截客户端进程与服务端进程之间相互绑定时交换的数据包,从所述数据包中获取并保存两个进程相互约定的调用规则;当监测到客户端进程运用远程过程调用协议,请求服务端进程提供服务的数据包时或响应另一进程的数据包时,解析该数据包并获取该数据包里面含有的调用指令;根据所述调用规则判断该调用指令所完成的业务行为。本发明解决了在现有客户端与服务器之间进行RPC调用时,获取调用的接口和函数号的准确含义。

Description

针对远程过程调用协议进行状态跟踪的方法及系统
技术领域
本发明涉及操作系统中运用远程过程调用协议领域,具体地说,涉及一种针对远程过程调用协议进行状态跟踪的方法及系统。
背景技术
主动防御是基于程序行为自主分析判断的实时防护技术,不以特征码作为判断恶意程序的依据,而是从最原始的定义出发,直接将程序的行为作为判断恶意程序的依据,其中衍生出在本地使用特征库、在本地设置行为阈值以及在本地启发式杀毒的方式来判别、拦截恶意程序的行为,从而一定程度上达到保护用户个人电脑或计算机的目的。
现有的主动防御系统包括:
1、HIPS(Host-based Intrusion Prevention System,基于主机的入侵防御系统)、沙箱等防御型产品需要对危险操作进行拦截,但是windows操作系统十分灵活,有多种进程间通信(IPC,Inter-Process Communication)机制,一旦恶意代码通过IPC利用系统进程来进行危险操作,那么对这种操作就难以拦截,需要改,而拦截恶意代码是通过IPC向系统服务发出的恶意请求。尤其是RPC(Remote Procedure Call Protocol,远程过程调用协议)方式就是最难以拦截的IPC机制之一。RPC是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
2、Windows操作系统下对RPC拦截需要识别发起请求的目的,即请求的是什么接口(含GUID(Global unique identifier,全局唯一标识符)标识)、什么函数、什么参数等内容。Windows操作系统下RPC的载体有很多,例如本地过程调用(LPC)、命名管道(NamedPipe)、TCP/IP网络等。在本机系统(不跨网络时)上最常见的是LPC与NamedPipe。客户向服务器发起RPC请求首先会先对接口进行绑定(binding),随后才能发出请求(Request)调用指定的程序(Procedure)(通过指明ProcNum或API number)。现有的RPC拦截都是针对请求(Request)阶段的,即只能获得ProcNum和参数,并不能获得GUID标识(这时仅能获得由binding时的数字标识),这样就难以获得完整的请求信息。
现有技术中,针对RPC拦截(状态跟踪)仅仅知道ProcNum和参数,然后根据一些条件(如port名称、栈回朔参数等内容)去猜测来判断客户端发送的是否为恶意的请求程序是不准确的。
RPC采用客户端/服务器模式,实际上请求程序就是一个客户端,而服务提供程序就是一个服务器。
首先,客户端调用进程发送一个有进程参数的调用信息到服务进程,然后等待答复信息。在服务器端,服务进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用信息继续进行。
所以当客户端为一恶意的请求程序,调用服务器完成恶意操作时,拦截程序(状态跟踪程序)在调用阶段介入拦截,拦截获得调用参数,但是现有技术中并不知道调用过程中所使用的调用指令的含义,所以也无从知晓这个调用指令是要执行什么操作,也就不能判断出操作是否为恶意。
现在技术中,可以根据拦截程序在调用阶段介入拦截到的一些其它信息,去猜测调用指令的含义,当调用指令仅涉及少量函数功能时,这种猜测是具备一定操作基础的。但是往往一个调用指令中会涉及很多个功能,此时根据一个调用指令无法准备获知客户端具体要调用服务器完成什么操作。
综上所述,如何准确地获取客户端与服务器之间进行RPC调用时,调用的接口和函数号的准确含义,从而就可以判定客户端发送的是否为恶意的请求程序,这样就能够进行防御操作,所以上述问题便成为亟待解决的技术问题。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决或者减缓上述问题的一种针对远程过程调用协议进行状态跟踪的方法及系统。
根据本发明的一个方面,提供了一种针对远程过程调用协议进行状态跟踪的方法,其中,包括:
拦截客户端进程与服务端进程之间相互绑定时交换的数据包,从所述数据包中获取并保存两个进程相互约定的调用规则;
当监测到客户端进程运用远程过程调用协议,请求服务端进程提供服务的数据包时或响应另一进程的数据包时,解析该数据包并获取该数据包里面含有的调用指令;
根据所述调用规则判断该调用指令所完成的业务行为。
进一步地,其中,根据所述调用规则判断该调用指令所完成的业务行为,还包括:
根据所述调用规则判断该调用指令所完成的业务行为,通过判断所述业务行为是否为恶意来判定所述客户端进程是否为恶意;
如判定所述业务行为为正常,继续监测下一请求或响应的数据包;如判定所述业务行为为恶意,则进而判定所述客户端进程为恶意,拦截该数据包。
进一步地,其中,拦截客户端进程与服务端进程之间相互绑定时交换的数据包,从所述数据包中获取并保存两个进程相互约定的调用规则,还包括:
拦截客户端进程与服务端进程之间相互绑定时交换的请求和响应的数据包,从所述数据包中获取并保存两个进程相互约定的调用规则,其中所述调用规则包括:接口及所配置的接口的代号的对应关系,和/或,所述接口中包括的各应用程序编码接口及所配置的接口标识的对应关系。
进一步地,其中,当监测到客户端进程运用远程过程调用协议,请求服务端进程提供服务的数据包时或响应另一进程的数据包时,解析该数据包并获取该数据包里面含有的调用指令,还包括:
当监测到客户端进程运用远程过程调用协议,请求服务端进程提供服务的数据包时或响应另一进程的数据包时,解析该数据包并获取该数据包里面含有的调用指令;其中,所述数据包为本地过程调用的请求报文,所述调用指令携带接口的代号和/或接口标识。
进一步地,其中,根据所述调用规则判断该调用指令所完成的业务行为,还包括:根据所述调用规则,对该调用指令中携带的接口的代号和/或接口标识进行判断,从而识别出所述客户端所调用的接口和函数。
进一步地,其中,所述数据包为采用本地过程调用、命名管道、UDP协议网络消息或TCP/IP网络消息的数据包。
进一步地,其中,所述调用规则,包括:所述调用指令与业务行为的对应关系;所述调用指令,包括:服务器根据客户端的请求所配置的接口的代号、以及服务器为接口中包含的应用程序编码接口配置的接口标识;所述业务行为,包括:客户端请求的接口、以及客户端请求的接口中包含的应用程序编码接口。
进一步地,其中,所述接口的代号为通过表达上下文字段PresentationContext来表示;所述接口标识为通过函数号ProcNum来表示。
根据本发明的一个方面,还提供了一种针对远程过程调用协议进行状态跟踪的系统,其中,包括:拦截模块、监测模块和判断模块;其中,
所述拦截模块,用于拦截客户端进程与服务端进程之间相互绑定时交换的数据包,从所述数据包中获取并保存两个进程相互约定的调用规则;
所述监测模块,用于当监测到客户端进程运用远程过程调用协议,请求服务端进程提供服务的数据包时或响应另一进程的数据包时,解析该数据包并获取该数据包里面含有的调用指令;
判断模块,用于根据所述调用规则判断该调用指令所完成的业务行为。
进一步地,其中,所述判断模块,还用于根据所述调用规则判断该调用指令所完成的业务行为,通过判断所述业务行为是否为恶意来判定所述客户端进程是否为恶意;
如判定所述业务行为为正常,继续监测下一请求或响应的数据包;如判定所述业务行为为恶意,则进而判定所述客户端进程为恶意,拦截该数据包。
进一步地,其中,所述拦截模块,还用于:拦截客户端进程与服务端进程之间相互绑定时交换的请求和响应的数据包,从所述数据包中获取并保存两个进程相互约定的调用规则,其中所述调用规则包括:接口及所配置的接口的代号的对应关系,和/或,所述接口中包括的各应用程序编码接口及所配置的接口标识的对应关系。
进一步地,其中,所述监测模块,还用于:当监测到客户端进程运用远程过程调用协议,请求服务端进程提供服务的数据包时或响应另一进程的数据包时,解析该数据包并获取该数据包里面含有的调用指令;其中,所述数据包为本地过程调用的请求报文,所述调用指令携带接口的代号和/或接口标识。
进一步地,其中,所述判断模块,还用于:根据所述调用规则,对该调用指令中携带的接口的代号和/或接口标识进行判断,从而识别出所述客户端所调用的接口和函数。
进一步地,其中,所述数据包为采用本地过程调用、命名管道、UDP协议网络消息或TCP/IP网络消息的数据包。
进一步地,其中,所述调用规则,包括:所述调用指令与业务行为的对应关系;所述调用指令,包括:服务器根据客户端的请求所配置的接口的代号、以及服务器为接口中包含的应用程序编码接口配置的接口标识;所述业务行为,包括:客户端请求的接口、以及客户端请求的接口中包含的应用程序编码接口。
进一步地,其中,所述接口的代号为通过表达上下文字段PresentationContext来表示;所述接口标识为通过函数号ProcNum来表示。
与现有的方案相比,本发明所获得的技术效果:
1)完全准确地获取客户端与服务器之间进行RPC调用时,调用的接口和函数号的准确含义,从而还可以判定是否为恶意程序;
2)通过本发明能够进行有效的防御操作,从而避免恶意请求程序的攻击,达到保护用户个人电脑或计算机的目的。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示意性示出了客户端与服务器在发生运用远程过程调用协议调用之前预先进行绑定的过程流程图;
图2示意性示出了根据本发明一个实施例所述针对远程过程调用协议进行状态跟踪的方法流程图;
图3是示意性示出了根据本发明另一个实施例所述针对远程过程调用协议进行状态跟踪的方法流程图;
图4示意性示出了根据本发明一个实施例所述针对远程过程调用协议进行状态跟踪的系统结构框图。
具体实施方式
下面结合附图和具体的实施方式对本发明作进一步的描述。
如图1所示,在客户端与服务器之间发生RPC调用之前,会预先进行绑定(binding),其过程为:
步骤101,客户端向服务器发送绑定请求,告知服务器自己要使用哪个Interface(接口);其中,每个Interface划分出一类服务函数集合。所谓Interface是面向对象编程语言中接口操作的关键字,功能是把所需成员组合起来,以封装一定功能的接口;
步骤102,服务器为Interface配置一个ID,并为这个Interface所包括的所有API(Application Programming Interface,应用程序编程接口)均配置一个标识number;
其中,该Interface可能包含一个或多个的API,完成各种功能;这里因为Interface可能是一个非常复杂而且冗长的名字,因此配置一个简单的标识ID以方便之后的交互,而且标识ID也更为机器可读,API number也是同理,即API(ApplicationProgramming Interface,应用程序编程接口)的编号;
步骤103,服务器向客户端发送绑定请求的响应,告知客户端所配置的Interface的标识ID以及API的编号(即API number);
步骤104,客户端记录Interface对应的标识ID以及API对应的编号(API number);
步骤105,客户端向服务器发送ID和API number,从而告知服务器自己需要调用哪个接口的哪个函数;
此时因为步骤102已经完成配置约定,所以客户端仅向服务器发送ID和APInumber即可;
步骤106,服务器解析ID和API number,从而获知客户端需要调用地端口和函数,也即哪个接口的哪个函数。
现有技术中RPC拦截都是针对步骤105之后的阶段,仅仅能够捕获ProcNum,并没有捕获请求过程中对于RPC状态追踪有用的完整的请求信息,比如:PresentationContext;其中ProcNum即接口编号API number中的一种,PresentationContext是表征一个接口的代号(句柄),其他人拿到这个句柄并不知道其含义(即代表哪个接口),所以只能去进行推测或是通过栈回朔技术进行猜测。
因此现有技术只能利用不完整的捕获信息ProcNum,根据如port名称、栈回朔参数等去猜测捕获到的ProcNum的含义,状态分析的准确性相对较低。
而本发明首先确认了PresentationContext参数对于解析所追踪的状态的重要意义,追踪了上述的整个过程(主要是之前的绑定过程),通过监控请求的通讯过程捕获完整的请求信息,所以可以清楚的解释这个句柄代表了哪个接口。
这样通过监控请求的通讯过程捕获完整的请求信息从而完全掌握PresentationContext和ProcNum的含义,保证了状态分析的准确性。
如图2所示,本发明一个实施例所述的针对远程过程调用协议进行状态跟踪的方法,其中,该方法包括:
步骤201,拦截客户端进程与服务端进程之间相互绑定时交换的数据包,从所述数据包中获取并保存两个进程相互约定的调用规则;
步骤202,当监测到客户端进程运用远程过程调用协议,请求服务端进程提供服务的数据包时或响应另一进程的数据包时,解析该数据包并获取该数据包里面含有的调用指令;
步骤203,根据所述调用规则判断该调用指令所完成的业务行为。
如图3所示,为了实现本发明所要解决的技术问题,同时通过判断业务行为是否为恶意来判定所述客户端进程是否为恶意,本发明另一个实施例所述的方法,包括:
步骤301,拦截客户端进程与服务端进程之间相互绑定时交换的数据包,从所述数据包中获取并保存两个进程相互约定的调用规则;
步骤302,当监测到客户端进程运用远程过程调用协议,请求服务端进程提供服务的数据包时或响应另一进程的数据包时,解析该数据包并获取该数据包里面含有的调用指令;
步骤303,根据所述调用规则判断该调用指令所完成的业务行为,通过判断所述业务行为是否为恶意来判定所述客户端进程是否为恶意;如判定所述业务行为为正常,继续监测下一请求或响应的数据包;如判定所述业务行为为恶意,则进而判定所述客户端进程为恶意,拦截该数据包。
如下以一个基于LPC(本地过程调用)媒介(数据包)的RPC部分数据包格式(本地过程调用的请求报文LPC_REQUEST_MESSAGE)为例,在Vista系统中的一些系统数据包定义,说明采用上述实施例所述的针对远程过程调用协议进行状态跟踪的方法中“根据所述调用规则判断该调用指令所完成的业务行为”这个操作过程,请注意看里面的开头都是LPC_PACKET_HEADER,而这个结构的开头又是一个标准的PORT_MESSAGE(LPC消息包头)。
另外,上述方法实施例中所述数据包为采用本地过程调用、命名管道(namedpipe)、UDP(User Datagram Protocol,用户数据包协议)协议网络消息或TCP/IP网络消息的数据包等内容组成,但这里不做具体限定,还可以采用其他格式的数据包,这里不再赘述。如针对上述的LPC情况,请求数据包里面由PresentationContext、ProcNum就能确定具体是调用哪个接口的哪个函数(具体参数跟在函数后面)。
此外,在上述步骤中,所述数据包中获取并保存相互约定的调用规则,包括:所述调用指令与业务行为的对应关系;
所述调用指令,包括:服务器根据客户端的请求所配置的接口的代号、以及服务器为接口中包含的应用程序编码接口配置的接口标识;
所述业务行为,包括:客户端请求的接口、以及客户端请求的接口中包含的应用程序编码接口;
因此,所述调用规则,也即包括:客户端请求的接口及服务器配置的接口的代号的对应关系,和/或客户端请求的接口中包含的应用程序编码接口及服务器配置的应用程序编码接口的接口标识的对应关系。
其中,所述接口的代号(句柄)为通过表达上下文字段PresentationContext来表示;PresentationContext可以具体表征一个接口的代号(句柄)。
所述接口标识为通过函数号ProcNum来表示。
根据上述内容来说,具体地,步骤303为:根据步骤302中保存的相互绑定的调用规则,识别所述数据包中的接口的代号和应用程序编码接口的标识所对应的调用的接口、应用程序编码接口,将该接口、应用程序编码接口在特征库遍历查找,判断所述业务行为是否为恶意,所述特征库中保存恶意行为的特征或安全行为的特征;如判定所述业务行为为正常,继续监测下一请求或响应的数据包;如判定所述业务行为为恶意,则进而判定所述客户端进程为恶意,拦截该数据包。
需要说明的是,这里所述的特征库,保存业务行为对应的程序所完成的程序行为,将一些合法/非法的程序行为的特征进行收集汇总建立白/黑名单,也就是特征库,这样当对数据包进行解析后,得到的只是数据包中的接口的代号和应用程序编码接口标识,然后根据之前保存调用规则查找到相对应的业务行为是什么,然后根据该业务行为在特征库中查找,如该请求是正常的,那么就可以进行放行通过。
举例说明下,比如接口代号1对应包含接口标识01,该接口标识01是执行“修改注册表”业务的API接口,这个调用规则事先已由客户端和服务端在绑定阶段约定好。客户端此时发出请求数据包,其中含有接口代号1和接口标识01;本发明监测到这个请求的数据包,然后拦截该数据包并进行解析,获得其中包含的接口代号1和接口标识01,根据调用规则获知该接口代号1和接口标识01是执行“修改注册表”业务的API接口;此时根据该API接口执行“修改注册表”操作的这种特征,在已经建立好的黑名单特征库进行遍历查找,黑名单特征库中保存有该API的特征或者保存有“修改注册表”这种行为的特征(所述特征可以为MD5值),这样通过匹配命中即得出接口代号1和接口标识01对应的“修改注册表”业务是恶意的,即该客户端在请求服务端对注册表进行修改,因此可以认为作出该请求的客户端是恶意的,必须拦截该请求的数据包。由于本发明的所要保护的重点并不是如何创建和生成特征库,因此在本发明的后续内容中不在赘述。
下面以一个应用实施例(客户端与服务器之间),进行详细说明:
第一步,拦截客户端进程与服务端进程之间相互绑定时交换的数据包,从所述数据包中获取并保存两个进程相互约定的调用规则,其中,所述调用规则包括:客户端请求的Interface(面向对象编程语言中接口操作的接口)及服务器配置的Interface标识(ID)的对应关系、以及Interface中包含的API(Application Programming Interface,应用程序编程接口)以及服务器配置的API标识的对应关系。
第二步,当监测到所述客户端运用远程过程调用协议请求所述服务器提供服务的数据包时或当监测到所述服务器响应所述客户端的数据包时,对该数据包进行解析获取其中的请求的Interface标识和API标识;根据第一步中保存的相互约定的调用规则,识别出所述数据包中Interface标识和API标识对应的Interface和API。
第三步,根据该Interface和API的行为特征在白名单特征库遍历查找是否存在,如存在则判定为正常请求,继续监测下一请求或响应的数据包;如不存在则判定为恶意请求,并拦截该请求执行。
需要说明的是,在具体执行的标识信息中,Interface标识(ID)可以通过PresentationContext(表达上下文字段)来表示,即接口的代号;而API标识可以通过ProcNum(函数号)来表示,即接口标识。
如图4所示,为发明另一个实施例所述的针对远程过程调用协议进行状态跟踪的系统,该系统应用于两个进程之间,该系统40包括:拦截模块401、监测模块402和判断模块403;其中,
所述拦截模块401,与所述监测模块402相耦接,用于拦截客户端10中的客户端进程与服务器20中的服务端进程之间相互绑定时交换的数据包,从所述数据包中获取并保存两个进程相互约定的调用规则;
所述监测模块402,分别与所述拦截模块401和判断模块403相耦接,用于当监测到客户端进程运用远程过程调用协议,请求服务端进程提供服务的数据包时或响应另一进程的数据包时,解析该数据包并获取该数据包里面含有的调用指令;
判断模块403,与所述监测模块402相耦接,用于根据所述调用规则判断该调用指令所完成的业务行为。
如图4所示,基于上述实施例的结构特征,本发明另一个实施例所述的针对远程过程调用协议进行状态跟踪的系统,该系统应用于两个进程之间,该系统40包括:拦截模块401、监测模块402和判断模块403;其中,
所述拦截模块401,与所述监测模块402相耦接,用于拦截客户端10中的客户端进程与服务器20中的服务端进程之间相互绑定时交换的数据包,从所述数据包中获取并保存两个进程相互约定的调用规则;
所述监测模块402,分别与所述拦截模块401和判断模块403相耦接,用于当监测到客户端进程运用远程过程调用协议,请求服务端进程提供服务的数据包时或响应另一进程的数据包时,解析该数据包并获取该数据包里面含有的调用指令;
判断模块403,与所述监测模块402相耦接,用于根据所述调用规则判断该调用指令所完成的业务行为,通过判断所述业务行为是否为恶意来判定所述客户端进程是否为恶意;如判定所述业务行为为正常,继续监测下一请求或响应的数据包;如判定所述业务行为为恶意,则进而判定所述客户端进程为恶意,拦截该数据包。
另外,上述系统实施例中所述数据包为采用本地过程调用、命名管道(namedpipe)或TCP/IP网络消息的数据包等内容组成,但这里不做具体限定,还可以采用其他格式的数据包,这里不再赘述。如针对上述的LPC情况,请求数据包里面由PresentationContext、ProcNum就能确定具体是调用哪个接口的哪个函数(具体参数自然跟在后面)。现有技术中的RPC拦截仅仅知道ProcNum,然后根据一些条件(如port名称、栈回朔参数)去猜(因为现有技术中并不知道PresentationContext这个数字的含义),我们通过状态追踪完整的通讯过程就能完全掌握其含义。
此外,在上述步骤中,所述数据包中获取并保存相互约定的调用规则,包括:所述调用指令与业务行为的对应关系;
所述调用指令,包括:服务器根据客户端的请求所配置的接口的代号、以及服务器为接口中包含的应用程序编码接口配置的接口标识;
所述业务行为,包括:客户端请求的接口、以及客户端请求的接口中包含的应用程序编码接口;
因此,所述调用规则,也即包括:客户端请求的接口及服务器配置的接口的代号的对应关系、和/或客户端请求的接口中包含的应用程序编码接口及服务器配置的应用程序编码接口的接口标识的对应关系。
其中,所述接口的代号为通过表达上下文字段PresentationContext来表示;所述接口标识为通过函数号ProcNum来表示。
进一步地,这里对本发明中系统的实施例的进一步展开描述与前述的本发明的方法的内容和应用实例内容基本一致,对于本领域技术人员来说,通过上述方法便可以知道所述系统的具体操作过程,因此这里不再赘述。
与现有的方案相比,本发明所获得的技术效果:
1)完全准确地获取客户端与服务器之间进行RPC调用时,调用的接口和函数号的准确含义,从而可以判定是否为恶意程序;
2)通过本发明能够进行有效的防御操作,从而避免恶意请求程序的攻击,达到保护用户个人电脑或计算机的目的。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
本文中所称的“一个实施例”、“实施例”或者“一个或者多个实施例”意味着,结合实施例描述的特定特征、结构或者特性包括在本发明的至少一个实施例中。此外,请注意,这里“在一个实施例中”的词语例子不一定全指同一个实施例。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
此外,还应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。

Claims (16)

1.一种针对远程过程调用协议进行状态跟踪的方法,其中,包括:
拦截客户端进程与服务端进程之间通过为接口配置标识相互绑定时交换的数据包,从所述数据包中获取并且保存两个进程相互约定的调用规则;
当监测到所述客户端进程运用远程过程调用协议,请求所述服务端进程提供服务的数据包时或响应另一进程的数据包时,解析该数据包并获取该数据包里面含有的调用指令;
根据所述调用规则判断该调用指令所完成的业务行为。
2.如权利要求1所述的针对远程过程调用协议进行状态跟踪的方法,其特征在于,根据所述调用规则判断该调用指令所完成的业务行为,还包括:
根据所述调用规则判断该调用指令所完成的业务行为,通过判断所述业务行为是否为恶意来判定所述客户端进程是否为恶意;
如判定所述业务行为为正常,继续监测下一请求或响应的数据包;如判定所述业务行为为恶意,则进而判定所述客户端进程为恶意,拦截该数据包。
3.如权利要求1所述的针对远程过程调用协议进行状态跟踪的方法,其特征在于,拦截客户端进程与服务端进程之间相互绑定时交换的数据包,从所述数据包中获取并保存两个进程相互约定的调用规则,还包括:
拦截客户端进程与服务端进程之间相互绑定时交换的请求和响应的数据包,从所述数据包中获取并保存两个进程相互约定的调用规则,其中所述调用规则包括:接口及所配置的接口的代号的对应关系,和/或,所述接口中包括的各应用程序编码接口及所配置的接口标识的对应关系。
4.如权利要求3所述的针对远程过程调用协议进行状态跟踪的方法,其特征在于,当监测到客户端进程运用远程过程调用协议,请求服务端进程提供服务的数据包时或响应另一进程的数据包时,解析该数据包并获取该数据包里面含有的调用指令,还包括:
当监测到客户端进程运用远程过程调用协议,请求服务端进程提供服务的数据包时或响应另一进程的数据包时,解析该数据包并获取该数据包里面含有的调用指令;其中,所述数据包为本地过程调用的请求报文,所述调用指令携带接口的代号和/或接口标识。
5.如权利要求4所述的针对远程过程调用协议进行状态跟踪的方法,其特征在于,根据所述调用规则判断该调用指令所完成的业务行为,还包括:
根据所述调用规则,对该调用指令中携带的接口的代号和/或接口标识进行判断,从而识别出所述客户端所调用的接口和函数。
6.如权利要求1至2中任一所述的针对远程过程调用协议进行状态跟踪的方法,其特征在于,所述数据包为采用本地过程调用、命名管道、UDP协议网络消息或TCP/IP网络消息的数据包。
7.如权利要求1所述的针对远程过程调用协议进行状态跟踪的方法,其中,
所述调用规则,包括:所述调用指令与业务行为的对应关系;
所述调用指令,包括:服务器根据客户端的请求所配置的接口的代号、以及服务器为接口中包含的应用程序编码接口配置的接口标识;
所述业务行为,包括:客户端请求的接口、以及客户端请求的接口中包含的应用程序编码接口。
8.如权利要求3或7所述的针对远程过程调用协议进行状态跟踪的方法,其中,
所述接口的代号为表达上下文字段PresentationContext;
所述接口标识为函数号ProcNum。
9.一种针对远程过程调用协议进行状态跟踪的系统,其中,包括:拦截模块、监测模块和判断模块;其中,
所述拦截模块,用于拦截客户端进程与服务端进程之间通过为接口配置标识相互绑定时交换的数据包,从所述数据包中获取并且保存两个进程相互约定的调用规则;
所述监测模块,用于当监测到所述客户端进程运用远程过程调用协议,请求所述服务端进程提供服务的数据包时或响应另一进程的数据包时,解析该数据包并获取该数据包里面含有的调用指令;
判断模块,用于根据所述调用规则判断该调用指令所完成的业务行为。
10.如权利要求9所述的针对远程过程调用协议进行状态跟踪的系统,其特征在于,
所述判断模块,还用于根据所述调用规则判断该调用指令所完成的业务行为,通过判断所述业务行为是否为恶意来判定所述客户端进程是否为恶意;
如判定所述业务行为为正常,继续监测下一请求或响应的数据包;如判定所述业务行为为恶意,则进而判定所述客户端进程为恶意,拦截该数据包。
11.如权利要求9所述的针对远程过程调用协议进行状态跟踪的系统,其特征在于,所述拦截模块,还用于:
拦截客户端进程与服务端进程之间相互绑定时交换的请求和响应的数据包,从所述数据包中获取并保存两个进程相互约定的调用规则,其中所述调用规则包括:接口及所配置的接口的代号的对应关系,和/或,所述接口中包括的各应用程序编码接口及所配置的接口标识的对应关系。
12.如权利要求11所述的针对远程过程调用协议进行状态跟踪的系统,其特征在于,所述监测模块,还用于:
当监测到客户端进程运用远程过程调用协议,请求服务端进程提供服务的数据包时或响应另一进程的数据包时,解析该数据包并获取该数据包里面含有的调用指令;其中,所述数据包为本地过程调用的请求报文,所述调用指令携带接口的代号和/或接口标识。
13.如权利要求12所述的针对远程过程调用协议进行状态跟踪的系统,其特征在于,所述判断模块,还用于:
根据所述调用规则,对该调用指令中携带的接口的代号和/或接口标识进行判断,从而识别出所述客户端所调用的接口和函数。
14.如权利要求9至10中任一所述的针对远程过程调用协议进行状态跟踪的系统,其特征在于,所述数据包为采用本地过程调用、命名管道、UDP协议网络消息或TCP/IP网络消息的数据包。
15.如权利要求9所述的针对远程过程调用协议进行状态跟踪的系统,其特征在于,
所述调用规则,包括:所述调用指令与业务行为的对应关系;
所述调用指令,包括:服务器根据客户端的请求所配置的接口的代号、以及服务器为接口中包含的应用程序编码接口配置的接口标识;
所述业务行为,包括:客户端请求的接口、以及客户端请求的接口中包含的应用程序编码接口。
16.如权利要求11或15所述的针对远程过程调用协议进行状态跟踪的系统,其特征在于,
所述接口的代号为表达上下文字段PresentationContext;
所述接口标识为函数号ProcNum。
CN201210559338.1A 2012-12-20 2012-12-20 针对远程过程调用协议进行状态跟踪的方法及系统 Active CN103023906B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210559338.1A CN103023906B (zh) 2012-12-20 2012-12-20 针对远程过程调用协议进行状态跟踪的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210559338.1A CN103023906B (zh) 2012-12-20 2012-12-20 针对远程过程调用协议进行状态跟踪的方法及系统

Publications (2)

Publication Number Publication Date
CN103023906A CN103023906A (zh) 2013-04-03
CN103023906B true CN103023906B (zh) 2017-04-19

Family

ID=47972037

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210559338.1A Active CN103023906B (zh) 2012-12-20 2012-12-20 针对远程过程调用协议进行状态跟踪的方法及系统

Country Status (1)

Country Link
CN (1) CN103023906B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103036895B (zh) * 2012-12-20 2015-11-11 北京奇虎科技有限公司 一种状态跟踪方法及系统
CN104598257B (zh) * 2013-10-30 2019-01-18 华为技术有限公司 远程应用程序运行的方法和装置
CN105956470A (zh) * 2016-05-03 2016-09-21 北京金山安全软件有限公司 一种拦截应用程序行为的方法及终端
CN106060063B (zh) * 2016-06-24 2019-04-23 武汉斗鱼网络科技有限公司 一种用于互联网网站前端逻辑入口的过滤方法及装置
CN107977316B (zh) * 2017-12-21 2021-08-31 创新先进技术有限公司 一种模拟远程过程调用的方法、客户端及系统
CN109981546B (zh) * 2017-12-28 2021-08-20 北京京东尚科信息技术有限公司 获取应用模块间的远程调用关系的方法和装置
CN109992465B (zh) * 2017-12-29 2023-05-16 中国电信股份有限公司 服务追踪方法、装置和计算机可读存储介质
CN109145572A (zh) * 2018-06-29 2019-01-04 东软集团股份有限公司 用户认证方法、装置和存储介质以及电子设备
CN109787886B (zh) * 2019-01-22 2021-03-02 北京北信源信息安全技术有限公司 一种邮件审计方法及系统
CN109951355B (zh) * 2019-03-13 2022-09-06 苏州洞察云信息技术有限公司 一种用于分布式系统白盒关联路径追踪的方法
CN110347374B (zh) * 2019-06-14 2023-01-13 北京数立得科技有限公司 一种富客户端业务服务封装和调用系统、方法和装置
CN111586124B (zh) * 2020-04-28 2020-12-18 广州锦行网络科技有限公司 一种获取远程连接凭证的方法
CN111597061B (zh) * 2020-05-25 2023-11-17 瑞斯康达科技发展股份有限公司 一种客户端或服务端进行远程过程调用方法及装置
CN112162873B (zh) * 2020-09-28 2024-03-26 杭州安恒信息技术股份有限公司 一种远程调用方法、电子装置和存储介质
CN112738123B (zh) * 2021-01-05 2022-09-20 成都安思科技有限公司 一种恶意远程过程溯源调用行为的检测方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101764843A (zh) * 2009-12-28 2010-06-30 福建星网锐捷网络有限公司 远程过程调用的处理方法、系统及客户端、服务器
CN102439023A (zh) * 2009-05-22 2012-05-02 意优特克股份公司 合成吡美莫司的化学酶法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101533361A (zh) * 2009-04-16 2009-09-16 腾讯科技(深圳)有限公司 远程过程调用及生成服务接口信息的方法、系统和设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102439023A (zh) * 2009-05-22 2012-05-02 意优特克股份公司 合成吡美莫司的化学酶法
CN101764843A (zh) * 2009-12-28 2010-06-30 福建星网锐捷网络有限公司 远程过程调用的处理方法、系统及客户端、服务器

Also Published As

Publication number Publication date
CN103023906A (zh) 2013-04-03

Similar Documents

Publication Publication Date Title
CN103023906B (zh) 针对远程过程调用协议进行状态跟踪的方法及系统
Baykara et al. A novel honeypot based security approach for real-time intrusion detection and prevention systems
US11783035B2 (en) Multi-representational learning models for static analysis of source code
Zhang et al. An IoT honeynet based on multiport honeypots for capturing IoT attacks
CN104219316B (zh) 一种分布式系统中的调用请求处理方法及装置
CN109951500A (zh) 网络攻击检测方法及装置
Pilli et al. Network forensic frameworks: Survey and research challenges
Sekar et al. A high-performance network intrusion detection system
CN104348803B (zh) 链路劫持检测方法、装置、用户设备、分析服务器及系统
CN110830457B (zh) 一种基于蜜罐诱导的攻击感知方法、装置、设备及介质
US20170093891A1 (en) Mobile device-based intrusion prevention system
US10805340B1 (en) Infection vector and malware tracking with an interactive user display
CN112383546A (zh) 一种处理网络攻击行为的方法、相关设备及存储介质
US20230185913A1 (en) Building multi-representational learning models for static analysis of source code
US9923920B1 (en) Detecting computer security threats in electronic documents based on structure
CN107465651A (zh) 网络攻击检测方法及装置
CN110035062A (zh) 一种网络验伤方法及设备
CN110209583A (zh) 安全测试方法、装置、系统、设备和存储介质
CN107888605A (zh) 一种物联网云平台流量安全分析方法和系统
CN105991628A (zh) 网络攻击的识别方法和装置
US11374946B2 (en) Inline malware detection
CN108600260A (zh) 一种工业物联网安全配置核查方法
CN104363240A (zh) 基于信息流行为合法性检测的未知威胁的综合检测方法
Riccardi et al. A framework for financial botnet analysis
CN110149319A (zh) Apt组织的追踪方法及装置、存储介质、电子装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220721

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

TR01 Transfer of patent right