본문 바로가기

기술자료/기술운영자료

DDOS 공격의 종류 및 DDOS 공격 대비한 ACL 필터링


그림입니다.
원본 그림의 이름: mem000018a8002a.tmp
원본 그림의 크기: 가로 670pixel, 세로 648pixel

서비스 거부공격 (DOS attack)란?


=>컴퓨터나 네트워크 자원(network bandwitdh, file system space, open processes, incoming connection등)을 고갈시켜 해당 컴퓨터와 네트워크가 정상적인 서비스를 제공할수 없게만드는 모든 공격 방법들을 지칭하며 주로 소프트웨어/프로토콜 구현상의 버그(소프트웨어/프로토콜취약점)나 시스템의 설정오류등의 허점을 이용한다 


=>주로 tcp/ip stack의버그(ip option, half-open tcp connection, floods of packet, large packets, fragmented packet)를 이용하는 공격으로 distributed Dos(DDos0 공격에서기본적으로 이용하는것들이다. DNS Dos, IRC dos, IIS long URL DoS, Rwho daemon buffer overflow, MS RAS PPTP Dos등)는 대부분 os 또는 구현상의 문제인것들이다


  


DoS attack 종류


1. TCP SYN 공격


-> tcp/ip 프로토콜은 connection 을 위해 three way handshake( 클라이언트서버:SYN, 서버클라이언트 : SYN-ACK, 클라이언트서버 : SYN-ACk)를 수행한다. SYN Flood  공격은 클라이언트가 연속적으로 SYN패킷을 보내면서 SYN-ACK에는 응답하지 않음으로써 time out 때까지 묶어두는 공격으로 SYN 패킷을 전송하는 속도가 서버의 time out rate 보다 빠르다면 서버는 다른일을 하지못하게된다


2. Teardrop 공격 


->tcp/ip 의 ip패킷 조각들의 재집합과정의 구현상의 허점을 이용하는것으로 tcp/ip의 구현에따라 ip조각들이 offset 필드를 overlapping 시켜 만든 malformed 패킷을 재집합과정에서적절히 처리하지 못한다는 점을 이용한공격이다. 변형으로는 New Tear, nestea, Bonk, Boink등이 있다


3. Land 공격


-> ip spoofing을 이용하여 source IP address/port를 target_host의 destination IP address/port 와 동일하게 설정한 SYN 패킷을 보냄으로써 target_host 에서 SYN 패킷이 loop를 돌게하는 SYN flood 공격이다. 라우터나 방화벽에서 쉽게 차단할수 있다


4. UDP Flood: Chargen - Echo DoS 공격


-> IP spoofing을 이용하여 한 호스트의 chargen UDP service를 다른 호스트의 echo UDP service에 연결시켜(echo-echo, chargen-chargen 등도가능) UDP패킷 storm을 일으킨다. diagnostic prot는 같은 LAN 내부에서 주로 쓰이므로 필요하지 않다면 라우터나 방화벽에서 차단시키는것이 좋다.


5. WinNuke Out-of-Band (OOB)공격 


-> 윈도우즈 95/NT에 적용되는 공격으로 Out-of-Band data(Tcp 헤더의 URG flag set)를 가진 패킷을 target_host 의 port 139(netBIOS port)로 보내면 윈도우즈가 Out-of-Band data를 처리하지 못하여 블루스크린이 발생한다.


6. ICMP Unreachable 


-> spoodfed source IP 주소로 Target_host에 ICMP Unreachable 패킷을 보내는 것. 이를 받은 target_host 는 spoodfed source IP 주소 를 갖는 호스트와의 모든 연결을 끊게 된다


7. ping of death


-> IP 패킷은 network media 에 다라 MTU 단위 이하로 잘게 나누어져 전송되고 수신측에서 다시 모으게 된다. tcp/ip의 구현에 따라 ip 패킷의 비정상적인 조각들은 수신측의 재집합과정에서 오동작을 유발할수있다. 최대 크기 65535 octet을 넘는 ICMP 패킷을 보내게 되면(마지막 조각은 정상적은 offset를 갖지만 더큰 패킷크기를 가지게 한다.) target_host는 잘게나누어진 패킷들을 받아 이들을 재집합하는 과정에서 최대허용치보다 큰 패킷 사이즈로 인해 버퍼오버플로우가 발생하고 target_host는 reboot 또는  hang 되는 예측불가의 반응을 보인다.


