Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
RpcInvestigator — Инструмент для обнаружения и анализа интерфейсов RPC в Windows с визуальным перечислением конечных точек, парсингом PE-файлов, разрешением символов, анализом ETW в реальном времени и генерацией клиентского кода на лету для аудита безопасности. | Kitploit
Инструменты/GitHubGitHub/trailofbits/rpcinvestigator
Анализ уязвимостейОбратная инженерияТестирование на ПроникновениеАнализ Бинарных Файлов
GitHubtrailofbits/rpcinvestigator

RpcInvestigator

Инструмент для обнаружения и анализа интерфейсов RPC в Windows с визуальным перечислением конечных точек, парсингом PE-файлов, разрешением символов, анализом ETW в реальном времени и генерацией клиентского кода на лету для аудита безопасности.

Репозиторий
3653432 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

RPC Investigator

Пожалуйста, прочитайте наше объявление в блоге.

RPC Investigator (RPCI) — это приложение с пользовательским интерфейсом Windows Forms на .NET/C#, предоставляющее расширенный интерфейс для обнаружения и анализа конечных точек Windows RPC. Инструмент предоставляет визуальный интерфейс поверх существующих основных возможностей RPC платформы NtApiDotNet, включая:

  • Перечисление всех активных серверов ALPC RPC
  • Разбор серверов RPC из любого PE-файла
  • Разбор серверов RPC из процессов и их загруженных модулей, включая службы
  • Получение информации о символах с сервера символов
  • Экспорт определений серверов RPC в виде сериализованных .NET-объектов для ваших собственных скриптов

Помимо этих основных функций, RPCI предоставляет дополнительные возможности:

  • Рабочая среда клиента (Client Workbench) позволяет на лету создавать и выполнять двоичный файл клиента RPC, щелкнув правой кнопкой мыши на интересующем сервере RPC. Рабочая среда содержит панель редактора кода C#, позволяющую редактировать клиент в реальном времени и наблюдать результаты выполнения процедур RPC в вашем коде.
  • Обнаруженные серверы RPC организованы в библиотеку с возможностью поиска, позволяющую полезно перенаправлять данные о серверах RPC, например, искать интересные процедуры во всех серверах через настраиваемый интерфейс поиска.
  • Инструмент RPC Sniffer добавляет видимость данных ETW, связанных с RPC, чтобы обеспечить представление активных вызовов RPC почти в реальном времени. Объединяя данные ETW с данными о серверах RPC из NtApiDotNet, мы можем составить более полную картину текущей активности RPC.

Типовые рабочие процессы

RPC Investigator поддерживает несколько рабочих процессов:

  • Аудит
    • Перечисление всех активных серверов ALPC RPC во всех процессах, взаимодействующих с конечной точкой ALPC
    • Перечисление всех серверов RPC, работающих в службе Windows
    • Загрузка автономных серверов RPC, определенных в PE-файле (например, EXE или DLL)
  • Интерактивный
    • Рабочая среда клиента: автоматическая генерация кода клиента RPC, который можно настроить и использовать для вызова любой службы RPC.
    • RPC Sniffer: мониторинг в реальном времени данных трассировки событий Windows (ETW), связанных с RPC.

Пример рабочего процесса: анализ RPC планировщика задач

В этом примере мы рассмотрим службу RPC планировщика задач Windows, которая используется для управления и выполнения запланированных задач. Мы найдем службу, сгенерируем код клиента, а затем настроим клиент для взаимодействия с одной из предоставленных процедур.

Сначала загрузите список служб Windows, нажав File -> Load From Service. Откроется новое окно со списком служб:

Найдите службу Schedule (планировщик задач Windows), выберите ее и нажмите Go.

Перед загрузкой всех связанных DLL-библиотек RPC будет отображен запрос подтверждения. Нажмите Yes, чтобы продолжить. После загрузки вы увидите список всех серверов RPC, обнаруженных во всех модулях, загруженных в процесс службы. Сервер RPC планировщика задач Windows имеет идентификатор интерфейса 86D35949-83C9-4044-B424-DB363231FD0C. Найдите в списке строку с этим идентификатором интерфейса, у которой должно быть указано имя запущенной службы 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 имеет несколько параметров конфигурации.

SettingDescriptionDefault
dbghelp.dllРасположение файла модуля dbghelp.dllНайти последнюю версию в установленных Windows Kits.
Symbol PathПуть к символам Windows, который может указывать на сервер символов или локальную директориюПо умолчанию общедоступный сервер Windows: srv*c:\symbols*https://msdl.microsoft.com/download/symbols
Trace LevelУровень трассировки журналаinfo

Параметры конфигурации можно изменить в приложении через меню Edit -> Settings.

Устранение неполадок

После первоначального выпуска RPC Investigator был преобразован из приложения .NET Framework в приложение .NET 7. Если у вас возникли проблемы со сборкой, убедитесь, что Visual Studio обновлен. Рекомендуется очистить все папки выходных данных сборки перед сборкой из версии .NET Framework.

Кроме того, из-за перехода с небезопасного класса BinaryFormatter на protobuf-net библиотеки RPC, сгенерированные с версией .NET Framework, несовместимы с версией .NET.

Если вы сталкиваетесь с неожиданными сбоями в RPC Investigator, возможно, решением будет попросить администратора настроить вашу систему EDR. Мы обнаружили, что некоторые EDR некорректно работают с JIT-компилируемыми языками.

В некоторых случаях RPC Investigator определяется как вредоносное ПО системами EDR, включая ложные срабатывания на Virus Total. Это известная проблема. Это связано с тем, что RPC Investigator содержит NtObjectManager — пакет, созданный Джеймсом Форшоу, который, как известно, определяется (ложно-положительно) многими EDR, включая Защитник Windows.

Среда разработки

  1. Установите Visual Studio Community 2022, убедитесь, что выбрана рабочая нагрузка .NET Desktop Development.
  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 или вам нужно обновить знания, мы рекомендуем один из авторитетных источников по этой теме — доклад Алекса Ионеску на SyScan 2014 в Сингапуре: All about the RPC, LRPC, ALPC, and LPC in your PC.

Скачать инструмент