minhui study

ARP Protocol & ARP Spoofing 본문

네트워크/AWS와 함께하는 네트워크 개념과 보안

ARP Protocol & ARP Spoofing

minhui 2020. 9. 18. 02:53

ARP(Address Resolution Protocol)

일반적으로 통신은 사용자가 어떤 값을 생성하여 전달하거나 어떤 정보를 요청하기 위해 동작을 시킬 때 발생한다. 즉, 통신을 위해서 필요한 일련의 값들을 사용자가 결정하여 입력을 시켜준다는 뜻이다. 

4계층(전송 계층)에서는 필요한 서비스 구분번호는 어플리케이션을 동작시키면서 입력이 되고, 3계층(네트워크 계층)에서 사용하는 IP주소까지는 사용자가 통신하기 위해서 디바이스에 입력하기 때문에 어렵지 않게 캡슐화가 가능하다.

하지만 2계층(데이터 링크 계층)에서 필요한 목적지 주소는 따로 입력이 되지 않아 줏를 디바이스 스스로 결정해주어야 한다. 이 때 사용하는 프로토콜이 ARP이다.

ARP는 네트워크 프로토콜 중 하나로 논리적인 IP주소를 기반으로 데이터링크 계층의 물리적인 MAC주소로 바꾸어 주는 프로토콜이라고 할 수 있다. 

(*ARP와는 반대로, IP 호스트가 자신의 물리 네트워크 주소는 알지만 IP 주소를 모르는 경우, 서버로부터 IP주소를 요청하기 위해 RARP를 사용한다.)

 

위의 사진은 게스트(칼리) 와이어샤크에서 패킷을 캡처한 것으로 위에 패킷은 request이고 아래가 reply이다.

ARP패킷은 requestreply로 나눠진다.


Request

Info부분을 보면 "Who has 192.168.35.177? Tell 192.168.35.12"라고 써져 있는데 이는 누가 192.168.35.177를 가지고 있는지 있으면 192.168.35.12로 대답해달라는 뜻이다. 그러므로 물어보는 대상 즉 Destination이 Broadcast이다.

패킷을 자세히 살펴보자

 

Request Packet

Ethernet부분을 보면 Destination이 Broadcast(ff:ff:ff:ff:ff:ff)로 되어 있어 이 request 패킷을 보냄으로써 Target의 MAC address를 알아내려고 하는 것이다.

보면 보내는 사람(Sender)과 받는 사람(Target)의 IP address는 알고 있지만 받는 사람의 MAC address를 모르기 때문에 Target MAC address가 00:00:00:00:00:00으로 비어있다는 것을 알수 있다. 

 

* ARP Broadcast

동일한 네트워크 상에서 다른 시스템과 통신을 하는 경우에 프로토콜 주소(IP)를 이용한 통신이 아닌 MAC주소를 이용해 통신을 하게 된다. 이때 동일 네트워크에 대한 구분은 IP주소 부여시 할당되는 서브넷 마스크(Subnet Mask)를 통해 구분한다.

 

Reply

Reply패킷은 위의 게스트(192.168.35.12)에서 호스트(192.168.35.177)로 보냈던 Request에 대한 답변으로 아래 패킷을 살펴보자

Reply Packet

호스트(192.168.35.177)에서 게스트(192.168.35.12)로 reply패킷을 통해 MAC주소를 보내주었다.

request패킷에서 물어봤던 192.168.35.177의 MAC주소는 50:76:af:22:71:b7인 것을 확인할 수 있다.

정리해보면 다음과 같다.

(*참고로 ICMP는 어댑터 브릿지 네트워크 상태에서 ping 192.168.35.12 했을 때 패킷을 보고 채운것이다.)

host wireshark
kali wireshark


 

과정을 요약해보면

192.168.35.12192.168.35.177에게 request패킷을 통해 192.168.35.177의 MAC 주소 요청

192.168.35.177192.168.35.12에게 reply패킷을 통해 MAC 주소 전달

