본문 바로가기
Study Log

ARP 동작 방식 + ARP Spoofing

by 꼬마인간 2020. 4. 7.

ARP (Address Resolution Protocol, 주소 결정 프로토콜)

 

IP 주소를 물리적 네트워크 주소(Mac address)로 대응 시키기 위해 사용되는 프토로콜

 

2.5계층이라고도 한다 -> 3계층인 ip 주소를 2계층인 MAC 주소로 바꿔주는 특성

 

호스트 A -> 호스트 B

A의 Mac address, A의 ip, 브로드케스트 주소, B의 ip

응답으로

A의 Mac address, A의 ip, B의 Mac address, B의 ip

 

 

이런 방식으로 수집된 ip주소와 대응하는 Mac address는 각 호스트의 arp 캐시라는 메모리에 테이블 형태로 저장된 다음 패킷을 전송할 때에 다시 사용한다. 이는 ARP protocol은 브로드캐스트 방식으로 보내기 때문에 cpu interrupt를 발생시켜 부하를 일으키기 때문에 table에 일정 시간 저정해두고 쓰는것!

arp -a로 테이블을 살펴보면 dynamic과 static이 있는데, dynamic은 arp 프로토콜로 알아온 것, static은 수동으로 입력한 것이다.

 

만약 자신이 속한 네트워크 밖에 있는 호스트의 MAC address를 모른다면 라우터가 이를 대신 해결하는데,

우선 라우터는 데이터 포워딩 테이블을 보고 정보가 있다면 대신 대답해준다.

테이블에 해당 정보가 없을 경우 우선 자신(라우터)의 MAC address를 적어서 대답한다.

그러면 라우터의 MAC address가 default Gateway로 지정되고 default Gateway를 목적지 MAC address에 적어서 보낸다. (Gateway가 설정되어있으면 arp response를 받지 못하면 게이트웨이를 목적지 ip로 하여 

라우터는 패킷을 전달할 때 출발지

라우터는 전달해야되는 패킷에 대해 이전과 같은 방식으로 ARP 패킷을 보낸다.

목적지에 도착할 때 까지 송신지와 수신지의 MAC address가 바뀐다. ip는 그대로!!

 

 

+) ARP request는 브로드캐스트지만 ARP response는 유니캐스트이다)

+) ARP는 같은 네트워크 상에서만 동작하기 때문에 게이트웨이 주소로 패킷을 전송하는것! 그러면 라우터(게이트웨이)가 포워딩 기능을 사용하여 목적지 서브넷까지 전달하고, 최종 라우터에서 다시 한번 ARP 프로토콜로 목적지의 MAC 주소를 알아내서 구성한다.

+) 게이트웨이

 

ARP Header

  • Hardware Type (HTYPE) : 네트워크 유형을 정의하며, Ethernet 환경의 경우 0x0001 으로 세팅
  • Protocol Type (PTYPE) : 프로토콜을 정의하며, IP 프로토콜 버전4(IPv4)의 경우 0x0800 세팅
  • Hardware Length (HLEN) : MAC주소의 길이를 정의하며, Ethernet 환경의 경우 6 byte 세팅
  • Protocol Length (PLEN) : 프로토콜의 길이를 정의하며, IPv4 의 경우 4 byte 세팅
  • Operation (OPER) : 패킷의 유형이며, ARP 요청(ARP Request)의 경우 1, ARP 응답 (ARP Reply)의 경우 2 세팅
  • Sender Hardware Address (SHA) : 발신자의 MAC 주소 세팅
  • Sender Protocol Address (SPA) : 발신자 IP 주소 세팅
  • Target Hardware Address (THA) : 목적지 MAC 주소, 그러나 ARP Request 의 경우 알 수 없음
  • Target Protocol Address (TPA) : 목적지 IP 주소 세팅

보안 문제

ARP 정보는 누가 보냈는지를 검증할 수 있는 수단이 없기 때문에, 만약 같은 네트워크 상에 있는 사용자가 변조된 정보를 보낼 경우 그 정보를 받은 사용자는 잘못된 맥 주소로 패킷을 보내게 된다. 이를 이용한 공격에는 ARP 스푸핑이 있다.

 

ARP spoofing

-게이트웨이 ip를 스푸핑 : 이 경우 외부로 전송되는 모든 패킷이 가로채진다.

-두 호스트를 각각 arp 스푸핑

 

garp : 네트워크 상의 다른 장비들의 ARP 캐쉬를 갱신 또는 중복방지를 위해, 자신의 하드웨어 주소 및 IP 주소를 브로드캐스팅 하여주는 간단한 프로토콜

 

 


[출처, 참고]

https://jwprogramming.tistory.com/32

https://ko.wikipedia.org/wiki/%EC%A3%BC%EC%86%8C_%EA%B2%B0%EC%A0%95_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C

https://ko.wikipedia.org/wiki/ARP_%EC%8A%A4%ED%91%B8%ED%95%91

https://m.blog.naver.com/PostView.nhn?blogId=pcs1535&logNo=221336485457&proxyReferer=https%3A%2F%2Fwww.google.com%2F

https://dinding.tistory.com/46

실습

https://promin.tistory.com/3?category=779237

 

댓글