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).

Виконайте довільний код. Неавторизовані користувачі можуть спробувати виконати довільний код у системі з допомогою команд "Застосунком" або "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: "Samba", за яким слідує номер версії. Наприклад, “Samba 4.0.0beta2".

Вс RPC: "SunRPC", за яким слідує номер версії. Наприклад, "SunRPC 2.0".

NFS RPC ( 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 володіє рядом переваг, включаючи його здатність спрощувати розподілені обчислення, абстрагуючись від складності мережевої взаємодії, і його підтримку декількох мов програмування і платформ. Це також добре зарекомендувала себе і широко використовувана технологія з великою спільнотою розробників і користувачів.

Інші Послуги

Готові до безпеки?

зв'язатися з нами