[네트워크 해킹] 06. MITM(Man-In-The-Middle)
MITM(Man in the Middle) 공격은 이름 그대로 중간에서 끼어들어서 하는 공격이다.
ARP Redirect, ICMP Redirect, ARP Spoofing 모두 MITM 공격이라고 할 수 있다.
MITM 공격의 종류
1. SSH MITM 공격
: 암호화 통신인 SSH 연결 시작 시 암호화와 관련된 연결 시 중간에 끼어드는 공격. 클라이언트에게 서버인 것처럼 서버에게는 클라이언트 척 행동할 수 있다.
2. SSL MITM 공격
: SSL 암호화 통신 가운데에서 공격하는 중간자 공격이다. SSL MITM 공격에는 SSL Sniffing과 SSL Strip 공격이 있다.
- SSL 스니핑
: SSL 통신 시 서버와 클라이언트 간 인증서를 중간에서 가로채서 스니핑하는 공격
- SSL Strip 공격
: 암호화된 HTTPS를 강제로 평문의 HTTP로 바꾸어 트래픽 내용 볼수 있게 하는 공격
1. SSH MITM
암호화 통신인 SSH 연결 시작 할때 암호화와 관련된 연결이 진행되는데 그 중간에 끼어드는 공격.
클라이언트에게는 서버인것처럼 행동하고, 서버에게는 클라이언트 척 행동한다.
- SSH 통신방식
1) 클라이언트가 서버에게 공개키 요청. 서버는 SSH 공개키 전송해 줌.
2) 클라이언트는 자신의 비밀키로 데이터를 암호화한 뒤 서버의 공개키로 암호화하여 서버로 전송
3) 클라이언트는 자신의 공개키를 보냄
4) 서버는 자신의 비밀키로 메시지를 복호화 한 뒤 클라이언트의 공개키로 복호화하여 데이터를 얻는다.
- SSH MITM 공격 방식
: 클라이언트가 서버에 최초로 접속할 때 끼어들어 자신이 서버 인척 공개키를 보내면서 시작한다.
1) ARP Spoofing 공격으로 네트워크 통신을 확인한다.
2) 클라이언트가 서버에게 공개키를 요청할 때, 공격자가 자신이 서버 인척 자신의 공개키를 클라이언트에 보낸다.
3) 서버에게는 자신이 클라이언트인 척 공개키를 요청해서 공개키를 받는다.
4) 클라이언트가 암호화해서 메시지를 보내면 공격자가 본인의 개인키로 복호화한다.
5) 메시지의 내용을 조작하여 서버로 서버의 공개키로 암호화해서 보낸다.
- SSH Downgrade Attack
SSH MITM 공격 방식 중 하나로, SSH를 취약한 버전으로 Downgrade 시키는 공격이다.
1) SSH는 버전을 1, 2를 지원하여 사용할 수 있을 때, 취약한 버전 1번만 사용하게하여 공격하는 기법
SSH1 : public-key를 이용하여 session-key를 암호화하는 방식. SSH-1.5 (취약함)
SSH2 : Diffie-Hellman 암호화를 사용. SSH-2.0
SSH1과 2버전을 둘 다 지원하는 경우 : Version Negotiation과정이 암호화되지 않은 형태로 노출된어 취약함. SSH-1.99
2) 버전 2번만 지원할 경우 공격이 불가능하고 version1, version2 모두 지원되어야 한다.
/etc/ssh/sshd_config 파일에서 Protocol 1,2 또는 Protocol 2,1로 설정
3) 실습
Attacker | Target1 | Target2 |
kali | Windows7 | CentOS |
192.168.239.131 | 192.168.239.130 | 192.168.239.200 |
1] SSH 1, 2 버전을 모두 사용할 수 있도록 설정
* 2버전만 사용이 가능하면, 공격 불가능.(최신 버전의 OS의 경우 1이 선택이 안됨.)
/etc/ssh/sshd_config 파일에서
Protocol 1,2 으로 설정
systemctl sshd restart 로 sshd 재시작
3] ettercap을 이용하여 ARP Spoofing과 생성하고 공격
# ettercap –G 으로 ettercap에 들어가서 eth0 확인 후
host scan
host list에서 공격할 target1, target2를 지정하고 ARP Poisoning 공격
2] SSH Version 협상 시 정보 변경을 위해 Filter를 생성 및 컴파일 후 ettercap에서 필터 적용
etterfilter -o ~/ssh.ef /usr/share/ettercap/etter.filter.ssh
4] SSH 접속 (Target 1→ Target 2)
Putty를 이용해서 Windows에서 CentOS 접속
5] Hacker는 스니핑 가능
중간에서 통신 내용을 확인할 수 있다.
2. SSL MITM
- SSH 통신방식
1) SSL/TLS 이란?
1. SSL(Secure Socket Layer)
- 1973년 netscape 사에서 개발된 통신 규약
- 세션 계층에서 적용되면, telnet, ftp, http 등의 프로토콜의 안정성을 보장
- 서버 인증, 클라이언트 인증, 기밀성 보장
- 전자 상거래에서 많이 사용된다.
2. TLS (Transport Layer Security)
- SSL 3.0 버전을 IETF 표준화 기구에서 표준으로 개발한 것
- SSL v3.0의 업그레이드 버전 = TLS 1.0
3. SSL Server Test : https://www.ssllabs.com/ssltest/
[ SSL 스니핑 ]
- 중간에서 공격자가 마치 서버인 것처럼 행동하며 클라이언트에게 자기가 만든 가짜 인증서를 전달
- 클라이언트는 공격자가 준 인증서로 자신의 패킷을 암호화해서 공격자에게 건네줌.
- 공격자는 패킷을 복호화해서 해당 내용을 확인한다.
- 실습
* 서버가 아니라 클라이언트에 대한 공격이므로 SSL 서비스를 제공하는 모든 사이트에서 공격이 가능함.
1. 공격 목표 : DNS 스푸핑 + 가짜 인증서
DNS 스푸핑을하여 공격자에게 접속하게 한 다음 가짜 인증서를 통해서 연결을 설정한다.
이 과정에서 패킷 내용을 스니핑 한다.
2. 사용하는 툴
ettercap (dns 스푸핑 툴)
webmitim (가짜 인증서 생성 )
3. 실습하기
공격자 : kali(), 희생자 : Window7()
service ntp restart
leafpad /etc/ettercap/etter.dns
* A 192.168.10.135(칼리IP)
ettercap -G
→ target 1은 윈도우7 IP
→ mitm → arp poisoning → sniff remote
→ plugins → dns_spoof
webmitm -d 로 가짜 인증서 만들기
[ SSL Strip ]
최초 서버와의 세션 연결 시 https를 강제로 http로 통신을 하게끔 만들 수 있다면, 일반적인 mitm 공격하듯이 트래픽 내용을 훔칠 수 있다.
- 실습 1
1) 목표 : HTTPS를 HTTP로 바꾸기
2) 공격자: kali, 희생자: windows7(192.168.10.135)
공격자 | 희생자 | 게이트웨이 |
Kali | Windows7 | |
192.168.10.135 | 192.168.10.2 |
3) 사용하는 툴 : arpspoof, fragrouter, sslstrip
[kali에서]
1] ARP Spoofing 하기
# arpspoof -t 192.168.10.135(윈도우7) 192.168.10.2(게이트웨이)
# fragrouter -B1
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 10000
# iptables -t nat -L -n
# sslstrip -k -l 10000
- 로그 확인 결과 :
- 실습 2
hsts bypass 이용한 SSL Strip 공격
- hsts란?
HSTS는 사용자가 브라우저의 주소 표시줄에 http를 사용하는 주소를 입력하는 경우에도 HTTPS 페이지를 자동으로 요청하도록 브라우저에 지시하게 하는 것.
- hsts bypass 공격?
1) Clietnt가 url 요청 시 url 이름 조작을 통해 정상 url과 유사해 보이는 url-Domain을 반환, http://wwww.google.com
2) 해당 sub-Domain에 대한 HSTS 정책이 적용되지 않아 HTST를 bypass 가능하도록 한다.
3) 클라이언트가 해당 sub-Domain 이용 시 ssl strip이 가능해진다.
- 실습 환경
1) 목표 : mitmf 도구를 활용하여 hsts bypass 하여 평문 패킷을 볼 수 있게 하여 사용자의 개인 정보를 얻어 내도록 한다.
2) 공격자 : kali, 희생자 : window7
3) 사용 툴 : mitmf
4) 공격하기
1] mitmf 설치하기
# apt-get install mitmf -y
2] mitmf 툴을 이용하여 ssl strip 공격하기
# mitmf -i eth0 --target 192.168.10.135 --gateway 192.168.10.2 --arp --spoof -hsts
3] 공격 결과
- 윈도우 PC에서 사용자가 웹 사이트 접속 시에 HTTP 프로토콜 접속 시 HSTS가 적용된 웹 사이트인 경우 자동으로 HTTPS 접속이 안되고 HTTP 프로토콜로 접속하도록 하였다.
- HTTPS가 적용되지 않은 홈페이지 :
- HTTP 프로토콜은 패킷이 암호화되어 있지 않기 때문에 공격자가 패킷을 통해 사용자가 전송 시 입력값 확인이 가능
- 현재 아이디와 패스워드가 노출됨으로 계정 탈취가 가능하게 된다.
1) G마켓
2) 다음
대응 방안
1) 사용자
- URL이 https://가 사용되는지 확인한다.
- 신뢰할 수 없는 Wifi를 지양한다.
2) 관리자
- SSL 통해 정보를 보호 구간에 강제로 HTTP 사용을 금하고 HTTPS를 사용하도록 한다
- 서버, 네트워크 트래픽이 적은 사이트의 경우 웹 사이트 전부를 SSL를 적용한다.
끝.