네트워크/네트워크 보안

ARP Spoofing과 ARP Redirect

비니화이팅 2018. 1. 22. 20:18

* ARP Spoofing

-> 개념

- ARP 프로토콜을 이용하여 동일 네트워크에 존재하는 두 Victim의 ARP 테이블에서 두 Victim의 IP에 대한 MAC주소를 Attacker자신의 MAC주소로 바꾸는 공격이다.



[실습1]

-> Victim2의 Mac Address를 Attacker의 MAC Address로 바꿔본다.

 -> 실습 환경

 - Victim1 : WindowsXP ( IP : 10.10.10.10, MAC : 00-0C-29-9A-9E-2E)

 - Victim2 : Windows2000Server ( IP : 10.10.10.20, MAC : 00-0c-29-08-36-e9)

 - Attacker : BackTrack ( IP : 10.10.10.30, MAC : 00-0c-29-9d-96-35)

 -> 실습 도구

 - arpspoof


- 일단 Victim1의 ARP Table을 확인하면 정상적으로 Victim2의 IP Address에 대한 MAC Address가 등록되어 있는 것을 볼 수 있다.


- Attacker가 arp spoofing을 진행한다.

- arpspoof를 참고로 아래와 같이 사용해도 된다.

arpspoof -i eth0 -t 10.10.10.1 10.10.10.254

 10.10.10.1에게 10.10.10.254의 MAC Address가 Attacker의 MAC Address(eth0)라고 속이는 것이다.


- 위의 패킷을 잡아 확인해본다.

  (ARP 헤더 분석은 http://itlearner.tistory.com/227?category=785283<-을 참고한다.)

- reply패킷은 기본적으로 유니캐스트하지만 위의 패킷은 reply임에도 브로드캐스트를 하고있다.

- Victim2의 MAC Address가 Attacker의 MAC Address라고 속이고 있다.


- 다시 Victim1의 ARP Table을 확인해보면 Victim2의 MAC Address가 Attacker의 MAC Address로 바뀐 것을 확인할 수 있다.


- 이 상태에서 Victim2에게 Ping을 보내면 Ping이 돌아오지 않는다. (Victim2 입장에서는 자신에게 Ping이 오지 않았기 때문이다.)

 


- 위의 문제를 해결하기 위해 포워딩(패킷을 확인하고 흘려보낸다.) 해준다.


- 다시 Ping을 진행하니 잘 되는 것을 확인할 수 있다.



[실습2]

-> [실습 1]에서 ARP Spoofing의 개념을 이해했으니 이번에는 ARP Spoofing을 이용하여 Web Server에 접근하는 Packet을 Sniffing해본다.

 -> 실습 환경

 - Victim :  WindowsXP ( IP : 10.10.10.10)

 - Web Server : Windows2000Server ( IP : 10.10.10.20)

 - Attacker : BackTrack  ( IP : 10.10.10.30)

 -> 실습 도구

 - arpspoof


- 실습을 진행하기에 앞서 Web Server에 기본 인증 설정을 해준다. 그러면 최초 웹 페이지에 접근 시 아래와 같이 사용자 이름과 암호를 물어본다.


-아래와 같이 입력하여 ARP Spoofing을 진행해준다.


- 포워딩 해준다.


- 이제 Attacker는 Victim과 Web Server사이의 패킷을 Sniffing할 수 있다.


- Victm에서 Web Server에 접근 후 사용자 이름과 암호를 입력한다.


- 이를 Attacker측에서 sniffing하면 다음과 같이 암호를 확인할 수 있다.



[실습 3]

- 이번에는 백트랙이 아닌 윈도우 환경에서 arp spoofing을 진행하여 Web Server로 접근하는 victim의 중요 정보를 스니핑해본다.

 -> 실습 환경

 - Victim1 : WindowsXP ( IP : 192.168.55.28, MAC : 00-0C-29-9A-9E-2E)

 - Victim2 : Windows2000Server ( IP : 192.168.55.19, MAC : 00-0C-29-2D-1A-28)

 - Attacker : WindowsXP ( IP : 192.168.55.21, MAC : 00-0C-29-9A-9E-2E)

 -> 실습 도구

 - Cain&Abel


- 먼저 Attacker PC에서 공격대상을 scan하고 검색된 리스트에서 Victim을 선정한다.


- ARP 공격을 수행하기 전 Victim1의 ARP 테이블을 확인한다.


- 이제 ARP 공격을 수행한다.

  왼쪽은 Victim1을 선택, 오른쪽은 Victim2(Web Server)를 선택해주면 된다.


- 다시 Victim1의 ARP 테이블을 확인해보면 Victim2(Web Server)의 MAC 주소가 Attacker의 MAC 주소로 바뀌었음을 확인할 수 있다.


- 이를 통해서 아래와 같이 여러 정보를 스니핑할 수 있다.





* ARP Redirect

-> 개념

- ARP Spoofing에서 속이는 대상을 게이트웨이로 한 것이다.

- Victim은 Attacker가 Gateway인 줄 알고 외부로 통신할 때 Attacker에게 패킷을 보내기 때문에 외부로 나가는 패킷을 Sniffing할 수 있다.



[실습 4]

- 실습 하기 전 아래와 같은 토폴로지를 구성한다.

- R1에는 Telnet Service가 올려져 있다.

 -> 실습 환경

 - Victim : WindowsXP ( IP : 10.10.10.10, MAC : 00-0C-29-9A-9E-2E)

 - Victim : Gateway (IP : 10.10.10.254, MAC : 00-0C-29-F0-BD-A1)

 - Attacker : BackTrack ( IP: 10.10.10.30, MAC : C4-01-0F-98-00-00)

-> 실습 도구 : arpspoof


- arpspoof를 이용하여 10.10.10.10에게 Gateway가 Attacker자신이라고 속인다.


- 이번에는 Gateway에게 10.10.10.10이 Attacker자신이라고 속인다.


- XP에서 ARP Table을 확인해본다. 공격자의 Gateway의 MAC주소가 Attacker의 MAC주소로 바뀌었다.


- R1에서 ARP Cache를 확인해본다. 마찬가지로 Victim의 MAC주소가 Attacker의 MAC주소로 바뀌었다.


- 이 상태에서 통신을 진행하면 통신이 안돼서 희생자가 금방 공격을 당한 것을 알아채므로 포워딩 해준다.

- 이전 실습에서는 fragrouter -B1을 이용하여 포워딩 해줬지만 이번에는 아래의 명령어를 이용하여 포워딩 해준다.


- 이제 XP에서 Telnet서버로 접속해본다.


- 아래와 같이 Attacker의 PC에서 Sniffing이 가능하다.



[참고]

- echo 1 > /proc/sys/net/ipv4/ip_forward는 커널단에서 수행하는 포워딩 방식이기 때문에 Attacker의 PC가 Router처럼 동작하여 Victim에서 tracert로 추적시에는 정상적으로 추적이 이루어지며 ping을 수행할 때 ttl은 1이 줄은 254가 된다. (포워딩을 해제할 때는 1대신 0을 넣으면 된다.)





- fragrouter -B1은 어플리케이션단에서 수행하는 포워딩 방식이기 때문에 Attacker의 PC가 Router 처럼 동작하지 않는다. 따라서 tracert로 추적이 불가능하고 ping을 수행 시 ttl은 255이다.




* ARP Spoofing(ARP Redirect) 대응책

1. ARP Table을 정적으로 설정한다.

2. ARP 탐지 도구를 이용한다.


[ARP Table 정적으로 고정하기]
<XP 에서>
- arp -s [IP Address] [MAC Address]명령어를 사용한다.


<라우터에서>

- arp [IP Address] [MAC Address] arpa명령어를 사용한다.



[ARP 탐지 도구 사용하기]

- ARP 탐지 도구인 xarp를 사용한다.

  www.xarp.net 에서 다운로드 가능하다.

- ARP 스푸핑이 감지되면 X로 표시된다.


<ARP 스푸핑 공격을 한 상태>


<ARP 스푸핑 공격을 안 한 상태>



- 실습을 하다가 특이한 점을 발견했다 Gateway의  MAC 주소를 Attacker의 MAC주소로 속이는 패킷을 Broadcast하면 Gateway는 곧 바로 GARP 패킷Broadcast해 Victim의 ARP Table에서 Gateway의 MAC주소가 Attacker의 MAC주소로 갱신되지 못하게 한다. 호스트 PC에서도 동일하게 해봤는데 호스트 PC는 아무런 반응이 없었다.