06 Апр, 2023

Удаленный вызов процедуры (RPC)

Penetration Testing as a service (PTaaS)

Tests security measures and simulates attacks to identify weaknesses.

RPC расшифровывается как Удаленный вызов процедуры. Это протокол, который позволяет одной компьютерной программе выполнять код на другом компьютере без необходимости программиста явно кодировать для связи между ними. Другими словами, RPC позволяет программе вызывать функцию на удаленном компьютере, как если бы это был локальный вызов функции. Это часто используется в клиент-серверных приложениях или распределенных системах, где нескольким компьютерам необходимо взаимодействовать друг с другом. RPC широко используется в современных сетевых протоколах, таких как HTTP, NFS и DCOM.

Общие порты RPC

Port 135: Этот порт используется службой удаленного вызова процедур (RPC), которая выполняется в операционной системе Windows. Он используется для различных служб Windows и может быть уязвим для атак.

Port 111: Этот порт используется службой RPC в системах на базе Unix, включая Linux и Solaris. Он используется для различных системных служб, таких как NFS (Сетевая файловая система) и NIS (Сетевая информационная служба).

Port 139: Этот порт используется службой NetBIOS (Network Basic Input/Output System) в системах под управлением Windows. NetBIOS используется для общего доступа к файлам и принтерам, а также для некоторых других сетевых служб Windows.

Port 445: Этот порт используется протоколом SMB (Server Message Block), который используется для общего доступа к файлам и принтерам в системах под управлением Windows.

Port 2049: Этот порт используется протоколом NFS, который используется для совместного использования файлов в системах на базе Unix.

Стандартные команды от неавторизованных пользователей

Перечислите услуги. Неавторизованные пользователи могут попытаться перечислить службы, запущенные в системе, с помощью команды “EnumServicesStatus”. Это может позволить им идентифицировать уязвимые сервисы или службы, которые они могут использовать для получения дальнейшего доступа.

Остановите службы. Неавторизованные пользователи могут попытаться остановить критически важные службы в системе с помощью команды “ControlService”. Это может вызвать нестабильность системы или даже атаку типа "отказ в обслуживании" (DoS).

Выполните произвольный код. Неавторизованные пользователи могут попытаться выполнить произвольный код в системе с помощью команд “CreateProcess" или “ShellExecute”. Это может позволить им получить удаленный доступ к системе или выполнять другие вредоносные действия.

Доступ к файлам. Неавторизованные пользователи могут попытаться получить доступ к файлам в системе с помощью команд “OpenFile" или “CreateFile”. Это может позволить им получить доступ к конфиденциальной информации или изменить важные системные файлы.

Инструменты для использования протокола RPC

Ручные Инструменты:

  • Rpcdump: Средство командной строки Windows, которое позволяет пользователям просматривать информацию о службах RPC и их конечных точках.

  • Rpcinfo: Средство командной строки на базе Unix, предоставляющее информацию о службах RPC в удаленной системе, включая их имена, порты и версии.

  • Portqry: Средство командной строки Windows, которое можно использовать для запроса портов и определения того, открыты они или закрыты.

  • Netcat: Инструмент командной строки на базе Unix, который позволяет пользователям создавать сетевые подключения и отправлять данные по ним. Его можно использовать для тестирования служб RPC путем отправки пользовательских запросов.

  • Wireshark: Анализатор сетевых протоколов, который может использоваться для сбора и анализа сетевого трафика. Его можно использовать для проверки трафика RPC и выявления потенциальных уязвимостей.

  • Nmap: Инструмент исследования сети и аудита безопасности, который можно использовать для сканирования открытых портов и выявления потенциальных угроз безопасности.

  • Metasploit: Платформа тестирования на проникновение, которая включает в себя различные модули для тестирования служб RPC и выявления потенциальных уязвимостей.

  • Fuzzing tools: Такие инструменты, как Peach Fuzzer, Sulley и American Fuzzy Lop, могут использоваться для тестирования служб RPC путем генерации случайных входных данных и выявления потенциальных уязвимостей.

Автоматизированные инструменты:

  • RPCScan: Инструмент, который можно использовать для сканирования открытых портов RPC и выявления потенциальных уязвимостей.

  • RPCView: Инструмент на базе Windows, который можно использовать для просмотра информации о службах RPC и конечных точках, а также о процессах, которые их используют.

  • RPCSMB: Инструмент, который может быть использован для тестирования служб RPC на базе SMB и выявления потенциальных уязвимостей.

  • rpcclient: Инструмент командной строки на базе Unix, который можно использовать для взаимодействия со службами RPC на базе SMB и тестирования потенциальных уязвимостей.

  • Impacket: Набор скриптов на Python, которые можно использовать для взаимодействия с RPC-сервисами на базе SMB и тестирования на наличие потенциальных уязвимостей.

  • ZMap: Сетевой сканер, который можно использовать для быстрого сканирования больших сетей на наличие открытых портов RPC.

  • Masscan: Быстрый сканер портов, который можно использовать для сканирования открытых портов RPC в крупных сетях.

  • OpenVAS: Сканер уязвимостей, который можно использовать для сканирования потенциальных уязвимостей в службах RPC и других сетевых компонентах.

  • Nessus: Сканер уязвимостей, который можно использовать для сканирования потенциальных уязвимостей в службах RPC и других сетевых компонентах.

