보안 / AI / 프로그래밍

[0x444] ARP Spoofing & ARP Redirection 원리와 실습 본문

Hacking :: The Art Of Exploitation/0x400 :: 네트워킹

[0x444] ARP Spoofing & ARP Redirection 원리와 실습

DevKTW 2021. 3. 15. 23:49

[0x444] Spoofing

스푸핑(Spoofing)의 사전적 의미는 '속이다'이다. 네트워크에서 스푸핑 대상은 MAC 주소IP주소포트 등 네트워크 통신과 관련된 모든 것이 될 수 있고, 스푸핑은 속임을 이용한 공격을 총칭한다. (출처 : Wikipedia)

[0x444] ARP 이란?

임의로 캡처한 ARP 요청 패킷을 보여준다.

ㅇ ARP (= Address Resolution Protocol) 이란?

 - 주소 결정 프로토콜이라고 불리는 ARP는 네트워크 상에서 IP 주소를 MAC 주소로 대응시키기 위해

   사용되는 프로토콜입니다.

 


ㅇ Destination MAC Address ( 6 Bytes )

 - ARP 요청인 경우 ff:ff:ff:ff:ff:ff, ARP 응답인 경우 요청한 노드의 MAC 주소가 입력되어 있습니다.

 

ㅇ Source Mac Address ( 6 Bytes )

- ARP를 요청한 노드의 MAC 주소가 입력되어 있습니다.

 

ㅇ Type ( 2 Bytes )

- Ethernet 프레임의 데이터 부분에서 캡슐화된 데이터가 어느 프로토콜에 해당하지는 지를 나타내는 영역입니다.

  ARP 인 경우 0x0806, RARP 인 경우 0X0835의 값을 가집니다. Type 값 List는 이 사이트를 참고하시기 바랍니다.


ㅇ Hardware Type ( 2 Bytes )

 - 사용중인 주소 타입을 나타내는 필드로, 네트워크 유형을 나타냅니다. Type 값 List는 이 사이트를 참고하길 바랍니다.

 

ㅇ Protocol Type ( 2 Bytes )

 - 어떠한 유형의 프로토콜을 사용하는가를 정의합니다. IPv4의 경우 0x0800을 사용합니다.

 

ㅇ Hardware Address Size (HLEN) ( 1 Bytes )

 - MAC 주소의 길이를 정의하며, Ethernet 환경의 경우 0x06을 사용합니다.

 

ㅇ Protocol Length (PLEN) ( 1 Bytes )

 - 프로토콜의 길이를 정의하며, IPv4 의 경우 0x04를 사용합니다.

 

ㅇ Operation Code ( 2 Bytes )

 - ARP 패킷의 유형을 나타내며, ARP 요청 = 1, ARP 응답 = 2, RARP 요청 = 3, RARP 응답 = 4 의 값을 가집니다.

 

ㅇ Sender HardWare Address (SHA) ( 6 Bytes )

 - 발신자의 MAC 주소를 나타냅니다.

 

ㅇ Sender Protocol Address (SPA) ( 여기서는 4 Bytes )

 - 발신자의 IP 주소를 나타냅니다.

   Protocol Type과 Protocol Length 에 따라 달라지겠지만, ARP의 경우, 이 필드는 IP 주소인, 4 Bytes 를 차지합니다.

  

ㅇ Target HardWare Address (THA) ( 6 Bytes )

 - 목적지의 MAC 주소를 나타냅니다. ARP 요청의 경우 0으로 채워지게 됩니다.

   ARP는 이 필드 값을 받아 내기 위해, 즉 IP를 통해서 MAC 주소를 알기 위해서 사용 되는 필드이기 때문입니다.

   ARP 응답의 경우, 이 필드에 IP에 매칭되는 MAC주소가 저장됩니다.

 

ㅇ Target Protocol Address (TPA) ( 여기서는 4 Bytes )

 - 목적지의 IP 주소를 나타냅니다.

   Protocol Type과 Protocol Length 에 따라 달라지겠지만, ARP의 경우, 이 필드는 IP 주소인, 4 Bytes 를 차지합니다.


[0x444] ARP Redirection 이란?

ㅇ ARP Redirection 이란?

 - ARP 는 2가지 특성을 가지는데, 첫번째"시스템이 기존 ARP 캐시에 저장되어 있는 IP와 동일한 IP의 ARP 응답을 받을 경우 기존 정보를 새 정보로 덮어 쓴다는 특성", 두번째"시스템은 ARP 요청을 보내지 않았더라도 ARP 응답을 받는 특성"입니다.

