Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
RpcInvestigator — Windows RPC接口发现与分析工具,具备可视化端点枚举、PE解析、符号解析、实时ETW嗅探以及即时客户端代码生成功能,用于安全审计。 | Kitploit
工具/GitHubGitHub/trailofbits/rpcinvestigator
漏洞分析逆向工程渗透测试二进制分析
GitHubtrailofbits/rpcinvestigator

RpcInvestigator

Windows RPC接口发现与分析工具,具备可视化端点枚举、PE解析、符号解析、实时ETW嗅探以及即时客户端代码生成功能,用于安全审计。

查看仓库
365342年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

RPC Investigator

请阅读我们的博客文章公告。

RPC Investigator (RPCI) 是一个基于 .NET/C# 的 Windows Forms 用户界面应用程序,为 Windows RPC 端点提供高级发现和分析接口。该工具围绕 NtApiDotNet 平台现有的核心 RPC 功能提供了可视化界面,包括:

  • 枚举所有活动 ALPC RPC 服务器
  • 从任何 PE 文件中解析 RPC 服务器
  • 从进程及其加载的模块(包括服务)中解析 RPC 服务器
  • 从符号服务器拉取符号信息
  • 将 RPC 服务器定义导出为序列化的 .NET 对象,供您自己的脚本使用

除了这些核心功能,RPCI 还提供了额外的能力:

  • 客户端工作台允许您通过右键单击感兴趣的 RPC 服务器,即时创建并执行 RPC 客户端二进制文件。该工作台有一个 C# 代码编辑器面板,允许您实时编辑客户端,并观察代码中执行的 RPC 过程的结果。
  • 发现的 RPC 服务器被组织成一个可搜索的库,允许您以有用的方式对 RPC 服务器数据进行透视分析,例如通过可定制的搜索界面,在所有服务器的所有 RPC 过程中搜索感兴趣的程序。
  • RPC Sniffer 工具增加了对 RPC 相关 ETW 数据的可见性,提供活动 RPC 调用的近乎实时视图。通过将 ETW 数据与来自 NtApiDotNet 的 RPC 服务器数据相结合,我们可以构建更完整的正在进行的 RPC 活动图景。

常见工作流程

RPC Investigator 支持以下几种工作流程:

  • 审计
    • 枚举所有与 ALPC 端点通信的进程中的活动 ALPC RPC 服务器
    • 枚举在 Windows 服务中运行的所有 RPC 服务器
    • 加载在 PE 文件(如 EXE 或 DLL)中定义的离线 RPC 服务器
  • 交互
    • 客户端工作台:自动生成可定制的 RPC 客户端代码,用于调用任何 RPC 服务。
    • RPC Sniffer:实时监控与 RPC 相关的 Windows 事件跟踪 (ETW) 数据。

示例工作流程:分析任务计划程序 RPC

在此示例中,我们将检查 Windows 任务计划程序 RPC 服务,该服务用于管理和执行计划任务。我们将找到该服务,生成客户端代码,然后定制客户端以与其中一个公开的过程进行交互。

首先,通过单击 File -> Load From Service 加载 Windows 服务列表。这将打开一个新的服务列表窗口:

找到 Schedule 服务,即 Windows 任务计划程序,选中该服务并单击 Go。

在 RPCI 加载所有关联的 RPC DLL 之前,系统会提示您。单击 Yes 继续。加载完成后,您将看到在服务进程中加载的所有模块中发现的所有 RPC 服务器列表。Windows 任务计划程序 RPC 服务器的接口 ID 为 86D35949-83C9-4044-B424-DB363231FD0C。在列表中找到具有此接口 ID 的行,它应该有一个名为 Task Scheduler 的运行中服务,右键单击该行,然后选择 New Client。

客户端窗口的左侧部分显示 RPC 服务器元数据和客户端代码的命令行输出。右侧显示两个选项卡:

  • Client Code - 自动生成的 C# 客户端代码,可定制以与一个或多个过程进行交互。
  • Procedures - 公开的 RPC 过程列表。

在本示例中,我们将调用 SchRpcHighestVersion 过程。此方法接受一个参数 out int version,调用该过程后,该参数将包含 RPC 接口支持的最高任务计划程序协议版本。高 16 位是主版本,低 16 位是次版本。

