
아카마이 테크놀로지스 / 김현도 이사
1. DDoS 공격의 정의와 방식
DDoS(Distributed Denial of Service)는 서비스 거부 공격의 일종으로 시스템을 악의적으로 공격해 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 형태를 의미한다. 분산형 아키텍쳐를 이용하기 때문에 공격 근원지를 특정하여 차단하는 방어 수단이 불가능하며 공격의 규모가 시간이 지날수록 급격히 증가하고 있다.

<image source: getty images>
미국 IT매체 해커 뉴스에 따르면 2017년 DDoS공격 건수는? 2014년 대비 2.5배 증가했으며 2020년 4분기 기준으로는 3분기 대비 542%증가했다. 2018년 2분기 기준 DDoS공격의 평균 트래픽은 26.37Gbps를 기록했지만 2019년 1분기에는 100Gbps로 증가함으로써 전년 동기 대비 967%증가했다는 분석 보고서가 제출되었다. 2018년 3월 깃허브(github)를 노려 발생한 DDoS공격은 1.3Tbps를 기록했으며 2020년 2월 특정 퍼블릭 클라우드를 대상으로 한 DDoS공격은 2.3Tbps로 새로운 기록을 갱신했다.
기가바이트(Gbps)규모로 발생되던 DDoS공격이 테라바이트(Tbps)수준으로 올라선 이유는 사물인터넷(IoT)장치가 대중화되고 공격자들이 이를 이용한 좀비 IoT로 DDoS공격을 감행했기 때문이라고 보는게 보안업계의 분석이다.
2. DDoS 공격의 분류
DDoS공격은 공격 대상의 인프라 자원을 소진시키는 형태의 대역폭 소진 공격과 어플리케이션의 특성을 이용한 서비스 마비 공격으로 크게 구분 지을 수 있다. 대역폭 소진 공격은 주로 네트워크 인프라를 대상으로 하기 때문에 동일 네트워크 서브넷을 사용하는 서비스들이 동시에 영향을 받는다. 그에 반해 서비스 마비 공격은 그 대상이 특정되기 때문에 주변 서비스들까지 직접적인 영향을 받지 않는다.
대역폭 소진 공격의 종류는 아래와 같으며 주로 Flooding이라는 공통적인 특징이 있다.
- UDP/ICMP Traffic Flooding
출발지 IP주소(IP Address) 를 변조하거나 실제 IP주소를 활용하여 UDP/ICMP 패킷을 다량으로 전송하여 목적지 대역폭을 잠식시킴으로써 정상 서비스가 불가능한 상태를 유도한다. 가장 많이 발견되는 공격 타입이며 퍼블릭 클라우드 플랫폼의 형태로 DDoS서비스를 제공하는 경우도 있다.
- DNS Query Flooding
UDP 프로토콜 기반 서비스인 DNS(Domain Name Server)를 대상으로 하며 DNS 쿼리(DNS Query) 요청을 다량으로 전송하여 DNS의 정상적인 서비스가 불가능한 상태를 유도한다. 대역폭을 잠식시키는 형태와 DNS시스템의 과부하를 유발시키는 어플리케이션 마비 공격으로 패턴을 세부 구분할 수 있다.
- TCP SYN Flooding
TCP 3-way handshake의 처음 단계인 SYN패킷 전송단계를 활용하는 것으로 대량의 SYN 패킷을 공격 대상 서버에 보내면 서버는 TCP 연결을 위해 SYN+ACK 패킷을 다시 보내기 위한 대기줄(Backlog Queue)이 가용한 수준을 넘게 된다. 해당 시점 이후부터는 SYN요청을 정상적으로 처리하지 못하는 상태를 유도한다.
- TCP Flag Flooding
정상적이지 않은 TCP패킷 Flag정보를 임의로 설정하여 대량으로 공격대상 서버에 전송하게 되면 서버는 TCP패킷의 검증을 하기 위해 자원을 모두 소모하여 정상 서비스가 불가능한 상태가 된다. TCP세션이 생성되지 않은 상태에서TCP 패킷의 Flag를 ACK로 설정하여 보내는 형태와 TCP패킷의 Flag를 RST으로 설정하여 보냄으로써 TCP 연결을 강제로 종료시키는 형태의 공격이 알려져 있다.
- TCP Session
상기 명시한 TCP SYN과 TCP Flag공격을 포함하는 개념으로 TCP 3-way handshake과정을 대량으로 일으킴으로써 서비스 부하를 유발하는 공격이다. TCP 세션을 유지하게 만드는 DDoS공격, TCP세션의 생성과 종료를 반복하는 만드는 DDoS공격, TCP 세션 정상 연결 후 정상적으로 보이는 트래픽을 흐르게 만드는 DDoS공격으로 구분된다.
- LAND Flooding
IP Header Option필드를 변조하는 형태의 공격으로 발신지 IP주소와 Port정보를 수신지 IP주소와 Port정보와 동일하게 설정하여 패킷을 전송함으로써 네트워크 장비의 과부하를 일으킨다.
- Teardrop Flooding
하나의 IP패킷은 MTU(Maximum Transmission Unit)이라는 크기로 나뉘어 좀 더 작은 조각(데이터그램)으로 전송되며 이를 받은 쪽에서는 다시 재조립하여 하나의 IP패킷으로 만드는 원리를 이용한 것이다. 데이터그램의 순서를 임의로 변경하거나 중복된 데이터그램을 보냄으로써 과부하를 유발시킨다.
- HTTP Continuation Flooding
HTTP패킷은 Header와 Data로 구분되는데 서버로 보내는 패킷에 HTTP Header를 빈값으로 설정하고 Data만 채워넣는 방식이다. 패킷크기를 최대한 크게 설정하여 보내면 네트워크 자원역시 고갈되며, 웹서버 역시 데이터 수신을 위해 TCP 자원을 사용하게 되므로 정상 서비스 불가 상태에 빠지게 된다.
서비스 마비 공격의 종류와 특징은 아래와 같다.
- HTTP GET Flooding
특정 웹서비스 페이지를 반복 요청함으로써 해당 페이지를 서비스하는 웹서버의 과부하를 일으키는 공격이다. 의도된 마케팅 이벤트 시점등에서도 유사한 형태의 요청을 받게 되는데 DDoS공격과 다른 점은 일정 수준이상의 페이지 요청이 있는 지와 일반적인 브라우져에서 보이는 Header 패턴들이 보이는 지의 여부이다. 캐싱이나 가속서비스를 적용하기 위한 컨텐츠 전송 네트워크(CDN)을 비롯한 리버스 프록시(Reserve Proxy)를 사용하는 경우 HTTP Cache-Control header의 no-store, must-revalidate을 사용하는 방법 역시 이 범주에 포함되며 웹서버가 받는 영향은 유사하다.
- Slow HTTP POST DoS
HTTP POST메소드는 HTTP Body의 데이터를 전송하기 위한 방법이다. POST메소드와 함께? 소량의 데이터를 비정상적으로 천천히 전달하는 세션을 다수 생성하여 웹서버의 정상적인 서비스를 불가능 하게 만드는 방법이다. 느린 속도의 인터넷 접속 환경을 가진 지역이나 국가를 대상으로 서비스 하는 경우 유사한 증상이 발생할 가능성이 있으나 실제 DDoS공격에서는 초당 10byte이하의 데이터를 전송하는 수준이므로 공격 여부를 판단할 수 있다.
- Show HTTP Header Dos (Slowloris)
웹서버는 서비스 접속자가 보내는 HTTP요청 중 Header 에 포함되는 다양한 정보를 이용하여 그에 맞는 HTTP응답을 한다. 공격자는 Header의 일부분을 보내고 나머지 정보를 강제로 지연시켜 웹서버가 추가 정보를 받기 위한 세션을 대기하게 만드는 방법으로 정상 서비스를 불가능하게 만드는 패턴이다. 주로 HTTP Header와 Body를 구분하는 개행문자(rnrn)가 활용된다.
3. DDoS공격 도구
- Low Orbit Ion Canon (LOIC)
Praetox Technologies에 의해 만들어진 부하 테스트 목적의 오픈소스 어플리케이션이다.
사용자 인터페이스(UI)가 매우 직관적이고 사용하기 쉬우며 윈도우즈 기반에서 JavaScript 기반의 웹페이지 형태로도 사용 가능하다
본래의 목적과 다르게 해당 도구는 DDoS공격 도구로 활용되었으며 2008년 Project Chanology, Operation Payback의 경우가 대표적이다.

