본문 바로가기
보안/네트워크 보안

MITM(Man In The Middle) 공격

by yeni03o_o 2020. 12. 14.

MITM(Man In The Middle) 공격: 중간자 공격

- 암호화된 통신 채널 이용으로 ARP Redirect, ICMP Redirect, ARP Spoofing이 불가해지자 등장

- 관련 도구: etterfilter, ettercap

 

 

SSH MITM

※ SSH(Secure Shell) 암호화 기법 → 전자서명 알고리즘 이용

   ① 클라이언트가 SSH 서버에게 공개키를 요청하고, SSH 접속용 공개키를 받음

   ② 클라이언트는 자신의 개인키로 데이터 암호화, 서버의 공개키로 데이터(클라이언트의 개인키와 암호화된 데이터)를 암호화하여 서버로 전송

   ③ 서버는 클라이언트로부터 수신한 암호화된 데이터(클라이언트 개인키 + 암호화된 데이터)를 자신의 개인키로 복호화한 후, 이를 다시 클라이언트의 공개키로 복호화해서 데이터를 읽음

 

※ SSH MITM 공격

   ① 클라이언트가 서버에 SSH 접속을 요청하면 공격자는 ARP Spoofing 공격 등으로 SSH 서버인 것처럼 자신의 공개키를 전송

   ② 공격자는 서버에 자신이 클라이언트인 것처럼 공개키 요청

   ③ 클라이언트가 서버에 공격자의 공개키와 자신의 개인키로 암호화된 데이터를 보냄

   ④ 공격자는 자신의 개인키와 클라이언트 공개키로 복호화하고 내용을 확인 후, 다시 자신의 개인키와 서버의 공개키로 암호화해서 서버로 전송

   ⑤ 서버가 클라이언트로 데이터를 보낼 때도 공격자는 서버가 전송한 데이터를 복호화한 후, 다시 암호화해서 클라이언트로 전송

 

 

SSL 암호화 통신

※ SSL(Secure Socket Layer): 웹서버와 브라우저 간 보안통신을 위해 만든 암호화 프로토콜

※ SSL 연결 생성 과정

   ① 클라이언트는 서버에게 지원 가능한 방식(암호, 키 교환, 서명, 압축)을 알려줌

   ② 서버는 클라이언트에게 지원 가능한 방식이 포함된 서버 인증서를 발송

   ③ 서버가 클라이언트 인증서를 요구할 경우 클라이언트 인증서를 서버로 전송

   ④ 암호화키로 사용될 세션키를 랜덤으로 생성하고, 이를 서버의 공개키로 암호화한 후 서버로 전송

   ⑤ 서버는 클라이언트에게 전송받은 세션키 복호화

   ⑥ 클라이언트는 전송된 모든 메시지에 대한 방식을 다음부터 적용할 것을 알리는 종결 메시지를 발송한 후 데이터 전송 단계로 이동

 

SSL 암호화 통신 MITM

SSL 스니핑: 서버와 클라이언트 간 인증서를 가로채는 공격

- 공격자는 임의의 인증서를 생성하고, 이를 클라이언트에게 보내 별도의 SSL 세션 생성 후 중간에서 스니핑

 

SSL 스트립

- MITM 공격을 통해 클라이언트와 서버 간의 모든 암호화된 HTTPS 데이터를 HTTP로 변조하여 클라이언트에게 전달

- SSL 스트립 과정

  ① 사용자가 웹서버 접근 시 HTTP 사용하여 로그인 시도

  ② 웹 서버는 로그인 시 SSL 통신이 이뤄지도록 사용자에게 HTTPS 유도

  ③ 공격자는 서버로부터 전달받은 URL을 HTTPS가 아닌 HTTP로 변조하여 사용자에게 전달

  ④ 사용자는 HTTP 로그인하고, 공격자는 사용자 계정 정보를 스니핑

 

 

MITM 공격 대응책

※ MITM 공격 보안 대책

   - SSH MITM 공격: SSL 2.0 사용

   - 안전하지 않은 인증서는 확실하지 않으면 접속하지 않기

 

※ SSL 스트립 공격 보안 대책

   - HSTS(Http Strict Transport Security)

   - 본인이 접속한 사이트가 SSL로 정상적으로 접속되고 있는지 확인

 

 

 

공부하면서 학습 목적으로 작성한 포스팅이므로 내용이 완전하지 않습니다ㅠ 
계속해서 학습 후 지식이 좀 더 쌓이면 수시로 수정해나갈 예정입니다! 
틀린 내용은 둥글게 댓글 달아주시면 빠른 확인 후 수정하겠습니다. :)

 

댓글