要调用此过程:

  1. 在 Client Code 窗口中,找到 Run 方法,这是 RPC 客户端的主要入口点。

  2. 编辑 Run 方法体以调用该过程:

    root@kitploit:~
    public async Task<bool> Run()
    {
        int version;
        int status = SchRpcHighestVersion(out version);
        if (status == 0) {
            long major = (version & 0xffff0000) >> 16;
            long minor = version & 0x0000ffff;
            Console.WriteLine("highest supported RPC version: {0}.{1}", major, minor);
        } else {
            Console.WriteLine("call to SchRpcHighestVersion failed with error: {0:X}", status);
        }
        return true;
    }
    
  3. 添加此代码后,单击 Run 按钮运行客户端。这将编译 C# 代码,然后执行 Run 方法。

    • 如果客户端代码无法编译,您将看到一个包含编译错误的弹出框。

如果编译成功,您将在 Output 框中看到类似以下内容:

root@kitploit:~
> Run() output:
highest supported RPC version: 1.6

配置

RPC Investigator 有几个配置设置。

设置描述默认值

配置设置可以在应用程序内通过 Edit -> Settings 菜单进行修改。

故障排除

在初始发布后,RPC Investigator 从 .NET Framework 应用程序转换为 .NET 7 应用程序。如果您遇到构建问题,请确保 Visual Studio 是最新的。在从 .NET Framework 版本构建之前,清除所有构建输出文件夹是一个好主意。

此外,由于从不安全的 BinaryFormatter 类迁移到 protobuf-net,使用 .NET framework 版本生成的 RPC 库与 .NET 版本不兼容。

如果您在 RPC Investigator 中遇到随机崩溃,您可能会通过要求管理员调整您的 EDR 找到解决方案。我们发现某些 EDR 对 JIT 编译的语言行为不正常。

在某些情况下,RPC Investigator 被 EDR 检测为恶意软件,包括 Virus Total 上的一些误报。这是一个已知问题。这是因为 RPC Investigator 包含 NtObjectManager —— 一个由 James Forshaw 创建的软件包,已知会被许多 EDR(包括 Windows Defender)检测为恶意(误报)。

开发环境

  1. 安装 Visual Studio Community 2022,确保选择 .NET 桌面开发工作负载。
  2. 下载并安装最新的 Windows 10 SDK。执行完整安装,以便安装 .NET 4.8.1 和调试工具。
  3. 打开解决方案并验证项目是否正确加载。如果出现关于缺少 .NET 4.8.1 目标包的错误,请下载并安装 .NET Framework 4.8.1 开发者包,然后重新启动 Visual Studio。

延伸阅读

由于 Windows RPC 十多年来一直是一个热门的研究课题,相关的资源和研究工作不胜枚举。下面我们列出了在构建此工具时遇到的一些资源:

  • https://clearbluejar.github.io/posts/surveying-windows-rpc-discovery-tools/
  • https://www.powerofcommunity.net/poc2019/James.pdf
  • https://www.tiraniddo.dev/2022/06/finding-running-rpc-server-information.html
  • https://clearbluejar.github.io/posts/from-ntobjectmanager-to-petitpotam/
  • https://itm4n.github.io/from-rpcview-to-petitpotam/
  • https://learn.microsoft.com/en-us/windows/win32/rpc/rpc-security-essentials
  • https://www.cyberark.com/resources/threat-research-blog/understanding-windows-containers-communication
  • https://github.com/silverf0x/RpcView
  • https://github.com/xpn/RpcEnum
  • https://github.com/cyberark/RPCMon
  • https://github.com/tyranid/WindowsRpcClients

如果您对 RPC 内部机制不熟悉或需要技术复习,我们建议参考该主题的权威来源之一 —— Alex Ionescu 2014 年在新加坡 SyScan 上的演讲 All about the RPC, LRPC, ALPC, and LPC in your PC。

下载工具
dbghelp.dlldbghelp.dll 模块的文件位置在已安装的 Windows Kits 中查找最新版本。
Symbol PathWindows 符号的路径,可以是符号服务器或本地目录默认公共 Windows 服务器:srv*c:\symbols*https://msdl.microsoft.com/download/symbols
Trace Level日志记录跟踪级别info