Плагины для браузера:

  • OWASP ZAP: Популярный инструмент тестирования безопасности веб-приложений с открытым исходным кодом, который включает плагин для браузера для тестирования служб RPC.

  • Burp Suite: Популярный инструмент тестирования безопасности веб-приложений, который включает плагин для браузера для тестирования служб RPC.

  • Chrome RPC Debugger: Расширение для браузера Chrome, которое позволяет пользователям проверять и отлаживать RPC-трафик.

Последние пять известных CVE для RPC

• CVE-2023-24908 – Уязвимость удаленного выполнения кода Во время выполнения удаленной процедуры Во время выполнения Удаленной процедуры 

• CVE-2023-24869 – Уязвимость удаленного выполнения кода Во время выполнения удаленной процедуры Во время выполнения Удаленной процедуры

• CVE-2023-23405 – Уязвимость удаленного выполнения кода Во время выполнения удаленной процедуры Во время выполнения Удаленной процедуры

• CVE-2023-21708 – Уязвимость удаленного выполнения кода Во время выполнения удаленной процедуры Во время выполнения Удаленной процедуры

• CVE-2023-21525 – Уязвимость, связанная с отказом в обслуживании во время выполнения удаленной процедуры.

Полезная информация

– Удаленный вызов процедуры (RPC) - это протокол, который позволяет программе, запущенной на одном компьютере, вызывать подпрограмму на другом компьютере без необходимости разбираться в деталях сети. Он обычно используется в клиент-серверных приложениях, где клиент отправляет запрос на сервер, а сервер отвечает результатом.

– RPC использует комбинацию протокола управления передачей (TCP) и протокола пользовательских дейтаграмм (UDP) для передачи данных между процессами. TCP используется для надежной передачи данных, в то время как UDP используется для быстрой передачи без гарантии доставки.

– RPC использует динамическое распределение портов, что означает, что порт, используемый для связи, может меняться каждый раз при установлении соединения. Это может затруднить настройку брандмауэров и других мер безопасности для разрешения RPC-трафика.

– RPC широко используется в операционных системах Microsoft Windows, где он используется для широкого спектра системных функций, включая общий доступ к файлам и принтерам, удаленные вызовы процедур и взаимодействие с объектной моделью распределенных компонентов (DCOM).

– RPC позволяет создавать распределенные приложения, где компоненты приложения выполняются на разных компьютерах и взаимодействуют друг с другом с помощью вызовов RPC.

– RPC уязвим для различных угроз безопасности, включая атаки типа "отказ в обслуживании" (DoS), переполнение буфера и обход аутентификации. Важно обеспечить безопасность RPC-коммуникаций путем внедрения надлежащих механизмов аутентификации и контроля доступа.

– Для настройки RPC в системе Windows вы можете использовать средство настройки RPC, которое позволяет настраивать порты и протоколы, используемые RPC, а также просматривать состояние служб RPC в системе.

– RPC имеет несколько вариантов, включая ONC RPC (используется в средах Unix / Linux), DCE RPC (используется в некоторых устаревших системах) и XML-RPC (используется в веб-сервисах и API).

– Некоторые распространенные инструменты, используемые для тестирования RPC, включают Wireshark, Rpcclient, Metasploit Framework и Nmap, среди прочих.

– RPC может использоваться для создания широкого спектра приложений, включая распределенные базы данных, распределенные файловые системы и распределенные вычислительные системы.

Известные баннеры

Microsoft Windows RPC: “Microsoft Windows RPC” или “Windows RPC”, за которым следует номер версии. Например, “Microsoft Windows RPC (unimodem) (неизвестная версия)”.

Samba RPC Самба RPC: “Samba”, за которым следует номер версии. Например, “Samba 4.0.0beta2”.

Вс RPC: “SunRPC”, за которым следует номер версии. Например, “SunRPC 2.0”.

NFS RPC: “NFS”, за которым следует номер версии. Например, “NFS 3.0”.

Apache XML-RPC: “Apache XML-RPC”, за которым следует номер версии. Например, “Apache XML-RPC 3.1.3”.

JBoss EJBInvokerServlet: “JBossAS” или “JBoss Enterprise Application Platform", за которым следует номер версии и "EJBInvokerServlet”. Например, “JBossAS 4.2.0.GA (сборка: SVNTag=JBoss_4_2_0_GA дата=200710261339)/JBossWeb-2.0/EJBInvokerServlet”.

PHP XML-RPC: “PHP XML-RPC”, за которым следует номер версии. Например, “PHP XML-RPC 1.5.5”.

Книги для учебы RPC

“Распределенные системы: принципы и парадигмы” Эндрю Таненбаум и Маартен ван Стин – В этой книге представлен всеобъемлющий обзор распределенных систем, включая главу о RPC. В нем рассматриваются основы RPC, а также расширенные темы, такие как отказоустойчивость и безопасность.

