네트워크고전해킹기법의이해 by DongKi, Yeo (superdk@hanmail.net) 2008. 06. 이글의목표는네트워크고전해킹기법의원리를정확하게이해하여, 네트워크프로토콜을이용한공격이무엇인지를이해하고, 전문가 라불리는사람들까지도최근중국에서빈번하게시도하고있는 DDoS 공격을손쉽게방어하지못하고, 결국에는공격에노출될수밖에없는지에대해보안에관심이있는사람들에게까지알려서이문제의심각성을인식할수있는계기를마련하고자한다. 더불어, 더많은사람들이 DDoS 공격의심각성을인식하여자신의 PC 가 botnet 의숙주 PC 가 되지않도록하기를바라는마음이다.
목차 1. Prologue 2. (TCP) SYN Flooding 3. Land Attack 4. Smurf Attack 5. Ping of Death 6. Tear Drop 7. DoS (Denial of Service) & DDoS (Distributed Denial of Service) 8. DRDoS (Distributed Reflection DoS) 9. Epilogue
1. Prologue 먼저, 본문에서구현된모든공격실습은실제네트워크에피해를발생시키지않도록저자가공격자와대상자만이존재하는실습용네트워크를만들어서테스트한것이므로, 이글을읽은독자는일반네트워크에서동일한테스트를하면안된다는것을분명히기억해야한다. 그리고, 이글을읽은호기심이많은독자가직접실습을해봤을때, 여기에서설명된고전기법인 (TCP) SYN Flooding, Tear Drop 등의네트워크공격기법으로인한대상서버의 Crash를유발시키지못할수있다. 왜냐하면이러한공격기법이사용되었던때와비교해서, 독자의컴퓨터사양이너무우수하기때문이다. 이러한현실때문에공격자입장에서는 1-tier -> 2-tier(DoS) -> 3-tier(DDoS) 와 같이보다많은트래픽을발생시킬수있는구조로공격기법이진화될수밖에없었던과정을 자연스럽게이해할수있을것이다. 다음으로, 본문에서사용된용어와프로그램에대해서아래의의미를두고사용하였으니, 이를 기억하고본문을읽는다면필자의의도를보다정확하게파악할수있을것이다. 가 ) 용어 1. Client: 접속을요청하는 Sender로공격자 (Attacker) 를의미한다. 2. Server / 대상서버 (PC): 접속을받아들이는 Receiver로희생자 (Victim) 를의미한다. 3. Botnet: 관리프로그램의제어를받아 DDoS 공격에사용되는 Worm. 4. Src IP / Dst IP: Source IP / Destination IP의약어 나 ) 프로그램 1. Wireshark: Windows OS 용패킷캡쳐프로그램 (Freeware) 2. hping: 패킷생성프로그램 (Freeware) 3. 보안장비 : Watch Mode 방어의예에서는 Juniper Netscreen Firewall을사용함. 4. smurf: smurf 공격이구현된 Open Source 5. teardrop: teardrop 공격이구현된 Open Source 2. (TCP) SYN Flooding 2-1.TCP 3-Way handshaking TCP Connection은반드시 3-Way handshaking 과정을거친후 Session을형성하고, 통신이시작된다. 그러므로, 이과정을이용한공격을이해하기위해서는먼저, 이과정을이해하여야하므로, TCP 3-Way handshaking 이무엇인지를먼저살펴보자.
( 그림 2-1-1) 위의 ( 그림 2-1-1) 을순서대로설명하면아래와같다. 1. 접속을원하는 Client에서접속을허용할 Server로 SYN Packet을보낸다. 2. Server에서는이 SYN Packet에대해서접속할준비가되었다는의미로 SYN/ACK Packet을 Client로보낸다.( 이때, Server의 SYN Queue에해당정보가 Insert 된다.) 3. Client는지금접속을하겠다는의미로 Server에게 ACK Packet을보내게되고, ( 이 ACK Packet을받게되면, Server의 SYN Queue에서해당정보가 Delete 된다.) 4. Client와 Server 사이에는 Session이형성되며, 통신이시작된다. 패킷캡쳐프로그램인 Wireshark 를이용하여대표적인 TCP 통신인 HTTP 접속시의패킷을 캡쳐하여위의과정이이루어지는지를확인해보자. ( 그림 2-1-2) 실제패킷을캡쳐한 ( 그림 2-1-2) 에서보는바와같이워낙순식간에일어나는일이라서 사용자들이의식하지못할뿐, 모든 TCP Connection 에서는이와같은선행과정이실제로 일어난다.
( 그림 2-1-2) 을자세히보면, SYN -> SYN, ACK -> ACK -> Get / HTTP/1.1 의순서로 ( 그림 2-1-1) 에서설명한 3-Way handshaking 과정을정확하게거치고홈페이지의내용을 읽어오는것을볼수있다. 2-2. SYN Flooding SYN Flooding 이란 SYN을넘치게한다는말이다. 즉, Client가서버의 SYN Queue를 Overflow시켜서서버를오동작시키거나 Crash시키는기법이다. 이때정상적인 IP로대상서버에 SYN 패킷을보내면위의 3-Way handshaking 개념에서본것과같이서버의 SYN Queue는정상적으로비워진다. 그러므로, 반드시비정상적인 IP로 SYN Packet을보내서 Client로부터 ACK Packet을받지못하도록하여야한다. 여기에서말하는 비정상적인 IP 는반드시네트워크에존재하지않는 IP여야만한다. ( 그림 2-2) 위의 ( 그림 2-2) 를순서대로설명하면아래와같다. 1. 공격자는존재하지않는 IP로 Spoofing하여대상서버에 SYN Packet을보낸다. 2. 서버는 Source IP인 192.168.0.50 으로 SYN/ACK Packet을보내지만, 192.168.0.50 컴퓨터는네트워크에존재하지않으므로, 서버에 ACK 신호를보낼수없다. 그러므로, 서버에서는 SYN Queue의내용이지워지지않는다. 3. 공격자는대상서버에이러한 SYN Packet을무한히많이보낸다. 4. 결국대상서버의 Queue에는 Insert만되고, Delete가되지않기때문에서버의 SYN Queue가 Overflow 된다. 5. 서버가오동작하거나 Crash 된다.
2-3. SYN Flooding 공격예 2-3-1. 환경 * Sender IP: 192.168.0.10 ( 단, 192.168.0.50 이네트워크에없는것을확인 ) [root@ground root]# ifconfig eth0 eth0 Link encap:ethernet HWaddr 00:00:E2:59:C7:4B inet addr:192.168.0.10 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:436 errors:0 dropped:0 overruns:0 frame:0 TX packets:154 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:48301 (47.1 Kb) TX bytes:19216 (18.7 Kb) Interrupt:11 Base address:0x9000 Memory:81a00000-81a00038 [root@ground root]# ping 192.168.0.50 PING 192.168.0.50 (192.168.0.50) 56(84) bytes of data. From 192.168.0.10 icmp_seq=1 Destination Host Unreachable From 192.168.0.10 icmp_seq=2 Destination Host Unreachable From 192.168.0.10 icmp_seq=3 Destination Host Unreachable From 192.168.0.10 icmp_seq=4 Destination Host Unreachable * Receiver IP: 192168.0.20 ( 단, 192.168.0.50 이네트워크에없는것을확인 ) C:\Documents and Settings\superdk>ipconfig Windows IP Configuration Ethernet adapter Local Area Connection: Connection-specific DNS Suffix. : IP Address............ : 192.168.0.20 Subnet Mask........... : 255.255.255.0 Default Gateway......... : 192.168.0.254 C:\Documents and Settings\superdk>ping 192.168.0.50 Pinging 192.168.0.50 with 32 bytes of data: Request timed out.
2-3-2. 공격의예 [root@ground root]# hping 192.168.0.20 -a 192.168.0.50 -p 80 -S -i u10000 HPING 192.168.0.20 (eth0 192.168.0.20): S set, 40 headers + 0 data bytes --- 192.168.0.20 hping statistic --- 349 packets tramitted, 0 packets received, 100% packet loss round-trip min/avg/max = 0.0/0.0/0.0 ms [root@ground root]# 위공격의예를설명하면다음과같다. Src IP 를 192.168.0.50 으로 Spoofing 하여, Dst IP 192.168.0.20 와 Dst Port 80 으로 SYN Packet 을초당 10 개씩보내라. 2-3-3. Receiver 에서해당패킷캡쳐화면 ( 그림 2-3-3) 위의 ( 그림 2-3-3) 에서캡쳐된것과같이, 들어오는 SYN 패킷이존재하지만, Src IP(192.168.0.50) 가존재하지않으므로응답을할수없기때문에, SYN_ACK 패킷이나 ACK 패킷이없고, seq 값도변함이없는것을볼수있다. 2-4. SYN Flooding 방어방법 다양한방법이있다. 하지만개념을이해한다는의미에서대표적인방법인 Watch Mode 를 이해하자.
( 그림 2-4) 위의 ( 그림 2-4) 를순서대로설명하면아래와같다. 1. 대상서버의앞에있는라우터 / 방화벽장비에서 SYN Packet을감시한다. 2. 내부에서 SYN/ACK Packet을보낸후, 3. 외부에서다시이에해당하는 ACK Packet이오기까지의시간을측정한다. (SYN Flooding 공격이라면 ACK Packet이정해진시간동안올리가없다.) 4. 정해진시간을초과하면, 라우터 / 방화벽장비에서 FIN Packet을보내서연결을종료시키게되고, 대상서버는 SYN Queue에있는해당내용을지운다. 2-5. SYN Flooding 방어를 Watch Mode로설정하는화면초보수준의독자라면약간어이가없을수도있겠지만, SYN Flooding과같이이미알려진기초적인기법에대해서는 ( 그림 2-5) 에서보는바와같이보안장비 ( 방화벽 ) 에서옵션체크만해주면방어가된다. ( 그림 2-5)
3. Land Attack 3-1. 정상적인패킷의흐름 ( 그림 3-1) 에서보는것과같이정상적인패킷은자신의 IP를 Source IP로하고, 대상의 IP를 Destination IP로해서 Receiver에게패킷을보내게된다. ( 그림 3-1) 위의 ( 그림 3-1) 을순서대로설명하면아래와같다. 1. Sender는 Receiver에게자신의 IP (192.168.0.10) 를 Src IP로하고, Receiver의 IP 192.168.0.20를 Dst IP로하여패킷을보낸다. 2. Receiver는 Sender가보낸패킷을받고, 응답을한다. ( 단, 이때에는자신 (192.168.0.20) 이 Sender가되고, Src IP는 192.168.0.20 이되고, Dst IP는 192.168.0.10 이된다.) 3-2. Land Attack Land Attack 은전기 / 전자이론에나오는접지 (Ground) 를바닥이아닌자기자신에게 연결한모양을연상하면되는공격방법으로간단한공격개념은아래와같다. - Client 가대상서버로패킷을보낼때, Source IP 를대상서버의 IP 로 Spoofing 하고, Port 정보도 Source / Destination Port 모두를동일하게변조한다. - 대상서버는자신이보낸적이없는 Packet 을받게되고, 이 Packet 을처리하지못하여 Crash 되거나, 오동작을한다.
( 그림 3-2) 위의 ( 그림 3-2) 를순서대로설명하면아래와같다. 1. 공격자는대상자의 IP로 Spoofing하여대상서버에 Packet을지속적으로보낸다. 2. 서버는자신이보낸적이없는이러한패킷을처리하지못하거나, 힘겹게처리하게된다. 3. 공격자는지속적으로대상자에게이러한패킷을보낸다. 4. 결국서버는즉시 Crash 되거나, 오동작을하게된다. 3-3. Land Attack 예 3-3-1. 공격의예 [root@ground ~]# hping 192.168.0.20 -a 192.168.0.20 -s 100 -p 100 -S -c 100 HPING 192.168.0.20 (eth192.168.0.20): S set, 40 headers + 0 data bytes 위공격의의미를설명하면다음과같다. Src IP 를 192.168.0.20 으로 Src Port 를 80 으로 Spoofing 하여, Dst IP 192.168.0.20 과 Dst Port 100 에 SYN Packet 을보내라. 3-3-2. Receiver 에서해당패킷캡쳐화면 [root@test root]# tcpdump -nei eth0 host 192.168.0.20 and port 100 tcpdump: listening on eth0 10:44:11.106556 0:c0:9f:26:6f:a1 78:6:17:38:f:59 ip 60: 192.168.0.20.100 > 192.168.0.20.100: S 965068398:965068398(0) win 512 10:44:12.107852 0:c0:9f:26:6f:a1 78:6:17:38:f:59 ip 60: 192.168.0.20.hostname > 192.168.0.20.100: S 511956757:511956757(0) win 512 10:44:13.108677 0:c0:9f:26:6f:a1 78:6:17:38:f:59 ip 60: 192.168.0.20.iso-tsap
> 192.168.0.20.100: S 339688020:339688020(0) win 512 10:44:14.109475 0:c0:9f:26:6f:a1 78:6:17:38:f:59 ip 60: 192.168.0.20.103 > 192.168.0.20.100: S 861288640:861288640(0) win 512 10:44:15.110239 0:c0:9f:26:6f:a1 78:6:17:38:f:59 ip 60: 192.168.0.20.104 > 192.168.0.20.100: S 455383108:455383108(0) win 512 ( 결과 3-3-2) ( 그림 3-3-2) 위의 ( 결과 3-3-2) 와 ( 그림 3-3-2) 에서캡쳐된것과같이, 각각의첫번째패킷에서는 Src IP = Dst IP, Src Port = Dst Port 인것을볼수있다. 하지만, Redhat 9와 Windows XP SP2에서는 Land Attack이패치되었기때문에, 이후의패킷에서는 Src Port 가자동증가되어 Land Attack에피해를입지않는것을확인할수있다. 이결과를보면서독자여러분은보안패치의중요성과필요성을인식해야만한다. 이문서는 개념이해를위한문서이므로, 여기까지만테스트하기로한다. 3-4. Land Attack 방어방법 역시개념을이해한다는의미에서대표적인방법인 Watch Mode 를이해하자. ( 그림 3-4)
위의 ( 그림 3-4) 를순서대로설명하면아래와같다. 1. 대상서버의앞에있는라우터 / 방화벽장비에서 Packet을감시한다. 2. Packet 중에서 Source IP와 Destination IP, Source Port와 Destination Port가동일한 Packet이있는지감시한다. 3. Land Attack에해당하는 Packet인경우, 라우터 / 방화벽장비에서차단한다. 3-5. Land Attack 방어를 Watch Mode 로설정하는화면 아래와같이보안장비에서옵션체크만해주면방어가된다. ( 그림 3-5) 4. Smurf Attack 4-1. 정상적인 Ping의흐름 Client가 Server에게네트워크에연결되었는지확인하기위해서 Request를보내고, 네트워크에존재하는 Server가이응답요청에대해서 Reply로응답한다. ( 그림 4-1)
4-2.Smurf Attack ( 그림 4-2) 와 ( 그림 4-3) 에서보는것과같이 Broadcast Network 를이용하여대상서버에게 DoS 공격을하는기법이다. ( 그림 4-2) ( 그림 4-3) 정확한이해를돕기위하여두가지의형태로표현하였는데, 위의 ( 그림 4-2) 와 ( 그림 4-3) 을 순서대로설명하면아래와같다. 1. 공격자는대상자의 IP 로 Spoofing 한후, 대상자가속해있는 Broadcast Network 로 Broadcast 요청 (Request) 을보낸다. 2. Boradcast Network 는대상서버에게응답 (Replay) 한다.
3. ( 네크워크의규모에따라서 ) 대상서버는응답 (Replay) 을받다가느려지거나 Crash 된다. 4-3.Smurf Attack 예 4-3-1. 공격화면예 [root@ground root]#./smurf 192.168.0.50 bcast 0 10 1000 smurf.c v4.0 by TFreak Flooding 192.168.0.50 (. = 25 outgoing packets)... 위의공격화면의의미를설명하면다음과같다. Dst IP 인 bcast (192.168.0.255) 로 192.168.0.50 에서 ICMP Request 를보낸것으로 위장된 1000 size 의패킷을 10ms 간격으로보내라. 4-3-2. Receiver 에서해당패킷캡쳐화면 ( 그림 4-3-2-1) 위의 ( 그림 4-3-2-1) 에서캡쳐된것과같이, 대상 PC 는 Broadcast Network Address 로 패킷을보낸적이없지만, 그러한패킷이보낸것과동일한트래픽이발생하고있다. 여러분의이해를돕기위하여, 필자가발생시킨가상의 Smurf Attack 이대상서버의 Lan Card (NIC) 에서발생시키고있는트래픽을 ( 그림 4-3-2-2) 와같이시각적으로볼수있다.
( 그림 4-3-2-2) 만일이네트워크가가상으로만들어진네트워크가아니라, 수백대의컴퓨터가존재하는실제 네트워크였다고가정하면, 위의그래프는훨씬높은수치를보였을것이고, 대상서버는큰 영향을받았을것이다. 4-4.Smurf Attack 방어방법 역시개념을이해한다는의미에서대표적인방법인 Watch Mode 를이해하자. ( 그림 4-4) 위의 ( 그림 4-4) 를순서대로설명하면아래와같다. 1. 대상서버의앞에있는라우터 / 방화벽장비에서 Packet 을감시한다.
2. Destination IP 가 Broadcast Address 인 Packet 을차단한다. 5. Ping of Death 5-1. 정상적인 Ping 패킷의구조 (RFC791 참고 ) 이해를돕기위해, 실제 ICMP 패킷을 Capture 해서아래에표시하였다. ( 그림 5-1-1) 정상적인 ICMP Request Structure ( 그림 5-1-2) ICMP Replay Structure 위와같이 Type, Code, Checksum, Identifier, Sequence number, Data 에적절한값이 채워져서 ICMP 의역할을수행한다. 5-2. Ping of Death ( 그림 5-1-1) 과 ( 그림 5-1-2) 에서보는것과같이정상적인 Ping(ICMP) 패킷은단순한 Control 정보만을담고있기때문에, IP Header를포함한최대크기가 65,535 bytes(=16 bits) 까지로정의되어있다. 하지만, 공격자가 65,536 bytes 이상의패킷을대상서버에게보내게되면, 대상서버에서 ICMP를위해할당된 Buffer가 Overflow 되어, 결국 Crash 되거나오동작하게된다.
( 그림 5-2) 위의 ( 그림 5-2) 를순서대로설명하면아래와같다. 1. Client는대상서버에 ICMP Protocol 에정의된최대크기보다큰 80,000 bytes 크기의 ICMP Packet을보낸다. 2. Fragmentation 되어서대상서버로들어온패킷은정해진 Protocol에맞지않기때문에재조합 (Re-assembly) 에실패한다. 3. 해당 Buffer 가 Overflow 되어, 대상서버는 Crash 되거나오동작을일으킨다. 5-3. Ping of Death 예 5-3-1. 공격의예 [root@ground root]# hping -1 192.168.0.50 -d 100000 HPING 192.168.0.50 (eth0 192.168.0.50): icmp mode set, 28 headers + 34464 data bytes len=1500 ip=192.168.0.50 ttl=128 DF id=34243 icmp_seq=0 rtt=4.4 ms len=1500 ip=192.168.0.50 ttl=128 DF id=34247 icmp_seq=1 rtt=4.3 ms --- 192.168.0.50 hping statistic --- 2 packets tramitted, 2 packets received, 0% packet loss round-trip min/avg/max = 4.3/4.4/4.4 ms 위공격의의미를설명하면다음과같다. 192.168.0.50 으로 Size 가 100000 인 ICMP 패킷을보내라. * 패킷의사이즈가비정상적으로크기때문에, RTT(Round Trip Time) 도상당히긴시간값을 가진다.
5-3-2. Receiver 에서해당패킷캡쳐화면 ( 그림 5-3-2) 위의 ( 그림 5-3-2) 에서캡쳐된것과같이, 대상서버에는 size 100000 인 icmp 패킷이 23 개로 Fragmentation 되어서들어왔다. 5-4. Ping of Death 방어방법 Windows OS 에서는 ( 그림 5-4-1) 과같이 ICMP Packet 의최대크기를지정하고, 사용자가 이를초과하는사이즈를사용한경우명령어의동작을제한하도록패치되었고, ( 그림 5-4-1) Watch Mode 의관점에서는 Packet 의경유경로에서 ICMP 패킷을열어볼수있는보안장비에서 ( 그림 5-4-2) 와같이차단할수있다.
( 그림 5-4-2) 6. Tear Drop 6-1. Layer 3에서의 Fragmentation 네트워크를통해서패킷이전달되는네크워크통로의크기를 MTU(Maximum Transmission Unit) 라한다. 즉, 해당네트워크를통과할수있는최대패킷의크기이다. 만일, 출발지에서목적지까지의최소 MTU가 350 bytes라고한다면 ( 그림 6-1-1) 과같이 Network Layer(Layer 3) 에서해당 Packet을 Fragmentation 하게된다. ( 그림 6-1-1) Fragmentation 단, TCP 의경우 MSS(Maximum Segment Size) 필드를이용하여, 대상서버가처리할수없는 큰크기의 Segment 를 Client 에서보낼수없도록할수있기때문에, Tear Drop 은 UDP Protocol 을사용한다. Fragmentation 을이해하였으므로, 정상적인 Fragmentation 을이용하여패킷이어떻게
전달되는지를이해해보자. ( 그림 6-1-2) * Offset Client에서 Packet을 Fragmentation 시킬때, 대상서버에서해당 Packet을재조합 (Reassembly) 을쉽게할수있도록순서에해당하는 Offset으로사이즈값을준다. 예를들면, 위의그림에서의 Offset 값은각각 0~349, 350~699, 700~1023 과같이지정된다. 위의 ( 그림 6-1-2) 를순서대로설명하면아래와같다. 1. Client에서서버로패킷을보낼때, MTU 사이즈에맞도록 Layer 3에서 Fragmentation이일어난다. 2. Fragmentation된패킷은네트워크를통해서대상서버로전달된다. 3. 대상서버는 Fragmentation된패킷을원래의패킷으로재조합 (Re-assembly) 하여해석한다. 6-2. Tear Drop Client가패킷을 Segmentation 시킬때, 위에서설명한 Offset을어긋나도록수정하여, 대상서버가받은 Segmentation 된패킷을재조합하지못하도록하여장애를발생시키는공격기법이다.
( 그림 6-2) 위의 ( 그림 6-2) 를순서대로설명하면아래와같다. 개념에서설명한것과마찬가지로, 1. 공격자는강제로 Offset이어긋나도록패킷을 Fragmentation 시켜서전송한다. ( 마치딱맞지않는퍼즐조각을만드는것과같다.) 2. 서버는받은 Fragmentation 된패킷을재조합하려고하지만, 맞지않는퍼즐조각으로재조합에성공할수없다. 3. 공격자는대상서버에지속적으로문제의패킷을보낸다. 4. 이러는동안대상서버는자원이고갈된다. 5. 서버가 Crash 되거나, 오동작을일으킨다. 6-3. Tear Drop 공격예 6-3-1. 공격화면예 [root@ground root]#./teardrop 192.168.0.10 192.168.0.50 -s 100 -t 100 -n 1000 teardrop route daemon9nndeath on flaxen wings:nfrom: 192.168.0.10. 100n To: 192.168.0.50. 100n Amt: 1000n[ b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m b00m 위의공격화면의의미를설명하면다음과같다.
Src IP 192.168.0.10 에서 Dst IP 192.168.0.50 으로 Src Port 100 과 Dst Port 100 으로지정하여, 1000 개의 Teardrop 패킷을보내라. 6-3-2. Receiver 에서해당패킷캡쳐화면 ( 그림 6-3-2) 위의 ( 그림 6-3-2) 에서와같이, 대상서버에문제가있는 UDP 패킷이다량발생한다. 6-4. TearDrop 방어방법 지나가는패킷을분석하여 TearDrop 패킷임이확인되면차단한다. 역시개념을이해한다는 의미에서대표적인방법인 Watch Mode 를이해하자. ( 그림 6-4)
7. DoS(Denial of Service) & DDoS(Distributed Denial of Service) 7-1.DoS 공격의개념 대상서버에부가적인트래픽을일으킴으로써, 대상서버가그트래픽을처리하느라수행해야할 기능을수행하지못하도록하는공격방법을말한다. 7-2.DoS 공격의계층 Windows OS 와같은 GUI 개념이없던시절에사용하던컴퓨터는공격자가가진하나의 컴퓨터에서발생시키는적은양의트래픽으로도대상서버의서비스에장애를일으킬수있었지만, 컴퓨터의성능이눈부시게향상되고, 자원이대용량화되면서부터는이러한초보적인방법으로발생시킨적은양의트래픽으로는대상서버에서비스의장애를일으킬수없게되었기때문에, 보다많은트래픽을발생시킬수있도록방법이지능화되었다. ( 그림 7-2-1) 1-Tier 공격 : SYN, Land, Ping of Death, Exhausting disk, Spam mail 등 위의 ( 그림 7-2-1) 을순서대로설명하면아래와같다. - 1:1 공격을의미한다. - Exhausting disk: 혼자서대상서버의자원 ( 대표적으로 HDD) 을모두써버릴경우다른사용자는저장공간이부족하여더이상저장을할수없게된다. 이러한문제점을해결하기위하여, 우리가제공받는모든서비스 ( 대표적인웹메일 ) 에는계정당사용할수있는최대할당량이주어져있다. - Spam Mail: 스팸메일을받아보지못한사람은이해하지못할수있다. 마치 119에장난전화가너무많이와서, 실제위급한구조요청을할수없는것과같다. 내메일계정으로하루에수십만통의불필요한메일이온다고생각해보자. 지우기도힘들뿐더러, 반드시읽어야하는메일을찾는것도포기해야할것이다.
( 그림 7-2-2) 2-Tier 공격 : Smurf Attack 위의 ( 그림 7-2-2) 를순서대로설명하면아래와같다. - 1 : 다 : 1 의 2 계층구조를보인다. - 공격을발생시키는 attacker 와실제공격을수행하는 다 에해당하는네트워크의 2 계층을 이룬다. Master Botnet ( 그림 7-2-3) 3-Tier 공격 : Trinoo, TFN(2K), Stacheldraht, botnet 위의 ( 그림 7-2-3) 을순서대로설명하면아래와같다. - 1 : 다 : 보다큰다 : 1 의 3계층구조를보인다. - 3계층구조부터 DDoS라고한다. - 그림에서보는바와같이 1, 2계층공격과비교하더라도상상을초월하는트래픽을발생시킬수있기때문에우수한성능을지닌현재의서버들도서비스를수행할수없게된다.
7-3. DDoS 공격예 독자의이해를돕기위해서중국에서테스트한 DDoS 공격자료화면을보자. ( 그림 7-3-1) 대상서버에서정상적으로서비스되는화면 ( 그림 7-3-2) Attacker 가자신의 botnet 을이용하여공격을시작하는화면 ( 그림 7-3-3) 공격을시작한지, 수초가지난후, 대상서버의서비스가거부된화면
7-4. DDoS 공격에대한방어필자가보기에 Main Backbone 이나 Main Router 등이견뎌내지못할정도의트래픽을유발하는 DDoS 공격이이미시작된상태에서는공격을막을방법이없다. 왜냐하면대상서버로의트래픽을이러한 Main 장비에서차단해주어야하는데, 그럴수없는상황이기때문이다. 마치쓰나미라불리는커다란해일이몰려오는상황에서속수무책인것과같다. 하지만, ( 그림 7-2-3) 과 ( 그림 7-3-2) 를보면 attacker가 DDoS 공격을성공시키기위해서는상당히많은 botnet을감염시켜야한다. 그러므로, botnet에감염되지않도록주의하는것이최상의방법이며, 굳이구체적인방법을제시하자면아래의내용정도이다. # 개인사용자의노력에대한의견 - 실시간 OS 패치를수행하여, OS 취약점을통한 botnet 감염을차단한다. - 실시간백신업데이트를수행하여알려진 botnet의감염을차단한다. - 검증되지않은파일을다운로드하지않는다. - 특히, 익명공유폴더를만들지않는다. - 흔히말하는 Default Password를그대로사용하지않는다. # 보안관리자의노력에대한의견큰규모의망을관리하는관리자도 "DDoS 공격이시작되었을때이를어떻게막을수있는가?" 라는질문을많이합니다만,( 적어도저자에게는이런질문을한다는것이 DDoS 의정의를정확하게알지못하는관리자라고여겨진다.), 저자가보기에이러한관리자가말하는막을수있는 DDoS공격이라함은 " 어설픈 (?) DDoS" 에해당하는 " 과다트래픽정도 " 에불과하다는주장이다. 즉, 어설픈 DDoS 정도의트래픽일것이다. 이정도의트래픽이야장비들을적절히제어한다면서비스가느려지는선에서버텨낼수있기는하다. 하지만, 제대로된공격이시작되었다면적어도저자는막을수없다고생각한다. 왜냐하면위의예에서와같이제대로된 DDoS 공격으로충분한트래픽이발생된다면원격지에있는이러한과다트래픽을쉽게제어할수는없기때문이다. 그래서, DDoS 의방어는 botnet 의확산방지가관건이다. 물론, 상식적인이야기지만크게아래와같은세가지의방법으로정리를해봤다. 요지는적어도자신의네트워크에서 botnet 트래픽이없도록노력하자는것이다. 1. botnet 이자신의네트워크에없도록하라. - 지속적으로네트워크의트래픽을모니터링하여감염된 PC 를실시간치료한다.
2. Master 로의통신트래픽을이용해서 botnet 과 Master를제거하라. - 1번과반대되는관점으로 botnet 을제어하는 Master와의통신을막음으로써, botnet 이동작하지못하도록하는것이며, 구체적인방법을예로들면, * 최신 botnet 을무조건구해서 * 테스트 PC에설치하여 botnet을분석한후 Master PC를찾고 * Master PC 를차단하거나해당네트워크의관리자에게조치를취하도록요청한다. 3. 방화벽이나 Router에서 반드시허용할포트 외에는모든패킷을 Deny로설정한다. - 이렇게설정되어있을경우내부에 Botnet 이감염되었다하더라도, 내부에서외부네트워크로트래픽이전달되지않을뿐더러, 관제체계혹은모니터링체계가있다면 Drop 패킷의모니터링만으로도 Botnet 의트래픽을쉽게발견할수있다. 4. 네트워크및주요시스템을 HA로구성한다. 자금력이된다면삼중, 사중이상으로더강력한 HA를구성하는것도도움이되겠다. 하지만, 이러한 HA 구성환경마저도견디기힘들정도의트래픽 ( 실세계의쓰나미정도의개념 ) 에대해서는역시답이없다. 단, 과다트래픽성의 DDoS 라면개념상대응방안이될수도있다. # 과다트래픽성의 DDoS에대한의견과다트래픽성의 DDoS라함은 Main Backbone 이나 Main Router 는견대낼수있지만서버와같은시스템은견디기어려운정도까지의트래픽이라전제하겠다. 이러한경우에는대상서버로 DDoS 트래픽을일으키는 botnet IP 들을찾아서, 이 IP 들의대역을 Main Backbone, Router, F/W 등에서차단한다. 이렇게하면서버로는 DDoS 성트래픽이전달되지않으므로서비스에는문제가없다. 하지만, 차단된 IP 대역에서의정상적인접근까지도차단되는문제점이발생하게되므로지역적으로는여전히 DoS 공격을당하는셈이다. 8. DRDoS (Distributed Reflection Denial of Service) 8-1.DRDoS의개념 DRDoS를이해하기위해서는반드시반사 (Reflection) 라는용어를기억해야한다. 그리고, DRDoS에서는정상적인서비스를이용하기때문에, 방화벽에서허용되어있다는점이유사한공격과비교했을때의특이점이다. 그러므로, DRDoS 에는 BGP와같은 Routing Protocol 이나 HTTP(80/tcp) 와같은허용될수밖에없는서비스들을이용한다. 햇빛을거울로반사시켜상대방을교란시키는상황을연상해보자. DRDoS는 Smurf Attack 과동일한공격패턴을띤다.
즉, DRDoS는대상서버로 IP를 Spoofing 하여, 공인 IP 를가진다수의서버나장비에게, 마치대상서버가요청한것처럼패킷을보내서, 이요청에대한응답이동시에대상서버로집중되도록함으로써대상서버가서비스를하지못하도록하는기법이다. ( 그림 8-1) 에서는공격자와대상서버사이에있는라우터를이용하여 TCP SYN Attack 을하는 DRDoS 공격기법을표현하였다. ( 그림 8-1) 위의 ( 그림 8-1) 을순서대로설명하면아래와같다. 1. Attacker는 IP와 Port를 Spoofing 해서수많은 Router들에게 SYN Packet을보낸다. 2. SYN Packet을받은수많은 Router들은 Spoofing 된 Source IP 인 192.168.0.50 과해당포트 ( 예 : 80/tcp) 로 SYN/ACK Packet을보내서응답한다. 3. 대상서버는이러한과부하를견뎌낼수없으므로, 결국서비스를제공할수없게된다. 동일한개념으로라우터대신 Google, Yahoo, Naver, Daum 등과같은포털사이트의 웹서버를이용한공격도 ( 그림 8-2) 와같이가능하다. ( 그림 8-2)
8-2.DRDoS 방어방법 DRDoS 공격역시완벽한방어를하기는힘들지만, ISP 업체간업무를연계하고, DRDoS 전용필터를두어징후가나타나면담당하고있는각각의구간에서즉시조치를취하여트래픽의확산을막는것이가장효과적일것이라판단된다. 9. Epilogue 지금까지 Network Attack의기본적인개념들을살펴보았다. 이글을읽은독자는각각의 공격에대한원리를정확하게이해하기를바라는마음에서, Network Attack에대해서 정확하게설명하려노력하였다. 어떠한원리를정확히아는것과적당히아는것에는, 말로표현할수없는엄청난차이가있다. 더관심이있는독자는원리를정확하게이해한후, 제한된테스트환경에서테스트를해보고, 소스코드에도관심을기울인다면보다깊이있는정보보호전문가가될수있으리라생각한다.