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 를 발생시키게 되고
게이트웨이는 그에대한 응답을 해주게 되므로 테이블에는 정상적인 캐시 정보가 갱신된다.

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



2013년 12월 3일 화요일

PPP (Point-to-Point Protocol)




- 점대점 프로토콜(1:1)

- 하나의 인터페이스로 하나의 장비만 통신 가능.

- 주로 WAN 구간에서 많이 사용 된다.

- PPP는 중계 장치를 거치지 않고 통신을 하는 방식이다. 즉, Hub & Switch 환경에서는 사용이 불가능 하다.

<사용이 가능한 예>



<사용이 불가능한 예>







PPP는 일반적으로 다음과 같이 몇가지 단계를 거쳐 통신이 가능한 상태가 된다.


1. 링크 비 활성화 단계


이 단계는 두 장비가 물리적으로 연결되어 있지 않을때의 상태이다. PPP에서 시작과 끝의 상태가 바로 이 상태이다. 물리적인 연결이 구성이 되면 다음 상태로 넘어간다.





2. 링크 수립 단계



이 단계에서는 물리적인 연결이 이루어진 상태이고 링크 제어 프로토콜 (Link Control Protocol,LCP)이 링크의 논리적인 연결을 위해 기본적인 설정들을 수행한다.

 두 장비중 한 장비는 먼저 LCP를 이용하여 서로간의 링크에 대한 설정 [요청] 메세지를 보내게 된다. 여기서 주의할 점은 양방향 통신이 가능해야 한다. 왜냐하면 이에대한 [요청] 메세지를 받게 된 장비는 [응답]을 위하여 ACK 메세지를 보내야 하는데 단방향 통신일 경우 한쪽으로만 전송이 이루어지기 때문에 [응답]을 할 수 없게 된다.

서로간의 요청-응답 쌍수를 정상적으로 수행하게 되면 링크는 개방이 되며 인증 단계로 넘어가게 된다.





3. 인증 단계

이 단계에선 링크는 개방이 된 상태이지만 서로간의 통신은 이루어지지 않는다. 인증 단계는 필수적인 단계는 아니다. 즉 필요할 경우 인증 설정을 할 수 있고 인증 설정을 하지 않을 경우 [2. 링크 수립 단계] 에서 [4. 링크 개방단계] 로 넘어가게 된다.

인증을 사용할 경우 인증 프로토콜인 PAP와 CHAP가 있는데 PAP의 경우 링크상에서 평문으로 전송되기 때문에 보안상 좋지 않다.












< PAP 사용 >

인증시 사용할 이름과 패스워드가 평문으로 그대로 노출 되어 있다.

username : R2
password : 1234