이 문서에서는 클라이언트 애플리케이션과 SQL Server 데이터베이스 엔진(서버) 간의 TCP(Transmission Control Protocol) 연결 설정 프로세스 중에 다양한 핸드셰이크 및 인증 시퀀스를 캡처하는 네트워크 추적의 몇 가지 예를 제공합니다.
이 문서에서는 MARS(다중 활성 결과 집합) 연결에 대해서도 설명합니다. MARS는 SQL Server 2005(9.x)에서 도입된 SQL Server의 기능으로, 두 번째 명령을 실행하기 전에 첫 번째 명령의 결과를 정리하지 않고도 연결에서 여러 명령을 실행할 수 있습니다. MARS는 SMUX(세션 멀티플렉싱)를 통해 달성됩니다.
이 프로세스에서는 SQL 인증을 사용하는 일반적인 로그인 프로세스를 설명하며, 자세한 네트워크 추적 분석을 통해 클라이언트와 서버 간의 대화의 각 단계를 보여 줍니다. 네트워크 추적 예제는 다음 단계를 설명합니다.
- TCP 3방향 핸드셰이크
- 드라이버 핸드셰이크
- SSL/TLS 핸드셰이크
- 로그인 패킷 교환
- 로그인 확인
- 명령을 실행하고 응답을 읽습니다.
- TCP 4방향 닫는 핸드셰이크
네트워크 추적 예제
이 교환은 연결 문자열 설정에 Login Timeout
관계없이 1초 동안 할당됩니다.
- 클라이언트 IP 주소는
10.10.10.10
- 서버 IP 주소는
10.10.10.120
1단계. TCP 3방향 핸드셰이크
모든 TCP 대화는 클라이언트에서 서버로 SYN
전송된 패킷(S
플래그 집합)으로 시작합니다. Frame 6127
에서 클라이언트는 임시 포트(운영 체제에서 동적으로 할당됨)를 사용하고 서버 포트(이 경우 포트 1433
)에 연결합니다. 서버는 플래그도 설정된 자체 SYN
패킷으로 ACK
회신합니다. 마지막으로 클라이언트는 패킷을 수신했음을 ACK
서버에 알리기 위해 패킷으로 SYN
응답합니다.
이 단계에서는 명령과 동일한 방식으로 telnet
기본 TCP 연결을 설정합니다. 운영 체제는 대화의 이 부분을 중재합니다. 이 시점에서 클라이언트와 서버는 서로에 대해 아무것도 알지 못합니다.
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 핸드셰이크는 클라이언트 Hello 패킷과 서버 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
하는 응답 패킷이 표시됩니다.
다음은 성공적인 로그인을 위해 패킷 16진수 데이터에 표시되는 내용의 예입니다.
.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 4방향 닫는 핸드셰이크
Microsoft 드라이버는 4방향 핸드셰이크를 사용하여 연결을 닫습니다. 많은 타사 드라이버가 연결을 다시 설정하여 연결을 닫기만 하면 정상 및 비정상적인 닫기를 구별하기가 더 어려워집니다.
4방향 핸드셰이크는 서버가 응답하는 서버에 패킷을 보내는 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 3방향 핸드셰이크
- 드라이버 핸드셰이크
- SSL/TLS 핸드셰이크
- 로그인 패킷 교환
- SSPI 패킷 전송
- 로그인 확인
- TCP 4방향 닫는 핸드셰이크
네트워크 추적 예제
이 로그인 시퀀스는 SQL 인증 시퀀스와 유사합니다. SSPI 패킷의 추가는 큰 차이이지만 속성을 확장하지 않는 한 알기 어렵습니다. 경우에 따라 둘 이상의 SSPI 패킷이 표시될 수 있습니다.
그런 다음 클라이언트는 자격 증명으로 응답합니다. 그러면 서버가 도메인 컨트롤러의 끝부분에 대해 확인합니다.
이 교환은 연결 문자열 설정에 Login Timeout
관계없이 1초 동안 할당됩니다.
- 클라이언트 IP 주소는
10.10.10.10
- 서버 IP 주소는
10.10.10.20
1단계. TCP 3방향 핸드셰이크
이 단계에서는 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 핸드셰이크
여기서 클라이언트와 서버는 보안 핸드셰이크에 참여하여 암호화된 연결을 설정합니다. 이 프로세스에는 클라이언트 Hello, 서버 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 패킷 전송
이 패킷은 Kerberos를 사용한 인증을 나타내는 SSPI(보안 지원 공급자 인터페이스) 토큰을 전달합니다. 해당 속성은 토큰 데이터를 표시하도록 확장됩니다.
다음 출력은 패킷 속성이 확장된 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 4방향 닫는 핸드셰이크
마지막으로 클라이언트와 서버는 정상적으로 사용 및 ACK
패킷을 사용하여 FIN
연결을 닫습니다.
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 패킷이 교환되는 경우 패킷 속성을 확장해야 할 수 있습니다.
이 프로세스에서는 특히 NTLM 챌린지 및 응답 패킷을 추가하여 SQL 인증 순서를 비교하는 인증 프로세스를 설명합니다. 네트워크 추적 예제는 다음 단계를 설명합니다.
- TCP 3방향 핸드셰이크
- 드라이버 핸드셰이크
- SSL/TLS 핸드셰이크
- 로그인 패킷 교환
- NTLM 챌린지 및 응답 패킷
- 로그인 확인
- 명령 실행
네트워크 추적 예제
이 로그인 시퀀스와 SQL 인증 시퀀스의 차이점은 두 패킷을 추가하는 것입니다.
그런 다음 클라이언트는 자격 증명으로 응답합니다. 그러면 서버가 도메인 컨트롤러의 끝부분에 대해 확인합니다.
이 교환은 연결 문자열 설정에 Login Timeout
관계없이 1초 동안 할당됩니다.
- 클라이언트 IP 주소는
10.10.10.120
- 서버 IP 주소는
10.10.10.55
1단계. TCP 3방향 핸드셰이크
이 단계에서는 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 핸드셰이크
여기서 클라이언트와 서버는 보안 핸드셰이크에 참여하여 암호화된 연결을 설정합니다. 이 프로세스에는 클라이언트 Hello, 서버 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 Server
- 여러 동시 로그인 요청으로 인해 도메인 컨트롤러로 큐에 대기 중인 인증이 발생합니다.
- 다른 지리적 위치에 있는 도메인 컨트롤러
- 느리거나 응답하지 않는 도메인 컨트롤러
이 섹션에서는 다음 패킷에서 MARS 연결을 확인하는 방법을 설명합니다.
SMP:SYN
새 세션을 시작합니다.
SMP:ACK
데이터 패킷을 승인합니다.
SMP:FIN
세션을 종료합니다.
다음 추적 예제에서는 다양한 패킷을 보여 줍니다.
- 클라이언트 IP 주소는
10.10.10.10
- 서버 IP 주소는
10.10.10.22
새 MARS 연결 열기
다음 예제 출력에서는 NTLM 인증을 사용하여 다음 단계가 이미 완료된 것으로 가정합니다. MARS는 Kerberos 및 SQL 인증과 함께 사용할 수도 있습니다.
- TCP 3방향 핸드셰이크
- 드라이버 핸드셰이크
- 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 =