8. Smurf / Fraggle-directed broadcast ICMP/UDP Flooding 공격


-> IP source-address spoofing이 가능한 경우에만 효과가 있는공격으로 기존의 DoS 공격중 가장강력하고 심각한 공격방법이다. 기존의 ICMP/UDP flooding은 공격자가 공격목표물보다 더큰 대역폭이 있어야 효과가 있지만 Smurf/Fraggle 은 IP Spoofing 과 directed broadcasting 을 이용하여 공격자가 보내는 패킷당 수백 수천배의 패킷 증폭을 일으킬수있다. 


Smurf는 forged ICMP echo request 패킷(source IP=target_host IP)을 한 네트워크의 브로드캐스트 주소(destination IP address = x. x. 255.255) 로 보냄으로써 해당 네트워크의 모든 호스트 들이 ICMP echo reply 패킷으로 target_host 에게 응답하게 된다. 따라서 브로드캐스트 네트워크내의 호스트수에 비례하는 패킷 증폭이 발생한다. 이공격의 피해자는 직접 packet storm을 당하는 victim뿐만 아니라 중간의 브로드캐스트 네트워크로이용당하는 사이트 역시 대역폭을 빼앗기게 된다. 차단 방법은 network boundary의 라우터나 방화벽에서 in/out bound ICMP 브로드캐스트 패킷을 default로 차단시킨다


UDP echo 패킷을 이용하는 Fraggle attack라 불리는 유사 공격방법의 경우 UDP echo 가 브로드캐스트 네트워크의 모든 호스트들로부터 bounce되어 target_host로 되돌아오게되므로 Smurf와 같은 패킷증폭이 발생한다. 


 


분산 서비스 거부 공격 (distributed denial of service attack)


정의


-> 기존의 서비스 거부공격(DoS공격)에 분산처리 개념이 도입된것으로 모든공격이 자동화 되어 널리 유포되는 DDOS 공격툴을 이용하면웬만한 해킹기술을 가진 공격자라도 쉽게 적용할수있다. 즉 공격자는 먼저 스니퍼나 네트워크스캐너등의 툴을 이용하여 인터넷상의 취약점이 있는 호스트를 탐색하여 이들을 공격한 다음(root 권한 획득) 이렇게 공격한 대량시스템의 호스트에 온라인으로 공격툴(master/daemon programs, rootkit등)을 설치한다. 이런과정은 자동화가되어있어 단시간에 완료된다. 다음으로 공격자의 컴퓨터에서 단 한줄의 명령어만 보내면 대량의시스템 호스트가 공격대상인 컴퓨터(웹서버나 메일서버등)에 일정시간 동안 지속적으로 무의미하고 불필요한 packet stream(packet flooding)을 보냄으로써 해당서버를 다운시키거나 네트워크의 대역폭을 소멸시켜 일반 사용자가 해당서버에 접근하지 못하게 하는방법이다.


특징


->대부분의 공격이 자동화툴을 이용하기때문에 짧은 시간에 쉽게 수행될수있다는 점과 높은 대역폭을 갖는 중계사이트들을 공격자원으로활용하여 분산네트워크 공격을 구성하는 점이다


->현재 알려진 DDOS 공격툴은 trinoo, TFN, TFN2K, Stacheldraht등이며 크게 네개의 공격노드를 가진 공격네트워크로 구성된다


.intruder (attacker) = 모든 공격을 주도하는 공격자의컴퓨터로 master node로 control message를 내려보낸다


.master(handler) nodes = 공격자는 하나 혹은 몇개의 중계호스트를  master node로 이용하며 각 master node는 수 개 혹은 수십개의 daemon (agent)들을 관리한다. 대부분의 경우 master나 daemon은 패스워드로 보호되며 TFN2K나 stacheldraht 와 같은 보다 지능화된 DDoS 공격 툴에서는 Attacker-master-daemon 사이의 일부 혹은 모둔 control message들이 암호화되며, master나 daemon에 IP Spoofing 능력을 부여하여 공격을 탐지하거나 공격자의 추격을 어렵게 만든다.


