본문 바로가기
cs

[정보보안] arp spoofing (arp 스푸핑)

by 최연탄 2016. 5. 10.
728x90
반응형

address resolution protocol(arp)는 tcp/ip의 주요한 프로토콜로 ip 주소의 물리적 주소(mac address)를 알아낼 목적으로 만들어졌습니다. application 레이어의 네트워크 프로그램은 ip 주소를 사용해 다른 호스트와 통신하는 반면 datalink 레이어는 네트워크 카드에 영구적으로 각인되어있는 물리적 주소를 사용합니다. 패킷 포멧은 다음과 같습니다.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  HW type = 0x0001 (Ethernet)  |    Protocol type = 0x0800     |
+---------------+---------------+---------------+---------------+
|  HW len = 6   | Proto len = 4 |Opcode (1 = Request, 2 = Reply)|
+---------------+---------------+---------------+---------------+
|                       Sender MAC address                      |
+-                              +---------------+---------------+
|                               |       Sender IP address       |
+---------------+---------------+---------------+---------------+
|       Sender IP address       |                               |
+---------------+---------------+                               +
|                       Target MAC address                      |
+---------------+---------------+---------------+---------------+
|                       Target IP address                       |
+---------------+---------------+---------------+---------------+


동작방법

  • step 1: 어떤 호스트가 다른 호스트와 통신을 하려할 때 먼저 목적지의 mac 주소가 캐시에 남아있는지 arp cache table을 찾아봅니다. 만약 목적지의 mac 주소가 캐시에 남아있다면 바로 그 정보로 통신을 시작합니다.
  • step 2: 로컬 캐시에 mac 정보가 존재하지 않는다면 arp 요청 메시지를 만듭니다. 이 메시지에는 로컬 호스트의 mac 주소, ip 주소를 채워넣고 목적지의 ip 주소까지만 채웁니다. 알아내고자 하는 것이 목적지의 mac 주소이므로 목적지 mac 주소는 공란으로 남겨둡니다. 
  • step 3: 패킷이 만들어졌으면 로컬 네트워크에 arp 요청을 브로드캐스트합니다.
  • step 4: 로컬 네트워크의 모든 호스트는 arp 요청을 받고 패킷의 내용인 'target ip address'와 본인의 ip 주소를 비교하여 같지 않으면 패킷을 버리고 아무런 동작을 하지 않습니다.
  • step 5: arp 요청의 'target ip address'와 본인의 ip 주소가 같은 호스트에서는 arp 요청의 응답 메시지를 만듭니다. 응답 메시지는 요청 메시지의 내용과 공란으로 남겨뒀던 목적지의 mac 주소를 모두 채워 만듭니다.
  • step 6: arp 요청의 목적지에 해당하는 호스트는 arp 요청을 보낸 호스트의 정보를 캐시에 저장합니다. 이유는 곧 있으면 arp 요청한 호스트와 통신을 해야하기 때문입니다.
  • step 7: 목적지 호스트는 브로드캐스트 하지 않고 요청을 한 호스트에게만 arp 응답 메시지를 보냅니다.
  • step 8: 요청을 보낸 호스트는 응답을 받고 목적지의 mac 주소를 arp 캐시에 저장합니다.

취약점

arp 프로토콜은 stateless 프로토콜(모든 요청을 이전 요청과 관련 없이 독립 트랜잭션으로 취급)이기 때문에 로컬 네트워크의 모든 호스트는 누가 요청을 보냈는지에 상관없이 자동적으로 캐시를 하게 됩니다. 또한 arp 응답을 받아 캐시 업데이트를 한 이후에 또다른 arp 응답이 온다면 덮어쓰기를 하게 됩니다. arp 프로토콜은 어떤 호스트가 패킷을 보냈는지에 대한 인증수단을 제공하지 않기 때문에 취약점이 생기고 이로인해 arp 스푸핑이 가능하게 됩니다.

여기서 arp 스푸핑은 arp cache poisoning, arp poison routing 등으로도 불리는데 arp 스푸핑의 기본 원리는 앞에 언급된 취약점을 이용해 변조된 arp 메시지를 로컬 네트워크에 전송하는 것 입니다. 이러한 공격의 일반적인 목적은 공격 대상을 몰래 감시하거나 데이터를 변조하여 포워딩하기 위해 트래픽을 공격자의 호스트로 흘러들어오게 하는 것 입니다. 


방어

  • arp 항목의 정적 관리: arp 항목을 자동으로 캐시하지 못하게 관리자가 정적으로 입력하여 제 삼자의 개입이 어렵게 할 수 있습니다.
  • arp 스푸핑 탐지 소프트웨어: arp 스푸핑을 탐지하는 소프트웨어는 일반적으로 arp 응답에 인증수단이나 크로스체크하는 방법을 이용합니다. 이런 기술은 개별 호스트에 구현될 수도 있고 이더넷 스위치나 네트워크 장비에 통합될 수 있습니다.
  • 운영체제 보안: os 마다 다릅니다. 리눅스는 원치않는 응답은 무시하고 솔라리스는 타임아웃이 지난 다음에 캐시 업데이트를 합니다.


반응형

댓글