ARP
ARP(에이알피)는 "Address Resolution Protocol"의 약자로서, 인터넷 주소 결정 프로토콜이다. 네트워크 계층 주소와 링크 계층 주소 사이의 변환을 담당한다.
[아사달] 스마트 호스팅 |
목차
상세
ARP는 네트워크 계층 주소를 물리 주소로 변환하기 위해 사용된다. 인터넷 상에서 호스트 간의 전송은 IP 주소를 기반으로 이루어진다. 송신 호스트는 수신 호스트의 IP 주소를 이용해 데이터 송신을 시도한다. 이때 실제 송신 호스트의 송신 어댑터에서는 IP 패킷을 포함하고 있는 링크 계층 프레임을 구성한다. 링크 계층은 하나의 노드와 다음 노드 사이의 데이터 전송을 담당한다. 링크 계층 프레임은 IP주소가 아닌 목적지의 MAC 주소를 포함해야 한다. 이를 위해 송신 호스트는 자신의 네트워크 어댑터 내의 ARP 모듈에게 목적지의 IP 주소에 대해 질의하고 ARP 모듈은 이에 대응하는 MAC 주소로 응답한다.
각각의 호스트 및 라우터는 목적지 호스트에 대한 MAC 주소를 알아내기 위해 매번 ARP 질의 패킷을 구성하여 IP주소에 해당하는 물리주소 변환을 요청할 수 있다. 하지만 이러한 작업은 네트워크에 많은 부하를 발생시키므로 대부분 네트워크 어댑터의 메모리 내에 ARP 캐시 테이블을 유지하고 있다. 이 테이블은 [IP 주소, MAC 주소, TTL]의 세 가지 항목을 포함한다. TTL 값은 각각의 IP주소 – MAC 주소 간 매핑이 언제 삭제 되는지를 나타내는 값이다. 테이블의 크기는 제한되어 있는 반면, 통신할 목적지 IP 주소는 대단히 많기 때문에 모든 주소에 대해 MAC 주소 매핑을 유지할 수 없다. 또한 네트워크 기기의 IP주소가 때때로 변경될 수 있으므로 이를 반영할 수 있도록 ARP 프로토콜은 일반적으로 TTL 값이 지난 엔트리를 제거하여 테이블의 내용을 새로이 갱신한다.
송신 호스트는 전송하고자 하는 수신 호스트의 IP 주소에 대한 MAC 주소를 ARP 테이블로부터 찾아 이를 이용해 데이터그램을 구성한다. 만약 ARP 테이블에 목적지에 대한 매핑 엔트리가 없다면, 이 경우 송신 노드는 ARP 프로토콜을 사용하여 ARP 질의 패킷을 구성한다. ARP 패킷은 송신 및 수신 호스트의 IP 주소와 MAC 주소를 포함하는 필드를 가진다. 송신 호스트는 자신의 어댑터에게 MAC 브로드캐스트 주소(FF-FF-FF-FF-FF-FF)로 ARP질의 패킷을 전송하도록 하여 서브넷 상의 모든 호스트 및 라우터에게 목적지 IP 주소에 해당하는 MAC 주소에 대해 질의한다. 서브넷 상의 모든 호스트들은 이 ARP 질의 패킷을 수신한 후, 자신의 ARP 모듈로 전달한다. 각각의 ARP 모듈은 질의 패킷 내의 목적지 IP 주소가 자신과 일치하는지 검사한 후, 일치한다면 자신의 MAC 주소를 포함한 ARP 응답 패킷을 돌려보낸다. 송신 호스트는 이 목적지 MAC 주소를 이용해 자신의 ARP 테이블을 수정한다. 그 후 테이블 내의 IP 주소 – MAC 주소의 매핑 정보를 이용해 IP 패킷을 전송한다.
ARP는 동일한 서브넷 상에 있는 호스트나 라우터 인터페이스의 IP 주소에 대해서만 주소 변환을 제공한다. 즉, 다른 서브넷 상의 IP 주소에 대응하는 물리 주소를 알아내고자 한다면 ARP는 오류 메시지를 반환한다. 따라서 송신 호스트가 라우터 외부의 다른 서브넷 상의 호스트로 데이터 패킷을 전송하고자 하는 경우 내부적으로 다음과 같이 처리된다. 송신 호스트가 서브넷 상의 라우터의 MAC 주소를 이용하여 송신자로부터 목적지로의 경로 상에 있는 첫 번째 라우터로 우선 전달된다. 패킷을 수신한 라우터는 포워딩 기능을 이용해 이를 목적지 서브넷 상으로 전달하며, ARP 프로토콜을 이용하여 최종 목적지의 MAC 주소를 알아내 패킷을 구성한 후 목적지 호스트로 전송한다.[1]
필요성
네트워크 환경에서 임의의 호스트가 다른 호스트에 데이터를 전송하려면 수신 호스트의 IP 주소뿐만 아니라, MAC 주소도 알아야 한다. 수신 호스트의 IP 주소는 보통 응용 프로그램 사용자가 프로그램을 실행하는 과정에서 직접 입력하므로, IP 주소로부터 수신 호스트 MAC 주소를 얻는 작업이 추가로 필요하다.
MAC 주소
IP 프로토콜 헤더에서 필요한 송신 호스트 IP 주소, 수신 호스트 IP 주소와 함께 MAC 계층에서도 송신 호스트 MAC 주소, 수신 호스트 MAC 주소가 필요하다. 송신 호스트의 IP 주소는 자신의 하드 디스크에 보관되어 있으므로 손쉽게 구할 수 있다. 또한 수신 호스트의 IP 주소는 사용자가 접속하고자 하는 호스트의 IP 주소를 지정해준다. 사용자는 일반적으로 도메인 이름을 입력하는데, 도메인 이름은 DNS 서비스를 통해 IP 주소로 쉽게 변환할 수 있다. MAC 주소의 경우 송신 호스트 MAC 주소는 자신의 LAN 카드에 내장되므로 이 값을 읽으면 된다. 문제는 수신 호스트 MAC 주소다. 그림처럼 송신 호스트의 내부 정보로는 얻을 수 없다. 따라서 수신 호스트의 IP 주소를 매개변수로 하여 ARP 기능을 통해 수신 호스트 MAC 주소를 얻어야 한다.
IP 주소로부터 MAC 주소를 얻는 기능은 ARP(Address Resolution Protocol)를 통해 이루어진다. 예를 들어, 호스트 A가 호스트 B의 MAC 주소를 얻으려면 ARP request라는 특수 패킷을 브로드캐스팅해야 한다. ARP request 패킷을 네트워크의 모든 호스트가 수신하지만, 관계없는 호스트는 패킷을 무시하고 호스트 B만 IP 주소가 자신의 IP 주소와 동일함을 인지한다. 따라서 호스트 B는 ARP 리플라이(reply) 패킷을 사용해 자신의 MAC 주소를 호스트 A에 회신한다. 데이터를 전송할 때마다 ARP를 사용하여 패킷을 브로드캐스팅하면 네트워크 트래픽이 증가한다. 따라서 ARP를 사용하는 호스트에서는 가장 최근에 얻은 IP 주소와 MAC 주소 매핑 값을 보관하는 캐시 정보를 이용한다. 또한 송신 호스트가 ARP request 패킷을 브로드캐스팅하는 과정에서 패킷을 수신한 모든 호스트는 송신 호스트 IP 주소와 MAC 주소 매핑 값을 자동으로 얻을 수 있다. 이와 같은 방식으로 ARP 트래픽에 의한 네트워크 부하를 최소화할 수 있다.[2]
RARP
ARP는 IP 주소를 이용해 해당 호스트의 MAC 주소를 제공하는 역할을 한다. 이와 유사한 기능을 수행하는 프로토콜인 RARP(Reverse Address Resolution Protocol)는 반대로 MAC 주소를 이용해 IP 주소를 제공한다. 디스크가 존재하지 않는 시스템이나 X윈도우 터미널 등에서는 자신의 LAN 카드 정보를 읽어 MAC 주소를 얻을 수 있지만, 파일시스템이 없으므로 IP 주소를 보관할 방법이 없다. 이런 경우 자신의 MAC 주소와 IP 주소의 매핑 값을 보관하는 호스트로부터 IP 주소를 얻어야 한다. 하드 디스크가 없는 호스트에서는 송신 호스트 IP의 주소를 보관할 방법이 없다. 따라서 LAN 카드에 내장된 MAC 주소를 매개변수로 하여 RARP 기능을 수행함으로써 자신의 IP 주소를 얻어야 한다.
IP 주소를 얻고자 하는 호스트에서는 MAC 주소를 매개변수로 하여 패킷을 브로드캐스팅한다. 보통 네트워크에는 RARP의 기능을 전담으로 수행하는 서버가 하나 이상 존재한다. 따라서 모든 호스트가 RARP 변환 요청을 받아도 해당 정보를 보관하고 있는 RARP 서버만 응답을 수행할 수 있다. 디스크가 존재하지 않는 시스템에서는 위와 같은 기능을 통해 자신의 IP 주소를 얻은 다음, 미리 정해진 호스트로부터 자신의 부트 이미지(예: 시스템 운영체제)를 다운로드받는다. 따라서 이러한 시스템은 ROM 등의 비활성 메모리에 다른 호스트와 통신하여 필요한 부트 이미지를 수신할 수 있는 TFTP 등의 기본 프로토콜이 존재한다.[2]
보안 문제
ARP 스푸핑
ARP 스푸핑(ARP spoofing)은 근거리 통신망(LAN) 하에서 주소 결정 프로토콜(ARP) 메시지를 이용하여 상대방의 데이터 패킷을 중간에서 가로채는 중간자 공격 기법이다. ARP란 맥(MAC) 주소를 아이피(IP)로 변환하는 프로토콜로서 ARP 스푸핑 공격은 통신하는 두 대사의 MAC 주소를 공격자 자신의 MAC 주소로 바뀌어 중간에서 패킷을 가로채는 공격이다. 쉽게 예를 들자면, 통신 중에 있는 A와 B의 정보가 궁금한 해커는 ARP 스푸핑 공격을 하기로 결심한다. 해커는 A와 B의 통신 중간에 들어가, A와 B에게 각각 자신의 MAC 주소를 알려준다. 이렇게 되면 A와 B는 해커를 서로 통신하는 대상으로 인식하여 해커에게 통신정보를 전송하게 되며, A와 B의 통신내용을 해커가 모두 볼 수 있게 된다. 또한 통신 내용을 보고나서다시 그 정보를 원래 목적지로 보내거나, 패킷을 일부 변조하여 보낼 수도 있다. 패킷을 변조해서 보내는 경우에는 보통 목적지 PC를 감염시켜 좀비PC로 만들기 위해서다.[3] ARP 스푸핑 기법을 사용한 공격의 경우 특별한 이상 증상이 쉽게 나타나지 않기 때문에 사용자는 특별한 도구를 사용하지 않는 이상 쉽게 자신이 공격당하고 있다는 사실을 확인하기 힘들다.
공격 절차
공격자가 피해자 시스템에 대한 ARP 응답 요청이 있는 경우, 요청자에게 시스템을 대신하여 시스템 주소와 공격자의 맥 주소를 이용하여 동일 랜상의 모든 시스템에게 ARP 리플(ARP Reply)을 응답한다. 동일 랜상의 모든 다른 시스템의 ARP 캐시 테이블에는 피해자 시스템에 대해 공격자의 맥 주소가 매핑되어 향후 피해자 시스템으로 유입되는 모든 데이터 정보는 공격자에게 전달된다. 공격자는 주기적으로 자신의 조작된 ARP 응답메시지를 보내어 시스템들의 변조된 ARP 캐시 테이블이 계속 유지될 수 있게 한다.
공격 기능
- 그라튜터스 ARP(Gratuitous ARP) : ARP에는 그라튜터스라는 기능이 있는데, 이를 통해 ARP 요청 메시지 없이도 ARP 응답 메시지 형태를 보낼 수 있고, 일반적인 ARP 응답 메시지와는 다르게 ARP 응답 메시지를 브로드캐스트(broadcast) 하게 된다. 이 메시지를 수신한 동일 랜 상의 모든 시스템은 자신의 ARP 테이블에 해당 아이피 및 맥페어(MAC pair) 정보를 저장하게 된다. 이러한 기능은 본래 자신의 아이피 및 맥 정보를 동일 랜 상의 시스템에 알리기 위한 용도로 사용되고 있으나, 동일 랜 상의 모든 시스템에 거짓된 ARP 캐시 포이즌(APR Cache Poison)을 위해서 활용되기도 한다.
- 중간자 공격(man in the middle attack, MITM) : ARP 스푸핑은 일반적으로 중간자 공격을 수반하여 동일 랜 상에서 공격대상 시스템에 오고 가는 통신 내용을 스니핑(sniffing) 하기 위해 악용된다. 중간자 공격을 이용해서 스니핑뿐만 아니라 데이터 변조 과정이 충분히 가능하고, 암호화 통신 사이에 위치해 평문화된 내용의 정보를 가로채 갈 수도 있다. 공격자 C와 시스템 A, B가 있는 경우 공격 절차는 다음과 같다.
- 공격자 C는 시스템 A와 시스템 B의 아이피 및 맥페어를 확보한다. 공격자는 시스템 A와 B사이에서 정상적인 통신을 수행하게 된다.
- ARP 스푸핑을 이용한 중간자 공격을 수행한다.(시스템 A에게는 시스템 B의 IP주소와 공격자 자신의 맥 주소로 위조하여 전달, 시스템 B에게는 시스템 A의 IP주소와 공격자 자신의 맥 주소로 위조하여 전달)
- 시스템 A, B의 ARP Cache 테이블에는 시스템 A, B의 아이피주소와 함께 공격자의 맥 정보가 저장된다.
- 공격자 C는 2의 과정을 일정시간마다 반복적으로 수행하여 시스템 A, B의 변조된 ARP 정보를 유지한다.
- 공격자 C는 시스템 A와 B의 사이에 위치하여 해당 시스템 간의 모든 네트워크 트래픽을 스니핑 및 변조를 통해 2차 공격을 감행한다.
- - VoIP 도청 : 데이터 스니핑 후 음성트래픽 재생
- - 파밍(Pharming)공격 : DNS 요청 및 응답 변조
- - 개인정보 탈취 : 데이터 스니핑 후 로그 분석
- - 악성코드 유포 : http redirection 혹은 if-ame injection 수행[4]
피해증상
만약 아래와 같은 문제점이 있다면 ARP 스푸핑을 의심해보아야 한다.
- 잘 되던 사이트가 갑자기 먹통이 되거나 아예 안 뜨진 않지만 제대로 동작하지 않는다.
- 특정 사이트에서 로그인이 되지 않거나 되다 안되다 반복한다.
- 특정 페이지에서 페이지에 오류가 있습니다 라고 뜬다. 혹은 스크립트 오류 발견 등이 뜬다.
- 액티브 X 를 사용하는 페이지에서, 이유 없이 오류가 나거나 액티브 X를 재설치하라는 문구가 계속 뜬다. 이때 액티브 X를 삭제 후 재설치 해도 해결이 안되거나 되다 안 되다 반복한다.
- 특정 사이트가 이유없이 깨져서 나타난다. 특히 인코딩이 깨진 것 처럼 외계어만 나타나는 경우가 많다.
- 윈도우 업데이트가 실패한다.
- 이런 증상들이 나타나면서 바이러스나 악성코드 진단 시에는 이상이 없다.
- 인터넷 속도가 느려진다.[5]
각주
- ↑ 〈ARP ( Address Resolution Protocol )〉, 《두산백과》
- ↑ 2.0 2.1 박기현 교수, 〈데이터 통신과 컴퓨터 네트워크 - ARP〉, 《한빛아카데미㈜》, 2013-09-10
- ↑ 〈ARP 스푸핑 공격이란 무엇인가요?〉, 《이스트시큐리티》, 2013-01-12
- ↑ ssan, 〈ARP Spoofing〉, 《네이버 블로그》, 2010-02-23
- ↑ 〈ARP 스푸핑〉, 《나무위키》
참고자료
- 〈ARP ( Address Resolution Protocol )〉, 《두산백과》
- 〈ARP 스푸핑〉, 《나무위키》
- ssan, 〈ARP Spoofing〉, 《네이버 블로그》, 2010-02-23
- 〈ARP 스푸핑 공격이란 무엇인가요?〉, 《이스트시큐리티》, 2013-01-12
- 박기현 교수, 〈데이터 통신과 컴퓨터 네트워크 - ARP〉, 《한빛아카데미㈜》, 2013-09-10
같이 보기