Презентация по Управлению и автоматизации баз данных на тему "Протоколы удалённого вызова процедур"
Cкачать презентацию: Презентация по Управлению и автоматизации баз данных на тему "Протоколы удалённого вызова процедур"
Презентация по слайдам:
Слайд #1
Протоколы удалённого вызова процедур

Слайд #2
Что такое РПЦ?
Удаленный вызов процедур (RPC) это метод межпроцессного взаимодействия. Полная форма RPC — это удаленный вызов процедур. Он используется для клиент-серверных приложений.
Механизмы RPC используются, когда компьютерная программа вызывает выполнение процедуры или подпрограммы в другом адресном пространстве, которое кодируется как обычный вызов процедуры, без специального кодирования программистом.tails для удаленного взаимодействия

Слайд #3
Что такое РПЦ?
Этот вызов процедуры также управляет транспортным протоколом низкого уровня, таким как протокол пользовательских дейтаграмм. Transmission Протокол управления/Интернет-протокол и т. д. Он используется для передачи данных сообщения между программами.

Слайд #4
Виды РПК
Три типа RPC:
Обратный вызов RPC
Трансляция RPC
Пакетный режим RPC

Слайд #5
Обратный вызов RPC
Этот тип RPC обеспечивает парадигму P2P между участвующими процессами. Это помогает процессу быть одновременно клиентской и серверной службой.
Функции обратного вызова RPC:
Проблемы с удаленно обрабатываемыми интерактивными приложениями
Предлагает сервер с дескриптором клиентов
Обратный вызов заставляет клиентский процесс ждать
Управление обратным вызовом adlocks
Это облегчает использование одноранговой парадигмы между участвующими процессами.

Слайд #6
Трансляция RPC
Широковещательный RPC — это запрос клиента, который транслируется в сети и обрабатывается всеми серверами, у которых есть метод для обработки этого запроса.
Функции Broadcast RPC:
Позволяет указать, что сообщение запроса клиента должно транслироваться.
Вы можете объявить широковещательные порты.
Это помогает снизить нагрузку на физическую сеть.

Слайд #7
Пакетный режим RPC
Пакетный режим RPC помогает ставить в очередь отдельные запросы RPC в transmission буфер на стороне клиента, а затем отправить их по сети одним пакетом на сервер.
Функции пакетного режима RPC:
Он сводит к минимуму накладные расходы, связанные с отправкой запроса, поскольку он отправляет их по сети одним пакетом на сервер.
Этот тип протокола RPC эффективен только для приложений, которым требуется более низкая скорость вызовов.
Ему нужен надежный transmission протокол.

Слайд #8
RPC-архитектура
Архитектура RPC состоит в основном из пяти компонентов программы:
"Клиент"
Клиентская заглушка
Среда выполнения RPC
Серверная заглушка
Сервер

Слайд #9

Слайд #10
Как работает RPC?
В процессе RPC происходят следующие шаги:
Шаг 1) Клиент, заглушка клиента и один экземпляр среды выполнения RPC выполняются на клиентском компьютере.
Шаг 2) Клиент запускает процесс-заглушку клиента, передавая параметры обычным способом. Заглушка клиента хранится в собственном адресном пространстве клиента. Он также просит локальную среду выполнения RPC отправить обратно на заглушку сервера.
Шаг 3) На этом этапе пользователь получает доступ к RPC, выполняя обычную локальную процедурную калибровку. RPC Runtime управляет transmission сообщений между сетью через клиент и сервер. Он также выполняет функцию повторногоtransmission, подтверждение, маршрутизация и шифрование.

Слайд #11
Как работает RPC?
Шаг 4) После завершения серверной процедуры он возвращается к серверной заглушке, которая упаковывает (упорядочивает) возвращаемые значения в сообщение. Затем заглушка сервера отправляет сообщение обратно на транспортный уровень.
Шаг 5) На этом этапе транспортный уровень отправляет сообщение о результате на транспортный уровень клиента, который возвращает сообщение в заглушку клиента.
Шаг 6) На этом этапе клиентская заглушка демаршалирует (распаковывает) возвращаемые параметры в результирующем пакете, и процесс выполнения возвращается вызывающей стороне.

Слайд #12
Характеристики РПК
Вот основные характеристики RPC:
Вызванная процедура находится в другом процессе, который, скорее всего, находится на другой машине.
Процессы не разделяют адресное пространство.
Параметры передаются только по значениям.
RPC выполняется в среде серверного процесса.
Он не обеспечивает доступ к среде вызывающей процедуры.

