네트워크취약성과대책 #2 : 스머프(Smurf)공격의 원리
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 3,356 조회
- 0 추천
- 목록
본문
스머프 공격의 원리
스머프 공격은 대표적인 서비스거부공격(DoS)으로서 그 자체로 매우 위험한 공격이지만 주로 다른 공격을 하기 위한 사전 공격 또는 분산서비스거부(DDoS)공격의 한 형태로 이루어지는 경우가 많다.
실제로 몇 년 전까지 분산서비스거부 프로그램의 내부에 스머프 관련 코드가 포함되어 있는 경우가 발견되었다.
그렇다면 스머프 공격이란 무엇인가?
스머프 공격 역시 IP를 쉽게 위조할 수 있고 이에 대해 인증을 하지 않는 TCP/IP의 취약성을 이용한 공격 형태라 할 수 있다.
스머프 공격이란 다음 그림에서 보는바와 같이 공격자가 자신의 소스IP를 마치 다른 IP인 것처럼 위조(이 IP를 사용하는 실제 서버가 나중에 희생자(피해자)가 된다.
)하여 특정 네트워크의 브로드캐스트 주소로 “icmp echo request” 패킷을 보내는 것에서부터 시작된다.
이때 브로드캐스트주소(통상적으로 xxx.xxx.xxx.255)로 보내진 패킷은 브로드캐스트 영역 내에 있는 모든 PC나 서버에게 그대로 전달되고, “icmp echo request” 패킷을 받은 모든 PC나 서버는 일제히 패킷의 소스인 위조된 IP로 “icmp echo reply” 패킷을 보내어 응답하게 된다.
이때 브로드캐스트 주소로 요청을 받아 응답한 네트워크는 증폭기(amplifier), 공격자가 위조한 IP는 희생자(victim)가 되는 것이다.
결국 공격자는 자신의 존재를 속인 채, 해당 브로드캐스트 대역 및 희생자 서버 모두 선의의 피해자가 되는 셈이다.
만약 증폭기로 사용된 네트워크가 C Class 1개를 사용하고 있고, 이 영역 내에 250대의 PC나 서버가 작동하고 있다면 1개의 icmp 패킷 발송에 250개의 icmp 패킷이 증폭되어 응답하게 되는 것이다.
[그림] 스머프 공격의 원리
그런데, 공격자가 단 1개의 패킷이 아니라 지속적으로 수많은 패킷을 보낸다면? 그리고 증폭기로 사용된 네트워크가 C Class 1개가 아니라 여러 네트워크를 동시에 이용했다면 어떻게 될까? 그리고 “icmp echo request” 패킷 발송 시 패킷 사이즈를 더 크게 해서 보낸다면 어떻게 될까? 스머프 공격의 위험성은 바로 이러한 상황에서 그 피해는 더욱 커지게 된다.
즉, 단순히 하나의 희생자 서버가 서비스를 제대로 못하는 것뿐만이 아니라 증폭기와 희생자 서버가 위치한 네트워크 사이의 과도한 트래픽 유발이 더 큰 문제가 되는 것이다.
즉, 스머프 공격은 호스트 기반이 아닌 네트워크 기반 공격이라 할 수 있다.
만약 자신의 네트워크가 증폭기로 사용되거나 사용될 가능성이 있다면 이를 차단하기 위해 다음과 같이 조처하면 된다.
Router# conf t Router(config)#interface serial 0 Routerconfig-if)# no ip directed-broadcast Router(config-if)#^Z
Router# conf t Router(config)#interface ethernet 0 Router(config-if)# no ip directed-broadcast Router(config-if)#^Z |
먼저 config 모드 상태에서 순서대로 라우터에 있는 각각의 인터페이스 모드를 선택한 후 위와 같이 “no ip directed-broadcast”를 입력하기만 하면 된다.
이 설정을 함으로써 외부 네트워크에서 내부 네트워크의 브로드캐스트 주소로 직접 패킷을 발송한다 하더라도 응답하지 않게 된다.
여기에서 “no ip directed-broadcast”는 serial과 ethernet 인터페이스 등 모든 인터페이스에서 기본적으로 설정하여야 하는 권장 사항이고, 최근의 장비에서는 아예 기본 값으로 설정되어 출고되고 있다.
만약 serial 인터페이스에만 이 설정을 하고 ethernet 인터페이스에는 설정하지 않거나 또는 ethernet 인터페이스에만 설정하고 serial 인터페이스에는 설정하지 않는 경우가 있으므로 주의하기 바란다. 물론 serial 인터페이스의 경우 대부분 최소 IP개수 단위인 /30으로 구성되기 때문에 스머프 공격으로 인한 피해는 실제로 매우 미비하기는 하다.
이와 같이 설정한 후 실제로 이 문제가 해결되었는지 확인해 보기 위해 외부 네트워크의 한 서버에서 내부 네트워크의 브로드캐스트 주소로 직접 ping을 해 보면 된다.
아래의 경우 내부에서 /25(255.255.255.·128)를 사용한다고 가정하였을 때의 명령어이다.
# ping 211.47.64.127 |
정상적인 상황이라면 브로드캐스트 주소로 ping이 되지 않아야 한다.
즉, 외부 네트워크로 ping을 했을 때 아예 응답하지 않거나 중간의 라우터에서 대신 응답하는 것이 정상이다.
그런데, 아래와 같이 195.61.78.127로 ping을 했을 경우 195.61.78.127나 라우터가 아닌 내부의 모든 PC나 서버에서 한꺼번에 응답할 경우 이러한 네트워크는 스머프 공격의 증폭기로 사용될 수 있는 네트워크라는 것을 알 수 있다.
# ping 195.61.78.127 PING 195.61.78.127 (195.61.78.127) from 211.47.65.15 : 56(84) bytes of data. 64 bytes from 194.235.129.69: icmp_seq=0 ttl=235 time=330.0 ms 64 bytes from 194.235.129.86: icmp_seq=0 ttl=235 time=332.8 ms (DUP!) 64 bytes from 194.235.129.84: icmp_seq=0 ttl=235 time=334.2 ms (DUP!) 64 bytes from 194.235.129.38: icmp_seq=0 ttl=235 time=335.6 ms (DUP!) 64 bytes from 194.235.129.66: icmp_seq=0 ttl=235 time=336.8 ms (DUP!) 64 bytes from 194.235.129.124: icmp_seq=0 ttl=235 time=337.9 ms (DUP!) 64 bytes from 194.235.129.125: icmp_seq=0 ttl=236 time=339.1 ms (DUP!) 64 bytes from 194.235.129.61: icmp_seq=0 ttl=235 time=340.3 ms (DUP!) 64 bytes from 194.235.129.124: icmp_seq=0 ttl=235 time=341.4 ms (DUP!) 64 bytes from 194.235.129.121: icmp_seq=0 ttl=235 time=342.6 ms (DUP!) 64 bytes from 194.235.129.6: icmp_seq=0 ttl=235 time=343.8 ms (DUP!) |
여기에서 DUP는 duplicate의 의미로 한 번의 요청에 여러 IP에서 중복하여 응답하였기 때문에 제일 먼저 도착한 응답 외에는 모두 (DUP!)로 찍히는 것을 알 수 있다.
이렇듯 증폭기로 사용될 수 있는 네트워크 확인은 http://www.netscan.org/ 또는
http://www.powertech.no/smurf/에서 검색해 볼 수 있다.
주소를 검색해 보면 대부분은 이러한 취약성이 해소되었지만 아직도 일부 네트워크에서는 이러한 공격에 취약한 채로 방치되어 있다는 것을 알 수 있다.
그런데, 이쯤에서 한번쯤 생각해 보아야 할 것은 바로 “스머프”라는 용어이다.
“스머프”란 말은 아래 그림과 같이 예전에 만화로 즐겨 보았던 파란색의 주인공을 뜻하는 것이지만 처음 이 공격으로 사용되었던 공격 소스가 smurf.c이기 때문에 유래한 것이며 공격행위와 직접적으로 관련된 용어는 아니다.
[그림] 만화주인공 스머프 그림
smurf.c 소스가 공개된 후 정확히 1년 후, 소스 공개자는 공개 1주년을 기념하여 더욱 향상된(?) 버전인 papasmurf.c를 공개하였었다.
참고로 공격 코드인 papasmurf를 실행하면 다음과 같은 옵션이 제공된다.
# ./papasmurf
(papa)smurf.c v5.0 by TFreak
usage: ./papasmurf <source host> <broadcast file> [options]
Options -p: Comma separated list of dest ports (default 7) -r: Use random dest ports -R: Use random src/dest ports -s: Source port (0 for random (default)) -P: Protocols to use. Either icmp, udp or both -S: Packet size in bytes (default 64) -f: Filename containg packet data (not needed) -n: Num of packets to send (0 is continuous (default)) -d: Delay inbetween packets (in ms) (default 10000) |
공격 옵션을 보면 위에서처럼 패킷 사이즈 등 많은 옵션을 주어 공격할 수 있는 것을 알 수 있다.
관련자료
-
이전
-
다음