<image source: wikipedia>
- High Orbit Ion Canon (HOIC)
LOIC의 기능을 고도화하고 커스터마이징한 버전으로 출시되었으며 주로 HTTP Flooding 공격을 위해 사용된다. HOIC은 Booster script기능을 이용하여 공격기능을 고도화 하고 IP에 의한 위치추적을 방해한다. Firepower 기능을 이용하여 50명의 공격자가 동시에 공격을 수행할 수 있도록 만든다. 해킹그룹 ‘어노미머스’는 2012년 Operation Megaupload에서 처음 HOIC 도구를 사용했다.

<image source: wikipedia>
- Slowloris
Slowrloris 형태의 DDoS공격 이름을 그대로 따온 도구이다. 공격 대상 서버에 다수의 HTTP 연결을 생성한 후 이를 유지하는 기능을 갖고 있다. 2009년 6월 Perl로 작성된 코드가 처음 공개된 이후 python등 다양한 컴퓨터 언어로 포팅되고 있다.

<image source: wikipedia>
- R.U.D.Y (R-U-Dead-Yet)
Slowloris와 유사한 형태의 DDoS공격 도구이다. 동명의 메탈밴드 이름을 차용했으며 slow and low 공격이기 때문에 많은 HTTP연결을 동시에 수행하여 짧은 시간안에 DDoS공격 효과를 노리지 않고 상대적으로 적은 수의 HTTP연결을 생성한 이후 최대한 길게 유지하려는 특성을 가진다. 10초 간격으로 1byte의 데이터를 HTTP POST를 통해 전송 시키며 SOCKS 프록시를 지원하는 기능이 최근 추가되었다.

<R.U.D.Y 샘플 코드 / image source: wikipedia>
저작권정책
K-ICT 클라우드혁신센터의 저작물인 『DDoS 공격 형태 분석과 보안 아키텍처 구현 방안』은 K-ICT 클라우드혁신센터에서 아카마이 테크놀로지스 김현도 이사에게 집필 자문을 받아 발행한 전문정보 브리프로, K-ICT 클라우드혁신센터의 저작권 정책에 따라 이용할 수 있습니다.
다만 사진, 이미지, 인용자료 등 제3자에게 저작권이 있는 경우 원저작권자가 정한 바에 따릅니다.