跳到主要内容

RPC

RPC(Remote Procedure Call,远程过程调用)是一种让程序像调用本地函数一样请求另一个执行单元完成工作的通信机制。这里的“远程”并不一定是另一台电脑:在 Windows 中,RPC 同样大量用于同一台主机上的不同进程或系统服务之间通信。

可以把它理解为:调用方不必直接知道对方进程如何实现功能,只需要按约定发送请求、等待结果。底层负责把参数传过去、把结果带回来。

客户端进程
↓ 请求:调用方法 + 参数
RPC 运行时 / 传输通道

服务端进程或服务
↓ 处理并返回结果
客户端获得返回值

Windows 中的 RPC

Windows 的很多系统能力由服务或独立进程提供,RPC 让应用、管理工具和系统组件能够请求这些能力,而不必把所有功能塞进同一进程。例如服务控制、账户与域相关操作、打印、远程管理,以及部分 COM/DCOM 组件,都会涉及 RPC。

常见组成

  • RPC 客户端:发起调用的一方,通常是应用程序、管理工具或系统组件。
  • RPC 服务端:提供接口和处理逻辑的一方,通常是服务、系统进程或业务进程。
  • 接口:双方约定的方法、参数和数据格式。Windows 中常会用 UUID 标识 RPC 接口。
  • 端点(Endpoint):客户端与服务端实际建立通信的位置;它可以基于本地机制,也可以使用命名管道或网络传输。
  • RPC Endpoint Mapper:网络 RPC 场景中,客户端可先通过它查询某个接口实际使用的端点。Windows 中这一服务通常与 TCP 135 端口相关。
信息

TCP 135 常被用于 RPC Endpoint Mapper,并不代表所有 RPC 通信都只走 135。客户端找到服务端点后,实际调用还可能使用动态分配的网络端口,或在本机使用命名管道等本地通道。

RPCSS

RpcSs 是 Windows 的 Remote Procedure Call (RPC) 服务。它为系统中的 RPC 和 COM 激活提供核心支持,是许多系统服务和应用依赖的基础组件。

因此,在正常 Windows 主机上看到与 RPC 相关的系统服务或通信并不意外。排查重点通常不是“有没有 RPC”,而是:哪个进程请求了什么接口、目标服务是否合理、认证上下文是什么,以及是否出现异常的网络暴露。

RPC 与 COM、DCOM

RPC 是通用的调用与通信机制;COM 是对象组件模型;DCOM 是 COM 跨进程或跨主机使用时的一组扩展机制。COM 对象位于不同进程时,COM 运行库通常会借助 RPC 将对象方法调用转为进程间请求。

COM 调用方
↓ 调用对象接口
COM 代理 / 运行库

RPC

另一进程中的 COM 对象

关系可以简单记为:

  • RPC:解决“怎样把一次调用传到另一端”。
  • COM:解决“组件对象如何定义、创建和暴露接口”。
  • DCOM:将 COM 的调用范围扩展到跨进程、跨主机,并依赖 RPC 等机制完成通信。

有关 COM 的注册、DLL 载体和安全排查,可参阅 组件与工具:COM 与 DLL

安全视角

RPC 的设计目标是让受控的组件通信成为可能,而不是天然的安全风险;但它连接了高权限服务、管理接口和网络边界,因此是安全运营中需要重点理解的基础设施。

主要风险面

  • 暴露的服务接口:不必要的 RPC 服务暴露到网络,可能扩大攻击面。
  • 认证与授权配置:RPC 传输层能确认调用方身份,不等于服务端业务接口一定正确限制了操作权限。
  • 匿名或弱认证调用:如果服务允许不合适的访问方式,敏感接口可能被非预期主体调用。
  • 接口漏洞:服务端对参数、身份或状态处理不当,可能导致拒绝服务、权限边界失效等问题。
  • 横向活动线索:网络中异常的 RPC 会话、管理接口调用或端点枚举,可能需要结合账户、主机角色与时间窗排查。

排查思路

当告警或日志指向 RPC 时,可以按下面的顺序缩小范围:

  1. 确认通信是本机进程间调用,还是跨主机通信。
  2. 确认客户端进程、服务端进程、账户和目标主机是否符合业务场景。
  3. 结合接口 UUID、服务名称、命名管道或网络连接,识别实际承载的管理或业务功能。
  4. 检查认证级别、授权结果和失败记录,避免将“发起 RPC”直接等同于“获得权限”。
  5. 将单条 RPC 事件与进程创建、服务创建、登录、文件落地和网络连接等行为关联判断。
提示

Windows 环境中的 RPC 事件通常需要结合上下文解释。域管理、远程运维、打印、软件分发和安全产品本身都可能产生大量合法 RPC 通信。

与其他通信方式的区别

方式主要特点常见用途
RPC以“调用远端方法”为中心,通常有明确接口约定系统服务、管理功能、COM/DCOM
命名管道本机或网络上的字节流通信机制进程间通信、服务通信
Socket更底层的网络通信接口自定义客户端/服务端协议
HTTP API基于 HTTP 的应用层接口Web 服务、云服务、现代业务接口

RPC 可以使用某些底层传输承载通信;因此命名管道、网络端口和 RPC 不是互相排斥的概念,而是可能位于不同层次。