security

Total 112
Today 0
profile_image
운영자
01-02-06 09:20 0개 2,537회
What is 'Sniffing'? -- (2)
What is 'Sniffing'?













Contents



I. 스니핑이란?



II. 스니핑의 원리



III. 스위칭 환경에서의 스니핑 기법



1. Switch Jamming

2. ARP Redirect

3. ARP spoofing

4. ICMP Redirect

5. 스위치의 span/monitor port를 이용한 스니핑



IV. 스니핑 방지 대책



1. 암호화

2. 스위칭 환경의 네트워크 구성

3. 스니퍼 탐지

4. 네트워크 관리







--------------------------------------------------------------------------------









III. 스위칭 환경에서의 스니핑 기법



일반적으로 앞서 설명한 스니핑을 방지하는 방법으로 스위칭 허브를 사용하게 된다. 스위칭 허브는 로컬 네트워크를 여러개의 세크먼트로 나누어 쓸 수 있도록 하는데, 각 세그먼트내의 트래픽은 다른 세그먼트로 전달되지 않는다. 따라서 스위칭 허브를 이용하여 업무별로 또는 독립적인 사이트별로 네트워크를 나누어 놓으면 다른 네트워크 세그먼트내의 네트워크 트래픽을 도청할 수 없게 된다. 하지만 Switch Jamming, ARP Redirct나 ICMP Redirct 등의 기법을 이용하여 다른 네트워크 세그먼트의 데이터를 스니핑 할 수 있는 방법도 있다.



1. Switch Jamming



많은 종류의 스위치들은 주소 테이블이 가득차게 되면(Full) 모든 네트워크 세그먼트로 트레픽을 브로드케스팅하게 된다. 따라서 공격자는 위조된 MAC 주소를 지속적으로 네트워크에 흘림으로서 스위칭 허브의 주소 테이블을 오버플로우 시켜 다른 네트워크 세그먼트의 데이터를 스니핑 할 수 있게 된다. 이는 보안 원리의 하나인 "Fail close(시스템에 이상이 있을 경우 보안기능이 무력화되는 것을 방지하는 원리)"를 따르지 않기 때문에 발생한다. 스위치들은 사실상 보안보다는 기능과 성능 위주로 디자인 되어 있다.



다음은 arp flooding 공격을 할 때 발생하는 임의의 arp 패킷을 tcpdump를 이용하여 잡은것이다. 공격자가 만들어낸 이러한 임의의 arp 패킷의 MAC 주소는 스위치의 주소 테이블을 오버플로우 시키게 된다.



[root@consult /root]# tcpdump -e arp



tcpdump: listening on eth0



07:44:23.898915 79:94:74:11:d7:dc bc:47:d8:7b:31:51 arp 42: arp reply 82.195.6.82 is-at 79:94:74:11:d7:dc

07:44:23.898954 b8:29:3:9c:9e:5c 3f:cf:9b:70:fa:14 arp 42: arp reply 204.227.135.56 is-at b8:29:3:9c:9e:5c

07:44:23.898991 5:6f:25:db:4b:76 97:a0:d6:c7:f1:8f arp 42: arp reply 158.81.199.91 is-at 5:6f:25:db:4b:76

07:44:23.899027 f0:f4:2c:8f:50:f7 a6:ca:21:a1:dd:26 arp 42: arp reply 114.215.48.176 is-at f0:f4:2c:8f:50:f7

07:44:23.899063 10:3:1:5b:78:9f de:d0:b:d0:60:fa arp 42: arp reply 171.63.250.67 is-at 10:3:1:5b:78:9f

07:44:23.899099 c4:8c:89:15:83:fb 7d:cc:32:5b:f2:42 arp 42: arp reply 235.178.172.145 is-at c4:8c:89:15:83:fb

07:44:23.899136 5d:f2:9d:d4:92:49 5d:95:c2:bd:8f:86 arp 42: arp reply 19.140.139.241 is-at 5d:f2:9d:d4:92:49

07:44:23.899172 49:19:9a:cc:14:85 8c:49:56:7e:8b:b2 arp 42: arp reply 127.191.23.251 is-at 49:19:9a:cc:14:85

