DongDD's IT

[Network Security] ARP Spoofing 본문

IT 보안/Network

[Network Security] ARP Spoofing

DongDD 2018. 8. 25. 14:37

ARP Spoofing



ARP Protocol



- 패킷을 전송하는 경우, 목적지의 MAC Address를 모를 때, IP Address를 이용하여 MAC Address를 알 수 있게 해주는 프로토콜

- ARP Table에 IP Address와 MAC Address가 mapping되어 저장

- 송신자가 수신자의 MAC Address를 모르는 경우, ARP Protocol 과정을 거침


ARP Header


- Hardware Type(2 bytes) : 네트워크 유형 선택(Ethernet : 1)

- Protocol Type(2 bytes) : IPv4, IPv6 선택

- Hardware Length(1 bytes) : MAC Address 길이 선택(Ethernet : 6)

- Protocol Length(1 bytes) : IPv4(4), IPv6(16)

- Operation(2 bytes) : ARP Request(1), ARP Reply(2)

- Sender Hardware Address(6 bytes) : 송신자의 MAC Address

- Sender Protocol Address(4 bytes) : 송신자의 IP Address

- Receiver Hardware Address(6 bytes) : 수신자의 MAC Address

- Receiver Protocol Address(4 bytes) : 수신자의 IP Address


ARP Message


1. ARP Request


- 수신자의 MAC Address를 모를 경우, ARP Request 전송

- ARP Request같은 경우, Frame Header의 Dst MAC은 모두 1 bit로 설정하여 broadcast로 전송

- ARP Header의 MAC Address는 모르기 때문에 모두 0 bit로 설정하여 전송


2. ARP Reply


- ARP Request를 받으면, ARP Header의 Target IP Address가 자신의 IP라면 unicast로 ARP Header에 포함되 있는 Source로 자신의 MAC Address를 포함하여 전송

- 이러한 과정을 거치면서 서로의 ARP Table에 해당 IP에 대한 MAC Address가 갱신



ARP Protocol 관련 공격



ARP Cache Poisoning


- ARP Protocol의 문제점인 ARP Request 패킷이 Broadcast로 전송된다는 점을 이용해 공격자가 Request에 대한 Reply를 조작해 보내게 되면 공격자의 의도대로 ARP Table이 변경

- ARP Spoofing을 하기 위한 선행 단계로 많이 사용


ARP Spoofing


- ARP Cache Poisoning으로 ARP Table을 조작하고 공격자의 MAC Address로 조작된 ARP Table을 이용하여 상대방의 패킷을 Sniffing하는 MITM 공격


Switch Jamming


- MAC Address가 위조된 패킷을 지속적으로 전송하여 Switch가 가진 MAC Table을 오버플로우되게 하여 Switch 기능을 사용하지 못하게 하고 더미 허브와 같이 들어오는 패킷을 모두 broadcast하게 만드는 공격



ARP Spoofing 실습



- 실습 도구 : Wireshark, Cain&Abel

- 실습 환경 : Window xp 32bit, Ubuntu 16.04 32bit, Ubuntu 16.04 64bit


시나리오


Attacker(xp) : 192.168.121.130(00:0C:29:8B:~~:~~)

Receiver(ubuntu 32bit) : 192.168.121.128(00:0C:29:87:~~:~~)

Sender(ubuntu 64bit) : 192.168.121.129(00:0C:29:5D:~~:~~)


정상적인 ARP Table 확인 및 Wireshark 패킷 캡쳐


1. Sender ARP Table


- Sender의 정상적인 ARP cache table을 기록하기 위해 Sender->Receiver로 ping 전송(ping 192.168.121.128)

- Sender의 ARP cache table 확인(arp -a)

-> 192.168.121.129의 MAC Address 00:0C:29:87:~~:~~ 등록 확인


2. Recevier ARP Table


- Receiver의 정상적인 ARP cache table을 기록하기 위해 Receiver->Sender로 ping 전송(ping 192.168.121.129)

- Receiver의 ARP cache table 확인(arp -a)

-> 192.168.121.129의 MAC Address 00:0C:29:5D:~~:~~ 등록 확인



3. 정상 패킷


- 정상적인 통신 시, Attacker에서 패킷 캡쳐 시 서로의 통신을 Sniffing할 수 없음



ARP Spoofing(Cain&Abel)


1.  Network 탐색


- +(Add to list) 밑에 있는 Sniffer tab으로 이동 후 왼쪽의 Start Sniffer 버튼을 눌러 활성화

- +(Add to list)를 눌러 특정 IP 대역을 scan

- Scan을 완료하면 해당 대역에서 사용되고 있는 IP Address 목록과 MAC Address 목록이 나타남

- 밑에 있는 APR tab으로 이동


2. ARP Spoofing IP 선택


- 파란색 네모 부분을 클릭한 후 +(Add to list) 버튼을 클릭

- ARP Spoofing을 시도할 두 개의 IP Address를 선택


3. ARP Spoofing


- ARP Spoof Start 버튼을 클릭하면 Status가 Poisoning으로 변경되고 ARP Spoofing 시작


ARP Spoofing 이후 ARP Table 확인


1. Sender ARP Table 확인


- Sender의 ARP cache table 확인(arp -a)

-> Receiver의 IP Address인 192.168.121.128의 MAC Address가 00:0C:29:87:~~:~~에서 Attacker의 MAC Address인 00:0C:29:8B:~~:~~로 바뀐 것을 확인 


2. Receiver ARP Table 확인


- Receiver의 ARP cache table 확인(arp -a)

-> Sender의 IP address인 192.168.121.129의 MAC Address가 00:0C:29:5D:~~:~~에서 Attacker의 MAC Address인 00:0C:29:8B:~~:~~로 바뀐 것을 확인 


3. 변조 후 Ping 전송


- Sender와 Receiver의 ARP cache table이 변조된 후, Sender가 Receiver로 Ping 전송

- Sender와 Receiver는 변조 전과 마찬가지의 통신을 함

-> Forwarding


4. Attacker의 Wireshark


- Attacker의 Wireshark에서 해당 Packet이 캡쳐

- Sender와 Receiver는 Sniffing되는 것을 파악하지 못하고 제대로 된 패킷을 받는 것으로 보아 Cain이 Forwarding 수행


대응 방안


1. ARP cache table을 static으로 설정

- 변경되면 안되는 MAC Address의 경우, static 옵션을 사용하여 MAC Address가 변경되지 않도록 수동으로 설정

-> arp -s IP MAC

Comments