SSH 연결 및 TCP 패킷

SSH 연결 및 TCP 패킷

IP YY.YY.YY.YY에 SSH 서버가 있고 포트 5022에서 수신 대기하고 있으며 TCPDUMP를 사용하여 다음 트래픽을 표시합니다. 여기서 XX.XX.XX.XX는 알 수 없는 외부 IP입니다.

10:34:58.879055 XX.XX.XX.XX.59800 >  YY.YY.YY.YY.5022: S 1093512123:1093512123(0) win 29200 <mss 1460,sackOK,timestamp 4152861140 0,nop,wscale 7> (DF) [tos 0x68]
10:34:58.879222  YY.YY.YY.YY.5022 > XX.XX.XX.XX.59800: S 1017497190:1017497190(0) ack 1093512124 win 16384 <mss 1460,nop,nop,sackOK,nop,wscale 6,nop,nop,timestamp 4107297338 4152861140> (DF)
10:34:58.902942 XX.XX.XX.XX.59800 >  YY.YY.YY.YY.5022: . ack 1 win 229 <nop,nop,timestamp 4152861164 4107297338> (DF) [tos 0x68]
10:34:58.902980 XX.XX.XX.XX.59800 >  YY.YY.YY.YY.5022: P 1:24(23) ack 1 win 229 <nop,nop,timestamp 4152861164 4107297338> (DF) [tos 0x68]
10:34:58.916629  YY.YY.YY.YY.5022 > XX.XX.XX.XX.59800: P 1:22(21) ack 24 win 271 <nop,nop,timestamp 4107297338 4152861164> (DF)
10:34:58.939061 XX.XX.XX.XX.59800 >  YY.YY.YY.YY.5022: . ack 22 win 229 <nop,nop,timestamp 4152861201 4107297338> (DF) [tos 0x68]
10:34:58.939120  YY.YY.YY.YY.5022 > XX.XX.XX.XX.59800: P 22:1054(1032) ack 24 win 271 <nop,nop,timestamp 4107297338 4152861201> (DF)
10:34:58.939603 XX.XX.XX.XX.59800 >  YY.YY.YY.YY.5022: P 24:672(648) ack 22 win 229 <nop,nop,timestamp 4152861201 4107297338> (DF) [tos 0x68]
10:34:58.941607  YY.YY.YY.YY.5022 > XX.XX.XX.XX.59800: F 1054:1054(0) ack 672 win 271 <nop,nop,timestamp 4107297338 4152861201> (DF)
10:34:58.961672 XX.XX.XX.XX.59800 >  YY.YY.YY.YY.5022: F 672:672(0) ack 1054 win 245 <nop,nop,timestamp 4152861223 4107297338> (DF) [tos 0x68]
10:34:58.961721  YY.YY.YY.YY.5022 > XX.XX.XX.XX.59800: F 1054:1054(0) ack 673 win 271 <nop,nop,timestamp 4107297338 4152861223> (DF)
10:34:58.963932 XX.XX.XX.XX.59800 >  YY.YY.YY.YY.5022: . ack 1055 win 245 <nop,nop,timestamp 4152861226 4107297338> (DF) [tos 0x68]

제가 걱정하는 것은 동기화, 푸시, 완료를 의미하는 플래그 S, P, F입니다.

나는 네트워킹에 능숙하지 않지만 이 연결로 인해 내 서버가 손상되었다고 가정할 수 있습니까? 이 IP와 내 서버 사이에 전체 트래픽이 있습니까, 아니면 단지 연결 시도입니까?

답변1

Syn, Push 및 Fin은 TCP 패킷의 일반적인 신호입니다. 그들은 귀하의 서버가 손상되었는지 여부를 스스로 말하지 않습니다.

  • Syn은 새로운 연결을 시작하고 싶다는 것을 나타냅니다.
  • 푸시는 연결에 대한 데이터를 보내려는 것을 의미합니다.
  • 핀이 연결을 끊으라고 하더군요

트래픽을 살펴보면 서버에 인증을 시도하기도 전에 실패한 것 같습니다.