07:44:23.899209 71:28:86:3:70:99 90:4e:aa:20:d3:f2 arp 42: arp reply 143.251.139.236 is-at 71:28:86:3:70:99

...











2. ARP Redirect 공격



먼저 정상적인 ARP Protocol에 대하여 설명한다. IP 데이터 그램에서 IP 주소는 32 bit 구조로 되어 있고 이더넷 주소(MAC 주소)는 48 bit의 크기를 갖는다. 다른 호스트로 ftp나 telnet 등과 같은 네트워크 연결을 하기 위해서는 상대방 호스트의 이더넷 주소를 알아야 한다. 즉, 사용자는 IP 주소를 이용하여 연결을 하지만 이더넷상에서는 이더넷 주소를 이용하게 된다. 이를 위하여 IP주소를 이더넷 주소로 변환시켜 주어야 하는데 이를 ARP(Address Resolution Protocol)라 한다. 그리고 그 역 과정을 RARP(Reverse Address Resolution Protocol)라 한다. ARP를 이용하여 상대 호스트의 이더넷 주소를 알아내는 과정은 다음과 같다.



① 먼저 네트워크내의 모든 호스트에 "ARP Request"라고 불리는 이더넷 프레임을 보낸다. 연결하고자 하는 호스트의 IP 주소를 포함한 ARP Request는 이더넷상의 모든 다른 호스트들에게 "이 IP 주소를 사용하는 호스트는 나에게 하드웨어 주소(이더넷 주소)를 알려주시오"라는 의미를 갖는다.



② ARP Request를 받은 호스트 중 해당 IP를 사용하는 호스트는 자신의 하드웨어 주소(이더넷 주소)를 ARP Request를 보낸 호스트에게만 보내주게 되는데 이를 ARP Reply라고 한다.



③ 이후 두 호스트간의 통신(ftp, telnet 등)을 위하여 상대방의 이더넷 주소를 사용하게 되며, IP datagram을 송수신할 수 있게 된다.





다음 그림은 ARP Request와 ARP Reply의 과정을 보여주고 있다.













다음은 실제로 172.16.2.15 번 호스트에서 172.16.2.26번으로 ping을 했을 경우 나타나는 arp 트래픽이다. arp request/reply를 교환한 두 호스트는 상대방의 MAC 주소를 각각의 arp cache에 저장하게 된다. 따라서 마지막 라인에서 172.16.2.26번 호스트가 15번 호스트로 echo reply를 보낼때는 arp request/reply 과정을 거치지 않아도 된다.







[root@consult /root]# tcpdump -e host 172.16.2.26



tcpdump: listening on eth0



18:16:25.880837 0:0:e8:76:e8:bb Broadcast arp 60: arp who-has 172.16.2.26 tell 172.16.2.15

18:16:25.881021 0:c0:26:27:b:1c 0:0:e8:76:e8:bb arp 60: arp reply 172.16.2.26 is-at 0:c0:26:27:b:1c

18:16:25.881243 0:0:e8:76:e8:bb 0:c0:26:27:b:1c ip 74: 172.16.2.15 > 172.16.2.26: icmp: echo request

18:16:25.881407 0:c0:26:27:b:1c 0:0:e8:76:e8:bb ip 74: 172.16.2.26 > 172.16.2.15: icmp: echo reply





"ARP Redirect" 공격은 위조된 arp reply를 보내는 방법을 사용한다. 즉 공격자 호스트가 "나의 MAC 주소가 라우터의 MAC 주소이다"라는 위조된 arp reply를 브로드케스트로 네트워크에 주기적으로 보내어, 스위칭 네트워크상의 다른 모든 호스트들이 공격자 호스트를 라우터로 믿게끔한다. 결국 외부 네트워크와의 모든 트래픽은 공격자 호스트를 통하여 지나가게 되고 공격자는 스니퍼를 통하여 필요한 정보를 도청할 수 있게 된다.