.Daemon(Agent) nodes = 실제 공격을 주도하는  호스트들로 master node로 부터 전달받은 target_host 로 지정된 시간동안 지속적으로 불필요한 패킷을 전송한다. 공격툴에 따라 ICMP, TCP SYN, UDP flood, Smurf등의 일부 혹은 전부를 이용하여 target_host를 공격한다. Daemon이 소스를 스스로 지워 흔적을 남기지 않게 하거나 새로운 소스로 업데이트 시킬수있게 프로그램된경우도 있다.


.Victim (Target_host) = 공격의 최종적인 피해자로 네트워크 용량이나 처리능력을 초과하는  packet storm 에 의해 서비스를 제대로 못하게하거나 다운되게한다


 


DDoS 공격의 종류


1. Trinoo UDP Flooding


=> Trinoo(원래는 Trin00)는 UDP 패킷을 이용하여 네트워크/서버를 flooding 시키는 툴로 TFN2K나 stacheldraht 만큼 정교하지는 않다. 공격자는 master와 daemon을 system admin이나 다른해커들로부터 보호하기위해 패스워드를 설정하였으나 이들사이의 control message들은 평문으로 통신된다.


2. Tribe Flood Network (TFN) ICMP/TCP/UDP Flooding


=> TFN은 UDP flood 공격분만아니라 TCP SYN flood, ICMP echo request flood, ICMP directed broadcast (smurf) doS 공격등도 가능하며, master - daemon 사이의 통신은 ICMP echo reply packet을 이용하므로 대부분의 방화벽에서 detect 하거나 차단하기어렵다.


3. Tribe FloodNet 2K (TFN2K) ICMP/TCP/UDP Flooding, Smurf


=> TFN2K는 TFN의 보다 발전된 형태로 모든 control message들은 일방향통신이다. 즉 Attacker master daemon의 일방향 통신만을 이용한다. master - daemon 사이의 command packet들은 cast-256 암호화후 base-64 encoding되며 임의의 decoy packet들과 뒤썩어전송한다. master - daemon 사이의 통신이나 daemon victim 공격시 randomized TCP, UDP, ICMP packet들을 이용한다.


4.stacheldraht - ICMP, TCP, UDP Flooding


=> stacheldraht는 Trinoo와 original TFN의 결합된 형태에 추가적인 암호화및 agent(daemon)의 자동 업데이트 기능을 추가하였다.. 


이 러한 툴들은 공격자가 소스를 조금만 변경하여도 그특징들이 변할수 있다 . 따라서 대부분의방화벽이나 IDS에서 이툴들에 대한 시그니처(해당툴의 특징적인 패턴이나 스트링)를 DB에 추가하여 공격을 감지하지만 소스를 변경하면 방화벽과 IDS도 무용지물이 되기도한다.


 


(분산)서비스거부공격에 대해대응방안


=> DDoS(DoS)공격은 컴퓨터 바이러스와 속성이 유사하여 근본적으로 막을방법은 없다. 다만 방화벽이나 라우터에서 적절한 필터링을 통해 IP서비스를 악용하는것을 가능한 막아주고, IDS나 호스트/네트워크 인증 툴 등을 이용하여 지속적인 모니터링을 통해 공격이 탐지되면 가능한 빨리  공격툴이 설치된 master/daemon(agent) 노드들을 찾아내어 툴을제거하여 피해를 줄이고, 도한 공격자를 추적하여 사후 처벌을 강화하는 등의 조직적인 대응방안을 수립해야한다.. 


 


방화벽이나 라우터에서 권고되는 필터링 룰..


* Ingress/Egress Filtering(RFC 2267)


-> 라우터나 방화벽에서 로컬 네트워크의 outbound traffic에 대해 로컬 네트워크의 유효한 source address를 가진 패킷만 통과시키게한다. 또한 로컬 네트워크의 inbound traffic에 대해서는 source address가 로컬 네트워크의 유효한 address range에 있는 패킷은 차단 시켜야한다. 다이얼 업 사용자에 대해서도 RAS에서 그 사용자에게 할당된 source address를 가진 패킷만 통과시키게한다. 인터넷의 모든 라우터/RAS에서 이러한 필터링을 해준다면 ip spoofing은 대부분 막을수 있을것이다. 유효한 prefix rang에 있는 address로 spoofing을 한경우는 막을수없으나 추적이가능하므로 공격자를찾아내는것이 쉬워진다. 


* Disable directed broadcast externally(RFC 2664)


