CN117494117A - 一种远程过程调用的跟踪***及跟踪方法 - Google Patents
一种远程过程调用的跟踪***及跟踪方法 Download PDFInfo
- Publication number
- CN117494117A CN117494117A CN202311537805.5A CN202311537805A CN117494117A CN 117494117 A CN117494117 A CN 117494117A CN 202311537805 A CN202311537805 A CN 202311537805A CN 117494117 A CN117494117 A CN 117494117A
- Authority
- CN
- China
- Prior art keywords
- rpc
- context
- client
- module
- call
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 232
- 230000008569 process Effects 0.000 claims abstract description 151
- 238000013507 mapping Methods 0.000 claims abstract description 149
- 238000012544 monitoring process Methods 0.000 claims abstract description 100
- 238000001914 filtration Methods 0.000 claims abstract description 67
- 230000009471 action Effects 0.000 claims abstract description 35
- 230000005540 biological transmission Effects 0.000 claims description 17
- 238000004891 communication Methods 0.000 claims description 10
- 238000004366 reverse phase liquid chromatography Methods 0.000 description 440
- 230000006870 function Effects 0.000 description 30
- 238000012545 processing Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 238000004590 computer program Methods 0.000 description 7
- 239000002699 waste material Substances 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种远程过程调用的跟踪***及跟踪方法。该跟踪***包括:RPC服务监控模块,负责在RPC调用发生时获取客户端上下文,并构造当前上下文,将二者的映射关系发送至RPC溯源模块;RPC溯源模块负责记录RPC服务监控模块发送的当前上下文和客户端上下文的映射关系;过滤引擎模块与RPC溯源模块通信,负责在RPC服务进程访问资源时,根据当前上下文对RPC溯源模块进行溯源查询,得到目标客户端上下文;再根据目标客户端上下文确定访问动作的主体。本申请能够基于RPC调用的当前上下文和客户端上下文的映射关系,在RPC服务进程访问资源时,通过溯源查询追溯到该RPC服务进程的全部调用过程,从而精准地确定访问动作的主体,提高了访问控制的精度。
Description
技术领域
本申请涉及信息安全技术领域,具体地涉及一种远程过程调用的跟踪***及跟踪方法。
背景技术
远程过程调用(Remote Procedure Call,RPC)是一个计算机通信协议。该协议采用客户端-服务器(Client/Server)方式工作,允许运行于一台计算机的程序调用另一台计算机的子程序。在Windows平台中,更多情况下,RPC用于实现同一台计算机的不同进程之前的通信。
Windows***中,大多数***服务都以RPC方式实现其API接口的,例如:服务管理器,安全账号管理器,打印池,网络共享,任务计划等等。举例来说,对应于APICreateService,其内部实现是通过将当前进程作为RPC客户端,向Services.exe(服务管理器)实现的RPC服务器发起一个远程过程调用来实现的。
在主机安全相关的产品中,访问控制、行为分析、攻击溯源等模块在检测到有风险的操作时,通常以当前进程(即访问发生的上下文进程)为动作的主体。而在当前进程为RPC服务进程时,如果RPC调用是来自本机进程的,动作的主体应该追溯到RPC调用发起的客户端进程,如果RPC调用是来自远程计算机的,动作的主体则应该追溯到RPC调用发起的主机。而Windows现有的RPC体系不具备上述的调用来源追溯支持,尤其存在转发调用时。也就是说,现有技术中的RPC调用存在缺少为主机安全***提供溯源支持的问题。
发明内容
为了解决上述问题,本申请实施例的目的是提供一种远程过程调用的跟踪***及跟踪方法。
为了实现上述目的,本申请第一方面提供一种远程过程调用的跟踪***,该跟踪***包括:
RPC服务监控模块,被配置成在RPC调用发生时获取客户端上下文,并构造当前上下文,以及将客户端上下文和当前上下文的映射关系发送至RPC溯源模块;
RPC溯源模块,与RPC服务监控模块通信,被配置成记录RPC服务监控模块发送的当前上下文和客户端上下文的映射关系;
过滤引擎模块,与RPC溯源模块通信,被配置成:
在检测到RPC服务进程访问资源的情况下,根据RPC服务进程的当前上下文对RPC溯源模块进行溯源查询,以得到目标客户端上下文;
根据目标客户端上下文确定RPC服务进程的访问动作的主体。
在本申请实施例中,RPC服务监控模块还被配置成:
在RPC调用经过RPC传输层时,根据RPC调用的RPC消息数据解析传输层的协议类型,并根据协议类型解析出RPC调用的客户端上下文;
提取出当前进程的进程标识和线程标识,以构建RPC调用的当前上下文;
调用RPC溯源模块,建立当前上下文和客户端上下文的映射关系。
在本申请实施例中,RPC服务监控模块还被配置成:
在协议类型为本地调用协议的情况下,从RPC消息数据中提取客户端的进程标识和线程标识,以合并构成客户端上下文;
在协议类型为命名管道协议的情况下,提取出RPC调用的特征数据,根据特征数据查询RPC溯源模块,以获取客户端上下文;
在协议类型为其它网络协议的情况下,从RPC消息数据中提取出远程主机的信息,以构成客户端上下文。
在本申请实施例中,RPC溯源模块包括:
命名管道过滤子模块,被配置成解析在命名管道上传输的RPC调用的客户端上下文;
调用映射记录子模块,被配置成维护当前上下文和客户端上下文的映射关系。
在本申请实施例中,命名管道过滤子模块还被配置成:
在RPC服务监控模块查询命名管道的客户端上下文的情况下,根据传入的特征数据查询特征数据链表;
在查询成功的情况下,返回查询到的特征数据结构中的客户端上下文。
在本申请实施例中,调用映射记录子模块还被配置成:
在初始化阶段,分配一个映射数据结构表;
在RPC服务监控模块发送一个映射关系时,将映射关系存入映射数据结构表。
在本申请实施例中,调用映射记录子模块还被配置成:
在过滤引擎模块进行溯源查询的情况下,根据传入的当前上下文,查询映射数据结构表,以查询到RPC服务进程的每一级RPC调用的客户端上下文;
将RPC服务进程的最后一级RCP调用的客户端上下文作为目标客户端上下文;
将目标客户端上下文返回至过滤引擎模块。
本申请第二方面提供一种远程过程调用的跟踪方法,其特征在于,应用于远程过程调用的跟踪***,跟踪***包括RPC服务监控模块、RPC溯源模块和过滤引擎模块,RPC溯源模块分别与RPC服务监控模块和过滤引擎模块通信,该跟踪方法包括:
通过RPC服务监控模块获取在RPC调用发生时的客户端上下文,并构造当前上下文;
通过RPC溯源模块记录当前上下文和客户端上下文的映射关系;
在检测到RPC服务进程访问资源的情况下,通过过滤引擎模块根据RPC服务进程的当前上下文对RPC溯源模块进行溯源查询,以得到目标客户端上下文;
根据目标客户端上下文确定RPC服务进程的访问动作的主体。
在本申请实施例中,通过RPC服务监控模块获取在RPC调用发生时的客户端上下文,并构造当前上下文,包括:
在RPC调用经过RPC传输层时,根据RPC调用的RPC消息数据解析传输层的协议类型,并根据协议类型解析出RPC调用的客户端上下文;
提取出当前进程的进程标识和线程标识,以构建RPC调用的当前上下文;
调用RPC溯源模块,建立当前上下文和客户端上下文的映射关系。
在本申请实施例中,根据协议类型解析出RPC调用的客户端上下文包括:
在协议类型为本地调用协议的情况下,从RPC消息数据中提取客户端的进程标识和线程标识,以合并构成客户端上下文;
在协议类型为命名管道协议的情况下,提取出RPC调用的特征数据,根据特征数据查询RPC溯源模块,以获取客户端上下文;
在协议类型为其它网络协议的情况下,从RPC消息数据中提取出远程主机的信息,以构成客户端上下文。
在本申请实施例中,RPC溯源模块包括命名管道过滤子模块和调用映射记录子模块,跟踪方法还包括:
通过命名管道过滤子模块解析在命名管道上传输的RPC调用的客户端上下文;
通过调用映射记录子模块维护当前上下文和客户端上下文的映射关系。
在本申请实施例中,通过命名管道过滤子模块解析在命名管道上传输的RPC调用的客户端上下文包括:
在RPC服务监控模块查询命名管道的客户端上下文的情况下,根据传入的特征数据查询特征数据链表;
在查询成功的情况下,返回查询到的特征数据结构中的客户端上下文。
在本申请实施例中,通过调用映射记录子模块维护当前上下文和客户端上下文的映射关系包括:
在初始化阶段,分配一个映射数据结构表;
在RPC服务监控模块发送一个映射关系时,将映射关系存入映射数据结构表。
在本申请实施例中,跟踪方法还包括:
在过滤引擎模块进行溯源查询的情况下,根据传入的当前上下文,查询映射数据结构表,以查询到RPC服务进程的每一级RPC调用的客户端上下文;
将RPC服务进程的最后一级RCP调用的客户端上下文作为目标客户端上下文;
将目标客户端上下文返回至过滤引擎模块。
通过上述技术方案,提供一种远程过程调用的跟踪***,该跟踪***包括:RPC服务监控模块、RPC溯源模块和过滤引擎模块。在RPC服务进程中,通过注入一个RPC服务监控模块负责在RPC调用发生时获取客户端上下文并构造当前上下文,将当前上下文和客户端上下文的映射关系发送至RPC溯源模块;RPC溯源模块负责记录当前上下文和客户端上下文的映射关系;当RPC服务进程访问资源时,过滤引擎模块可以根据该RPC服务进程的当前上下文对RPC溯源模块进行溯源查询,以得到目标客户端上下文,进而根据目标客户端上下文确定RPC服务进程的访问动作的主体。本申请能够基于RPC调用的当前上下文和客户端上下文的映射关系,在RPC服务进程访问资源时,通过溯源查询追溯到该RPC服务进程的全部调用过程,从而精准地确定访问动作的主体,提高了访问控制的精度。
本申请实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本申请实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本申请实施例,但并不构成对本申请实施例的限制。在附图中:
图1为本申请实施例提供的一种远程过程调用的跟踪***的结构框图;
图2为本申请一具体实施例提供的RPC服务监控模块的工作流程示意图;
图3为本申请实施例提供的一种远程过程调用的跟踪***中RPC溯源模块的结构框图;
图4为本申请实施例提供的一种远程过程调用的跟踪方法的流程示意图;
图5为本申请一具体实施例提供的远程过程调用的跟踪***的应用示意图。
附图标记说明
100 RPC服务监控模块 200 RPC溯源模块
300 过滤引擎模块 210 命名管道过滤子模块
220 调用映射记录子模块
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解的是,此处所描述的具体实施方式仅用于说明和解释本申请实施例,并不用于限制本申请实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明,若本申请实施例中有涉及方向性指示(诸如上、下、左、右、前、后……),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
另外,若本申请实施例中有涉及“第一”、“第二”等的描述,则该“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
图1为本申请实施例提供的一种远程过程调用的跟踪***的结构框图。如图1所示,本申请实施例提供一种远程过程调用的跟踪***,该跟踪***可以包括:
RPC服务监控模块100,被配置成在RPC调用发生时获取客户端上下文,并构造当前上下文,以及将客户端上下文和当前上下文的映射关系发送至RPC溯源模块200;
RPC溯源模块200,与RPC服务监控模块100通信,被配置成记录RPC服务监控模块100发送的当前上下文和客户端上下文的映射关系;
过滤引擎模块300,与RPC溯源模块200通信,被配置成:
在检测到RPC服务进程访问资源的情况下,根据RPC服务进程的当前上下文对RPC溯源模块200进行溯源查询,以得到目标客户端上下文;
根据目标客户端上下文确定RPC服务进程的访问动作的主体。
本申请实施例的远程过程调用的跟踪***包括RPC服务监控模块100、RPC溯源模块200和过滤引擎模块300,RPC溯源模块200可以分别与RPC服务监控模块100和过滤引擎模块300通信,RPC服务监控模块100也可以和过滤引擎模块300通信,即三者之间相互通信。在访问控制过程中,针对RPC服务进程,通过远程过程调用的跟踪***中三个模块之间的相互通信,能够提取出RPC调用客户端的相关信息,作为确定RPC服务进程的访问动作的主体的根据;在存在多级RPC调用时,能够追溯到发起RPC调用的最原始的RPC客户端,即主体。
具体地,如图1所示,在RPC服务进程中,注入一个RPC服务监控模块100。在一个示例中,RPC服务监控模块100是由外部的内核模块在RPC服务进程加载RPC库时注入的。RPC服务监控模块100可以在RPC调用发生时,获取该RPC调用对应的客户端上下文,并构造当前上下文。其中,客户端上下文包含RPC客户端的进程标识和线程标识等信息;当前上下文包含当前的进程标识和线程标识等信息,即RPC服务上下文。进一步地,RPC服务监控模块100可以将该RPC调用的当前上下文和客户端上下文发送至RPC溯源模块200。
可以理解地,RPC溯源模块200位于内核层,在接收到RPC服务监控模块100发送的RPC调用的当前上下和客户端上下文时,可以记录该RPC调用的当前上下文和客户端上下文的映射关系。在一个示例中,RPC溯源模块200中包括一个映射数据结构表,可以以当前上下文为键,以客户端上下文为值,将当前上下文和客户端上下文的映射关系记录到RPC溯源模块200的映射数据结构表中。可以理解的是,RPC服务监控模块100可以负责获取每一个正在发生的RPC调用的当前上下文并构造客户端上下文,并将二者发送至RPC溯源模块200;RPC溯源模块200可以负责记录每一个正在发送的RPC调用的当前上下文和客户端上下文的映射关系。
最后,当RPC服务进程访问资源时,RPC服务监控模块100会向过滤引擎模块300发送访问资源的请求。过滤引擎模块300在检测到RPC服务进行访问资源的情况下,可以根据该RPC服务进程中当前RPC调用的当前上下文,向RPC溯源模块200发起溯源查询,以得到目标客户端上下文,根据该目标客户端上下文中的信息即可确定该RPC访问进程的访问动作的主体。在一个示例中,RPC溯源模块200可以通过溯源查询查询出当前RPC服务进程的每一级RPC调用的客户端上下文,目标客户端上下文即查询到的最后一级RPC调用的客户端上下文。由此,可以追溯该RPC服务进程的全部调用过程,精确地确认访问动作的主体。
通过上述技术方案,提供一种远程过程调用的跟踪***,该跟踪***包括:RPC服务监控模块100、RPC溯源模块200和过滤引擎模块300。在RPC服务进程中,通过注入一个RPC服务监控模块100负责在RPC调用发生时获取客户端上下文并构造当前上下文,将当前上下文和客户端上下文的映射关系发送至RPC溯源模块200;RPC溯源模块200负责记录当前上下文和客户端上下文的映射关系;当RPC服务进程访问资源时,过滤引擎模块300可以根据该RPC服务进程的当前上下文对RPC溯源模块200进行溯源查询,以得到目标客户端上下文,进而根据目标客户端上下文确定RPC服务进程的访问动作的主体。本申请能够基于RPC调用的当前上下文和客户端上下文的映射关系,在RPC服务进程访问资源时,通过溯源查询追溯到该RPC服务进程的全部调用过程,从而精准地确定访问动作的主体,提高了访问控制的精度。此外,本申请能够区别出一个进程对某资源的访问是否来自于RPC客户端调用,简化了访问控制的实现。且本申请仅注入RPC服务器进程,而无需注入RPC客户端进程,有利于降低***消耗。
需要说明的是,本申请所提出的技术方案可以适用于任意的RPC调用处理,与RPC接口无关,具有通用性。
在本申请实施例中,在RPC服务进程启动之后,RPC服务监控模块100随之启动。RPC服务监控模块100启动之后,会先打开内核层RPC溯源模块200公布的设备对象,并挂钩服务器存根相关的接口函数,为后续获取RPC调用的客户端上下文和构建当前上下文提供基础。其中,服务器存根是指RPC服务器端的代理组件,用于将客户端请求传递给远程服务器上的实际服务对象。
可以理解地,在客户端发起RPC调用后,RPC调用对应的RPC消息数据经过RPC传输层后,会先进入服务器存根钩子函数,以便进一步对RPC的客户端上下文和当前上下文进行处理。
在本申请实施例中,RPC服务监控模块100还可以被配置成:
在RPC调用经过RPC传输层时,根据RPC调用的RPC消息数据解析传输层的协议类型,并根据协议类型解析出RPC调用的客户端上下文;
提取出当前进程的进程标识和线程标识,以构建RPC调用的当前上下文;
调用RPC溯源模块200,建立当前上下文和客户端上下文的映射关系。
具体地,客户端发起RPC调用后,RPC调用的消息数据会经过RPC传输层,根据RPC消息数据可以解析出传输层的传输协议的协议类型,根据解析出的协议类型可以进一步解析出该RPC调用的客户端上下文。在一个示例中,解析出的传输层的传输协议的协议类型可以包括本地过程调用协议、命名管道协议和其它网络协议,其它网络协议例如“ncacn_ip_tcp”和“ncacn_ipx”等。
同时,RPC服务监控模块100可以提取出当前的进程标识和线程标识,以构成RPC调用的当前上下文。进一步地,RPC服务监控模块100可以使用设备IO调用内核层RPC溯源模块200,建立当前上下文到客户端上下文的映射记录。如此,可以对每一个RPC调用的当前上下文和客户端上下文的映射关系进行记录,为后续确定访问主体的溯源查询提供数据基础。
在本申请实施例中,RPC服务监控模块100还可以被配置成:
在协议类型为本地调用协议的情况下,从RPC消息数据中提取客户端的进程标识和线程标识,以合并构成客户端上下文;
在协议类型为命名管道协议的情况下,提取出RPC调用的特征数据,根据特征数据查询RPC溯源模块200,以获取客户端上下文;
在协议类型为其它网络协议的情况下,从RPC消息数据中提取出远程主机的信息,以构成客户端上下文。
具体地,根据RPC消息数据,解析传输层协议的协议类型,根据协议类型进一步解析出客户端上下文,具体有:
如果传输层协议是本地过程调用协议,如“ncalrpc”,则从RPC消息数据中的特定位置直接提取客户端的进程标识和线程标识,合并构成客户端上下文。
如果传输层协议是命名管道协议,如“ncacn_np”,则提取出RPC调用的特征数据,根据该特征数据查询内核层RPC溯源模块200,获取管道客户端的客户端上下文。
如果传输协议是其它网络协议,如“ncacn_ip_tcp”和“ncacn_ipx”等,则可根据需求从消息数据中提取出远程主机的信息,构成客户端上下文。
如此,根据不同的传输层协议分别采用不同的方式确定RPC调用的客户端上下文,可以保证后续确定访问动作的主体的精确性。
可以理解,为了避免内存浪费的情况下,RPC服务监控模块100在调用原始的服务存根接口完成后,可以进一步使用设备IO调用内核层的RPC溯源模块200,以清除当前上下文的映射记录。如此,可以有效防止内存浪费。
图2为本申请一具体实施例提供的RPC服务监控模块的工作流程示意图。如图2所示,RPC服务监控模块的作业流程可以包括以下步骤:
S1、模块加载;
S2、打开内核层RPC溯源设备对象;
S3、挂钩服务端存根接口函数;
S4、挂钩处理子流程;
S5、进入;
S6、提取客户端上下文;
S7、合成当前上下文;
S8、记录当前上下文和客户端上下文的映射关系;
S9、调用原始存根接口函数;
S10、清除当前上下文的映射记录;
S11、返回。
通过上述流程对于每一个RPC服务监控模块可以负责获取每一个正在发生的RPC调用的当前上下文并构造客户端上下文,以便记录当前上下文到客户端上下文的映射关系,为后续溯源查询提供基础。
图3为本申请实施例提供的一种远程过程调用的跟踪***中RPC溯源模块200的结构框图。如图3所示,在本申请实施例中,RPC溯源模块200可以包括:
命名管道过滤子模块210,被配置成解析在命名管道上传输的RPC调用的客户端上下文;
调用映射记录子模块220,被配置成维护当前上下文和客户端上下文的映射关系。
具体地,RPC溯源模块200工作在内核层,包含命名管道过滤子模块210和调用映射记录子模块220。其中,命名管道过滤子模块210用于解析在命名管道上传输的RPC调用的客户端上下文,即传输层的协议类型解析为命名管道协议的RPC调用。调用映射记录子模块220负责维护当前上下文到客户端上下文的映射关系,存储各个RPC调用的当前上下文和客户端上下文的映射记录,为后续确定访问动作的主体的溯源查询提供数据基础。
在本申请实施例中,命名管道过滤子模块210的工作流程可以包括:
在RPC溯源模块200启动时进行命名管道过滤子模块210的初始化工作;
在写命名管道动作发生时,IRP将先到达IO派发钩子函数处理;
在RPC服务监控模块100查询命名管道的客户端上下文的情况下,返回对应的客户端上下文。
具体地,在RPC溯源模块200启动时进行命名管道过滤子模块210的初始化工作可以包括:
预分配一定数量的特征数据结构,并将其追加到特征数据链表。其中,特征数据结构均包含特征数据和客户端上下文两个字段。并通过设备名称定位命名管道设备驱动程序,挂钩与写管道相关的IO派发函数。
在写命名管道动作发生时,IRP将先到达IO派发钩子函数处理,处理过程可以包括:
判断管道传输的数据是否符合RPC消息的格式,如果不符合,则不做特殊处理,调用原始IO派发函数。
在管道传输的数据符合RPC消息的格式的情况下,从特征数据链表尾部移出一项特征数据结构。从IRP中提取出该RPC消息对应的RPC调用的特征数据,填充到该移出的特征数据结构中的对应字段。提取当前的进程标识和线程标识,将当前的进程标识和线程标识构造为该RPC调用的客户端上下文,将该客户端上下文填充到该移出的特征数据结构的对应字段。进而得到填充完成的特征数据结构。最后,将上述特征数据结构添加到特征数据链表的头部。如此,可以为RPC服务监控模块100获取PRC调用的客户端上下文提供数据支持。
在本申请实施例中,命名管道过滤子模块210还可以被配置成:
在RPC服务监控模块100查询命名管道的客户端上下文的情况下,根据传入的特征数据查询特征数据链表;
在查询成功的情况下,返回查询到的特征数据结构中的客户端上下文。
具体地,在RPC调用的RPC消息数据解析出的传输层协议为命名管道协议的情况下,RPC服务监控模块100会根据该RPC调用的特征数据通过调用RPC溯源模块200查询得到RPC调用的客户端上下文。可以理解的是,命名管道过滤子模块210在接收到RPC服务监控模块100查询命名管道的客户端上下文时,根据RPC服务监控模块100传入的RPC调用的特征数据,可以查询特征数据链表,如查询命中,则返回特征数据结构中存储的客户端上下文。在一个示例中,若RPC服务监控模块100传入的特征数据与特殊数据链表中任意一项特征数据结构中的特征数据匹配成功,则说明查询命中;否则查询失败。
在本申请实施例中,调用映射记录子模块220还可以被配置成:
在初始化阶段,分配一个映射数据结构表;
在RPC服务监控模块100发送一个映射关系时,将映射关系存入映射数据结构表。
具体地,为了记录每一个RPC调用的当前上下文和客户端上下文的映射关系,在RPC溯源模块200初始化阶段,可以给调用映射记录子模块220分配一个映射数据结构,该映射数据结构为一个键-值映射的数据结构。如此,在后续没发生一次RPC调用,RPC服务监控模块100则会发生的以当前上下文和客户端上下文的映射关系;调用映射记录子模块220则可以以当前上下文为键,以客户端上下文为值设置映射项,从而将该映射关系存入映射数据结构表中。如此,通过该映射数据结构表可以为后续确定访问主体的溯源查询提供数据基础。
在一个示例中,在RPC溯源模块200接收到RPC服务监控模块100清除一个映射关系的请求的情况下,调用映射记录子模块220可以删除以该映射关系中的当前上下文为键的映射项。这样,可以有效防止内存的浪费。
在本申请实施例中,调用映射记录子模块220还可以被配置成:
在过滤引擎模块300进行溯源查询的情况下,根据传入的当前上下文,查询映射数据结构表,以查询到RPC服务进程的每一级RPC调用的客户端上下文;
将RPC服务进程的最后一级RCP调用的客户端上下文作为目标客户端上下文;
将目标客户端上下文返回至过滤引擎模块300。
具体地,在过滤引擎模块300进行溯源查询时,调用映射记录子模块220可以根据过滤引擎模块300传入的当前上下文,查询映射数据结构表,以查询到该当前上下文映射的客户端上下文。进一步地,对于查询回来的客户端上下文,将其作为键继续查询映射数据结构表。重复此过程,直到没有对应的客户端上下文为止。如此,可以得到RPC服务进程的每一级调用的客户端上下文,将左后一级RPC调用的客户端上下文作为目标客户端上下文,并返回该目标客户端上下文。这样,过滤引擎模块300可以根据该目标客户端上下文确定RPC服务进程访问资源的访问动作的主体。采用以上方法,即便在多级RPC调用情况下,也能够逐级追溯调用的客户端上下文,还原整个RPC调用链条,为攻击溯源提供强有力的支撑。
图4为本申请实施例提供的一种远程过程调用的跟踪方法的流程示意图。如图4所示,本申请实施例提供一种远程过程调用的跟踪方法,应用于远程过程调用的跟踪***,跟踪***包括RPC服务监控模块、RPC溯源模块和过滤引擎模块,RPC溯源模块分别与RPC服务监控模块和过滤引擎模块通信,该跟踪方法包括:
步骤101、通过RPC服务监控模块获取在RPC调用发生时的客户端上下文,并构造当前上下文;
步骤102、通过RPC溯源模块记录当前上下文和客户端上下文的映射关系;
步骤103、在检测到RPC服务进程访问资源的情况下,通过过滤引擎模块根据RPC服务进程的当前上下文对RPC溯源模块进行溯源查询,以得到目标客户端上下文;
步骤104、根据目标客户端上下文确定RPC服务进程的访问动作的主体。
在本申请实施例中,在RPC服务进程中,注入一个RPC服务监控模块。在一个示例中,RPC服务监控模块是由外部的内核模块在RPC服务进程加载RPC库时注入的。RPC服务监控模块可以在RPC调用发生时,获取该RPC调用对应的客户端上下文,并构造当前上下文。其中,客户端上下文包含RPC客户端的进程标识和线程标识等信息;当前上下文包含当前的进程标识和线程标识等信息,即RPC服务上下文。进一步地,RPC服务监控模块可以将该RPC调用的当前上下文和客户端上下文发送至RPC溯源模块。
可以理解地,RPC溯源模块位于Windows内核层,在接收到RPC服务监控模块发送的RPC调用的当前上下和客户端上下文时,可以记录该RPC调用的当前上下文和客户端上下文的映射关系。在一个示例中,RPC溯源模块中包括一个映射数据结构表,可以以当前上下文为键,以客户端上下文为值,将当前上下文和客户端上下文的映射关系记录到RPC溯源模块的映射数据结构表中。可以理解的是,RPC服务监控模块可以负责获取每一个正在发生的RPC调用的当前上下文并构造客户端上下文,并将二者发送至RPC溯源模块;RPC溯源模块可以负责记录每一个正在发送的RPC调用的当前上下文和客户端上下文的映射关系。
最后,当RPC服务进程访问资源时,RPC服务监控模块会向过滤引擎模块发送访问资源的请求。过滤引擎模块在检测到RPC服务进行访问资源的情况下,可以根据该RPC服务进程中当前RPC调用的当前上下文,向RPC溯源模块发起溯源查询,以得到目标客户端上下文,根据该目标客户端上下文中的信息即可确定该RPC访问进程的访问动作的主体。在一个示例中,RPC溯源模块可以通过溯源查询查询出当前RPC服务进程的每一级RPC调用的客户端上下文,目标客户端上下文即查询到的最后一级RPC调用的客户端上下文。由此,可以追溯该RPC服务进程的全部调用过程,精确地确认访问动作的主体。
如此,通过上述技术方案,基于RPC调用的当前上下文和客户端上下文的映射关系,在RPC服务进程访问资源时,通过溯源查询追溯到该RPC服务进程的全部调用过程,从而精准地确定访问动作的主体,提高了访问控制的精度。此外,本申请能够区别出一个进程对某资源的访问是否来自于RPC客户端调用,简化了访问控制的实现。且本申请仅注入RPC服务器进程,而无需注入RPC客户端进程,有利于降低***消耗。
需要说明的是,本申请所提出的技术方案可以适用于任意的RPC调用处理,与RPC接口无关,具有通用性。
在本申请实施例中,在RPC服务进程启动之后,RPC服务监控模块随之启动。RPC服务监控模块启动之后,会先打开内核层RPC溯源模块公布的设备对象,并挂钩服务器存根相关的接口函数,为后续获取RPC调用的客户端上下文和构建当前上下文提供基础。其中,服务器存根是指RPC服务器端的代理组件,用于将客户端请求传递给远程服务器上的实际服务对象。
可以理解地,在客户端发起RPC调用后,RPC调用对应的RPC消息数据经过RPC传输层后,会先进入服务器存根钩子函数,以便进一步对RPC的客户端上下文和当前上下文进行处理。
在本申请实施例中,步骤101、通过RPC服务监控模块获取在RPC调用发生时的客户端上下文,并构造当前上下文,可以包括:
在RPC调用经过RPC传输层时,根据RPC调用的RPC消息数据解析传输层的协议类型,并根据协议类型解析出RPC调用的客户端上下文;
提取出当前进程的进程标识和线程标识,以构建RPC调用的当前上下文;
调用RPC溯源模块,建立当前上下文和客户端上下文的映射关系。
具体地,客户端发起RPC调用后,RPC调用的消息数据会经过RPC传输层,根据RPC消息数据可以解析出传输层的传输协议的协议类型,根据解析出的协议类型可以进一步解析出该RPC调用的客户端上下文。在一个示例中,解析出的传输层的传输协议的协议类型可以包括本地过程调用协议、命名管道协议和其它网络协议,其它网络协议例如“ncacn_ip_tcp”和“ncacn_ipx”等。
同时,RPC服务监控模块可以提取出当前的进程标识和线程标识,以构成RPC调用的当前上下文。进一步地,RPC服务监控模块可以使用设备IO调用内核层RPC溯源模块,建立当前上下文到客户端上下文的映射记录。如此,可以对每一个RPC调用的当前上下文和客户端上下文的映射关系进行记录,为后续确定访问主体的溯源查询提供数据基础。
在本申请实施例中,根据协议类型解析出RPC调用的客户端上下文可以包括:
在协议类型为本地调用协议的情况下,从RPC消息数据中提取客户端的进程标识和线程标识,以合并构成客户端上下文;
在协议类型为命名管道协议的情况下,提取出RPC调用的特征数据,根据特征数据查询RPC溯源模块,以获取客户端上下文;
在协议类型为其它网络协议的情况下,从RPC消息数据中提取出远程主机的信息,以构成客户端上下文。
具体地,根据RPC消息数据,解析传输层协议的协议类型,根据协议类型进一步解析出客户端上下文,具体有:
如果传输层协议是本地过程调用协议,如“ncalrpc”,则从RPC消息数据中的特定位置直接提取客户端的进程标识和线程标识,合并构成客户端上下文。
如果传输层协议是命名管道协议,如“ncacn_np”,则提取出RPC调用的特征数据,根据该特征数据查询内核层RPC溯源模块,获取管道客户端的客户端上下文。
如果传输协议是其它网络协议,如“ncacn_ip_tcp”和“ncacn_ipx”等,则可根据需求从消息数据中提取出远程主机的信息,构成客户端上下文。
如此,根据不同的传输层协议分别采用不同的方式确定RPC调用的客户端上下文,可以保证后续确定访问动作的主体的精确性。
可以理解,为了避免内存浪费的情况下,RPC服务监控模块在调用原始的服务存根接口完成后,可以进一步使用设备IO调用内核层的RPC溯源模块,以清除当前上下文的映射记录。如此,可以有效防止内存浪费。
在本申请实施例中,RPC溯源模块包括命名管道过滤子模块和调用映射记录子模块,跟踪方法还可以包括:
通过命名管道过滤子模块解析在命名管道上传输的RPC调用的客户端上下文;
通过调用映射记录子模块维护当前上下文和客户端上下文的映射关系。
具体地,RPC溯源模块工作在Windows内核层,包含命名管道过滤子模块和调用映射记录子模块。其中,命名管道过滤子模块用于解析在命名管道上传输的RPC调用的客户端上下文,即传输层的协议类型解析为命名管道协议的RPC调用。调用映射记录子模块负责维护当前上下文到客户端上下文的映射关系,存储各个RPC调用的当前上下文和客户端上下文的映射记录,为后续确定访问动作的主体的溯源查询提供数据基础。
在本申请实施例中,命名管道过滤子模块的工作流程可以包括:
在RPC溯源模块启动时进行命名管道过滤子模块的初始化工作;
在写命名管道动作发生时,IRP将先到达IO派发钩子函数处理;
在RPC服务监控模块查询命名管道的客户端上下文的情况下,返回对应的客户端上下文。
具体地,在RPC溯源模块启动时进行命名管道过滤子模块的初始化工作可以包括:
预分配一定数量的特征数据结构,并将其追加到特征数据链表。其中,特征数据结构均包含特征数据和客户端上下文两个字段。并通过设备名称定位命名管道设备驱动程序,挂钩与写管道相关的IO派发函数。
在写命名管道动作发生时,IRP将先到达IO派发钩子函数处理,处理过程可以包括:
判断管道传输的数据是否符合RPC消息的格式,如果不符合,则不做特殊处理,调用原始IO派发函数。
在管道传输的数据符合RPC消息的格式的情况下,从特征数据链表尾部移出一项特征数据结构。从IRP中提取出该RPC消息对应的RPC调用的特征数据,填充到该移出的特征数据结构中的对应字段。提取当前的进程标识和线程标识,将当前的进程标识和线程标识构造为该RPC调用的客户端上下文,将该客户端上下文填充到该移出的特征数据结构的对应字段。进而得到填充完成的特征数据结构。最后,将上述特征数据结构添加到特征数据链表的头部。如此,可以为RPC服务监控模块获取PRC调用的客户端上下文提供数据支持。
在本申请实施例中,通过命名管道过滤子模块解析在命名管道上传输的RPC调用的客户端上下文包括:
在RPC服务监控模块查询命名管道的客户端上下文的情况下,根据传入的特征数据查询特征数据链表;
在查询成功的情况下,返回查询到的特征数据结构中的客户端上下文。
具体地,在RPC调用的RPC消息数据解析出的传输层协议为命名管道协议的情况下,RPC服务监控模块会根据该RPC调用的特征数据通过调用RPC溯源模块查询得到RPC调用的客户端上下文。可以理解的是,命名管道过滤子模块在接收到RPC服务监控模块查询命名管道的客户端上下文时,根据RPC服务监控模块传入的RPC调用的特征数据,可以查询特征数据链表,如查询命中,则返回特征数据结构中存储的客户端上下文。在一个示例中,若RPC服务监控模块传入的特征数据与特殊数据链表中任意一项特征数据结构中的特征数据匹配成功,则说明查询命中;否则查询失败。
在本申请实施例中,通过调用映射记录子模块维护当前上下文和客户端上下文的映射关系可以包括:
在初始化阶段,分配一个映射数据结构表;
在RPC服务监控模块发送一个映射关系时,将映射关系存入映射数据结构表。
具体地,为了记录每一个RPC调用的当前上下文和客户端上下文的映射关系,在RPC溯源模块初始化阶段,可以给调用映射记录子模块分配一个映射数据结构,该映射数据结构为一个键-值映射的数据结构。如此,在后续没发生一次RPC调用,RPC服务监控模块则会发生的以当前上下文和客户端上下文的映射关系;调用映射记录子模块则可以以当前上下文为键,以客户端上下文为值设置映射项,从而将该映射关系存入映射数据结构表中。如此,通过该映射数据结构表可以为后续确定访问主体的溯源查询提供数据基础。
在一个示例中,在RPC溯源模块接收到RPC服务监控模块清除一个映射关系的请求的情况下,调用映射记录子模块可以删除以该映射关系中的当前上下文为键的映射项。这样,可以有效防止内存的浪费。
在本申请实施例中,跟踪方法还可以包括:
在过滤引擎模块进行溯源查询的情况下,根据传入的当前上下文,查询映射数据结构表,以查询到RPC服务进程的每一级RPC调用的客户端上下文;
将RPC服务进程的最后一级RCP调用的客户端上下文作为目标客户端上下文;
将目标客户端上下文返回至过滤引擎模块。
具体地,在过滤引擎模块进行溯源查询时,调用映射记录子模块可以根据过滤引擎模块传入的当前上下文,查询映射数据结构表,以查询到该当前上下文映射的客户端上下文。进一步地,对于查询回来的客户端上下文,将其作为键继续查询映射数据结构表。重复此过程,直到没有对应的客户端上下文为止。如此,可以得到RPC服务进程的每一级调用的客户端上下文,将左后一级RPC调用的客户端上下文作为目标客户端上下文,并返回该目标客户端上下文。这样,过滤引擎模块可以根据该目标客户端上下文确定RPC服务进程访问资源的访问动作的主体。采用以上方法,即便在多级RPC调用情况下,也能够逐级追溯调用的客户端上下文,还原整个RPC调用链条,为攻击溯源提供强有力的支撑。
通过上述技术方案,提供一种远程过程调用的跟踪***,该跟踪***包括:RPC服务监控模块、RPC溯源模块和过滤引擎模块。在RPC服务进程中,通过注入一个RPC服务监控模块负责在RPC调用发生时获取客户端上下文并构造当前上下文,将当前上下文和客户端上下文的映射关系发送至RPC溯源模块;RPC溯源模块负责记录当前上下文和客户端上下文的映射关系;当RPC服务进程访问资源时,过滤引擎模块可以根据该RPC服务进程的当前上下文对RPC溯源模块进行溯源查询,以得到目标客户端上下文,进而根据目标客户端上下文确定RPC服务进程的访问动作的主体。本申请能够基于RPC调用的当前上下文和客户端上下文的映射关系,在RPC服务进程访问资源时,通过溯源查询追溯到该RPC服务进程的全部调用过程,从而精准地确定访问动作的主体,提高了访问控制的精度。
图5为本申请一具体实施例提供的远程过程调用的跟踪***的应用示意图。如图5所示,在本申请一具体实施例中,描述了本申请所提出的远程过程调用的跟踪***在某平台产品中的使用。
具体地,RPC溯源模块作为该平台内核模块的子模块,复用平台内核模块的IO处理过程,为上层的RPC服务监控模块提供3个设备IO控制码:
RPC_SETMAP:用于记录当前上下文到客户端上下文的映射;
RPC_DELMAP:用于清除当前上下文的映射;
RPC_QUERYPIPE:用于查询命名管道的客户端上下文。
此外,平台内核还包括进程管理器模块和过滤引擎模块。其中进程管理器模块可用于向RPC服务进程注入RPC服务监控模块,过滤引擎模块则在访问动作发生时,查询可能的RPC调用客户端上下文,进而确定访问动作的主体。
其整体的工作流程如下:
1、平台内核模块启动时,初始化RPC溯源模块,包括:
(1)初始化命名管道过滤子模块,具体有:
在初始化时,预分配32项特征数据结构,并添加到特征数据链表。其中,特征数据结构包括24字节的特征数据和8字节的客户端上下文两个字段。客户端上下文由32位的进程标识和32位的线程标识组成,在特征数据结构初始分配时是空值。
挂钩命名管道设备驱动程序的写管道相关的IO派发函数,包括IRP_MJ_WRITE派发函数;IRP_MJ_FILE_SYSTEM_CONTROL派发函数;FastIoWrite派发函数。
(2)初始化调用映射记录子模块,即创建一个64位上下文到64位上下文的调用映射结构。
2、在RPC服务器进程加载RPC运行时动态库时,进程监控模块向该RPC服务进程注入RPC服务监控模块。
3、RPC服务器进程初始化时,RPC服务监控模块进行初始化:
(1)打开平台内核模块公布的设备对象。
(2)挂钩RPC服务器存根相关的入口函数,具体有:NdrStubCall2;NdrAsyncServerCall;对于x64平台,还包括:NdrStubCall3、NdrServerCallAll、NdrServerCallNdr64等接口函数;对于x86平台,还包括:NdrStubCall。
4、当RPC调用到达RPC服务器时,会先进入RPC服务器存根入口的钩子函数,具体如下:
(1)将RPC消息结构中的句柄转换成调用数据指针,根据调用数据中的标志位判断RPC使用的传输层协议,进而获取RPC调用的客户端上下文。
如果传输层协议是本地过程调用(标志位包含0x2000):按照操作***的版本在调用数据指针的固定位置,提取出进程标识和线程标识,构造成64位的客户端上下文。
如果传输层协议是命名管道(标志位包含0x40):则从RPC消息结构中提取出4字节的调用号和20字节的消息缓冲区,构成24字节的特征数据,并作为输入数据,使用RPC_QUERYPIPE控制码向内核模块发起查询请求。如果请求成功,将返回的64位上下文作为客户端上下文;否则不做处理,调用原始的RPC服务存根入口函数,返回。
其它的网络传输层协议:不做处理,调用原始的RPC服务存根入口函数,返回。
(2)提取当前的进程标识和线程标识,构造成64位的当前上下文。
(3)使用RPC_SETMAP控制码,向内核模块发起设置映射请求,记录当前上下文到客户端上下文的映射。
(4)调用原始的RPC服务存根入口函数。
(5)使用RPC_DELMAP控制码,向内核模块发起清除映射请求,删除步骤(3)中记录的当前上下文指向的映射。
(6)返回。
5、在命名管道过滤子模块捕获到写管道请求时,进行如下的处理:
(1)获取IO请求的写缓冲区。
(2)判断IO请求的写缓冲区内的数据是否为RPC消息格式的数据,如果不是,调用原始的IO派发函数,结束处理。
(3)IO请求的写缓冲区内的数据是RPC消息格式,则:
从特征数据链表尾部移出一项;
解析IO请求中写缓冲区内的RPC消息的数据结构,提取出4字节的调用号和20字节的包数据,作为特征数据填充到特征数据结构的对应字段;
获取当前的进程标识和线程标识,构成64位的客户端上下文,填充到特征数据结构的对应字段;
将特征数据结构添加到特征数据链表的头部。
6、在命名管道过滤子模块中,响应RPC_QUERYPIPE时,进行如下处理:
(1)从特征数据链表的头部开始遍历,对于每一项特征数据结构。
比较输入的特征数据和特征数据结构中对应字段的内容(24字节)。如果匹配,提取出该项对应的客户端上下文,清空特征数据结构中的客户端上下文字段,将该链表项移动到特征数据链表的尾部。返回客户端上下文,完成请求。如果不匹配,且继续比较下一项。如果遍历到链表尾部,或者当前特征数据结构的客户端上下文字段为空,则遍历结束,返回错误代码STATUS_NOT_FOUND。
7、在调用映射记录子模块中:
(1)对来自RPC服务监控模块的RPC_SETMAP请求,从输入缓冲区里提取出当前上下文和客户端上下文,以当前上下文为键,客户端上下文为值,设置到调用映射结构,返回。
(2)对来自RPC服务监控模块的RPC_DELMAP请求,从输入缓冲区里提取出当前上下文,从调用映射结构中删除当前上下文对应的映射项,返回。
(3)对于来自过滤引擎模块的RPC调用查询请求,则:
以输入的当前上下文为键,在调用映射中查找其对应的客户端上下文,如果没找到,则返回失败。
如果找到了,则以该客户端上下文为键,继续在调用映射中查找对应的上一级客户端上下文。
如果没找到,则将最后提取到的客户端上下文作为结果返回。
如此,通过上述方法,在RPC服务器进程访问资源时,能够将访问主体定位到最早发起RPC调用的客户端上下文(客户端进程和客户端线程),可提高访问控制的精度。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (14)
1.一种远程过程调用的跟踪***,其特征在于,包括:
远程过程调用RPC服务监控模块,被配置成在RPC调用发生时获取客户端上下文,并构造当前上下文,以及将所述客户端上下文和所述当前上下文的映射关系发送至RPC溯源模块;
所述RPC溯源模块,与所述RPC服务监控模块通信,被配置成记录所述RPC服务监控模块发送的所述当前上下文和所述客户端上下文的映射关系;
过滤引擎模块,与所述RPC溯源模块通信,被配置成:
在检测到RPC服务进程访问资源的情况下,根据所述RPC服务进程的当前上下文对所述RPC溯源模块进行溯源查询,以得到目标客户端上下文;
根据所述目标客户端上下文确定所述RPC服务进程的访问动作的主体。
2.根据权利要求1所述的跟踪***,其特征在于,所述RPC服务监控模块还被配置成:
在所述RPC调用经过RPC传输层时,根据所述RPC调用的RPC消息数据解析传输层的协议类型,并根据所述协议类型解析出所述RPC调用的客户端上下文;
提取出当前进程的进程标识和线程标识,以构建所述RPC调用的当前上下文;
调用所述RPC溯源模块,建立所述当前上下文和所述客户端上下文的映射关系。
3.根据权利要求2所述的跟踪***,其特征在于,所述RPC服务监控模块还被配置成:
在所述协议类型为本地调用协议的情况下,从所述RPC消息数据中提取客户端的进程标识和线程标识,以合并构成所述客户端上下文;
在所述协议类型为命名管道协议的情况下,提取出所述RPC调用的特征数据,根据所述特征数据查询所述RPC溯源模块,以获取所述客户端上下文;
在所述协议类型为其它网络协议的情况下,从所述RPC消息数据中提取出远程主机的信息,以构成所述客户端上下文。
4.根据权利要求1所述的跟踪***,其特征在于,所述RPC溯源模块包括:
命名管道过滤子模块,被配置成解析在命名管道上传输的RPC调用的客户端上下文;
调用映射记录子模块,被配置成维护所述当前上下文和所述客户端上下文的映射关系。
5.根据权利要求4所述的跟踪***,其特征在于,所述命名管道过滤子模块还被配置成:
在所述RPC服务监控模块查询命名管道的客户端上下文的情况下,根据传入的特征数据查询特征数据链表;
在查询成功的情况下,返回查询到的特征数据结构中的客户端上下文。
6.根据权利要求4所述的跟踪***,其特征在于,所述调用映射记录子模块还被配置成:
在初始化阶段,分配一个映射数据结构表;
在所述RPC服务监控模块发送一个映射关系时,将所述映射关系存入所述映射数据结构表。
7.根据权利要求6所述的跟踪***,其特征在于,所述调用映射记录子模块还被配置成:
在所述过滤引擎模块进行溯源查询的情况下,根据传入的当前上下文,查询所述映射数据结构表,以查询到所述RPC服务进程的每一级RPC调用的客户端上下文;
将所述RPC服务进程的最后一级RCP调用的客户端上下文作为所述目标客户端上下文;
将所述目标客户端上下文返回至所述过滤引擎模块。
8.一种远程过程调用的跟踪方法,其特征在于,应用于远程过程调用的跟踪***,所述跟踪***包括RPC服务监控模块、RPC溯源模块和过滤引擎模块,所述RPC溯源模块分别与所述RPC服务监控模块和所述过滤引擎模块通信,所述跟踪方法包括:
通过所述RPC服务监控模块获取在RPC调用发生时的客户端上下文,并构造当前上下文;
通过所述RPC溯源模块记录所述当前上下文和所述客户端上下文的映射关系;
在检测到RPC服务进程访问资源的情况下,通过所述过滤引擎模块根据所述RPC服务进程的当前上下文对所述RPC溯源模块进行溯源查询,以得到目标客户端上下文;
根据所述目标客户端上下文确定RPC服务进程的访问动作的主体。
9.根据权利要求8所述的跟踪方法,其特征在于,所述通过所述RPC服务监控模块获取在RPC调用发生时的客户端上下文,并构造当前上下文,包括:
在所述RPC调用经过RPC传输层时,根据所述RPC调用的RPC消息数据解析传输层的协议类型,并根据所述协议类型解析出所述RPC调用的客户端上下文;
提取出当前进程的进程标识和线程标识,以构建所述RPC调用的当前上下文;
调用所述RPC溯源模块,建立所述当前上下文和所述客户端上下文的映射关系。
10.根据权利要求9所述的跟踪方法,其特征在于,根据所述协议类型解析出所述RPC调用的客户端上下文包括:
在所述协议类型为本地调用协议的情况下,从所述RPC消息数据中提取客户端的进程标识和线程标识,以合并构成所述客户端上下文;
在所述协议类型为命名管道协议的情况下,提取出所述RPC调用的特征数据,根据所述特征数据查询所述RPC溯源模块,以获取所述客户端上下文;
在所述协议类型为其它网络协议的情况下,从所述RPC消息数据中提取出远程主机的信息,以构成所述客户端上下文。
11.根据权利要求8所述的跟踪方法,其特征在于,所述RPC溯源模块包括命名管道过滤子模块和调用映射记录子模块,所述跟踪方法还包括:
通过所述命名管道过滤子模块解析在命名管道上传输的RPC调用的客户端上下文;
通过所述调用映射记录子模块维护所述当前上下文和所述客户端上下文的映射关系。
12.根据权利要求11所述的跟踪方法,其特征在于,所述通过所述命名管道过滤子模块解析在命名管道上传输的RPC调用的客户端上下文包括:
在所述RPC服务监控模块查询命名管道的客户端上下文的情况下,根据传入的特征数据查询特征数据链表;
在查询成功的情况下,返回查询到的特征数据结构中的客户端上下文。
13.根据权利要求11所述的跟踪方法,其特征在于,所述通过所述调用映射记录子模块维护所述当前上下文和所述客户端上下文的映射关系包括:
在初始化阶段,分配一个映射数据结构表;
在所述RPC服务监控模块发送一个映射关系时,将所述映射关系存入所述映射数据结构表。
14.根据权利要求13所述的跟踪方法,其特征在于,所述跟踪方法还包括:
在所述过滤引擎模块进行溯源查询的情况下,根据传入的当前上下文,查询所述映射数据结构表,以查询到所述RPC服务进程的每一级RPC调用的客户端上下文;
将所述RPC服务进程的最后一级RCP调用的客户端上下文作为所述目标客户端上下文;
将所述目标客户端上下文返回至所述过滤引擎模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311537805.5A CN117494117A (zh) | 2023-11-17 | 2023-11-17 | 一种远程过程调用的跟踪***及跟踪方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311537805.5A CN117494117A (zh) | 2023-11-17 | 2023-11-17 | 一种远程过程调用的跟踪***及跟踪方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117494117A true CN117494117A (zh) | 2024-02-02 |
Family
ID=89674291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311537805.5A Pending CN117494117A (zh) | 2023-11-17 | 2023-11-17 | 一种远程过程调用的跟踪***及跟踪方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117494117A (zh) |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5404523A (en) * | 1993-11-10 | 1995-04-04 | Digital Equipment Corporation | Method of managing requests in a transaction processing system |
CN103023906A (zh) * | 2012-12-20 | 2013-04-03 | 北京奇虎科技有限公司 | 针对远程过程调用协议进行状态跟踪的方法及*** |
CN106487596A (zh) * | 2016-10-26 | 2017-03-08 | 宜人恒业科技发展(北京)有限公司 | 分布式服务跟踪实现方法 |
CN106549997A (zh) * | 2015-09-22 | 2017-03-29 | 阿里巴巴集团控股有限公司 | 用户上下文信息的获取方法和装置 |
US20180052720A1 (en) * | 2016-08-18 | 2018-02-22 | Crowdstrike, Inc. | Tracing System Operations Across Remote Procedure Linkages to Identify Request Originators |
CN109787964A (zh) * | 2018-12-29 | 2019-05-21 | 北京零平数据处理有限公司 | 进程行为溯源装置和方法 |
CN109992465A (zh) * | 2017-12-29 | 2019-07-09 | 中国电信股份有限公司 | 服务追踪方法、装置和计算机可读存储介质 |
CN110245043A (zh) * | 2018-03-07 | 2019-09-17 | 深圳市小赢信息技术有限责任公司 | 一种分布式***间调用关系的跟踪*** |
CN112738123A (zh) * | 2021-01-05 | 2021-04-30 | 成都安思科技有限公司 | 一种恶意远程过程溯源调用行为的检测方法及装置 |
KR20210084003A (ko) * | 2019-12-27 | 2021-07-07 | 주식회사 안랩 | 호출 기반의 악성 진단 장치 및 호출 기반의 악성 진단 방법 |
CN113312615A (zh) * | 2021-06-23 | 2021-08-27 | 北京天融信网络安全技术有限公司 | 一种终端检测与响应*** |
CN113448745A (zh) * | 2020-10-14 | 2021-09-28 | 北京新氧万维科技咨询有限公司 | 服务请求的追踪方法、装置及电子设备 |
CN113612749A (zh) * | 2021-07-27 | 2021-11-05 | 华中科技大学 | 一种面向入侵行为的溯源数据聚类方法及装置 |
CN114466053A (zh) * | 2022-04-11 | 2022-05-10 | 腾讯科技(深圳)有限公司 | 远程过程调用的调用管控方法、装置、设备及存储介质 |
US11709720B1 (en) * | 2022-02-25 | 2023-07-25 | Datadog, Inc. | Protocol for correlating user space data with kernel space data |
CN116594796A (zh) * | 2023-04-10 | 2023-08-15 | 中山大学 | 一种基于eBPF的进程崩溃信息收集方法和装置 |
-
2023
- 2023-11-17 CN CN202311537805.5A patent/CN117494117A/zh active Pending
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5404523A (en) * | 1993-11-10 | 1995-04-04 | Digital Equipment Corporation | Method of managing requests in a transaction processing system |
CN103023906A (zh) * | 2012-12-20 | 2013-04-03 | 北京奇虎科技有限公司 | 针对远程过程调用协议进行状态跟踪的方法及*** |
CN106549997A (zh) * | 2015-09-22 | 2017-03-29 | 阿里巴巴集团控股有限公司 | 用户上下文信息的获取方法和装置 |
US20180052720A1 (en) * | 2016-08-18 | 2018-02-22 | Crowdstrike, Inc. | Tracing System Operations Across Remote Procedure Linkages to Identify Request Originators |
CN106487596A (zh) * | 2016-10-26 | 2017-03-08 | 宜人恒业科技发展(北京)有限公司 | 分布式服务跟踪实现方法 |
CN109992465A (zh) * | 2017-12-29 | 2019-07-09 | 中国电信股份有限公司 | 服务追踪方法、装置和计算机可读存储介质 |
CN110245043A (zh) * | 2018-03-07 | 2019-09-17 | 深圳市小赢信息技术有限责任公司 | 一种分布式***间调用关系的跟踪*** |
CN109787964A (zh) * | 2018-12-29 | 2019-05-21 | 北京零平数据处理有限公司 | 进程行为溯源装置和方法 |
KR20210084003A (ko) * | 2019-12-27 | 2021-07-07 | 주식회사 안랩 | 호출 기반의 악성 진단 장치 및 호출 기반의 악성 진단 방법 |
CN113448745A (zh) * | 2020-10-14 | 2021-09-28 | 北京新氧万维科技咨询有限公司 | 服务请求的追踪方法、装置及电子设备 |
CN112738123A (zh) * | 2021-01-05 | 2021-04-30 | 成都安思科技有限公司 | 一种恶意远程过程溯源调用行为的检测方法及装置 |
CN113312615A (zh) * | 2021-06-23 | 2021-08-27 | 北京天融信网络安全技术有限公司 | 一种终端检测与响应*** |
CN113612749A (zh) * | 2021-07-27 | 2021-11-05 | 华中科技大学 | 一种面向入侵行为的溯源数据聚类方法及装置 |
US11709720B1 (en) * | 2022-02-25 | 2023-07-25 | Datadog, Inc. | Protocol for correlating user space data with kernel space data |
CN114466053A (zh) * | 2022-04-11 | 2022-05-10 | 腾讯科技(深圳)有限公司 | 远程过程调用的调用管控方法、装置、设备及存储介质 |
CN116594796A (zh) * | 2023-04-10 | 2023-08-15 | 中山大学 | 一种基于eBPF的进程崩溃信息收集方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109088764B (zh) | 访问请求处理方法及相关设备 | |
US7676816B2 (en) | Systems and methods for integrating services | |
CN112491604B (zh) | 物联网设备的远程管理实现方法、装置及*** | |
CN108628751B (zh) | 一种无用依赖项检测方法及装置 | |
US7739230B2 (en) | Log location discovery and management | |
US6349342B1 (en) | Methods and apparatus for managing computer processes | |
US20070174826A1 (en) | Instrumenting software for enhanced diagnosability | |
CN111225082B (zh) | 一种物联网智能设备的身份管理方法、装置及物联网平台 | |
CN111967017A (zh) | 生成依赖关系的方法、装置、终端设备及存储介质 | |
CN109923547B (zh) | 程序行为监控设备、分布式对象生成管理设备、存储介质、以及程序行为监视*** | |
CN115408193A (zh) | 多模块间错误码处理方法及装置 | |
CN110688201B (zh) | 一种日志管理方法及相关设备 | |
CN113568604B (zh) | 风控策略的更新方法、装置及计算机可读存储介质 | |
CN112860507B (zh) | 分布式链路跟踪***采样率的控制方法和装置 | |
CN113992382A (zh) | 业务数据处理方法、装置、电子设备及存储介质 | |
CN112667371B (zh) | 异步任务的处理方法、装置、设备及存储介质 | |
CN113849119B (zh) | 存储方法、存储装置和计算机可读存储介质 | |
CN117494117A (zh) | 一种远程过程调用的跟踪***及跟踪方法 | |
CN107301097B (zh) | 一种调用java对象、java对象的引用地址信息的存储方法及装置 | |
CN111339173A (zh) | 数据共享方法、服务器及可读存储介质 | |
CN115396159A (zh) | 一种容器镜像的检测方法及客户端、服务端 | |
CN114895975A (zh) | 一种服务端***的预热方法及设备 | |
CN111124610A (zh) | 一种应用容器中应用程序调用方法、装置及存储介质 | |
CN114297495A (zh) | 业务数据查找方法、装置、电子设备及存储介质 | |
US8001533B2 (en) | Maintaining object referential integrity for abstract objects |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |