2013년 12월 8일 일요일

ARP cache poisoning


ARP ( Address Resolution Protocol )
- IP의 주소 변환 프로토콜 ( 3계층 IP 주소를 통하여 2계층 MAC 주소를 알아내기 위한 프로토콜)


ARP의 문제점

인증 메커니즘의 부재
응답자가 보낸 MAC 주소가 진짜 응답자가 보낸 것 인지 중간에 공격자가 도청하여 변조를 한 것인지 진위 여부를 알 수 없다.

불필요한 트래픽 발생
ARP request 패킷은 목적지 MAC 주소가 ff:ff:ff:ff:ff:ff 로 되어 있다.
브로드캐스팅을 함으로서 불필요한 트래픽이 발생하게 된다.


 < ARP request Packet >





ARP cache poisoning

ARP cache poisoning 은 ARP 의 고질적인 문제점을 이용하여 공격하는 기법이다.
ARP Request 패킷이 브로드캐스팅을 한다는 점을 이용하여 공격자가 대신 응답을 하게 되면 
ARP cache table 이 공격자의 의도대로 변하게 되고 정상적인 응답인지 공격자에 의한 비정상적인 
응답인지 진위 여부도 파악하기 힘든 점 을 이용한다.



테스트 환경은 다음과 같이 구성하였다.




< HOST A> 


< Attacker >


< Gateway >

HOST A : IP = 192.168.1.10 / MAC = 00:0C:29:83:57:22
Attacker : IP = 192.168.1.20 / MAC = 00:0C:29:f2:48:f5
Gateway IP = 192.168.1.1 / MAC = 64:e5:99:82:78:24







< 정상적인 통신 경로 >

위 그림은 HOST A 가 외부와 통신 하기 위하여 Gateway를 통해 나갈 때의 트래픽 이동 경로 이다.





< HOST A - ARP cache table >

HOST A의 ARP cache table를 확인해 보면 게이트웨이의 IP와 MAC 주소가 정상적으로 매핑되어 있다.





1. ARP Spoofing을 통하여 ARP cache table 조작

root@bt:~#arpspoof -i <interface> -t <target> host

-i : 인터페이스가 복수개일경우 인터페이스 지정
-t : 타겟 지정

< HOST A - ARP cache table 조작 >

root@bt:~#arpspoof -t 192.168.1.10 192.168.1.1




위 명령을 실행하면 그림과 같이 외부로 송신되는 트래픽의 흐름이 
Attacker를 거쳐 게이트웨이로 나가게 된다.

하지만 HOST A의 테이블만 조작 한 상태이므로 
수신되는 패킷은 Attacker을 거쳐서 들어오지 않는다.

HOST A로 부터 송 수신 되는 패킷은 모두 Attacker을 거쳐가도록
경로를 조작하려면 게이트웨이 장비의 테이블도 조작하여야 한다.



 < Gateway - ARP cache table 조작 >

root@bt:~#arpspoof -t 192.168.1.1 192.168.1.10







위 두가지 절차를 정상적으로 수행하게 되면 HOST A 와 Gateway 사이 트래픽의 흐름이 위 그림과 같이 Attacker를 거치게 된다.

하지만 아직 정상적인 통신이 되지는 않는다. Attacker PC 에선 목적지가 자기 자신이 아닌 패킷을 Drop 시키기 때문이다.

HOST A와 Gateway의 테이블을 조작하여 패킷이 Attacker를 경유하도록 공격 하였다면 Attacker는 그 패킷을 정상적인 통신이 이루어지게 하기 위해 릴레이 해주어야 한다.





2. Packet Forwarding

Packet Forwarding 을 활성화 하려면 두 가지 방법이 있다.



- Kernel 지원 방식

Linux / Unix


/proc/sys/net/ipv4/ip_forward 파일의 내용을 보면 0 이란 값이 들어 있다. 이 값을 1로 수정 해주면 Packet Forwarding 기능이 활성화 된다.

root@bt:~# cat /proc/sys/net/ipv4/ip_forward
0

root@bt:~# echo 1 > /proc/sys/net/ipv4/ip_forward

root@bt:~# cat /proc/sys/net/ipv4/ip_forward
1



Windows









실행 - regedit
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\
IPEnableRouter = 기본 값 0 -> 1로 수정





- Application 사용

Linux / Unix


root@bt:~# fragroutr -B1
-B1 : 정상 IP 포워딩



 두 가지 방법 중 Kernel 지원 방식을 사용하게 되면 시스템이 라우터 처럼 동작하게 되므로 tracerouter 에 걸리게 된다. 

 그러므로 Application 사용을 권장한다.



공격 후 ARP cache table를 확인 해 보면 MAC 주소가 다음과 같이 공격자의 MAC 주소로 변경 되어 있다.





HOST A에서 google DNS로 ICMP request 패킷을 송신 하였다.
(Ping 8.8.8.8)


< Attacker PC 에서 패킷 캡쳐 >

위 스샷은 Attacker PC에서 패킷을 떠본 결과이다.

Request / reply 패킷이 모두 Attacker PC 에 잡히는 것으로 보아 송수신 되는 패킷이 

Attacker PC를 거쳐 송수신 된다는 것을 확인 할 수 있다.





ARP Spoofing 공격을 하게 되면 Attacker PC 에서는 ARP cache table의 변조를 유지 하기 위해 지속적으로 ARP reply 패킷을 발생시킨다.





Attacker PC 에서 공격을 중단 하게 되면 2쌍의(4개) ARP 패킷이 발생한다.


공격 중단시 갑자기 외부와 통신이 단절되면 의심을 살 수 있기 때문에 Attacker 는 HOST A , Gateway 장비 에게 자신의  IP와 MAC 주소가 담긴 ARP request를 전송 함으로서 ARP cache table에서 조작된 주소를 지운다.

이렇게 되면 HOST A는 다시 게이트웨이를 찾는 ARP request 를 발생시키게 되고
게이트웨이는 그에대한 응답을 해주게 되므로 테이블에는 정상적인 캐시 정보가 갱신된다.

이 절차가 아주 짧은 시간 내에 이루어 지므로 통신은 계속 원할하게 이루어 진다.



댓글 1개:

  1. 빨간 줄로 된 박스의 맥값이 gateway 맥값으로 나와있는데요...

    답글삭제