“Сетевое программирование UNIX” Ричард Стивенс – Эта классическая книга по сетевому программированию включает главу о RPC. В нем рассматриваются основы RPC, а также расширенные темы, такие как аутентификация и настройка производительности.

“Внутренние компоненты Windows, часть 2: охват Windows Server 2008 R2 и Windows 7” автор: Марк Руссинович, Дэвид Соломон и Алекс Ионеску – Эта книга посвящена внутренним компонентам операционной системы Windows, но включает главу о RPC. В нем подробно описана подсистема RPC, включая различные используемые компоненты и протоколы.

“Программирование Windows: написание приложений для Windows 8 с использованием C # и XAML” Чарльз Петцольд – Эта книга посвящена программированию приложений для Windows 8, но включает главу о Windows Communication Foundation (WCF), которая является реализацией Microsoft RPC. В нем рассматриваются основы WCF, а также расширенные темы, такие как безопасность и надежность сообщений.

“Java RMI” Уильям Гроссо – Эта книга посвящена Java RMI, которая является реализацией RPC на Java. Он охватывает основы RMI, а также расширенные темы, такие как сериализация объектов и удаленная загрузка классов.

“XML-RPC: программирование веб-приложений с использованием Perl и Python” Эдд Дамбилл – Эта книга посвящена XML-RPC, который представляет собой упрощенную реализацию RPC, использующую XML для кодирования данных. В нем рассматриваются основы XML-RPC, а также расширенные темы, такие как аутентификация и обработка ошибок.

Список полезной нагрузки для RPC

  • Простой запрос RPC: Эта полезная нагрузка отправляет простой RPC-запрос на сервер. Его можно использовать для проверки того, работает ли служба RPC и правильно ли она отвечает.

  • Переполнение буфера: Эта полезная нагрузка предназначена для переполнения буфера в памяти службы RPC и выполнения вредоносного кода. Переполнение буфера является распространенным вектором атаки для служб RPC.

  • Отказ в обслуживании (DoS): Эта полезная нагрузка предназначена для переполнения службы RPC трафиком, чтобы перегрузить сервер и привести к его сбою или отказу отвечать на запросы. DoS-атаки могут быть использованы для нарушения работы законных служб и вызвать простои.

  • Человек посередине (MitM): Эта полезная нагрузка предназначена для перехвата и изменения RPC-трафика между клиентом и сервером. MitM-атаки могут быть использованы для кражи данных или выполнения вредоносного кода на сервере.

  • Обход каталога: Эта полезная нагрузка предназначена для использования уязвимостей обхода каталогов в службе RPC. Атаки с обходом каталогов могут использоваться для доступа к конфиденциальным файлам на сервере или выполнения произвольного кода.

  • Ввод команды: Эта полезная нагрузка предназначена для использования уязвимостей при внедрении команд в службе RPC. Атаки с использованием командных инъекций могут использоваться для выполнения произвольных команд на сервере.

  • SQL-инъекция: Эта полезная нагрузка предназначена для использования уязвимостей SQL-инъекций в службе RPC. Атаки с использованием SQL-инъекций могут использоваться для доступа к конфиденциальным данным в базе данных сервера или их изменения.

Смягчение последствий

  1. Одним из самых больших рисков безопасности, связанных с RPC, является использование слабой аутентификации. Чтобы снизить этот риск, используйте надежные методы аутентификации, такие как Kerberos или SSL / TLS, чтобы гарантировать, что только авторизованные пользователи могут получить доступ к системе.

  2. Ограничьте доступ к службам RPC только для тех систем и пользователей, которые в этом нуждаются. Это можно сделать с помощью брандмауэров или списков управления доступом (ACL) для ограничения доступа к службе RPC.

  3. Убедитесь, что все программное обеспечение, связанное с протоколом RPC, обновлено последними исправлениями безопасности. Это включает в себя как операционную систему, так и любые приложения, использующие протокол RPC.

  4. Отслеживайте сетевой трафик на предмет любых необычных действий или схем трафика, которые могут указывать на потенциальное нарушение безопасности. Это может быть сделано с помощью систем обнаружения вторжений (IDS) или средств управления информацией о безопасности и событиями (SIEM).

  5. Для защиты конфиденциальных данных, передаваемых по протоколу RPC, рассмотрите возможность использования шифрования, чтобы гарантировать, что данные не будут перехвачены или изменены при передаче.

  6. Отключите все службы RPC, которые не нужны для уменьшения поверхности атаки.

Заключение

Удаленный вызов процедуры (RPC) это протокол, используемый для связи между сетевыми устройствами, который позволяет программе выполнять код в удаленной системе так, как если бы она выполнялась локально. RPC широко используется в распределенных системах и клиент-серверных архитектурах, что делает его важной технологией для современных вычислений.

RPC обладает рядом преимуществ, включая его способность упрощать распределенные вычисления, абстрагируясь от сложности сетевого взаимодействия, и его поддержку нескольких языков программирования и платформ. Это также хорошо зарекомендовавшая себя и широко используемая технология с большим сообществом разработчиков и пользователей.

Другие Услуги

Готовы к безопасности?

Связаться с нами