ARP
ARP(Address Resolution Protocol)은 RFC 826의 규격에 따라 IP 주소를 보내어 통신을 하고자 하는 상대방의 MAC 주소를 알아오는 프로토콜이다.
송신자가 ARP Request 구조(송신자의 물리 주소, 송신자 IP주소, 00-00-00-00-00, 수신자 IP 주소 등)를 브로드캐스트 방식으로 보내면 수신자가 ARP Reply 구조로 유니캐스트 방식으로 응답하여 MAC 주소를 받으면 패킷을 교환할 경로를 인식할 수 있다.
ARP 패킷은 네트워크 접속 전 반드시 보내야 하는 패킷이기 때문에 만약 ARP 패킷을 보내는 중간에 누군가 패킷을 가로채셔 자신이 IP 주소 소유자라고 속이면 송신자 입장에서 알 방법이 없다. 이런 유형의 해킹 기법을 ARP 스푸핑(ARP Spoofing)이라고 하지만, 전역 네트워크인 WAN이 아닌 LAN 단계에서 라우터(또는 인터넷 공유기)나 상대 컴퓨터에 패킷이 도착하기도 전에 가로채야만 성공할 수 있는 근거리 공격이라는 한계가 있다.
예를 들어 평범한 무선공유기로 인터넷을 할 때 ARP 스푸핑을 하려면 무려 공유기에 패킷을 담은 신호 전파가 도착하여 응답하기도 전에 다른 컴퓨터/공유기로 가로채야 하고, 유선 인터넷이면 통신사가 동네 어딘가 설치한 집 근처 라우터보다 더 가까운 거리에서 패킷을 가로채고 응답해야 한다. 그래서 일반 대중을 상대로 이런 공격을 하기엔 난이도가 하늘을 찌르므로 보통 ARP 스푸핑을 당했다고 하면 주로 높은 가치의 데이터들이 모여있는 데이터센터에 물리적으로 침투해서 스푸핑을 위한 장치를 어딘가 숨겨두거나 데이터센터 내에 악성 소프트웨어에 감염된 다른 컴퓨터(혹은 재택근무를 시행한다고 아무 생각 없이 인터넷에 회사 사설망이 노출된 무개념 상황인 경우)가 자신이 라우터인 것처럼 속이는 형태로 성공시키는 경우가 많다. 그마저도 실제 공격 성공으로 이어지기는 다른 유형의 해킹에 비해 힘든 편이다.
이에 대한 대처법으로는 ARP 테이블을 정해진 MAC을 가진 컴퓨터의 응답만 받도록 고정하거나, 약속된 승리의 VPN으로 패킷을 암호화해 원하는 상대 컴퓨터만 알아볼 수 있게 처리하는 것이 있다.
ARP 패킷 구조
Ethernet Layer 2 Packet 기준 Data 부분에 다음 형태의 데이터가 들어간다. IPv4 기준이고, 송수신자가 서로의 정보만 맞바꾼 동일한 구조의 패킷으로 통신한다.
| Hardware Type(16bit, 이더넷의 경우 1) | Protocol Type(16bit, IPv4의 경우 0x0800) | |
| Hardware Length(8bit) | Protocol Length(8bit) | Operation(16bit, ARP Request는 1, ARP Reply는 2) |
| Sender MAC Address(32bit) | ||
| Sender IP Address(32bit) | ||
| Receiver MAC Address(32bit, ARP Request의 경우 이 부분을 0으로 채운다) | ||
| Receiver IP Address(32bit) | ||