와이어샤크 가지고 놀기 - Telnet, Bittorrent, Tor 프로토콜 분석

학교 과제로 제출했던 것이고 Bittorrent, Tor 프로토콜의 경우 다소 분석이 부실하게 됐습니다만 그래도 읽어볼만은 할 것 같습니다. 캡쳐 파일은 제가 알아차리지 못한 다른 민감한 정보가 혹시 같이 섞여있을까 걱정되어 공개하지 않겠습니다.


우선 실습은 Windows 10 Pro 운영체제에서 Wireshark 2.4.6버전을 기준으로 진행되었습니다.


1. Telnet 프로토콜


Telnet 프로토콜은 원격지의 호스트 컴퓨터와 양방향 통신을 하기 위한 프로토콜이다. 주로 23번 포트를 사용한다. 이 프로토콜은 TCP 연결을 한다. 이 때 NVT(Network Virtual Terminal)이라는 것이 존재해 Client와 Server 사이의 데이터 통신 프로토콜을 일치 시킨다.
Telnet Protocol Specification은 RFC 854에서 확인할 수 있다.
접속을 하면 우선 서버와 클라이언트는 TCP 3way handshake를 한 이후 데이터를 주고 받는다. TCP 연결이기 때문에 reliable한 통신이지만, 오가는 데이터에 대한 encryption은 전혀 존재하지 않아 Wireshark를 통해 오가는 데이터를 전부 들여다볼 수 있고, 이로 인해 계정 정보를 포함한 민감한 정보가 중간자에게 노출되거나 변조될 가능성이 있다. 이는 Telnet이 사장되고 SSH가 주로 사용된 이유이기도 하다.


윈도우에서 기본 제공되는 Microsoft Telnet Client 10.0.16299.15 버전을 이용해 x.theundergroundbbs.net 에 접속을 해서 통신하는 과정을 와이어샤크로 캡쳐했고 이를 분석하겠다.



Wireshark에서 제공하는 telnet 필터를 통해 TELNET 프로토콜로 통신한 패킷을 알아낼 수 있었다.




서버의 IP 주소는 47.199.161.87이고, ip.addr == 47.199.161.87 필터를 통해 총 914개의 패킷에 대해 TELNET 통신과 더불어 통신이 시작할때 이루어지는 TCP handshake, 그리고 TELNET 프로토콜로 통신한 이후 reliability를 위해 TCP 통신을 주고 받는 것을 확인할 수 있다.




이 때 아무 패킷이나 선택해서 내용을 확인해보면 서버로부터 제공받은 데이터를 그대로 확인할 수 있다. 밑의 예시는 765번 패킷의 내용을 확인한 것이다.




이 내용은 아래의 텍스트와 대응될 것으로 추정할 수 있으며, 이 때 중간에 들어가있는 0x1b, 0x5b와 같은 글자는 글씨의 색깔을 지정하기 위해서 쓰이는 문자이다.



악의적인 사용자가 텔넷 통신을 캡쳐했다고 할 때 가장 관심이 있을 정보는 계정 정보일 것이다. 클라이언트가 입력한 계정 정보를 탈취하기 위해 telnet.data contains “password” 필터를 통해 password라는 substring telnet data로 가지고 있는 모든 패킷을 확인할 수 있다. 검색을 해본 결과 아래와 같이 총 6개의 패킷을 얻을 수 있었다.



이 중 436번 패킷에서 Password를 입력받는 것으로 추정되는 “New password (4-8 chars)” string을 확인할 수 있었다. 또한 438번부터 454번 패킷 까지 서버와 클라이언트가 password를 한 글자씩 주고받는 것을 관찰할 수 있었다. 이는 TCP Follow Stream을 통해서도 명확하게 확인할 수 있다.

이와 같이 텔넷 프로토콜은 데이터가 그대로 노출되어 굉장히 쉽게 오가는 데이터의 내용을 확인할 수 있다.




2. Bittorrent 프로토콜