DDoS(Distributed Denial of Service): DoS 공격은 1:1 형태로 진행되는 공격이었다면, DDoS는 이름에서 알 수 있듯이 여러대의 좀비 PC등을 이용하여 N:1 의 공격 형태를 보인다.
공격 유형별 분류
1. 대역폭 공격
목적: 대용량의 트래픽 전송으로 인한 네트워크 회선 대역폭 고갈
영향: 회선 대역폭 고갈로 인한 정상 사용자 접속 불가
주요 프로토콜: UDP, ICMP
특징: 주로 위조된 큰 크기의 패킷과 위조된 출발지 IP 사용
2. 자원 고갈 공격
목적: 정상 혹은 비정상적인 TCP Flags(SYN, ACK, FIN 등)가 설정된 패킷을 서버 또는 네트워크 장비로 전송하여 장비의 자원 고갈
영향: 장비의 특정 자원이 고갈되어 정상적인 운영 불가
주요 프로토콜: TCP
특징: 주로 TCP Flags를 이용하며, 위조된 IP 사용
3. 응용 계층 공격
목적: 서버에 설치된 애플리케이션의 부하를 발생시키고 웹서버의 경우 연결된 DB에도 부하가 발생
영향: 부하 증가로 인한 운영 데몬 다운, 서버 자원 부하 발생으로 인한 정상적인 운영 불가
주요 프로토콜: HTTP, DNS
특징: HTTP 공격은 Real IP를 이용하여 GET 또는 POST를 사용하고, DNS 공격은 위조된 IP를 이용하여 DNS 질의 요청
일반적인 DDoS
1. SYN Flood
정의: 공격자가 victim에게 TCP SYN 연결 요청을 계속해서 전송하는 공격 방식이다.
동작 원리: 서버는 SYN 패킷을 받으면 그에 대한 응답으로 SYN-ACK 패킷을 보내고, 다시 클라이언트로부터 ACK가 오길 기다리는데 이때 공격자가 다시 ACK를 보내주지 않기 때문에 서버에서 설정된 연결 시간이 초과될 때 까지 연결 상태로 계속해서 기다리게 되어 서버의 자원을 소모하도록 하는 공격이다. 이렇게 되면 정상적인 사용자가 서버에 접근하지 못하게 된다.
2. UDP Flood
정의: SYN Flood와 유사한 방식으로, 대량의 UDP 패킷을 전송하여 victim 서버가 정상적으로 작동하지 못하도록 한다. SYN Flood와의 차이점은 서버 자원을 소모하는 것이 아니라 네트워크에서 사용 가능한 대역폭을 모두 소모하여 정상적인 사용자의 접근을 막는다.
동작 원리: 공격자는 대량의 UDP 패킷을 victim 서버의 랜덤 포트로 전송한다. 이를 받은 victim은 해단 포트에서 대기중인 프로그램이 존재하지 않는다면 ICMP Destination Unreachable 패킷을 공격자에게 회신한다. 하지만 대부분 UDP Flood는 출발지 주소를 스푸핑하여 보내기 때문에 이 패킷은 attacker에게 전달되지 않는다. victim 서버는 대량의 UDP 패킷을 처리하고 응답을 보내는 데에 네트워크 대역폭을 낭비하게 되어 정상적인 사용자가 서버에 접근하지 못하게 된다.
3. ICMP Flood
정의: UDP Flood와 마찬가지로 victim 서버의 네트워크 가용 대역폭을 소모하여 정상적인 사용자의 접근을 막는다
동작 원리: 공격자는 대량의 ICMP request 패킷을 victim 서버로 전송하고, 서버는 이에 대해 응답을 해야하므로 ICMP reply 패킷을 다시 공격자에게 전송한다.
3+. Smurf attack
정의: ICMP Flood의 한 종류로, 차이점은 victim 서버에 바로 공격을 하는 것이 아니라, 주소를 스푸핑하여 다른 컴퓨터들이 victim 서버로 응답을 보내는 것을 이용한다.
동작 원리: 공격자는 ICMP request 패킷의 destination address를 브로드 캐스트로 하고, source address를 victim 서버의 IP 주소로 하여 전송을 한다. 이렇게 되면 이 브로드캐스트 패킷을 받은 클라이언트들은 victim 서버의 IP 주소에서 ICMP request 패킷이 온 것으로 인식하여 victim 서버에게로 ICMP reply를 전송하게 된다.
4. HTTP GET Flood
정의: 공격자가 공격 대상 웹사이트에 대해 지속적으로 대량의 HTTP GET 요청을 전송하여 웹서버의 자원을 소모하게 하는 공격이다.
동작 원리: 공격자는 victim 서버에 GET 요청을 전송한다. 서버는 이에 대해 응답을 다시 돌려주지만 공격자는 그 응답에 대한 처리를 하지 않고, 따라서 서버는 응답 확인을 위해서 각 연결에 대한 배정된 자원을 유지하며 연결 대기 상태를 유지하게 된다. 이렇게 많은 수의 응답이 오지 않는 GET 요청을 전송한다면 서버의 통신 자원을 모두 소모하여 정상적인 사용자가 접근할 수 없도록 할 수 있다.
5. HTTP POST Flood
정의: RUDY(R-U-Dead-Yet) attack이라고도 불린다. POST method를 사용하여 긴 데이터를 segmentation 하여 전송하며 웹서버의 자원을 소모하게 하는 공격이다.
동작 원리: HTTP POST method는 기본적으로 content-length 필드의 값을 기준으로 먼저 공간을 확보한 후에 segmentation 된 데이터를 전송한다. 이를 이용하여 공격자는 content-length 필드를 크게 하고 데이터를 작게 나누어서 천천히 보내면, 서버는 content-length만큼 데이터를 받기 전까지는 연결을 유지하게 된다. 이를 봇들을 이용하여 한번에 하게 되면 서버의 통신 자원을 모두 소모하여 정상적인 사용자가 접근할 수 없게된다.
반사 DDoS
1. SYN+ACK 반사
정의: DRDoS 형태의 공격으로, 공격자가 victim IP를 도용하여 해당 IP로 SYN-ACK 패킷을 전송하도록 하는 공격이다.
동작 원리: 공격자는 source IP를 victim IP로 스푸핑하여 SYN 패킷을 만들고, 이를 반사체로 사용할 서버들에게 보낸다. 이를 받은 서버들은 해당 SYN 패킷이 victim에게 온 것으로 보고 SYN-ACK 패킷을 victim에게 보내게 되어 victim은 이를 처리하기 위해 자원을 소모하게 되고 이 과정에서 서버에 부하가 발생하여 정상적인 사용자들이 접근할 수 없게된다.
2. NTP 반사 및 증폭
정의: 공격자가 NTP(Network Time Protocol) 서버의 트래픽을 사용하여 공격하는 방식이다.
동작 원리: NTP는 네트워크로 연결된 컴퓨터의 시간을 동기화 하는데 사용되는 프로토콜이다. UDP 123 포트를 통해 통신한다. 공격자는 victim IP 주소로 스푸핑하여 NTP 서버에 monlist request를 보낸다. 이에 대해 NTP 서버는 victim IP 주소로 monlist reply를 보내게 되는데, 이때 공격자가 NTP 서버에 보낸 요청보다 더 큰 응답을 victim에게 보내게 되므로 증폭 기술이 활용되어 공격 효율성을 더 높일 수 있다.
3. DNS 반사 및 증폭
정의: 공격자가 DNS 시스템을 악용하여 대량의 트래픽을 전송하는 형태의 공격이다.
동작 원리: 공격자는 victim IP 주소로 스푸핑하여 DNS 서버에 조회 요청을 전송한다. DNS 서버는 이에 대한 응답을 victim에게 전송하는데, 응답의 크기는 공격자의 조회 요청에서 지정한 옵션에 따라 달라진다. 이때 공격자가 "ANY" 옵션을 사용하면 응답에는 DNS 영역에 대한 모든 정보를 반환하게 되어 최대 증폭을 얻을 수 있게 된다.
4. CLDAP 반사 및 증폭
정의: CLDAP란 Connection-less Lightweight Directory Access Protocol이다. 이 프로토콜은 UDP 389 포트를 사용하며 공유 인터넷 디렉토리를 연결, 검색, 수정하는 데 사용된다. 공격자가 victim IP 주소로 스푸핑하여 LDAP 서버로 CLDAP 요청을 보내는 형태의 공격이다.
동작 원리: 공격자는 victim IP 주소로 스푸핑하여 CLDAP 쿼리를 여러 LDAP 서버로 전송한다. LDAP 서버는 응답 데이터를 victim IP 주소로 전송하게 되고, victim은 대량의 LDAP/CLDAP 데이터를 동시에 처리할 수 없기 때문에 정상적인 사용자에게 서비스를 제공할 수 없게 된다. 또한 UDP LDAP 프로토콜은 52배에서 최대 70배까지 응답을 증폭할 수 있어서 공격 효율성을 높일 수 있다.