W tym artykule przedstawiono kilka przykładów śledzenia sieci, który przechwytuje różne uściski dłoni i sekwencje uwierzytelniania podczas procesu ustanawiania połączenia protokołu Transmission Control Protocol (TCP) między aplikacją kliencką a aparatem bazy danych programu SQL Server (serwerem).
W tym artykule opisano również wiele aktywnych połączeń zestawów wyników (MARS). MARS to funkcja programu SQL Server, wprowadzona z programem SQL Server 2005 (9.x), która umożliwia wykonywanie wielu poleceń w połączeniu bez konieczności czyszczenia wyników z pierwszego polecenia przed uruchomieniem drugiego polecenia. Usługa MARS jest osiągana za pośrednictwem multipleksowania sesji (SMUX).
W tym procesie opisano normalny proces logowania przy użyciu uwierzytelniania SQL, pokazujący każdy krok konwersacji między klientem a serwerem za pomocą szczegółowej analizy śledzenia sieci. Przykładowy ślad sieci delineuje następujące kroki:
- Trójkierunkowe uzgadnianie protokołu TCP
- Uścisk dłoni kierowcy
- Uzgadnianie protokołu SSL/TLS
- Wymiana pakietów logowania
- Potwierdzenie logowania
- Wykonywanie polecenia i odczytywanie odpowiedzi
- Czterokierunkowe zamykanie protokołu TCP
Przykładowy ślad sieci
Ta wymiana jest przydzielana 1 sekundę niezależnie od ustawienia Login Timeout
w parametrach połączenia.
- Adres IP klienta jest
10.10.10.10
- Adres IP serwera jest
10.10.10.120
Krok 1. Trójkierunkowe uzgadnianie protokołu TCP
Wszystkie konwersacje TCP rozpoczynają się od pakietu SYN
(S
zestawu flag) wysyłanego z klienta do serwera. W ramce 6127
klient używa portu efemerycznego (dynamicznie przypisanego przez system operacyjny) i łączy się z portem serwera, w tym przypadku port 1433
. Serwer odpowiada swoim pakietem SYN
, w którym również ustawiono flagę ACK
. Na koniec klient odpowiada pakietem ACK
, aby poinformować serwer, że otrzymał pakiet SYN
.
Ten krok ustanawia podstawowe połączenie TCP, tak samo jak polecenie telnet
. System operacyjny pośredniczy w tej części konwersacji. W tym momencie klient i serwer nic nie wiedzą o sobie.
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=
W tym kroku ostrzeżenia [Bad CheckSum]
są łagodne i wskazują, że funkcja odciążania sumy kontrolnej jest włączona. Oznacza to, że są one dodawane na niższym poziomie w warstwie stosu sieciowego niż jest wykonywane śledzenie. W przypadku braku innych informacji to ostrzeżenie wskazuje, czy ślad sieciowy został wykonany na kliencie lub serwerze. W tym przypadku pojawia się on w początkowym pakiecie SYN
, więc ślad został wykonany na kliencie.
Krok 2. Połączenie sterownika
Zarówno sterownik klienta, jak i program SQL Server muszą wiedzieć nieco o sobie. W tym uścisku dłoni sterownik wysyła pewne informacje i wymagania do serwera. Te informacje obejmują, czy należy szyfrować pakiety danych, czy używać wielu aktywnych zestawów wyników (MARS), jego numer wersji, czy używać uwierzytelniania federacyjnego, identyfikatora GUID połączenia itd.
Serwer odpowiada swoimi informacjami, takimi jak to, czy wymaga uwierzytelniania. Ta sekwencja ma miejsce przed wykonaniem jakiegokolwiek rodzaju negocjacji zabezpieczeń.
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
Krok 3. Uzgadnianie protokołu SSL/TLS
Handshake SSL/TLS rozpoczyna się od pakietu Client Hello, następnie pakietu Server Hello, oraz dodatkowe pakiety związane z bezpiecznym kanałem. W tym kroku klucz zabezpieczeń jest negocjowany na potrzeby szyfrowania pakietów. Zwykle tylko pakiet logowania jest szyfrowany, ale klient lub serwer może również wymagać szyfrowania pakietów danych. Wybranie wersji protokołu TLS odbywa się na tym etapie logowania. Klient lub serwer może zamknąć połączenie na tym etapie, jeśli wersje TLS się nie zgadzają, lub nie mają żadnych wspólnych zestawów szyfrów.
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
Krok 4. Pakiet logowania
Ten pakiet jest szyfrowany i może być wyświetlany jako SSL Application Data
lub TDS:Data
, w zależności od analizatora sieci. Jeśli wszystkie pakiety po tym kroku również są wyświetlane jako SSL Application Data
, połączenie jest szyfrowane.
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
Krok 5. Potwierdzenie logowania
W przeciwnym razie zostanie wyświetlony pakiet odpowiedzi, który potwierdza logowanie (ma token logowania ACK
) lub zwraca komunikat o błędzie Login Failed
do klienta.
Oto przykład tego, co można zobaczyć w danych szesnastkowych pakietu w przypadku pomyślnego zalogowania:
.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
Krok 6. Wykonywanie polecenia i odczytywanie odpowiedzi
Polecenia są wysyłane jako TDS:SQLBatch
lub pakiet TDS:RPCRequest
. Pierwszy wykonuje zwykłe instrukcje Transact-SQL, a drugi wykonuje procedury składowane. Możesz zobaczyć pakiety kontynuacji TCP, jeśli polecenie jest długie lub w pakiecie odpowiedzi, jeśli zostanie zwróconych więcej niż kilka wierszy.
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=
Krok 7. Czterokierunkowe zamykanie protokołu TCP
Sterowniki firmy Microsoft używają czterostronnego uzgadniania do zamykania połączeń. Wiele sterowników innych firm po prostu resetuje połączenie, by go zamknąć, co utrudnia rozróżnienie między normalnym a nietypowym zamknięciem.
Czterokierunkowe uzgadnianie składa się z klienta wysyłającego pakiet FIN
do serwera, na który serwer odpowiada pakietem ACK
. Następnie serwer wysyła własny pakiet FIN
, który klient potwierdza (ACK
).
Jeśli serwer najpierw wysyła pakiet FIN
, jest to nieprawidłowe zamknięcie, najczęściej spotykane podczas uzgadniania protokołu SSL/TLS, gdy klient i serwer nie mogą wynegocjować bezpiecznego kanału.
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=
W tym procesie opisano proces uwierzytelniania, w szczególności porównując sekwencję uwierzytelniania SQL z dodatkiem pakietu SSPI. Przykładowy ślad sieci delineuje następujące kroki:
- Trójkierunkowe uzgadnianie protokołu TCP
- Uzgadnianie kierowcy
- Nawiązywanie połączenia SSL/TLS
- Wymiana pakietów logowania
- Przesyłanie pakietów SSPI
- Potwierdzenie logowania
- Czterokierunkowe zamykanie protokołu TCP
Przykładowy ślad sieci
Ta sekwencja logowania wygląda podobnie do sekwencji uwierzytelniania SQL. Dodanie pakietu SSPI jest dużą różnicą, ale trudno powiedzieć, chyba że rozszerzasz jego właściwości. Czasami możesz zobaczyć więcej niż jeden pakiet SSPI.
Następnie klient odpowiada za pomocą poświadczeń, które serwer potwierdza za pośrednictwem kontrolera domeny po swojej stronie.
Ta wymiana jest przydzielana 1 sekundę niezależnie od ustawienia Login Timeout
w parametrach połączenia.
- Adres IP klienta jest
10.10.10.10
- Adres IP serwera jest
10.10.10.20
Krok 1. Trójkierunkowe uzgadnianie protokołu TCP
Ten krok polega na nawiązaniu połączenia między klientem a serwerem za pośrednictwem protokołu TCP. Pakiety SYN
, SYN-ACK
i ACK
są używane do synchronizowania numerów sekwencji i ustanawiania komunikacji.
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
W tym kroku ostrzeżenia [Bad CheckSum]
są łagodne i stanowią wskaźnik, że włączone jest wyładowanie sumy kontrolnej . Oznacza to, że są one dodawane na niższym poziomie w stosie sieciowym niż pobierany jest ślad (trace). W przypadku braku innych informacji to ostrzeżenie wskazuje, czy ślad sieciowy został wykonany na kliencie czy na serwerze. W tym przypadku pojawia się on w początkowym pakiecie SYN
, co oznacza, że ślad został zrobiony po stronie klienta.
Krok 2. Uzgadnianie kierowcy
Ten krok obejmuje wymianę pakietów TDS (tabelarycznego strumienia danych) między klientem a serwerem w celu ustanowienia parametrów komunikacji.
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
Krok 3. Uzgadnianie protokołu SSL/TLS
W tym miejscu klient i serwer przeprowadzają bezpieczny uścisk dłoni, aby nawiązać zaszyfrowane połączenie. Ten proces obejmuje wiele pakietów, w tym Client Hello, Server Hello, wymianę certyfikatów i zmianę specyfikacji szyfrowania.
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
Krok 4. Pakiet logowania
Klient wysyła pakiet TDS zawierający informacje logowania do serwera.
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
Krok 5. Przesyłanie pakietów SSPI
Ten pakiet zawiera token SSPI (Security Support Provider Interface) wskazujący uwierzytelnianie przy użyciu protokołu Kerberos. Jej właściwości są rozszerzane w celu ujawnienia danych tokenu.
W poniższych danych wyjściowych przedstawiono pakiet SSPI z rozwiniętymi właściwościami pakietów.
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:
Krok 6. Potwierdzenie i uznanie logowania
Serwer odpowiada pakietem TDS potwierdzającym logowanie i potwierdzeniem otrzymania danych.
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
Krok 7. Czterofazowy proces zamykania połączenia TCP
Na koniec klient i serwer bezpiecznie zamykają połączenie przy użyciu FIN
i pakietów 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
Obecność pakietu SSPI odróżnia ten proces logowania od uwierzytelniania SQL. Jednak identyfikacja może wymagać rozszerzania właściwości pakietu, szczególnie w przypadku wymiany wielu pakietów SSPI.
W tym procesie opisano proces uwierzytelniania, w szczególności porównując sekwencję uwierzytelniania SQL z dodatkiem pakietów wyzwań i odpowiedzi NTLM. Przykładowy ślad sieci delineuje następujące kroki:
- Trójfazowe uzgadnianie protokołu TCP
- Ustawianie połączenia sterownika
- Uzgadnianie protokołu SSL/TLS
- Wymiana pakietów logowania
- Pakiety wyzwania i odpowiedzi NTLM
- Potwierdzenie logowania
- Wykonywanie poleceń
Przykładowy ślad sieci
Różnica między tą sekwencją logowania a sekwencją uwierzytelniania SQL polega na dodaniu dwóch pakietów.
Następnie klient odpowiada przy użyciu poświadczeń, które serwer potwierdza z kontrolerem domeny po swojej stronie.
Ta wymiana jest przydzielana 1 sekundę niezależnie od ustawienia Login Timeout
w parametrach połączenia.
- Adres IP klienta jest
10.10.10.120
- Adres IP serwera jest
10.10.10.55
Krok 1. Trójkierunkowe uzgadnianie protokołu TCP
Ten krok polega na nawiązaniu połączenia między klientem a serwerem za pośrednictwem protokołu TCP. Obejmuje pakiety SYN
, SYN-ACK
i ACK
w celu synchronizowania numerów sekwencji i ustanawiania komunikacji.
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=
W tym kroku ostrzeżenia [Bad CheckSum]
są nieszkodliwe i wskazują na włączenie odciążania sumy kontrolnej. Oznacza to, że są one dodawane na niższym poziomie w stosie sieciowym niż ślad jest pobierany. W przypadku braku innych informacji to ostrzeżenie wskazuje, czy ślad sieciowy został wykonany na kliencie lub serwerze. W tym przypadku pojawia się on w początkowym pakiecie SYN
, więc ślad został wykonany po stronie klienta.
Krok 2. Uzgadnianie kierowcy
Ten krok obejmuje wymianę pakietów TDS (tabelarycznego strumienia danych) między klientem a serwerem w celu ustanowienia parametrów komunikacji.
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
Krok 3. Nawiązywanie połączenia SSL/TLS
W tym miejscu klient i serwer angażują się w bezpieczny uzgadnianie w celu nawiązania zaszyfrowanego połączenia. Ten proces obejmuje wiele pakietów, w tym Client Hello, Server Hello, wymianę certyfikatów i zmianę szyfrów.
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
Krok 4. Pakiet logowania
Klient wysyła pakiet TDS zawierający informacje logowania do serwera.
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
Krok 5. Pakiety wyzwania i odpowiedzi NTLM
Pakiet wyzwania NTLM jest wysyłany z serwera do klienta po wysłaniu pakietu logowania przez klienta.
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 {
Krok 6. Potwierdzenie logowania
Serwer odpowiada pakietem TDS potwierdzającym logowanie i potwierdzeniem otrzymania danych.
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,
Krok 7. Wykonywanie polecenia
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
Połączenie może zakończyć się niepowodzeniem z powodu przekroczenia limitu czasu, co wynika z dowolnego z następujących powodów:
- serwer SQL z niedoborem wątków
- kilka jednoczesnych żądań logowania, co powoduje uwierzytelnianie w kolejce z kontrolerem domeny
- kontroler domeny w innej lokalizacji geograficznej
- powolny lub nieodpowiadczy kontroler domeny
W tej sekcji opisano sposób określania połączenia MARS z następujących pakietów:
-
SMP:SYN
rozpoczyna nową sesję
-
SMP:ACK
potwierdza pakiety danych
-
SMP:FIN
kończy sesję
W poniższych przykładach śledzenia przedstawiono różne pakiety.
- Adres IP klienta jest
10.10.10.10
- Adres IP serwera jest
10.10.10.22
Otwieranie nowego połączenia MARS
W poniższych przykładowych danych wyjściowych przyjęto założenie, że następujące kroki zostały już ukończone przy użyciu uwierzytelniania NTLM. Mars można również używać z uwierzytelnianiem Kerberos i SQL.
- Trójetapowe uzgadnianie protokołu TCP
- Uzgadnianie kierowcy
- Uzgadnianie protokołu SSL/TLS
- Wymiana pakietów logowania
- Pakiety wyzwania i odpowiedzi NTLM
- Potwierdzenie logowania
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=.
Utwórz nową sesję MARS
Po nawiązaniu połączenia utwórz nową sesję 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
Wykonywanie różnych poleceń w sesji
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=...
Przykład pakietu 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 =