Friday, August 2, 2013

LAN 공격기법 중 ARP Spoofing 에 대해 알아보자.

 본 블로그는 지식 습득후 저장을 하는 공간입니다.
블로그 내의 게시글을 인터넷에서 악의적으로 사용할 경우 본인에게 책임이 있습니다.

 먼저 ARP Spoofing 공격을 하기 위해선 우선 전제조건이 필요하다.
ARP 는 mac address 를 사용하기 때문에 LAN 외부에 있는 네트웍은 통하질 않는다.

그래서 ARP Spoofing 을 시도하려면 공격자는 먼저 내부 네트웍으로 침투를 해야한다.
이때 내부에 Wifi 무선 공유기가 있다면 wireless Hacking 기법등으로 내부를 침투할 수
있겠지만 이건 논외로 넘어가기로 한다.


 <ARP (Address Resolution Protocol) 은 무엇인가?>

IP 주소를 변환시켜 주는 표준 프로토콜로써 내부 네트웍에서 통신을 한다고 했을때
ARP Broadcast로 어느 시스템이 특정 IP를 사용하는지 물어보고, 해당 IP를 가진
시스템이 응답을 해주면 source pc에서 target pc로 mac address 를 기반으로
data를 전송해 주는 것이다.

즉, ARP Protocol 은 외부로는 나갈수 없으며, 내부에서 여러 시스템의 mac address를
broadcast를 통해 알아내게 되고, 이를 통해 arp table 이라는 라우터의 메모리영역에
각 시스템의 IP와 mac address 를 match 시켜 기록하게된다.
기록된 arp table 을 바탕으로 외부에서 자료 요청이 있을때 요청된 ip를 기준으로
mac address를 찾게되고 해당되는 mac address 로 전송이 되는 것이다.

다시말해, LAN 환경에서 시스템을 구분짓는 것은 IP가 아니라 MAC address 이고,
WAN 환경에서 시스템을 구분짓는 것은 IP address 이다.

만약 누군가 어떤 특정 사이트에서 악의적인 글을 올려서 자신의 IP가 해당사이트로의
접근이 차단되게 되면 이를 악용하는 사례도 있다.

DHCP 가 IP를 할당할때 mac table을 확인하고 IP할당을 요청하는 시스템의 mac address와
비교를 하여 이미 match가 되는 mac address 가 있다면
mac address 와 match가 되는 ip로 할당을 해주는 것이다.

이를 이용해서 자신의 LAN 환경 설정에서 mac address 를 변경해 버린다면,
mac table 에는 자신의 mac address가 존재하지 않기 때문에 새로운 IP로 ISP에서
할당해 주는것이다. 그렇게되면 차단된 사이트로도 접근이 가능하다.


<ARP Spoofing 이란 무엇인가?>

ARP Spoofing 에 대해 알아보자.
spoofing 은 속이다는 뜻으로 해킹을 당하는 victim 으로부터 정보를 빼내는
일종의 해킹 기법이다.

ARP 는 몇가지 취약점을 가지고 있다. 정적인 Protocol 로써, data를 보내는
사람의 MAC address가 진짜인지 가짜인지 확인할 매커니즘이 없다.

attacker , victim , victim's friend 가 있다고 가정하자.
victim 은 victim's friend 에게 어떤 자료를 전송한다.

이때, attacker 가 victim 에게 victim's friend 는 나야!! 라는 packet 을 지속적으로
보내면 victim 이 가진 ARP Cache Table 의 내용이 변경이되는 것이다.

 결국은 victim 이 보내는 자료는 attacker 에게 전송되게 하는것이
arp spoofing 의 목적이다.

그런데, 여기서 한가지 문제가 있다.
attacker 가 data를 받게되면, 목적지 IP를 확인하게 되는데 자신의 IP가 아니므로
받은 Packet을 버리게 된다. Spoofing 의 의미가 없어지게 되므로,
받은 Packet 을 누군가에게 Forwarding 시키면 해결된다.

Packet Forwarding 방법에는 두가지가 있다.
Kernel 과 Application 인데 차이점은
Kernel 은 공격자의 pc가 하나의 router 로 동작하기 때문에 victim pc 에서
Traceroute 명령으로 확인해볼 경우에 발견 될 수 있다.
그리고 Application 은 traceroute 로도 발견이 불가능하다는점이다.

Kernel 에서 지원하는 방법은
     Unix : /proc/sys/net/ipv4/ip_forwarding 을 수정하여 내용을 1로 변경하면 된다.
              또는 echo 1 > /proc/sys/net/ipv4/ip_forwarding  으로도 가능하다.
     Windows : regedit 를 열어서
                 \HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
                 \IPEnableRouter 를 1로 변경해주면 된다.
Application 사용하는 방법은
     fragrouter -B1 이라는 명령으로 해결할 수 있다.




<ARP Spoofing 실습>

먼저 실습에 필요한 OS가 많은 관계로 VM을 사용해야 한다.
VM에 올릴 OS 는 Backtrack(attacker) , Win XP1(victim), Win XP2(victim's friend) 3개.
모두다 통신이 가능한 상태로 VM에서 NAT나 hostonly 로 맞혀주면 될 것이다.

victim's IP : 192.168.37.132
victim's friend IP : 192.168.37.129
attack's IP : 192.168.37.130
Gateway : 192.168.37.2

3개의 OS 를 모두 NAT 설정했다면 Gateway 도 자동으로 잡혔을 것이다.

victim 이 victim'c friend에게 data를 보내려면 gateway 를 먼저 거쳐가야 한다.
attacker 가 gateway의 mac address 를 자신의 mac address 라고 속여서 계속해서
victim pc 로 Packet 을 전송한다면 진짜 gateway로 가야할 data가 attacker 에게
전송이 되는 것이다. attacker는 간단하게 Packet Forwarding만 시켜주면 해결된다.

공격하기 전에 먼저 victim의 ARP Cache Table 을 확인해보자.






















attacker 가 지속적으로 victim에게 arp reply Packet 을 보내게 되면
victim 은 자신의 ARP Cache Table 의 내용을 인증절차 없이 Update하게 된다.





















다시 victim 의 ARP Cache Table 을 확인해보면 Mac address 가 attacker 의 mac address
로 바뀌었음을 확인할 수 있다.


















attacker's mac address





















여기서 victim's friend 는 사용되지 않았지만..
attacker 가 fragrouter -B1 으로 Packet Forwarding 을 시켜준 뒤에
victim 이 실제로 Packet 을 victim's friend로 보냈을때
attacker로 보내는것을 wireshark 를 통해  확인할 수 있으니, 확인해보기 바란다.


<ARP Spoofing 방어>

공격자는 ARP Cache Table 을 변조시키지 위해 지속적으로 ARP Reply Packet 을
던지게 되는데 이러한 ARP Storm 이 있는지 wireshark 를 통해 유추할 수 있다.

서버 관리자가 서버의 arp cache table 이 변경될때 마다 관리자 메일로 발송하는
것도 한 방법.

arp -s IP MAC 명령어로 자신의 ATP Cache Table 을 Static방식으로 직접 운영.
중요한 서버 및 게이트웨이등은 static 으로 운영하여 변조가 되지 않도록 한다.


No comments:

Post a Comment