10:34:58.879055 XX.XX.XX.XX.59800 >  YY.YY.YY.YY.5022: S 1093512123:1093512123(0) win 29200 <mss 1460,sackOK,timestamp 4152861140 0,nop,wscale 7> (DF) [tos 0x68]
10:34:58.879222  YY.YY.YY.YY.5022 > XX.XX.XX.XX.59800: S 1017497190:1017497190(0) ack 1093512124 win 16384 <mss 1460,nop,nop,sackOK,nop,wscale 6,nop,nop,timestamp 4107297338 4152861140> (DF)
10:34:58.902942 XX.XX.XX.XX.59800 >  YY.YY.YY.YY.5022: . ack 1 win 229 <nop,nop,timestamp 4152861164 4107297338> (DF) [tos 0x68]

이는 YY.YY.YY.YY에 연결하려는 XX.XX.XX.XX에 의해 시작된 3방향 TCP 핸드셰이크입니다. Syn 플래그는 이것이 새로운 연결의 시작임을 나타냅니다.

10:34:58.902980 XX.XX.XX.XX.59800 >  YY.YY.YY.YY.5022: P 1:24(23) ack 1 win 229 <nop,nop,timestamp 4152861164 4107297338> (DF) [tos 0x68]
10:34:58.916629  YY.YY.YY.YY.5022 > XX.XX.XX.XX.59800: P 1:22(21) ack 24 win 271 <nop,nop,timestamp 4107297338 4152861164> (DF)
10:34:58.939061 XX.XX.XX.XX.59800 >  YY.YY.YY.YY.5022: . ack 22 win 229 <nop,nop,timestamp 4152861201 4107297338> (DF) [tos 0x68]

모든 SSH 연결이 시작될 때 양 당사자는 사용 중인 SSH 소프트웨어를 설명하는 짧은 텍스트인 "배너"를 보냅니다. 이러한 패킷은 XX.XX.XX.XX가 배너를 YY.YY.YY.YY로 보낸 다음 YY.YY.YY.YY가 이를 확인하고 배너를 XX.XX.XX.XX로 보낸 다음 XX.XX처럼 보입니다. .XX.XX를 확인하세요.

10:34:58.939120  YY.YY.YY.YY.5022 > XX.XX.XX.XX.59800: P 22:1054(1032) ack 24 win 271 <nop,nop,timestamp 4107297338 4152861201> (DF)
10:34:58.939603 XX.XX.XX.XX.59800 >  YY.YY.YY.YY.5022: P 24:672(648) ack 22 win 229 <nop,nop,timestamp 4152861201 4107297338> (DF) [tos 0x68]

SSH 프로토콜에 따르면 배너를 보낸 후 양 당사자는 지원하는 암호화 알고리즘, 지원하는 키 교환 프로토콜 등을 나타내는 메시지를 보내 양 당사자가 연결을 암호화하는 데 사용되는 암호화 키를 협상할 수 있습니다.

10:34:58.941607  YY.YY.YY.YY.5022 > XX.XX.XX.XX.59800: F 1054:1054(0) ack 672 win 271 <nop,nop,timestamp 4107297338 4152861201> (DF)
10:34:58.961672 XX.XX.XX.XX.59800 >  YY.YY.YY.YY.5022: F 672:672(0) ack 1054 win 245 <nop,nop,timestamp 4152861223 4107297338> (DF) [tos 0x68]
10:34:58.961721  YY.YY.YY.YY.5022 > XX.XX.XX.XX.59800: F 1054:1054(0) ack 673 win 271 <nop,nop,timestamp 4107297338 4152861223> (DF)
10:34:58.963932 XX.XX.XX.XX.59800 >  YY.YY.YY.YY.5022: . ack 1055 win 245 <nop,nop,timestamp 4152861226 4107297338> (DF) [tos 0x68]

분명히 YY.YY.YY.YY는 XX.XX.XX.XX가 보낸 내용을 좋아하지 않았습니다(둘 다 지원하는 알고리즘이 없었을까요? 아니면 XX.XX.XX.XX가 잘못된 형식의 패킷을 보냈을까요?). 계속하는 대신 키 교환을 위해 연결을 더 이상 계속하지 않고 연결을 닫으려고 XX.XX.XX.XX(Fin 플래그를 사용하여)에 알리기로 결정합니다. XX.XX.XX.XX는 또한 Fin 플래그를 사용하여 연결을 닫습니다(키 교환이 불가능하다고 판단했거나 YY.YY.YY.YY의 Fin을 얻었기 때문입니다).

이론적으로 XX.XX.XX.XX를 사용하는 사람은 XX.XX.XX.XX를 수정하여 더 많은 알고리즘을 지원함으로써 키 교환 및 무차별 로그인 시도를 성공적으로 완료할 수 있습니다.

관련 정보