반응형

 오늘은, ssh랑 telnet에 대해서 간단하게 와이어 샤크를 가지고 실습해 보도록 하겠습니다. 이들이 패킷을 어떻게 날리는지도 보도록 하고요. telnet이 보안이 취약하다는 소리는 많이 들어봤는데, 정말 그런건지도 한 번 보도록 하겠습니다.

 


 저는, VM 안에 있는 ubuntu에 ssh server랑 (sshd), telnet server를 깔았습니다. 그리고 window에 ssh와 telnet 클라이언트가 있습니다. 먼저, hostname -I를 쳐 보겠습니다.

 

 

 그러면, VM으로 띄운 우분투의 IP가 나올 겁니다. 그리고 방화벽 ufw가 있는데요. 이들의 설정을 건드려가면서, telnet이나, ssh 접속을 할 때 어떠한 패킷이 왔다갔다 하는지 테스트 해 볼 겁니다.

 

 

 먼저, status를 보겠습니다. 그러면, 22와 23이 Deny가 되어있음을 알 수 있습니다.

 

 

 이제 sudo ufw allow 23을 입력해 보겠습니다. 그러면 23번 포트를 허용한다는 의미입니다.

 

 

 와이어 샤크에는, 필터링을 걸 수 있는데요. ip.addr = 192,168.213.128의 의미는 ip 주소가 192.168.213.128인 (Source나 destination) 것만 필터링해서 보여주겠다는 의미입니다.

 

 

 일단, 클라이언트에서 서버로 무언가를 보내고, 서버가 응답한 다음에, 다시 클라이언트에서 서버로 ACK를 보냅니다. 여기까지는 별 게 없어 보입니다.

 

 

 패킷들을 하나 하나 보겠습니다. Telnet의 Data 부분만 보시면 됩니다.

 

 

 그러면 'o'가 보입니다. 제가 ch를 친 상태에서 'o'를 쳤을 때 클라이언트로부터 server에 'o'라는 데이터가 보내졌습니다.

 

 

 ls -ail 명령어를 치고 엔터를 친 후에, 어느 패킷을 뜯어본 것입니다. 출력되는 내용들이 모두 평문으로 전송되고 있다는 것을 알 수 있습니다.

 

 


 그러면, ssh는 어떻게 동작할까요?

 

 

 22번 포트를 allow 시킨 다음에, ssh 통신을 해 보겠습니다. 간단하게 로그인을 하고, ls -ail 명령어를 입력한 다음에 exit를 해서 종료합니다.

 

 

 일단 이 과정은 telnet과 별 차이가 없어 보입니다.

 

 

 그런데, 그 다음 전처리가 생각보다 많아 보입니다. 보아하니, SSH에 관한 정보를 주고 받고, Key Exchange에 관한 정보를 받고, 키 교환을 하는 것으로 보입니다. 암호화를 어떻게 할 것인지 (서로 합의를 하고), 키가 맞는지, 이런 것들을 사전에 확인하는 듯 싶어요. 다음에 l만 입력해 보겠습니다.

 

 

 그러면, SSHv2로 통신을 한 다음에, TCP로 통신을 하는 것을 볼 수 있는데요. 클라에서 서버로, 다시 서버에서 클라로 data를 전송하고 받는 것은 패킷을 암호화 하고, ACK 응답은 암호화 하지 않고 보냈다는 것을 유추할 수 있어요. 위 그림은 l이라는 것을 보냈을 때, 암호화된 패킷을 나타냅니다.

 

 그리고 아래의 3개 그림도 마찬가지로 I라는 것만 보냈을 때, 암호화된 패킷을 나타냅니다. 

 

 

 2a a6 c2 86 a3 ... 아까와는 다른 듯 싶군요.

 

 

 27 2f 4e 42 23 ... 2번째 그림과는 다른 듯 싶습니다.

 

 

 99 3e 8c f8 eb 20 ... 3번째와는 다른 듯 싶습니다. 추가적인 처리 (ex. salting)가 들어가는지는 모르겠지만, 확실한 것은 패킷이 암호화가 되어서 전달된다는 것입니다.

 

 

 telnet과 ssh가 패킷을 어떤 식으로 보내는지 확인을 했으니, 이 둘을 막아놓아야 겠습니다. 22번 포트를 deny하려면 위와 같이 입력하시면 됩니다.

반응형

댓글을 달아 주세요

  1. 상식체온

    컴퓨터로 처음 이메일을 쓰던 텔넷이 생각나네요. 처음엔 매우 신기한 신세계로 다가왔는데 아직도 유용하게 쓰이나 봅니다.

  2. TCPL

    흥미롭네요. 과거 C 언어로 웹 서버 만들기 위해 SSH 암호화 방식을 찾아봤었는데 쉽지 않았던 기억이 납니다. 좋은 글 잘 보았습니다. 좋은 하루 되십시오.

    • 코딩강아지
      2020.06.16 20:14 신고

      저거도 하나 하나 세부적으로 파고 들어가면..
      꽤 복잡하더라고요.

      조만간 다시 또 언급할 기회가 있을 겁니다.