Слайд #13
Особенности РПК
Вот важные особенности RPC:
Простой синтаксис вызова
Предлагает известную семантику
Обеспечьте четко определенный интерфейс
Он может взаимодействовать между процессами на одной или разных машинах.

Слайд #14
Преимущества РПК
Вот плюсы/преимущества RPC:
Метод RPC помогает клиентам взаимодействовать с серверами посредством обычного использования вызовов процедур на языках высокого уровня.
Метод RPC моделируется на основе вызова локальной процедуры, но вызываемая процедура, скорее всего, будет выполняться в другом процессе и обычно на другом компьютере.
RPC поддерживает модели, ориентированные на процессы и потоки.
RPC скрывает от пользователя внутренний механизм передачи сообщений.
Усилия, необходимые для переписывания и повторной разработки кода, минимальны.
Удаленные вызовы процедур могут использоваться как в распределенной, так и в локальной среде.

Слайд #15
Преимущества РПК
Он использует многие уровни протокола для повышения производительности.
RPC обеспечивает абстракцию. Например, природа передачи сообщений в сети остается скрытой от пользователя.
RPC позволяет использовать приложения в распределенной среде, а не только в локальной среде.
При использовании кода RPC усилия по переписыванию и разработке сводятся к минимуму.
Поддержка процессно-ориентированных и потоко-ориентированных моделей с помощью RPC.

Слайд #16
Недостатки RPC
Вот минусы/недостатки использования RPC:
Удаленный вызов процедуры передает параметры только по значениям и значениям указателей, что недопустимо.
Время вызова (и возврата) удаленной процедуры (т. е. накладные расходы) может быть значительно меньше, чем для локальной процедуры.
Этот механизм очень уязвим к сбоям, поскольку он включает в себя систему связи, другую машину и другой процесс.
Концепция RPC может быть реализована разными способами, что не является стандартом.
Не предлагает никакой гибкости в RPC для аппаратной архитектуры, поскольку он в основном основан на взаимодействии.
Стоимость процесса увеличивается из-за удаленного вызова процедуры.

Слайд #17
Протоколы в RPC
Разобравшись как работает RPC, подробнее изучим протоколы, которые активно эксплуатируются в интерфейсах RPC и, следовательно, доступны атакующему. И первым мы рассмотрим протокол Named Pipes (NPs).

Слайд #18
Named Pipes
Данный протокол следует принципам передачи данных через чтение и запись: используя NPs можно записывать, а также сразу читать наименование и аргументы функций. Более того, это даже можно делать одновременно. NPs проще всего представлять в виде файлов: в Windows взаимодействие с ними происходит с помощью функций CreateFile, ReadFile, WriteFile, что в некоторой степени намекает нам на схожесть этих технологий. NPs выполняет роль интеграционного слоя между RPC и другими служебными компонентами.

Слайд #19
SMB
Если отойти немного от протокола RPC и посмотреть на NPs отдельно, мы обнаружим, что NPs может вполне заменить RPC, так как первый исполняет функции удаленно даже без второго. Для этих целей он использует протокол SMB (Server Message Block). При этом фактически SMB нужен только для доступа к служебной директории IPC$ , аббревиатура которой расшифровывается как Interprocess Communication. Через эту «папку» можно читать, записывать, но только NPs, что вполне в духе SMB, и вызывать таким образом удаленные функции.

Слайд #20
LRPC
До этого мы говорили про протоколы, которые используются в удаленным вызове, но есть и локальный вариант RPC — протокол LRPC, у которого существует две трактовки: Local RPC или Lightweight RPC. Этот протокол предназначен только для локальных вызовов.

Слайд #21
LPC
LPC (Local Procedure Call) — также отвечает за механизм общения процессов в одной и той же системе. Данный протокол является недокументированным и используется (использовался) только внутри самой Microsoft. БОльшую часть информации об этом протоколе мы можем узнать исходя из работ реверс специалистов. Сторонний софт использует его не напрямую, а взаимодействует через документированный LRPC.

Слайд #22
ALPC
LPC — это все же устаревшая технология и в явном виде уже не используется. На смену ей пришел ALPC (Advanced Local Procedure Call), являющийся асинхронным и также недокументированным протоколом. Работает он по принципу клиент‑серверной модели. В качестве сервера выступает процесс, принимающий соединения на определённый порт.