- 이 두가지 특성을 이용해서, ARP의 목적지 주소를 Spoofing (=조작) 즉, ARP Spoofing을 통해 ARP 캐시를 오염시키고, 통신 방향을 조작하는 행위ARP Redirection 이라고 합니다.

- ARP 캐시는 유효 기간이 있으므로, 지속적으로 Spoofing된 ARP 응답을 통해서 ARP 캐시를 오염시켜야 합니다.

 

ARP Redirection 공격 전 모습이다.
ARP Redirection 공격 전 모습이다.

Client와 Server 간의 통신 상황을 예로 들겠습니다. 공격자는 클라이언트와 반드시 같은 네트워크에 속해야 합니다.

Client는 Server 와 통신할때, GateWay로 서버에게 보낼 Packet을 보내고, GateWay를 통해 서버로부터의 패킷 받습니다.

이러한 통신 과정은 Client <-> GateWay <-> Server 관계에서 이루어지는데요.

여기서 공격자가 ARP Redirection을 할 경우 Client <-> Attacker <-> GateWay <-> Server 관계에서 통신하게 됩니다.

공격자는 중간에 서서 통신을 들여다 볼 수 있게 됩니다.

이렇게 AP Redirection만 할 경우 서버가 클라이언트로 전송한 패킷과 클라이언트가  서버로 전송하는 패킷이 전부 Attacker 에게 전송되기만 하고, 정작 패킷을 받아야할 Server와 Client는 못받기 때문에, 적절하게 이를 Attacker가 Server와 Client에게 패킷을 다시 전송해야합니다.

 

Client와 Server가 1대1로 공을 주고 받다가, 가운데에 Attacker가 난입했기 때문에, Client에게 공을 받으면 Server로 다시 던지고, Server가 던진 공을 받으면 Client에게 다시 던져줘야, 결과적으로 Client와 Server가 서로 공을 주고 받을 수 있게 되는 의미와 비슷합니다.


[0x444] ARP Redirection & Sniffing 실습

실습을 위해서, arpspooffragrouter를 설치하셔야 합니다.
서버 소스는 해킹:공격의 예술 책의 simpleserver.c를 사용했습니다. 소스는 이 사이트를 참고하세요.
네트워크 주소 및 구조 상황은 위의 ARP 설명 사진과 동일합니다.(Mac주소는 다릅니다.) 꼭 같이 보면서 따라와 주세요.

telnet을 통해서 서버에 접속합니다. 그리고 메세지를 보내서 연결이 잘 되는지 확인합니다.
클라이언트가 서버에게 패킷을 잘 전달했음을 확인할 수 있습니다.
Client의 ARP Cache (Table) 상황입니다. 192.168.150.2 (GateWay) 의 Mac 주소는 00:50:56:fe:f7:ba 입니다.
Attacker가 arpspoof 를 이용해서 Client의 ARP Cache를 오염시키기 시작합니다.
192.168.150.2 (GateWay)의 MAC 주소가 Attacker 의 MAC 주소로 오염되었음을 볼 수 있습니다.
마찬가지로 192.168.150.2 (GateWay) 의 ARP Cache도 오염시켜 줍니다. 이제 위의 ARP 오염 상황 사진과 동일하게 됐습니다.
제가 말씀드린 공 예시와 같이 Attacker가 공을 다시 받아 던져주지 않으면 Server와 Client 간 통신이 끊기게 됩니다.
Server는 Client로 부터 패킷을 받지 못하게 됩니다.

Server 와 Client로 부터 날라온 공을 Attacker 가 다시 자연스럽게 던져주기 위해 fragrouter를 사용합니다.
명령어는 다음과 같습니다 : fragrouter -B1

다시 Client가 Server를 향해 패킷을 전송하나, 이 패킷은 Attacker에게 가게 되고 Attacker는 이 패킷을 Server로 다시 보냅니다.
fragrouter 를 사용했기에, Client가 전송한 패킷이 Attacker를 경유해서 Server에게 잘 도착한 모습입니다.
Attacker는 Client와 Server의 패킷을 Sniffing 하고, 패킷을 가로채고 내용을 조작한 패킷을 보낼 수도 있습니다.


[참고자료]

ktword.co.kr/test/view/view.php?m_temp1=2188&id=421

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

standards-oui.ieee.org/ethertype/eth.txt

 

Comments