Windows протоколы

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Статья расскажет о протоколах в операционной системе Windows и способах взаимодействия с ними. Пройдемся по списку протоколов, опишем их основные задачи и попробуем повзаимодействовать с одним из них при помощи языка программирования Python.

Обзор протоколов

Операционная система Windows является одной из самых популярных. Базовые версии этой операционной системы могут быть использованы и как клиентская операционная система и как серверная. В документации указано, что эта операционная система умеет работать с большим количеством протоколов, львиная доля создана для неё и используются только для нужд ОС или программного беспечения внутри.

Все функции Windows как и протоколы принято делить на подсистемы. Тоесть если в системе есть подсистема .Net это означает, что обязательно для нее найдутся протоколы, которые используются для передачи данных. Они будут иметь свой формат и спецификацию.

Все протоколы, которые поддерживаются Windows и были адаптированы или созданы для ОС, находятся здесь. Документация включает в себя всё, что доступно для изучения, включая, кстати документацию на документацию. Все протоколы в Windows делятся на 4 больших группы:

  • Application server protocols

  • Core services protocols

  • Internet Information Services(IIS) protocols

  • .NET Framework Protocols

Каждая группа может включать в себя большое количество протоколов. Такое разбиение предполагает, что все протоколы группы будут заняты одной подсистемой или системами, которые должны работать как единое целое. Опишем определение каждой из групп.

Application Server Protocols

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

Эти протоколы включают в себя следующие подгруппы:

  • COM, COM+, DCOM — протоколы, которые позволяют работать с приложениями, которые оперируют объектами.

  • Протоколы транзакиций, используются для передачи данных между различными операционными системами

  • MSQM - протоколы очередей, используются для мастабирования приложений

Протоколы этой категории могут быть самыми используемыми и интересными, так как их применение довольно широко в приложениях, которые используются в корпоративном сегменте. Такие наборы сервисов как Active Directory очень сильно зависят от этой группы протоколов.

Core Services Protocols

Протоколы этой группы используются для подсистем, которые чаще всего могут использоваться в серверных версиях операционной системы Windows. Среди них:

  • IManagedObject Interface Protocol — по сути это обертка для .Net платформы, позволяет безопасно взаимодействовать с объектами COM

  • OLE Automation Protocol — протокол, который позволяет приложениям создавать расшариваемые объекты. Эти объекты могут интегрироваться из одного приложения в другое и при этом предоставлять алгоритмы обработки.

  • Remote Data Services Transport Protocol — протокол для распределения нагрузки, используется для обратной совместимости со старыми версиями операционной системы. Работает поверх HTTP. Сейчас функционально может быть заменен через DCOM и SOAP.

  • Session Multiplex Protocol — протокол, который может быть использован для создания каналов для передачи данных с поддержкой сессии в рамках одного соединения. Может быть использован поверх любого протокола.

SQL Server Resolution Protocol — протокол, который позволяет клиентам работать с базами данных. Используется для поиска баз данных, поддерживает мультикастовые и бродкастовые запросы.

По сути протоколы просто являются дополнительной прослойкой для тех же ASP протоколов предыдущей секции.

Internet Information Services(IIS) protocols

Набор протоколов, которые возможны из коробки в IIS, либо которые можно установить за счет специальных расширений. Список протоколов следующий:

  • Internet Information services (IIS): Application Host COM Protocol — протокол для администрирования сервера

  • Internet Information Services (IIS): IMSAdminBaseW Remote Protocol — протокол для конфигурации сервера. Все настройки хранит в специальном мета древе.

  • Internet Information Services (IIS): Inetinfo Remote Protocol — протокол для управления HTTP и FTP серверами.

  • Internet Information Services (IIS): ServiceControl Protocol — протокол для управления сервером как отдельной единицей. Можно его удаленно перезапускать, управлять функционалом операционной системы.

.NET Framework Protocols

Огромный пласт протоколов, который был создан лдя того чтобы софт, который был написан с использованием .Net, мог взаимодейтвовать с любым ПО по сети. Вот несколько протоколов из этой подгруппы:

  • .NET Packet Routing Protocol — дает возможность преобразовывать заголовок SOAP как датаграмму или пакет

  • .NET Binary Format: XML Data Structure — имплементация структуры передаваемого XML формата

  • .NET Context Exchange Protocol — как видно из названия этим протоколом можно передавать контекст между сервером и клиентом

  • NET Message Framing TCP Binding Protocol — протокол, который позволяет работать с SOAP через TCP

Как видно из перечисленных групп и подгрупп протоколов, протоколы для операционной системы Windows являются абстракциями для передачи данных между системами и внутри самой операционоой системы. Возьмем для изучения первую группу протоколов, а именно ASP. Из этой группы сконцентрируемся на подгруппе COM,COM+,DCOM.

Пример взаимодействия

