В этой статье представлено несколько примеров сетевой трассировки, которая фиксирует различные рукопожатия и последовательности проверки подлинности во время установки TCP-соединения между клиентским приложением и СУБД SQL Server (сервером).
В этой статье также описываются подключения с несколькими активными результирующими наборами (MARS). MARS — это функция SQL Server, представленная в SQL Server 2005 (9.x), которая позволяет выполнять несколько команд в соединении без необходимости очистки результатов из первой команды перед выполнением второй команды. MARS реализуется с помощью мультиплексирования сеансов (SMUX).
В этом процессе описывается обычный процесс входа с помощью проверки подлинности SQL, показывающий каждый шаг беседы между клиентом и сервером с помощью подробного анализа трассировки сети. Пример трассировки сети приводит к следующим шагам:
- Трехстороннее рукопожатие TCP
- Подтверждение водителя
- Установка соединения SSL/TLS
- Обмен пакетами входа
- Подтверждение входа
- Выполнение команды и чтение ответа
- Четырехфазное завершение соединения TCP
Пример трассировки сети
Этот обмен выделяется 1 секунду независимо от Login Timeout
установки в строке подключения.
- IP-адрес клиента
10.10.10.10
- IP-адрес сервера
10.10.10.120
Шаг 1. Трехстороннее рукопожатие TCP
Все TCP-беседы начинаются с пакета SYN
(установлен флаг S
), отправленного от клиента к серверу. В Frame 6127
клиент использует временный порт (динамически назначенный операционной системой) и подключается к порту сервера в данном случае 1433
. Сервер отвечает пакетом SYN
, в котором также установлен флаг ACK
. Наконец, клиент отвечает пакетом ACK
, чтобы сообщить серверу, что он получил свой SYN
пакет.
На этом шаге устанавливается базовое TCP-подключение, так же как это сделала бы команда telnet
. Операционная система медиатирует эту часть беседы. На этом этапе клиент и сервер ничего не знают друг о другом.
Frame Time Offset Source IP Dest IP Description
----- ----------- ------------ ------------ ---------------------------------------------------------------------------------------------------
6127 116.5776698 10.10.10.10 10.10.10.120 TCP:Flags=......S., SrcPort=60123, DstPort=1433, PayloadLen=0, Seq=4050702293, Ack=0, Win=8192 ( Ne
6128 116.5776698 10.10.10.120 10.10.10.10 TCP:Flags=...A..S., SrcPort=1433, DstPort=60123, PayloadLen=0, Seq=4095166896, Ack=4050702294, Win=
6129 116.5786458 10.10.10.10 10.10.10.120 TCP:Flags=...A...., SrcPort=60123, DstPort=1433, PayloadLen=0, Seq=4050702294, Ack=4095166897, Win=
На этом этапе [Bad CheckSum]
предупреждения безвредны и указывают на то, что включена разгрузка контрольной суммы. То есть они добавляются на более низком уровне в сетевом стеке, чем уровень, на котором берётся трассировка. В отсутствие других сведений это предупреждение указывает, была ли трассировка сети выполнена на клиенте или сервере. В этом случае он отображается в исходном SYN
пакете, поэтому трассировка была сделана на клиенте.
Шаг 2. Рукопожатие драйвера
Как драйвер клиента, так и SQL Server должны знать немного о друге. В этом рукопожатии драйвер отправляет на сервер некоторые сведения и требования. Эти сведения содержат сведения о том, следует ли шифровать пакеты данных, использовать ли несколько активных результирующих наборов (MARS), его номер версии, использовать федеративную проверку подлинности, GUID подключения и т. д.
Сервер отвечает своими сведениями, например, требуется ли проверка подлинности. Эта последовательность происходит перед выполнением любого рода согласования безопасности.
Frame Time Offset Source IP Dest IP Description
----- ----------- ------------ ------------ ---------------------------------------------------------------------------------------------------
6130 116.5786458 10.10.10.10 10.10.10.120 TDS:Prelogin, Version = 7.1 (0x71000001), SPID = 0, PacketID = 0, Flags=...AP..., SrcPort=60123, Ds
6131 116.5805998 10.10.10.120 10.10.10.10 TDS:Response, Version = 7.1 (0x71000001), SPID = 0, PacketID = 1, Flags=...AP..., SrcPort=1433, Dst
Шаг 3. Процесс рукопожатия SSL/TLS
Рукопожатие SSL/TLS начинается с пакета Client Hello, за которым следует пакет Server Hello, а также некоторые дополнительные пакеты, связанные с безопасным каналом. Этот шаг заключается в том, что ключ безопасности согласовывается для шифрования пакетов. Как правило, только пакет входа шифруется, но клиент или сервер могут требовать шифрования пакетов данных. Выбор версии TLS происходит на этом этапе входа. Клиент или сервер могут закрыть подключение на этом этапе, если версии TLS не совпадают или у них нет совместимых наборов шифров.
Frame Time Offset Source IP Dest IP Description
----- ----------- ------------ ------------ ---------------------------------------------------------------------------------------------------
6132 116.5835288 10.10.10.10 10.10.10.120 TLS:TLS Rec Layer-1 HandShake: Client Hello. {TLS:328, SSLVersionSelector:327, TDS:326, TCP:325, IP
6133 116.5845058 10.10.10.120 10.10.10.10 TLS:TLS Rec Layer-1 HandShake: Server Hello. Certificate. Server Hello Done. {TLS:328, SSLVersionSe
6134 116.5864588 10.10.10.10 10.10.10.120 TLS:TLS Rec Layer-1 HandShake: Client Key Exchange.; TLS Rec Layer-2 Cipher Change Spec; TLS Rec La
6135 116.5923178 10.10.10.120 10.10.10.10 TLS:TLS Rec Layer-1 Cipher Change Spec; TLS Rec Layer-2 HandShake: Encrypted Handshake Message. {TL
Шаг 4. Пакет входа
Этот пакет зашифрован и может отображаться как SSL Application Data
или TDS:Data
в зависимости от сетевого синтаксического анализа. Если все пакеты после этого шага также отображаются как SSL Application Data
, подключение шифруется.
Frame Time Offset Source IP Dest IP Description
----- ----------- ------------ ------------ ---------------------------------------------------------------------------------------------------
6136 116.5932948 10.10.10.10 10.10.10.120 TLS:TLS Rec Layer-1 SSL Application Data {TLS:328, SSLVersionSelector:327, TDS:326, TCP:325, IPv4:3
Шаг 5. Подтверждение входа
В противном случае отображается пакет ответа, который подтверждает имя входа (имеет маркер входа ACK
) или возвращает Login Failed
сообщение об ошибке клиенту.
Пример данных в шестнадцатеричном формате, которые могут отображаться в пакете при успешном входе.
.C.h.a.n.g.e.d. .d.a.t.a.b.a.s.e. .c.o.n.t.e.x.t. .t.o. .'.A.d.v.e.n.t.u.r.e.W.o.r.ks'
Frame Time Offset Source IP Dest IP Description
----- ----------- ------------ ------------ ---------------------------------------------------------------------------------------------------
6137 116.5962248 10.10.10.120 10.10.10.10 TDS:Response, Version = 7.1 (0x71000001), SPID = 96, PacketID = 1, Flags=...AP..., SrcPort=1433, Ds
Шаг 6. Выполнение команды и чтение ответа
Команды отправляются либо как пакет TDS:SQLBatch
, либо как пакет TDS:RPCRequest
. Первый выполняет обычные инструкции Transact-SQL, а последний выполняет хранимые процедуры. Вы можете увидеть пакеты продолжения TCP, если команда длинная, или в ответном пакете, если возвращается больше чем несколько строк.
Frame Time Offset Source IP Dest IP Description
----- ----------- ------------ ------------ ---------------------------------------------------------------------------------------------------
6138 116.5991538 10.10.10.10 10.10.10.120 TDS:SQLBatch, Version = 7.1 (0x71000001), SPID = 0, PacketID = 1, Flags=...AP..., SrcPort=60123, Ds
6139 116.5991538 10.10.10.120 10.10.10.10 TDS:Response, Version = 7.1 (0x71000001), SPID = 96, PacketID = 1, Flags=...AP..., SrcPort=1433, Ds
6266 116.8032558 10.10.10.10 10.10.10.120 TCP:Flags=...A...., SrcPort=60123, DstPort=1433, PayloadLen=0, Seq=4050702956, Ack=4095168204, Win=
Шаг 7. Четырехстороннее закрытие соединения TCP
Драйверы Microsoft используют четырехстороннее рукопожатие для закрытия подключений. Многие сторонние драйверы просто сбрасывают подключение, чтобы закрыть его, что затрудняет различие между нормальным и неисправным закрытием.
Четырехстороннее подтверждение состоит в том, что клиент отправляет пакет FIN
на сервер, на который сервер отвечает сообщением ACK
. Затем сервер отправляет свой собственный FIN
пакет, который клиент признает (ACK
).
Если сервер сначала отправляет пакет FIN
, это ненормальное закрытие; чаще всего это происходит при рукопожатии SSL/TLS, если клиент и сервер не могут согласовать безопасный канал.
Frame Time Offset Source IP Dest IP Description
----- ----------- ------------ ------------ ---------------------------------------------------------------------------------------------------
6362 116.9097008 10.10.10.10 10.10.10.120 TCP:Flags=...A...F, SrcPort=60123, DstPort=1433, PayloadLen=0, Seq=4050702956, Ack=4095168204, Win=
6363 116.9097008 10.10.10.120 10.10.10.10 TCP:Flags=...A...., SrcPort=1433, DstPort=60123, PayloadLen=0, Seq=4095168204, Ack=4050702957, Win=
6364 116.9097008 10.10.10.120 10.10.10.10 TCP:Flags=...A...F, SrcPort=1433, DstPort=60123, PayloadLen=0, Seq=4095168204, Ack=4050702957, Win=
6366 116.9106778 10.10.10.10 10.10.10.120 TCP:Flags=...A...., SrcPort=60123, DstPort=1433, PayloadLen=0, Seq=4050702957, Ack=4095168205, Win=
В этом процессе описывается процесс проверки подлинности, в частности сравнение последовательности проверки подлинности SQL с добавлением пакета SSPI. Пример трассировки сети приводит к следующим шагам:
- Трехстороннее рукопожатие TCP
- Подтверждение водителя
- Подтверждение SSL/TLS
- Обмен пакетами авторизации
- Передача пакетов SSPI
- Подтверждение входа
- Четырехсторонняя закрывающая рукопожатие TCP
Пример трассировки сети
Эта последовательность входа выглядит аналогично последовательности проверки подлинности SQL. Добавление пакета SSPI — это значительное изменение, но трудно сказать, если вы не раскроете его свойства. Иногда вы можете увидеть больше одного пакета SSPI.
Затем клиент отвечает учетными данными, которые сервер подтверждает с помощью контроллера домена на своей стороне.
Этому обмену выделяется 1 секунда независимо от параметра Login Timeout
в строке подключения.
- IP-адрес клиента
10.10.10.10
- IP-адрес сервера
10.10.10.20
Шаг 1. Трехстороннее рукопожатие TCP
На этом этапе устанавливается соединение между клиентом и сервером через TCP. Он включает в себя SYN
и SYN-ACK
ACK
пакеты для синхронизации порядковых номеров и установления связи.
Frame Time Offset Source IP Dest IP Description
----- ----------- ----------- ----------- ---------------------------------------------------------------------------------------------------
216 16.9554967 10.10.10.10 10.10.10.20 TCP:Flags=......S., SrcPort=49299, DstPort=1433, PayloadLen=0, Seq=2243174743, Ack=0, Win=64240 ( N
217 16.9561482 10.10.10.20 10.10.10.10 TCP:Flags=...A..S., SrcPort=1433, DstPort=49299, PayloadLen=0, Seq=329197620, Ack=2243174744, Win=8
218 16.9562004 10.10.10.10 10.10.10.20 TCP:Flags=...A...., SrcPort=49299, DstPort=1433, PayloadLen=0, Seq=2243174744, Ack=329197621, Win=8
На этом шаге [Bad CheckSum]
предупреждения являются доброкачественными и указывают на то, что разгрузка контрольной суммы включена. То есть они добавляются на более низком уровне в сетевом стеке, чем трассировка. В отсутствие других сведений это предупреждение указывает, была ли трассировка сети выполнена на клиенте или сервере. В этом случае он отображается в исходном SYN
пакете, поэтому трассировка была сделана на клиенте.
Шаг 2. Подтверждение водителя
Этот шаг включает обмен пакетами TDS (Табличный поток данных) между клиентом и сервером для установления параметров для обмена данными.
Frame Time Offset Source IP Dest IP Description
----- ----------- ----------- ----------- ---------------------------------------------------------------------------------------------------
219 16.9567950 10.10.10.10 10.10.10.20 TDS:Prelogin, Version = 7.4 (0x74000004), SPID = 0, PacketID = 1, Flags=...AP..., SrcPort=49299, Ds
220 17.0035332 10.10.10.20 10.10.10.10 TDS:Response, Version = 7.4 (0x74000004), SPID = 0, PacketID = 1, Flags=...AP..., SrcPort=1433, Dst
Шаг 3. Рукопожатие SSL/TLS
Здесь клиент и сервер выполняют безопасное рукопожатие для установления зашифрованного подключения. Этот процесс включает несколько пакетов, включая Client Hello, Server Hello, обмен сертификатами и спецификации изменений шифров.
Frame Time Offset Source IP Dest IP Description
----- ----------- ----------- ----------- ---------------------------------------------------------------------------------------------------
221 17.0041297 10.10.10.10 10.10.10.20 TLS:TLS Rec Layer-1 HandShake: Client Hello. {TLS:37, SSLVersionSelector:36, TDS:35, TCP:34, IPv4:3
222 17.0081618 10.10.10.20 10.10.10.10 TLS:TLS Rec Layer-1 HandShake: Server Hello. Certificate. Server Key Exchange. Server Hello Done. {
223 17.0102991 10.10.10.10 10.10.10.20 TLS:TLS Rec Layer-1 HandShake: Client Key Exchange.; TLS Rec Layer-2 Cipher Change Spec; TLS Rec La
224 17.0120222 10.10.10.20 10.10.10.10 TLS:TLS Rec Layer-1 Cipher Change Spec; TLS Rec Layer-2 HandShake: Encrypted Handshake Message. {TL
Шаг 4. Пакет входа
Клиент отправляет пакет TDS, содержащий сведения о входе на сервер.
Frame Time Offset Source IP Dest IP Description
----- ----------- ----------- ----------- ---------------------------------------------------------------------------------------------------
236 17.0264540 10.10.10.10 10.10.10.20 TDS:Data, Version = 7.4 (0x74000004), Reassembled Packet {TDS:35, TCP:34, IPv4:33}
237 17.0268945 10.10.10.20 10.10.10.10 TCP:Flags=...A...., SrcPort=1433, DstPort=49299, PayloadLen=0, Seq=329198912, Ack=2243178543, Win=8
Шаг 5. Передача пакетов SSPI
Этот пакет содержит маркер поставщика поддержки безопасности (SSPI), указывающий на аутентификацию с помощью Kerberos. Свойства расширяются для отображения данных токена.
В следующих выходных данных показан пакет SSPI с расширенными свойствами пакета.
Frame Time Offset Source IP Dest IP Description
----- ----------- ----------- ----------- ---------------------------------------------------------------------------------------------------
238 17.0280923 10.10.10.20 10.10.10.10 TDS:Response, Version = 7.4 (0x74000004), SPID = 0, PacketID = 0, Flags=...AP..., SrcPort=1433, Dst
Frame: Number = 238, Captured Frame Length = 250, MediaType = ETHERNET
+ Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[00-15-5D-03-F6-03],SourceAddress:[00-15-5D-03-F6-00]
+ Ipv4: Src = 10.10.10.20, Dest = 10.10.10.10, Next Protocol = TCP, Packet ID = 26363, Total IP Length = 236
+ Tcp: Flags=...AP..., SrcPort=1433, DstPort=49299, PayloadLen=196, Seq=329198912 - 329199108, Ack=2243178543, Win=8212 (scale factor 0x8) =
- Tds: Response, Version = 7.4 (0x74000004), SPID = 0, PacketID = 0, Flags=...AP..., SrcPort=1433, DstPort=49299, PayloadLen=196, Seq=3291989
+ PacketHeader: SPID = 0, Size = 196, PacketID = 0, Window = 0
- TDSServerResponseData:
TokenType: SSPI <---- SSPI Token
+ TokenData:
Шаг 6. Подтверждение входа и подтверждение получения
Сервер отвечает с помощью пакета TDS, подтверждающего вход и подтверждение получения данных.
Frame Time Offset Source IP Dest IP Description
----- ----------- ----------- ----------- ---------------------------------------------------------------------------------------------------
239 17.0294294 10.10.10.20 10.10.10.10 TDS:Response, Version = 7.4 (0x74000004), SPID = 57, PacketID = 1, Flags=...AP..., SrcPort=1433, Ds
240 17.0294472 10.10.10.10 10.10.10.20 TCP:Flags=...A...., SrcPort=49299, DstPort=1433, PayloadLen=0, Seq=2243178543, Ack=329199489, Win=8
Шаг 7. Четырехэтапная процедура завершения TCP
Наконец, клиент и сервер закрывают подключение корректно с помощью FIN
и ACK
пакетов.
Frame Time Offset Source IP Dest IP Description
----- ----------- ----------- ----------- ---------------------------------------------------------------------------------------------------
242 18.5494518 10.10.10.10 10.10.10.20 TCP:Flags=...A...F, SrcPort=49299, DstPort=1433, PayloadLen=0, Seq=2243178543, Ack=329199489, Win=8
243 18.5501180 10.10.10.20 10.10.10.10 TCP:Flags=...A...., SrcPort=1433, DstPort=49299, PayloadLen=0, Seq=329199489, Ack=2243178544, Win=8
244 18.5502723 10.10.10.20 10.10.10.10 TCP:Flags=...A...F, SrcPort=1433, DstPort=49299, PayloadLen=0, Seq=329199489, Ack=2243178544, Win=8
245 18.5502896 10.10.10.10 10.10.10.20 TCP:Flags=...A...., SrcPort=49299, DstPort=1433, PayloadLen=0, Seq=2243178544, Ack=329199490, Win=8
Наличие пакета SSPI отличает этот процесс входа от проверки подлинности SQL. Однако для идентификации может потребоваться расширение свойств пакета, особенно при обмене несколькими пакетами SSPI.
В данном процессе описывается аутентификация, в частности, сравнение последовательности аутентификации SQL с добавлением пакетов вызова и ответа NTLM. Пример трассировки сети приводит к следующим шагам:
- Трехстороннее рукопожатие TCP
- Рукопожатие водителя
- Рукопожатие SSL/TLS
- Обмен пакетами авторизации
- Пакеты запросов и ответов NTLM
- Подтверждение входа
- Выполнение команды
Пример трассировки сети
Разница между этой последовательностью входа и последовательностью проверки подлинности SQL заключается в добавлении двух пакетов.
Затем клиент отвечает учетными данными, которые сервер подтверждает у контроллера домена на своей стороне.
Этот обмен выделяется на 1 секунду независимо от Login Timeout
параметра в строке подключения.
- IP-адрес клиента
10.10.10.120
- IP-адрес сервера
10.10.10.55
Шаг 1. Трехстороннее рукопожатие TCP
На этом этапе устанавливается соединение между клиентом и сервером через TCP. Он включает в себя SYN
и SYN-ACK
ACK
пакеты для синхронизации порядковых номеров и установления связи.
Frame Time Offset Source IP Dest IP Description
----- ------------ ------------ ------------ ---------------------------------------------------------------------------------------------------
76078 1181.9915832 10.10.10.120 10.10.10.55 TCP: [Bad CheckSum]Flags=......S., SrcPort=64444, DstPort=57139, PayloadLen=0, Seq=2766542083, Ack=
76079 1181.9922255 10.10.10.55 10.10.10.120 TCP:Flags=...A..S., SrcPort=57139, DstPort=64444, PayloadLen=0, Seq=3862866646, Ack=2766542084, Win
76080 1181.9924272 10.10.10.120 10.10.10.55 TCP: [Bad CheckSum]Flags=...A...., SrcPort=64444, DstPort=57139, PayloadLen=0, Seq=2766542084, Ack=
На этом шаге [Bad CheckSum]
предупреждения неопасны и указывают на включение разгрузки контрольной суммы. То есть они добавляются на более низком уровне в сетевом стеке, чем тот уровень, на котором производится трассировка. В отсутствие других сведений это предупреждение указывает, была ли трассировка сети выполнена на клиенте или сервере. В этом случае он отображается в начальном SYN
пакете, поэтому трассировку выполняли на стороне клиента.
Шаг 2. Установление соединения с водителем
Этот шаг включает обмен пакетами TDS (Табличный поток данных) между клиентом и сервером для установления параметров для обмена данными.
Frame Time Offset Source IP Dest IP Description
----- ------------ ------------ ------------ ---------------------------------------------------------------------------------------------------
76081 1181.9936195 10.10.10.120 10.10.10.55 TDS:Prelogin, Version = 7.3 (0x730a0003), SPID = 0, PacketID = 1, Flags=...AP..., SrcPort=64444, Ds
76082 1181.9945238 10.10.10.55 10.10.10.120 TDS:Response, Version = 7.3 (0x730a0003), SPID = 0, PacketID = 1, Flags=...AP..., SrcPort=57139, Ds
Шаг 3. рукопожатие SSL/TLS
Здесь клиент и сервер выполняют безопасное рукопожатие для установления зашифрованного подключения. Этот процесс включает несколько пакетов, включая Client Hello, Server Hello, обмен сертификатами и спецификации изменений шифров.
Frame Time Offset Source IP Dest IP Description
----- ------------ ------------ ------------ ---------------------------------------------------------------------------------------------------
76083 1181.9953108 10.10.10.120 10.10.10.55 TLS:TLS Rec Layer-1 HandShake: Client Hello. {TLS:3192, SSLVersionSelector:3191, TDS:3190, TCP:3189
76084 1181.9967001 10.10.10.55 10.10.10.120 TLS:TLS Rec Layer-1 HandShake: Server Hello. Certificate. Server Hello Done. {TLS:3192, SSLVersionS
76085 1181.9978947 10.10.10.120 10.10.10.55 TLS:TLS Rec Layer-1 HandShake: Client Key Exchange.; TLS Rec Layer-2 Cipher Change Spec; TLS Rec La
76086 1182.0010146 10.10.10.55 10.10.10.120 TLS:TLS Rec Layer-1 Cipher Change Spec; TLS Rec Layer-2 HandShake: Encrypted Handshake Message. {TL
Шаг 4. Пакет входа
Клиент отправляет пакет TDS, содержащий сведения о входе на сервер.
Frame Time Offset Source IP Dest IP Description
----- ------------ ------------ ------------ ---------------------------------------------------------------------------------------------------
76096 1182.0069763 10.10.10.120 10.10.10.55 TLS:TLS Rec Layer-1 SSL Application Data {TLS:3192, SSLVersionSelector:3191, TDS:3190, TCP:3189, IP
Шаг 5. Пакеты запросов и ответов NTLM
Пакет вызова NTLM отправляется с сервера клиенту, как только клиент отправляет пакет входа.
Frame Time Offset Source IP Dest IP Description
----- ------------ ------------ ------------ ---------------------------------------------------------------------------------------------------
76097 1182.0093903 10.10.10.55 10.10.10.120 NLMP:NTLM CHALLENGE MESSAGE {TDS:3190, TCP:3189, IPv4:3187}
76098 1182.0102507 10.10.10.120 10.10.10.55 NLMP:NTLM AUTHENTICATE MESSAGEVersion:v2, Domain: CONTOSO, User: joe33, Workstation: 10.10.10.120 {
Шаг 6. Подтверждение входа
Сервер отвечает с помощью пакета TDS, подтверждающего вход и подтверждение получения данных.
Frame Time Offset Source IP Dest IP Description
----- ------------ ------------ ------------ ---------------------------------------------------------------------------------------------------
76100 1182.0274716 10.10.10.55 10.10.10.120 TDS:Response, Version = 7.3 (0x730a0003), SPID = 315, PacketID = 1, Flags=...AP..., SrcPort=57139,
Шаг 7. Выполнение команды
Frame Time Offset Source IP Dest IP Description
----- ------------ ------------ ------------ ---------------------------------------------------------------------------------------------------
76102 1182.0324639 10.10.10.120 10.10.10.55 TDS:SQLBatch, Version = 7.3 (0x730a0003), SPID = 0, PacketID = 1, Flags=...AP..., SrcPort=64444, Ds
Подключение может завершиться сбоем из-за истечения времени ожидания, вызванного одной из следующих причин:
- сервер SQL с недостатком потоков
- несколько одновременных запросов входа, в результате чего проверка подлинности ставится в очередь для обработки контроллером домена
- контроллер домена в другом географическом расположении
- медленный или неответственный контроллер домена
В этом разделе описывается, как определить подключение MARS из следующих пакетов:
-
SMP:SYN
запуск нового сеанса
-
SMP:ACK
подтверждает пакеты данных
-
SMP:FIN
завершает сеанс
В следующих примерах трассировки показаны различные пакеты.
- IP-адрес клиента
10.10.10.10
- IP-адрес сервера
10.10.10.22
Открытие нового подключения MARS
В следующем примере выходных данных предполагается, что следующие шаги уже завершены с помощью проверки подлинности NTLM. MARS также можно использовать с аутентификацией Kerberos и SQL.
- Трёхстороннее рукопожатие TCP
- Подтверждение водителя
- Рукопожатие SSL/TLS
- Обмен пакетами для входа
- Пакеты вызова и ответа NTLM
- Подтверждение входа
Frame Time Offset Source IP Dest IP Description
----- ----------- ----------- ----------- ---------------------------------------------------------------------------
6704 568.0608108 10.10.10.10 10.10.10.22 TCP:Flags=CE....S., SrcPort=52965, DstPort=1433, PayloadLen=0, Seq=66183290
6713 568.0608483 10.10.10.22 10.10.10.10 TCP: [Bad CheckSum]Flags=.E.A..S., SrcPort=1433, DstPort=52965, PayloadLen=
6754 568.0613015 10.10.10.10 10.10.10.22 TCP:Flags=...A...., SrcPort=52965, DstPort=1433, PayloadLen=0, Seq=66183290
6777 568.0615479 10.10.10.10 10.10.10.22 TDS:Prelogin, Version = 7.4 (0x74000004), SPID = 0, PacketID = 1, Flags=...
6786 568.0616817 10.10.10.22 10.10.10.10 TDS:Response, Version = 7.4 (0x74000004), SPID = 0, PacketID = 1, Flags=...
6833 568.0622426 10.10.10.10 10.10.10.22 TLS:TLS Rec Layer-1 HandShake: Client Hello. {TLS:165, SSLVersionSelector:1
6873 568.0627953 10.10.10.22 10.10.10.10 TLS:TLS Rec Layer-1 HandShake: Server Hello. Certificate. Server Key Exchan
6900 568.0632639 10.10.10.10 10.10.10.22 TCP:Flags=...A...., SrcPort=52965, DstPort=1433, PayloadLen=0, Seq=66183319
6977 568.0643795 10.10.10.10 10.10.10.22 TLS:TLS Rec Layer-1 HandShake: Client Key Exchange.; TLS Rec Layer-2 Cipher
7045 568.0655160 10.10.10.22 10.10.10.10 TLS:TLS Rec Layer-1 Cipher Change Spec; TLS Rec Layer-2 HandShake: Encrypte
7233 568.0679639 10.10.10.10 10.10.10.22 TDS:Data, Version = 7.4 (0x74000004), Reassembled Packet {TDS:162, TCP:160,
7275 568.0684467 10.10.10.22 10.10.10.10 NLMP:NTLM CHALLENGE MESSAGE {TDS:162, TCP:160, IPv4:1}
7331 568.0692389 10.10.10.10 10.10.10.22 NLMP:NTLM AUTHENTICATE MESSAGE Version:NTLM v2, Domain: CONTOSO, User: joe1
11791 568.1295675 10.10.10.22 10.10.10.10 TCP: [Bad CheckSum]Flags=...A...., SrcPort=1433, DstPort=52965, PayloadLen=
17978 568.2162145 10.10.10.22 10.10.10.10 TDS:Response, Version = 7.4 (0x74000004), SPID = 255, PacketID = 1, Flags=.
Создание нового сеанса MARS
После установки подключения создайте новый сеанс MARS (Sid = 0
).
Frame Time Offset Source IP Dest IP Description
----- ----------- ----------- ----------- ---------------------------------------------------------------------------
18024 568.2170301 10.10.10.10 10.10.10.22 SMP:SYN, Sid = 0, Length = 16, SeqNum = 0, Wndw = 4 {SMP:190, TCP:160, IPv4
Выполнение различных команд в сеансе
Frame Time Offset Source IP Dest IP Description
----- ----------- ----------- ----------- ---------------------------------------------------------------------------
18028 568.2170301 10.10.10.10 10.10.10.22 TDS:SQLBatch, Version = 7.4 (0x74000004), SPID = 0, PacketID = 1, Flags=...
18031 568.2170676 10.10.10.22 10.10.10.10 TCP: [Bad CheckSum]Flags=...A...., SrcPort=1433, DstPort=52965, PayloadLen=
18038 568.2173641 10.10.10.22 10.10.10.10 TDS:Response, Version = 7.4 (0x74000004), SPID = 255, PacketID = 1, Flags=.
18079 568.2178650 10.10.10.10 10.10.10.22 TDS:SQLBatch, Version = 7.4 (0x74000004), SPID = 0, PacketID = 1, Flags=...
Пример пакета SMP:ACK
Frame Time Offset Source IP Dest IP Description
----- ----------- ----------- ----------- ---------------------------------------------------------------------------
40874 568.5121135 10.10.10.22 10.10.10.10 TDS:Response, Version = 7.4 (0x74000004), SPID = 255, PacketID = 1, Flags=.
40876 568.5121237 10.10.10.22 10.10.10.10 TDS:Continuous Response, Version = 7.4 (0x74000004), SPID = 255, PacketID =
40911 568.5124644 10.10.10.10 10.10.10.22 SMP:ACK, Sid = 0, Length = 16, SeqNum = 34, Wndw = 40 {SMP:190, TCP:160, IP
40950 568.5128422 10.10.10.22 10.10.10.10 TDS:Continuous Response, Version = 7.4 (0x74000004), SPID = 255, PacketID =