706. 중간자 공격 (MitM, Man-in-the-Middle) 도청 흐름과 통제 조치 (HSTS)
핵심 인사이트: 앨리스가 밥과 편지를 주고받고 있다. 그런데 우체부(해커)가 몰래 편지를 뜯어보고, 심지어 내용을 "1만 원 송금"에서 "100만 원 송금"으로 바꿔서 전달한다. 앨리스와 밥은 중간에 우체부가 껴있는 줄 꿈에도 모르고 서로 대화하고 있다고 철썩같이 믿는다. 이것이 인터넷 역사상 가장 교묘하고 막기 힘든 환영(Illusion) 공격, '중간자 공격(MitM)'이다.
Ⅰ. 중간자 공격 (MitM)의 개념
- 개념: 네트워크 통신을 하는 두 주체(클라이언트와 서버) 사이에 해커가 몰래 끼어들어, 서로가 상대방과 직접 연결되어 있다고 착각하게 만든 뒤, 중간에서 모든 트래픽을 가로채 도청(Sniffing), 변조(Tampering), 가짜 데이터 주입(Injection)을 수행하는 극악의 해킹 기법입니다.
- 앞서 배운 703번(ARP 스푸핑)과 705번(DNS 스푸핑)이 결국 이 중간자(MitM)의 위치를 차지하기 위해 쓰는 대표적인 낚시 수법들입니다.
Ⅱ. MitM 공격의 시나리오 흐름
- 가로채기: 해커 다스가 ARP 스푸핑을 써서 앨리스의 컴퓨터를 속여, 네이버로 가는 패킷이 자기(다스)에게 오도록 만듭니다.
- 대리 통신 (프록시 행세): 다스는 앨리스에게 받은 요청을 자기가 네이버인 척 열어보고, 다시 자기가 앨리스인 척 네이버 서버에 전달합니다.
- 조작 및 전달: 네이버가 주는 정상적인 응답 패킷을 다스가 먼저 받아서 안에 악성코드를 섞거나 금액을 바꾼 뒤 앨리스에게 넘깁니다. 앨리스는 화면에 뜬 네이버 로고를 보고 해킹당하는 줄 꿈에도 모릅니다.
Ⅲ. MitM의 가장 강력한 방패: TLS(HTTPS) 암호화 검증 🌟
중간자가 패킷을 가로채더라도 뜯어보지 못하게 하려면 데이터를 **HTTPS(TLS)**로 완벽하게 암호화해야 합니다.
- 해커의 가짜 인증서 공격: 해커가 중간에서 가짜 네이버 인증서를 만들어서 앨리스에게 던지면 어떻게 될까요?
- PKI의 위력: 앨리스의 브라우저는 그 가짜 인증서를 보자마자 "어? 이 인증서에는 글로벌 최상위 기관(Root CA)의 도장(서명)이 안 찍혀있잖아? 이거 가짜다!"라며 새빨간 경고창(ERR_CERT_AUTHORITY_INVALID)을 띄우고 접속을 아예 차단해 버려 해커의 MitM을 처참히 분쇄합니다. (676번 문서 참조)
Ⅳ. 해커의 발악: SSL Stripping (다운그레이드 공격)과 HSTS 방어 기법 🌟
하지만 해커도 만만치 않습니다. 사용자가 주소창에 귀찮아서 naver.com만 치면 브라우저는 일단 기본적으로 암호화가 안 된 평문 통신인 http://naver.com으로 먼저 접속을 시도한다는 허점을 노립니다.
- SSL Stripping 공격: 해커가 이 첫 번째
http://접속 요청을 중간에서 낚아챈 뒤, 자신이 네이버와 대신https://보안 통신을 맺고, 사용자에게는 영원히 암호화되지 않은 낡은http://화면만 던져줍니다. 사용자는 자물쇠 마크가 없는지도 모르고 평문으로 비밀번호를 갖다 바칩니다. - 궁극의 통제 조치 (HSTS, HTTP Strict Transport Security):
- 웹서버가 응답 헤더에
Strict-Transport-Security라는 명령을 달아서 보냅니다. - 이 명령을 받은 내 크롬 브라우저는 기억해 둡니다. "아! 네이버는 앞으로 1년 동안 무조건
https://로만 접속해야 하는 사이트구나!" - 다음 날 내가 실수로 주소창에 평문
http://naver.com을 쳐도, 브라우저 자체가 내부에서 강제로https://로 주소를 뜯어고친 뒤 발송해 버립니다. 해커가 중간에서 평문 요청을 가로채려던 꼼수(SSL Stripping)가 100% 무력화되는 완벽한 방어막입니다.
- 웹서버가 응답 헤더에
📢 섹션 요약 비유: 중간자 공격(MitM)은 이산가족이 북한에 보낸 편지를, 중간 배달부(브로커)가 마음대로 다 뜯어보고 "나 돈 더 필요해"라고 위조해서 상대에게 넘겨 사기를 치는 짓입니다. 이를 막기 위해 우리는 편지를 철제 금고(HTTPS)에 담고 자물쇠를 채워 보냅니다. 배달부가 금고를 부수고 자기가 만든 허접한 가짜 플라스틱 상자에 편지를 담아 가족에게 건네려(SSL Stripping) 하겠지만, 가족들은 "우리 집은 무조건 강철 금고(HSTS 설정)로만 대화하기로 약속했어! 플라스틱 상자 가져온 넌 가짜다!"라며 배달부의 사기극을 문전에서 박살 내버립니다.