Протоколы COM,COM+,DCOM группы развивались как протоколы, дающие возможность программистам и пользователям создавать функции и даже целые приложения, в которые можно интегрировать в своих приложениях даже не имея их исходного кода и совсем не важно на каком языке программирования написаны приложения. Для того чтобы это было возможно, протоколы используют абстракции:

  • Предоставляют стандартный интерфейс для обращения

  • Все объекты, которые становятся доступны через протоколы, занесены в общий реестр

  • Каждый объект реестра идентифицируется с помощью уникального UUID.

В качестве практики попробуем реализовать взаимодействие с объектами DCOM через протокол MS-RPCE. Для скорости разработки прототипа будем использовать язык программирования Python и библиотеку impacket. В качестве целевой системы для взаимодействия будем использовать Windows 10.

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

Согласно документации MS-RPCE может работать в 2х вариантах:

  1. Connection oriented RPC

  2. Connectionless RPC

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

  • ncacn_np — транспорт SMB

  • ncacn_ip_tcp — транспорт IPv4, IPv6

  • ncadg_ip_udp — транспорт UDP

  • ncacn_spx — транспорт SPX

  • ncadg_ipx — транспорт IPX

  • ncacn_nb_ipx — транспорт NetBIOS over IPX

  • ncacn_nb_tcp — транспорт NetBIOS over TCP

  • ncacn_nb_nb — транспорт NetBIOS over NetBEUI

  • ncacn_at_dsp — транспорт AppleTalk

  • ncacn_http — транспорт RPC over HTTP

В нашем примере взаимодействия будут строиться на основании модели TCP/IP, поэтому в качестве транспорта будем использовать ncacn_ip_tcp.

Для того чтобы выполнить операцию с помощью MS-RPCE нужно понять как работает процедура настройки соединения и выполнения различных операций. Алгоритм простого заимодействия следующий:

  1. Инициализировать строку для транспорта

  2. Установить вариант авторизации — требуется для большинства объектов протокола, так как большая часть операций может быть использована злоумышленниками

  3. Для проведения процедуры идентификации и аутентификации используется обертка DCE, поэтому придется создать объект для взаимодействия с этим протоколом. Именно он будет автоматически настраивать соединение. Нам только останется активировать объект из ОС или воспользоваться стандартными классами для проверки соединения или отправить данные для приложений ОС.

from impacket.dcerpc.v5 import transport
from impacket.dcerpc.v5.rpcrt import RPC_C_AUTHN_LEVEL_NONE
from impacket.dcerpc.v5.dcomrt import IObjectExporter


hostIp = "192.168.57.3"
authLevel = RPC_C_AUTHN_LEVEL_NONE

stringBinding = r'ncacn_ip_tcp:%s' % target_ip
rpctransport = transport.DCERPCTransportFactory(stringBinding)

dce = rpctransport.get_dce_rpc()
dce.set_auth_level(authLevel)
dce.connect()

#Только этот механизм не требует аутентификации
objExp = IObjectExporter(dce)
bindings = objExp.ServerAlive2()

for binding in bindings:
    addr = binding['aNetworkAddr']
    print ("Found Address: " + addr)

Результат выполнения команд в интерактивном шелле:

Оценить масштаб проделанной в сети работы можно через WireShark:

Таким образом можно получить данные о всех активных интерфейсах на целевой системе. При этом не нужно предоставлять никаких данных пользователя. Если требуется выяснить намного больше информации, можно заглянуть в директорию examples, среди скриптов есть rpcmap, rpcinfо, которые могут рассказать об открытых интерфейсах, которые доступны по протоколу MS-RPCE.


Статья подготовлена Александром Колесниковым в рамках курса «Network Engineer».

Всех желающих приглашаем на бесплатное demo-занятие «Редистрибуция — костыль или энтерпрайз решение». На занятии:
1. Рассмотрим переход префиксов из одного протокола динамической маршрутизации в другой на примере OSPF и BGP.
2. Обсудим редистрибуцию статических маршрутов и моменты, когда без этого никак. Или все-таки есть способы не использовать костыли?
Если интересно, записывайтесь.

Источник: https://habr.com/ru/company/otus/blog/647537/


Интересные статьи

Интересные статьи

Выгрузка пользователей из 1C ЗУП в Битрикс24 или правдивая история о том как настроить интеграцию 1С-Битрикс24 с ЗУП без 1С-ника В жизни так бывает, причём бывает чаще чем хотелось б...
Всем привет! Не так давно на работе в рамках тестирования нового бизнес-процесса мне понадобилась возможность авторизации под разными пользователями. Переход в соответствующий р...
Большинство организаций используют System Center Configuration Manager для автоматизации процессов системного администрирования. Одна незадача: базовая функциональность SCCM ограничена для ma...
Приветствую вас (лично вас, а не всех кто это читает)! Сегодня мы: Создадим приложение (навык) Алисы с использованием нового (октябрь 2019) сервиса Yandex Cloud Functions. Настроим н...
Не так давно на Хабре публиковалась новость о раскрытии кода Калькулятора Windows, одной из наиболее известных программ в мире. Исходный код этого ПО выложен на GitHub. Тогда же говорилось...