③ 192.168.35.177 192.168.35.12request 패킷으로 192.168.35.12의 ip-mac정보를 arp테이블에 저장

 192.168.35.12192.168.35.177 reply 패킷을 통해 B의 ip-mac정보를 arp테이블에 저장

 

cmd에서 arp-a 명령어를 통하여 IP주소와 MAC주소를 확인할 수 있다. (리눅스의 경우 arp -n)

192.168.35.12의 arp table
192.168.35.177의 arp table

 


 

ARP spoofing이란?

근거리 통신망 LAN에서 ARP메시지를 이용하여 상대방의 데이터 패킷을 중간에서 가로채는 중간자 공격 기법

즉, A와 B가 통신을 한다고 할 때 공격자는 자신의 MAC주소를 B의 MAC주소라 속이고 B가 받을 패킷을 공격자가 가로채서 먼저 받고 그 패킷을 원하는 대로 변조한 다음 원래 목적지인 B에게 그 패킷을 보내주는 방식이다. 

https://security-nanglam.tistory.com/191

 

ARP Spoofing의 과정

① 공격자가 A에게 자신의 MAC주소를 B의 MAC주소인 것처럼 속인다.

② 공격자가 B에게 자신의 MAC주소를 A의 MAC주소인 것처럼 속인다.

③ A는 B의 MAC주소가 공격자 MAC주소인 걸로 알고 있고, B도 A의 MAC주소가 공격자 MAC주소인 것으로 알고 있다.

④ 공격자는 A에게 받은 패킷을 B에게 보내고, B에게 받은 패킷을 A에게 보내주어 정사억으로 통신하고 있는 것처럼 보이게 한다. ( 공격자는 중간에 패킷을 모두 읽을 수 있으며 데이터 수집/가공,변조도 가능하다.) 

 

https://security-nanglam.tistory.com/191

 

이제는 ARP 테이블의 상태와 함께 그 과정을 다시 한번 살펴보자

 

정상적인 A와 B 간의 통신

 

ARP Spoofing 공격

ARP Spoofing 후 스니핑

 


피해 시스템에서의 탐지 방법

1) ARP table을 통한 MAC 주소 중복 확인
윈도우즈나 유닉스/리눅스 계열 모두 arp -a 명령과 같이 ARP table을 조회하는 명령으로 주변 시스템의 IP와 MAC주소를 확인한다. 단, 평소에 통신을 하지 않던 시스템의 MAC주소도 확인해야 하므로, 동일 서브네트워크의 모든 host에 ping 명령이나 nmap등의 도구를 사용하여 IP-MAC주소를 모두 확보 한 후에 확인해야 한다. 대부분의 경우 게이트웨이의 IP와 MAC주소로 위장하기 때문에 이 부분을 유심히 살펴본다. 만약 게이트웨이의 MAC주소가 실제 게이트웨이의 MAC주소와 다르다면 ARP Spoofing으로 인한 결과일 확률이 대단히 높다.

또한, ARP table에 동일한 MAC주소가 서로 다른 IP에서 사용되고 있는지 확인한다. 게이트웨이 IP에서 사용하는 MAC을 다른 IP도 사용하고 있다면, ARP Spoofing을 의심해 볼 수 있다. 다만, 시스템 설정에 따라 하나의 NIC에 여러 IP를 사용 할 수도 있고, ARP Spoofing을 수행하는 시스템에 IP를 넣지 않는 경우 등은 예외이다.

 

2) 비정상적인 ARP 패킷 수신 확인
ARP Spoofing공격이 실행되고 있을 때, 피해서버 측에서 ARP 패킷을 수집하여 분석해 보면 필요 이상의 reply 패킷이 수신되고 있음을 알 수 있다. 서버들의 경우 인터넷서비스를 위해 계속해서 게이트웨이와 통신을 하기 때문에 게이트웨이의 MAC주소가 ARP table에서 삭제되지 않으므로, 수 초마다 계속해서 request가 없는 ARP reply패킷만 수신될 이유가 없다.

 

 

Comments