정의 — ARP는 왜 속기 쉬운가
같은 LAN 안에서 실제로 프레임을 주고받으려면 상대의 IP 주소가 아니라 MAC 주소가 필요하다. ARP(Address Resolution Protocol)는 그 변환, 즉 IP 주소로 MAC 주소를 알아내는 프로토콜이다. 절차는 단순하다.
- “192.168.0.1을 쓰는 사람의 MAC은?”이라는 ARP Request를 브로드캐스트한다.
- 해당 IP를 가진 호스트가 자기 MAC을 담아 ARP Reply를 보낸다.
- 응답을 ARP 캐시에 저장하고, 다음부터는 캐시를 본다(
arp -a로 확인).
문제는 이 프로토콜에 인증이 없다는 데 있다. ARP Reply에는 “내가 진짜 그 IP의 주인인가”를 증명하는 장치가 전혀 없고, 대부분의 구현은 요청하지 않았는데 날아온 Reply(gratuitous ARP)도 그대로 캐시에 반영한다. 나중에 온 응답이 먼저 있던 항목을 덮어쓴다. ARP 스푸핑은 이 설계상의 빈틈을 그대로 이용하는 공격이다.
공격 원리 — 캐시를 오염시켜 경로를 훔친다
공격자는 위조된 ARP Reply를 양쪽에 계속 뿌린다.
- 피해자에게: “게이트웨이(192.168.0.1)의 MAC은 공격자 MAC이다”
- 게이트웨이에게: “피해자(192.168.0.10)의 MAC은 공격자 MAC이다”
두 캐시가 모두 오염되면 피해자와 외부를 오가는 트래픽이 전부 공격자를 거쳐 흐른다. 전형적인 중간자 공격(MITM)이다. 이때 공격자가 받은 패킷을 원래 목적지로 다시 포워딩해주면 통신은 겉보기에 정상이라 피해자는 이상을 느끼지 못한 채 내용만 들여다보이고, 반대로 포워딩하지 않으면 통신이 끊기는 서비스 거부가 된다. 캐시 항목에는 만료 시간이 있으므로 공격자는 위조 응답을 주기적으로 재전송해 오염 상태를 유지한다.
왜 “스위치 환경”에서 이 공격이 필요한가
허브는 들어온 프레임을 모든 포트로 흘리기 때문에, 랜카드를 무차별 모드(promiscuous mode)로 두는 것만으로 남의 트래픽을 볼 수 있었다. 스위치는 MAC 주소 테이블을 보고 해당 포트로만 전달하므로 가만히 있으면 남의 트래픽이 오지 않는다. 그래서 스위치 환경의 스니핑은 경로 자체를 자기 쪽으로 끌어오는 방식이 된다. 시험에서 함께 묶여 나오는 기법이 셋이다.
| 기법 | 무엇을 속이나 | 결과 |
|---|---|---|
| ARP 스푸핑 | 호스트의 ARP 캐시 | 트래픽이 공격자를 경유 |
| 스위치 재밍(MAC 플러딩) | 스위치의 MAC 주소 테이블 | 테이블이 넘쳐 허브처럼 모든 포트로 flooding |
| ICMP 리다이렉트 | 호스트의 라우팅 경로 | 특정 목적지 트래픽이 공격자로 |
탐지와 대응
탐지의 출발점은 arp -a다. 서로 다른 IP가 같은 MAC 주소로 잡혀 있으면 오염을 의심한다. 특히 게이트웨이 IP의 MAC이 바뀌었는지가 핵심 신호다.
대응은 계층별로 나눠 외운다.
- 정적 ARP 등록: 게이트웨이나 중요 서버처럼 잘 바뀌지 않는 항목을
arp -s로 고정해 위조 응답이 덮어쓰지 못하게 한다. 확실하지만 관리 부담이 커서 대상이 제한된다. - DAI(Dynamic ARP Inspection): 스위치가 DHCP 스누핑으로 만든 IP-MAC 바인딩 테이블과 대조해, 맞지 않는 ARP 패킷을 버린다. 네트워크 장비 차원의 근본 대응이다.
- 포트 보안(Port Security): 포트당 학습할 MAC 수를 제한해 스위치 재밍을 막는다.
- 암호화(TLS·SSH): 경로가 탈취돼도 내용은 읽히지 않는다. 다만 트래픽이 공격자를 지나간다는 사실 자체는 막지 못하므로, 대응이 아니라 피해 축소로 이해해야 한다.
시험에 자주 나오는 포인트
- ARP는 IP를 MAC으로, RARP는 그 반대다. 방향을 바꿔놓은 보기가 자주 나온다.
- 근본 원인은 “ARP에 인증이 없고 요청하지 않은 응답도 캐시에 반영된다”는 것. 암호화 부재나 방화벽 미설치로 답하면 틀린다.
- 스위치 환경 스니핑 기법 3종(ARP 스푸핑·스위치 재밍·ICMP 리다이렉트)을 묶어서 묻는다.
- 스위치 재밍의 결과는 스위치가 허브처럼 동작하는 flooding 상태다.
- 대응책으로 정적 ARP 등록, DAI, DHCP 스누핑, 포트 보안이 보기로 나온다.
- 공격자가 패킷을 포워딩하면 스니핑(MITM), 포워딩하지 않으면 서비스 거부가 된다.
이 글에 대한 의견은 아래 댓글로 남겨주세요 (GitHub 계정 필요). 로그인 없이 남기고 싶다면