-> 라우터나 방화벽에서 들어오는 트래픽의 destination address 가 network-prefix-directed broadcast로 설정된 drop시킨다 


* Disable UDP/TCP diagnostc prots externally


-> chargen이나 echo 등의 진단들이 공격에이용되는데 이러한 포트들은 외부에서 사용하는 경우가 거의 없으므로 호스트나 방화벽등에서 차단시키는 것이 좋다


* Disable unnecessary ICMP,TCP/UDP traffic


-> 방화벽에서 explictly permitted된 특정 포트 리스트를 제외한 모든 TCP/UDP 서비스는 가능한 차단시킨다. ICMP의경우 type 3(destination unreachble) 패킷을 제외한 모든 패킷들은 drop시키는것이 바람직하며 이것이 불가능할경우 최소한 unsolicited ICMP echo reply packet들은 drop시킨다.


* Traffic shaping (rate limit of certain traffic)


-> 사용되는 대부분의 라우터들은 특정타입의 트래픽이 차지할수 있는 대역폭을 제한할수 있는 기능이 들어있다. 이를 이용하여 DoS공격에 자주 사용되는 특정 패킷에대해 access룰을 적용할수있다(ex ; ICMP packet, TCP SYN packet)그러나 이방법은 정상적인 과부하와 DoS공격에 의한 과부하를 구분할수없으므로 한계가있다


.가능한 어플리케이션 프록시를 이용하는 방화벽을 이용한다. 이경우는 ip 스푸핑이 기본적으로 불가능하므로 많은 DDoS공격들을 막을수 있다.


.DDoS 에이전트 설치여부를 판단하는 프로그램등을 이용하여 DDoS클라이언트로 사용되는것을 방지한다. 


.DDoS를 감지하는 툴 중 온라인으로 하는 툴의 경우 오용탐지율이 높으며 사용되는 기본포트만 변경되어도 탐지하지못하므로 local check용 툴을 이용하는편이 유리하다.


 

:: Cisco에서 권장하는 DDoS공격 대비 설정은 다음과 같다.


! the TRINOO DDoS System

-> access-list 170 deny tcp any any eq 27665 log

-> access-list 170 deny udp any any eq 31335 log

-> access-list 170 deny udp any any eq 27444 log


!the Stacheldraht DDoS System

-> access-list 170 deny tcp any any eq 16660 log

-> access-list 170 deny tcp any any eq 65000 log


!the TrinityV3 System

-> access-list 170 deny tcp any any eq 33270 log

-> access-list 170 deny tcp any any eq 39168 log


!the Subseven DDoS System and some variants

-> access-list 170 deny tcp any any range 6711 6712 log

-> access-list 170 deny tcp any any eq 6776 log

-> access-list 170 deny tcp any any eq 6669 log

-> access-list 170 deny tcp any any eq 7000 log




:: ip verify unicast reverse-path interface명령 사용

-> 라우터로 유입되는 각각의 패킷을 검사하여 소스 IP주소가 CEF


테이블에서 패킷이 도착한 인터페이스를 가리키는 경로를 갖고 있


지 않을 경우, 패킷을 drop시켜버린다.




:: ACL(Access Control List)를 사용하여 RFC1918 address space 


필터링

-> access-list 101 deny ip 10.0.0.0 0.255.255.255 any

-> access-list 101 deny ip 192.168.0.0 0.0.255.255 any

-> access-list 101 deny ip 172.16.0.0 0.15.255.255 any

-> access-list 101 permit ip any any


:: rate limit ICMP packets 기능 사용

interface xy

rate-limit output access-group 2020 3000000 512000 786000 


conform-action

transmit exceed-action drop

access-list 2020 permit icmp any any echo-reply


// 3000000 : maximum link bandwidth

// 512000 : burst normal rate

// 786000 : burst max rate




:: rate limit SYN packets 사용

access-list 152 permit tcp any host eq www

access-list 153 permit tcp any host eq www established

interface {int}

rate-limit output access-group 153 45000000 100000 100000

conform-action transmit exceed-action drop

rate-limit output access-group 152 1000000 100000 100000

conform-action transmit exceed-action drop


// 45000000 : maximum link bandwidth

// 100000 : burst normal rate

// 100000 : burst max rate



그림입니다.
원본 그림의 이름: mem000018a8002b.tmp
원본 그림의 크기: 가로 100pixel, 세로 45pixel