Слайд #23
DCOM
DCOM не вызывает функции напрямую, а сначала инициализирует COM‑объект, функционал которого будет использовать. Концептуально это похоже на NPs с их разделением функционала на отдельные именованные каналы. Если рассматривать алгоритм общения клиента и сервера, то здесь не так много отличий от «чистого» RPC, но есть два исключения — вызов функций ISystemActivator и IDispatch.

Слайд #24
Схема вариантов RPC-подключений
Подведем итог вышесказаного в виде схемы вариантов подключения к удалённой машине, отражающей возможные пути со стороны клиента, которые в том числе доступны и для атакующего.

Слайд #25

Слайд #26
Способы мониторинга
Разобравшись с вариантами RPC‑подключений, и, как следствие, с потенциально возможными действиями со стороны атакующего, рассмотрим, варианты мониторинга, которые нам может предоставить сама операционная система: ETW, журналы безопасности, SACL, RPC Filtering, RPC Firewall и сетевой трафик.

Слайд #27
Event Tracing for Windows
Event Tracing for Windows или сокращено ETW имеет множество, так называемых, провайдеров, которых в ОС более нескольких тысяч. Они позволяют отслеживать через события как отдельные технологии, так и конкретные процессы. Часть провайдеров формируют вполне понятные для обыденного пользователя события, другая же, бОльшая часть, используется исключительно только самой Microsoft для отладки.

Слайд #28
Event Tracing for Windows
ETW предоставляет возможность смотреть события вызовов RPC функций через стандартную оснастку Event Viewer. ETW провайдеры, связанные с RPC, представлены в таблице .

Слайд #29
Event Tracing for Windows
Как ранее говорилось, мы можем увидеть события в оснастке Event Viewer. Для этого нам необходимо включить отображение события отладки (View Show → Analytic and Debug Log ), после чего появятся доступные к просмотру журналы событий, в том числе и RPC.

Слайд #30
Разбор событий
Теперь проведем разбор события на одном из примеров

Слайд #31
Разбор событий
Теперь проведем разбор события на одном из примеров

Слайд #32
Разбор событий
В данном событии мы видим информацию об RPC запросе к именованному каналу \pipe\lsass по интерфейсу UUID 12 345 778–1234-abcd‑ef00–0 123 456 789ac и с номером процедуры (ProcNum / OpCode) — 34.

Слайд #33
Разбор событий
В данном событии мы видим информацию об RPC запросе к именованному каналу \pipe\lsass по интерфейсу UUID 12 345 778–1234-abcd‑ef00–0 123 456 789ac и с номером процедуры (ProcNum / OpCode) — 34.
Переведем это событие с «машинного» языка: здесь мы фиксируем обращение к интерфейсу SAMR (Security Account Manager Remote). Атрибут Endpoint имеет значение \pipe\lsass потому что SAMR интерфейс содержит в поле Named Pipe значение \pipe\lsass и конечное подключение производится к нему. Также виден протокол номер 2, что трактуется как NPs.

Слайд #34
Разбор событий

Слайд #35
Шифрование
Шифрование может добавить проблем при мониторинге трафика в сети, так как расшифровывать его сложно, да и никто не любит это делать.
Трафик можно разделить на 2 вида:
на инкапсулированный в TCP/ UDP/ HTTP и не предполагающий никакого шифрования кроме того, что реализовано в самом RPC протоколе;
на использование NPs через SMB протокол.

Слайд #36
Итоги
Удаленный вызов процедуры – это межпроцессного взаимодействия техника.
Три типа RPC: 1) RPC обратного вызова, 2) широковещательный RPC и 3) RPC в пакетном режиме.
Архитектура RPC состоит в основном из пяти компонентов программы: 1) Клиент 2) Клиентская заглушка 3) Среда выполнения RPC 4) Серверная заглушка и 5) Сервер
В методе RPC процессы не разделяют адресное пространство.
RPC предлагает простой синтаксис вызовов и известную семантику.
Метод RPC помогает клиентам взаимодействовать с серверами посредством обычного использования вызовов процедур на языках высокого уровня.
Самый большой недостаток метода RPC заключается в том, что он очень уязвим к сбоям, поскольку задействует систему связи, другую машину и другой процесс.
