암호화되지 않은 통신은 같은 네트워크의 누구나 읽을 수 있습니다.
6강에서 HTTPS 가 통신을 암호화한다고 했습니다. 그럼 암호화하지 않으면
정확히 무슨 일이 벌어질까요? 이번 강의는 도청을 직접 봅니다.
같은 카페 와이파이, 같은 사무실 랜 — 같은 네트워크에 있는 사람은
남의 트래픽을 엿볼 수 있습니다. 어떻게 가능한지, 그리고 왜 HTTPS 가 그걸 막는지 봅시다.
평문은 그대로 보입니다
먼저 tcpdump 로 우리 서버를 지나는 패킷을 들여다봅시다.
80 포트(http)와 443 포트(https)가 어떻게 다르게 보이는지 비교하는 게 핵심입니다.
GET 요청과 응답 본문이 글자 그대로 보입니다.
🖥️ 내 가상 서버
브라우저 안에서 실행 (계산용)
암호화되어 내용을 볼 수 없습니다 — 이것이 HTTPS 의 효과.
🖥️ 내 가상 서버
브라우저 안에서 실행 (계산용)
ARP 스푸핑 — '내가 게이트웨이다'라는 거짓말
그런데 공격자는 어떻게 남의 트래픽을 자기 쪽으로 끌어올까요?
여기서 ARP 의 약점이 등장합니다. ARP 는 "그 IP 주소 쓰는 사람 누구예요?"라고
네트워크에 묻는 규약인데, 인증이 없습니다. 아무나 "저요!" 하고 답할 수 있어요.
공격자가 "게이트웨이는 내 MAC 이야"라고 계속 방송하면, 같은 랜의 장비들이
인터넷으로 나가는 패킷을 공격자에게 보냅니다. 이것이 중간자(MITM)예요.
'게이트웨이는 내 MAC' 이라는 거짓 방송이 나갑니다.
한 MAC 이 두 IP 를 갖고 있으면 스푸핑입니다.
🖥️ 내 가상 서버
브라우저 안에서 실행 (계산용)
그래서, 어디서나 HTTPS
도청과 중간자를 막는 근본 방어는 암호화입니다. 공격자가 트래픽을 자기 쪽으로
끌어와도, 내용이 HTTPS 로 암호화돼 있으면 읽지도 바꾸지도 못해요.
게다가 인증서(6강) 덕분에 공격자가 가짜 서버로 위장해도 이름이 안 맞아 브라우저가 경고합니다.
ARP 스푸핑 자체를 줄이려면 스위치의 Dynamic ARP Inspection 같은 기능도 있지만,
현실적으로 가장 확실한 방어는 "어차피 다 암호화돼 있어서 훔쳐도 소용없게" 만드는 것입니다.
🤔 확인 문제
공격자가 ARP 스푸핑으로 내 트래픽을 전부 자기 쪽으로 끌어갔습니다. 하지만 나는 모든 사이트를 HTTPS 로만 씁니다. 공격자는?
해설 중간자가 되어도 내용이 HTTPS 로 암호화돼 있으면 못 읽습니다. 게다가 가짜 서버로 위장하면 인증서 이름이 안 맞아 브라우저가 경고해요. 그래서 '어디서나 HTTPS'가 강력한 겁니다.
🤔 확인 문제
ARP 스푸핑이 가능한 근본 원인은?
해설 ARP 에는 인증이 없습니다. '그 IP 누구세요?'에 아무나 '저요'라고 답할 수 있어요. 1980년대에 설계된 규약이라 그렇습니다. HTTPS 는 스푸핑을 막지는 못하지만 그 결과를 무력화합니다.