※ ARP Protocol specification에 의하면 이미 cache에 저장하고 있는 IP에 대한 ARP request를 받게되면 호스트는 ARP request를 보낸 호스트의 MAC 주소를 cahe에 업데이트 하게 된다고 나와 있다. 그리고 이러한 cache의 업데이트 기능은 arp reply에도 적용되는 것으로 보이며, 위의 공격이 성공할 수 있는 요인이 된다. 하지만 시스템에 따라 다를 수도 있다.



이때 공격 호스트는 IP Forwarding 기능을 설정하여야 공격 호스트로 오는 모든 트래픽을 원래의 게이트웨이로 Forwarding 해줄 수 있다. 그렇지 않으면 외부로 나가는 모든 네트워크 연결이 끊어지게 된다.



다음은 "arpredirect"라는 공격 프로그램으로 공격했을 때 네트워크상에 나타나는 arp 패킷을 tcpdump를 이용하여 잡은 모습이다. 공격이 끝날때는 원래의 arp 매핑을 복원하여 네트워크 연결이 끊어지지 않도록 하고 있다.





[root@consult dsniff-1.8]# arpredirect 172.16.2.1



intercepting traffic from LAN to 172.16.2.1 (^C to exit)...





restoring original ARP mapping for 172.16.2.1



[root@consult dsniff-1.8]#



[root@consult /root]# tcpdump -e arp



(공격자 호스트가 라우터로 가장하는 공격)



15:29:36.887943 0:50:da:d3:1f:d3 Broadcast arp 60: arp reply 172.16.2.1 is-at 0:50:da:d3:1f:d3

15:29:38.895089 0:50:da:d3:1f:d3 Broadcast arp 60: arp reply 172.16.2.1 is-at 0:50:da:d3:1f:d3

15:30:01.005097 0:50:da:d3:1f:d3 Broadcast arp 60: arp reply 172.16.2.1 is-at 0:50:da:d3:1f:d3

15:30:05.025086 0:50:da:d3:1f:d3 Broadcast arp 60: arp reply 172.16.2.1 is-at 0:50:da:d3:1f:d3

(공격자 MAC) (라우터 IP) (공격자의 MAC)



...





(공격이 끝날 때 네트워크를 복원하는 과정) 15:52:55.025088 0:60:2f:a3:9a:1c Broadcast arp 60: arp reply 172.16.2.1 is-at 0:60:2f:a3:9a:1c

15:52:57.035050 0:60:2f:a3:9a:1c Broadcast arp 60: arp reply 172.16.2.1 is-at 0:60:2f:a3:9a:1c

15:52:59.045050 0:60:2f:a3:9a:1c Broadcast arp 60: arp reply 172.16.2.1 is-at 0:60:2f:a3:9a:1c

(라우터 MAC) (라우터 IP) (라우터 MAC)







※ 위조된 패킷을 주기적으로 보내는 이유는 다른 호스트의 arp cache를 지속적으로 위조하기 위해서 이다.



위와 같은 공격을 하게되면 다른 모든 호스트들은 공격자 호스트를 라우터로 인식하고 외부로 연결되는 모든 트래픽을 공격 호스트로 보내게 되는데 이때 공격자는 다음과 같이 IP Forwarding 기능을 이용하여 원래의 목적지로 패킷을 Forwarding 해야만 네트워크가 끊어지지 않게되고, 공격자는 지나가는 패킷을 스니핑할 수 있다.



[root@consult fragrouter-1.6]# ./fragrouter -B1



fragrouter: base-1: normal IP forwarding



172.16.2.15.1297 > 203.233.150.11.23: . ack 390289256 win 7636 (DF)

172.16.2.142.1287 > 203.233.150.11.53: udp 36

172.16.2.142.1288 > 210.116.114.147.80: S 13774318:13774318(0) win 8192 (DF)

172.16.2.15.1297 > 203.233.150.11.23: . ack 390289317 win 7575 (DF)

172.16.2.15.1300 > 203.233.150.39.23: . ack 1685228460 win 7865 (DF)

172.16.2.142.1288 > 210.116.114.147.80: . ack 97085742 win 8760 (DF)

172.16.2.142.1288 > 210.116.114.147.80: P 13774319:13774505(186) ack 97085742 win 8760 (DF)

...

댓글목록

등록된 댓글이 없습니다.