보안 / AI / 프로그래밍
[0x444] ARP Spoofing & ARP Redirection 원리와 실습 본문
[0x444] ARP Spoofing & ARP Redirection 원리와 실습
DevKTW 2021. 3. 15. 23:49[0x444] Spoofing
스푸핑(Spoofing)의 사전적 의미는 '속이다'이다. 네트워크에서 스푸핑 대상은 MAC 주소, IP주소, 포트 등 네트워크 통신과 관련된 모든 것이 될 수 있고, 스푸핑은 속임을 이용한 공격을 총칭한다. (출처 : Wikipedia)
[0x444] 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 캐시를 오염시켜야 합니다.
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 실습
실습을 위해서, arpspoof와 fragrouter를 설치하셔야 합니다.
서버 소스는 해킹:공격의 예술 책의 simpleserver.c를 사용했습니다. 소스는 이 사이트를 참고하세요.
네트워크 주소 및 구조 상황은 위의 ARP 설명 사진과 동일합니다.(Mac주소는 다릅니다.) 꼭 같이 보면서 따라와 주세요.
Server 와 Client로 부터 날라온 공을 Attacker 가 다시 자연스럽게 던져주기 위해 fragrouter를 사용합니다.
명령어는 다음과 같습니다 : fragrouter -B1
[참고자료]
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
'Hacking :: The Art Of Exploitation > 0x400 :: 네트워킹' 카테고리의 다른 글
[0x440] 네트워크 스니핑 - 비스위치 네트워크 환경에서의 스니핑 (1) | 2021.02.13 |
---|---|
[0x432-0x433] [보충] TCP 3 Way-HandShake (0) | 2021.02.13 |
[0x432-0x433] [보충] TCP HEADER CheckSum 구하기 (0) | 2021.02.12 |
[0x432-0x433] [보충] TCP HEADER Urgent Pointer (0) | 2021.02.07 |
[0x432-0x433] [보충] TCP HEADER Window Size (1) | 2021.02.07 |