텔넷(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 옵션
[Android Malware] App.apk 분석 (0) | 2013.11.15 |
---|---|
[Android Malware] miracle.apk 분석 (0) | 2013.10.17 |
[Android Malware] 스타벅스 쿠폰 위장 악성 앱 (sb.apk) 분석 (0) | 2013.07.01 |
[Android Malware] 알약 모바일 백신 위장 변종 (danal.apk) 분석 (0) | 2013.05.29 |
[Android Malware] 모바일 청첩장 (duanxin.apk) 분석 (0) | 2013.05.24 |