Analysis

기본적인 Telnet Packet 분석

DarkSoul.Story 2013. 7. 12. 18:15
반응형

텔넷(Telnet)은 사용권한을 가지고 있다는 조건하에 원격지 시스템에 액세스할 수 있도록 하는 프로토콜이다. 좀더 기술적으로 말하면, 원격지에 있는 시스템에 액세스하기 위한 사용자 명령들과 TCP/IP 기반의 프로토콜을 말한다. 텔넷은TCP 23번 포트를 사용하며, 보안 문제로 사용률이 감소함과 동시에 SSH로 대체되고 있다.


텔넷은 최초 연결시 3-way handshaking 과정을 거친다. 그 후 기본 사양에 정의되지 않은 추가 서비스를 제공하거나, 고급 기능을 사용하는 등의 일 조율하는 옵션 협상과정을 거친다. 옵션 협상 과정은 아래와 같은 정의에 의해 협상이 이루어진다.


DO : 해당 옵션을 사용하고자 한다.

DON'T : 해당 옵션을 사용하지 마십시오.

WILL : 해당 옵션을 사용하겠다.

WON'T : 해당 옵션을 사용하지 않겠다.

 

위와 같은 방법으로,  사용되는 옵션에 대한 요청을 보내면, 상대방은 요청한 옵션을 사용을 허용할지 여부에로 응답을 보낸다.


요청

응답

  

DO

WILL

발신자가 선택한 옵션 사용

 

WON’T

송신자는 발신자가 선택한 옵션을 사용하지 않음

WILL

DO

발신자가 선택한 옵션 사용

 

DON’T

송신자는 발신자가 선택한 옵션을 사용하지 않음

DON’T

WON’T

발신자는 선택한 옵션이 비활성화되어 있음을 나타냄

WON’T

DON’T

송신자는 선택한 옵션이 비활성화되어 있음을 나타냄


아래는 와이어샤크를 통해 협상 과정 살펴본 내용이다.



서버 (192.168.119.130)에서 위 그림에서 처럼 4가지의 옵션을 사용하겠다고 클라이언트(192.168.119.156)에게 요청을 한다.



클라이언트는 서버가 요청한 내용에 대해 사용 여부를 응답으로 보낸다. 


텔넷 연결에서는 아래와 같이 옵션을 제공하며, 사용자가 연결 중 언제든지 명령 사용하여 협상할 수 있다.


10진수 / 16진수 코드

     

RFC

1 / 1

echo

RFC 857

3 / 3

suppress go ahead

RFC 859

5 /5

status

RFC 859

6 / 6

timing mark

RFC 860

24 / 18

terminal type

RFC 1091

31 / 1F

window size

RFC 1073

32 / 20

terminal speed

RFC 1079

33 / 21

remote floe control

RFC 1372

34 / 22

linemode

RFC 1184

36 / 24

environment variables

RFC1408


옵션에 대한 내용은 여기서는 자세히 언급하지 않겠다. 옵션에 대해 궁금한 독자는 해당 RFC 문서를 살펴보기 바란다.

텔넷에서는 세션을 제어하는 세션 제어 명령어가 존재한다.  


10진수 

 코드

코드

     

     

240

SE

 

옵션 협상 끝

241

NOP

No Operation

이 명령을 해석하지 않고 데이터를 원격 호스트로 보냄

242

DM

Data Mark

사용자와 원격 시스템간의 모든 버퍼를 비움

243

BRK

Break

휴식

244

IP

Interrupt Process

이 명령은 원격 프로세스를 중단할 때 사용

245

AO

About Output

이 명령은 원격 프로세스의 디스플레이를 일일 중단할 때 사용

246

AYT

Are You There

이 명령은 원격 시스템이 살아있는지 (실행되고 있는지)를 확인할 때 사용

247

EC

Erase Character

이 명령은 이전 문자를 삭제할 때 사용

248

EL

Erase Line

이 명령은 이전 행을 삭제할 때 사용

249

GA

Go Ahead

이 명령은 반이중 링크 컨트롤을 취소할 때 사용

250

SB

SB

이 명령은 다음 데이터 이전 옵션에 대한 협상을 나타냄

251

WILL

Option Code

 

252

WON’T

Option Code

 

253

DO

Option Code

 

254

DON’T

Option Code

 

255

IAC

Interpret As Command

이 명령은 다음 바이트가 명령어로 해석할 때 사용


세션 제어 명령어를 사용하기 위해서는 IAC(Interpret As Command)) 세션 제어 명령어가 선행되어야 한다. 만약 IAC 세션 제어 명령어가 선행되지 않고, 명령어가 원격 시스템으로 전송될 경우 해당 명령어는 단순 문자로 처리가 된다. 


아래는 텔넷 통신을 와이어샤크를 이용해서 캡처한 그림이다. 지금까지 알아본 내용이 패킷에서는 어떻게 보여지는지 살펴 보자.


 

그림을 보았을때 옵션 협상 과정으로 echo 옵션을 사용하겠다고 알리고 있다. 해당 내용은 16진수로 표현하면 FF FD 01가 된다. 


FF (255) : IAC

FD (253) : DO

01 (1)     : echo 옵션

 


반응형