Обзор компонентов Windows 2000
Использование протокола SMB во время загрузки и входа в систему
Протокол SMB используется клиентом ОС Windows 2000 во время загрузки и входа в систему для загрузки объектов групповой политики, соответствующих этой рабочей станции или пользователю. Основной SMB-операцией, которая будет рассмотрена для процессов запуска и входа в систему, будет согласование SMB-диалекта. Этот процесс представляет собой обмен данными между клиентом и сервером с целью определения того, какой из SMB-диалектов они будут использовать. Протокол SMB также используется при создании ссылок DFS на общие ресурсы, к которым предоставляется доступ. Основной составляющей SMB-трафика, генерируемого во время процесса загрузки и входа в систему, будут объекты групповой политики, загружаемые клиентом.
Для получения дополнительной информации обратитесь к Техническому руководству: Протоколы стека TCP/IP и службы Windows 2000 (Windows 2000 TCP/IP Protocols and Services Technical Reference) (EN).
Удаленный вызов процедур MSRPC
В качестве самого простого примера того, что такое RPC, можно привести ситуацию, когда один компьютер запрашивает другой компьютер о возможности использования его вычислительной мощности. Протокол RPC позволяет одному процессу запрашивать другой процесс, запущенный на другом компьютере в сети, о возможности им выполнения инструкций первого процесса.
В процессе RPC задействованы:
- Клиентское приложение. Подает запрос на удаленное выполнение.
- Клиентский суррогат (Client stub). Преобразует вызовы в/из стандартного формата NDR.
- Client RPC Runtime Library. Преобразует NDR в сетевые сообщения.
Транспортный протокол управляет соединениями в сети.
- Server RPC Runtime Library. Преобразует NDR в сетевое сообщение.
- Серверный суррогат (Server stub). Преобразует вызовы в/из стандартного формата NDR.
- Серверное приложение. Выполняет требуемые инструкции.
RPC однозначно определяются по номеру интерфейса (UUID), номеру операции (opnum) и номеру версии. Номер интерфейса определяет группу связанных удаленных процедур. Примером интерфейса может выступить служба сетевого входа, у которой UUID имеет значение 12345678-1234-ABCD-EF00-01234567CFFB.
Пример вызова RPC:
MSRPC: c/o RPC Bind: UUID 12345678-1234-ABCD-EF00-01234567CFFB call 0x1 assoc grp 0x0 xmit 0x16D0 recv 0x16D0 MSRPC: Version = 5 (0x5) MSRPC: Version (Minor) = 0 (0x0) MSRPC: Packet Type = Bind + MSRPC: Flags 1 = 3 (0x3) MSRPC: Packed Data Representation MSRPC: Fragment Length = 72 (0x48) MSRPC: Authentication Length = 0 (0x0) MSRPC: Call Identifier = 1 (0x1) MSRPC: Max Trans Frag Size = 5840 (0x16D0) MSRPC: Max Recv Frag Size = 5840 (0x16D0) MSRPC: Assoc Group Identifier = 0 (0x0) + MSRPC: Presentation Context List
RPC не зависит от низкоуровневых транспортных протоколов. Microsoft RPC (MSRPC) может использовать несколько различных транспортных протоколов, таких как TCP/IP, IPX/SPX или NetBEUI.
Большинство интерфейсов RPC используют динамические порты для связи в сети. В этом случае возникает необходимость использовать особый интерфейс, называемый сопоставителем конечных точек (End Point Mapper). Этот интерфейс всегда прослушивает порт 135 для TCP/IP-соединений и имеет номер UUID E1AF8308-5D1F-11C9-91A4-08002B14A0FA.
Прежде чем клиент сможет вызвать процедуры, он должен осуществить привязку к интерфейсу. В том случае, если удалось установить привязку, он может выслать запрос к сопоставителю конечных точек (End Point Mapper), в котором будет указан UUID необходимого интерфейса. Сопоставитель конечных точек возвращает номер порта, который клиент может использовать для соединения.
В следующей таблице указана последовательность пакетов, которыми обмениваются стороны, участвующие в этом процессе:
Пакет | Источник | Получатель | Протокол | Описание |
---|---|---|---|---|
1 | Клиент | Сервер | MSRPC | c/o RPC-привязка: UUID E1AF8308- 5D1F-11C9-91A4-08002B14A0FA l |
2 | Сервер | Клиент | MSRPC | c/o RPC-привязка Ack: call 0x1 assoc grp 0xC85D xmit 0x16D0 recv |
3 | Клиент | Сервер | MSRPC | c/o RPC-запрос: call 0x1 opnum 0x3 context 0x0 hint 0x84 |
4 | Сервер | Клиент | MSRPC | c/o RPC-ответ: call 0x1 context 0x0 hint 0x80 cancels 0x0 |
Также можно инкапсулировать пакеты MSRPC в SMB. В данном случае клиент и сервер для обмена данными используют дескриптор ранее открытого файла.
Процессы загрузки и входа в систему Windows 2000 используют интерфейсы сетевого входа в систему (Netlogon) и службы репликации каталога (Directory Replication Service, DRS). Интерфейс Netlogon используется в домене для установления защищенного канала между клиентом и контроллером домена. Служба DRS в первую очередь используется для связи контроллеров домена с серверами глобального каталога. Тем не менее, она также предоставляет интерфейс, который используется во время процесса входа в систему. Служба DRS обеспечивает преобразование имен к формату, который может использоваться в протоколе LDAP.
Для получения дополнительной информации обратитесь к следующим материалам:
- Раздел "Сетевой трафик, генерируемый клиентом в Active Directory" книги Организация служб предприятия Active Directory: заметки на полях ("Active Directory Client Network Traffic," Notes from the Field BuildingEnterprise Active Directory Services) (EN)
- Статья 159298 раздела TechNet: Анализ RPC-трафика TCP/IP ("Analyzing Exchange RPC Traffic Over TCP/IP [159298]" on TechNet) (EN)