[[분류:해킹]] == 개요 == {{{+1 '''D'''istributed '''D'''enial '''o'''f '''S'''ervice}}} 분산 서비스 거부 공격(DDoS)은 다수의 장치를 이용해 특정 서버 또는 네트워크에 과도한 트래픽을 집중시켜 정상적인 서비스 제공을 방해하는 공격 기법이다. 단일 장치 기반의 서비스 거부 공격(DoS)을 분산 구조로 확장한 형태이며, 웹사이트, 게임 서버, API 등 인터넷 기반 서비스 전반을 대상으로 한다. == 원리 == [[file:디도스.png]] [[https://www.youtube.com/watch?v=r3bEjsv9JFw|관련 영상]] DDoS 공격은 서버가 처리할 수 있는 요청량과 네트워크 대역폭의 한계를 의도적으로 초과시키는 방식으로 동작한다. 공격자는 다수의 감염된 장치를 이용해 동시에 요청을 전송하며, 이로 인해 서버의 CPU, 메모리, 네트워크 자원이 급격히 소모된다. 결과적으로 정상 사용자의 요청이 지연되거나 차단되며 서비스 전체가 불안정해진다. 즉, 서버 하나를 다구리까서 고의로 접속량을 폭주시켜 서버를 마비시키는 것이다. == 과정 == DDoS 공격은 일반적으로 공격 인프라를 구성하는 단계, 트래픽을 생성하는 단계, 그리고 이를 목표 서버에 집중시키는 단계로 진행된다. 먼저 공격자는 악성코드에 감염된 PC, IoT 기기, 서버 등을 확보하여 외부에서 원격 제어가 가능한 상태로 만든다. 이렇게 구성된 다수의 장치는 봇넷(Botnet)으로 묶여 하나의 공격 자원처럼 사용된다. 이후 공격자는 C2(Command & Control) 서버 또는 분산 제어 구조를 통해 이 봇넷에 동시에 명령을 전달할 수 있도록 구성한다. 명령이 내려지면 각 장치는 HTTP 요청, TCP 연결 요청, UDP 패킷 등 다양한 형태의 트래픽을 생성하여 목표 서버로 전송한다. 이때 일부 방식은 응답 대비 트래픽이 증폭되는 구조를 활용하기도 한다. 최종적으로 모든 트래픽이 특정 시간대에 집중되면서 서버와 네트워크 자원이 급격히 소모되고, 정상적인 요청 처리가 불가능해진다. == 공격 방법 == === 자동 새로고침(HTTP Flood) === 웹 브라우저에서 특정 페이지를 지속적으로 새로고침하거나 반복 접속하여 HTTP 요청을 대량으로 발생시키는 방식이다. 단일 사용자가 수행할 경우 DoS 수준에 그치지만, 다수의 사용자가 동시에 수행하면 DDoS로 확장될 수 있다. 실제로 단기간에 많은 사용자가 몰리는 이벤트 상황도 유사한 트래픽 패턴을 만든다. === 좀비 PC 이용 === 악성코드에 감염된 다수의 PC나 IoT 기기를 원격 제어하여 동시에 공격에 활용하는 방식이다. 이러한 장치 집합을 봇넷(Botnet)이라고 하며, 공격자는 이를 통해 대규모 트래픽을 목표 서버로 전송할 수 있다. 일부 경우에는 추가로 개인정보 탈취나 시스템 파괴까지 동반되기도 한다. === DDoS For Hire (웹 스트레서) === 금전적 대가를 받고 DDoS 공격을 대신 수행해주는 서비스 형태이다. 웹 기반 UI를 통해 쉽게 공격을 실행할 수 있는 경우가 많으며, 실제 봇넷이나 고대역폭 인프라를 기반으로 동작한다. 대부분의 국가에서 불법으로 간주된다. === 슬로로리스(Slowloris 등) === 적은 트래픽으로도 서버의 연결 자원을 고갈시키는 방식이다. 요청을 완전히 종료하지 않고 연결 상태를 장시간 유지하여 서버의 동시 처리 가능 연결 수를 점유한다. === 프로그램 이용 === LOIC, HOIC 등의 도구를 이용하여 반복적인 요청을 자동으로 발생시키는 방식이다. 이외에도 hping3, slowhttptest 등 다양한 테스트 및 공격 도구가 존재하며, 설정만으로도 대량 트래픽 생성이 가능하다. === L4/L3 계층 공격 === 네트워크 및 전송 계층을 대상으로 하는 공격으로, 프로토콜 구조를 악용하여 자원을 소모시킨다. ==== Ping of Death ==== 비정상적으로 큰 ICMP 패킷을 전송하여 수신 시스템에서 패킷 처리 과정 중 과부하를 유발하는 방식이다. ==== SYN Flooding ==== TCP 3-way handshake 과정에서 SYN 요청만 대량으로 보내고 연결을 완료하지 않아 서버의 연결 대기 자원을 고갈시키는 방식이다. ==== UDP Flooding ==== 연결 절차 없이 대량의 UDP 패킷을 전송하여 네트워크 대역폭을 소모시키는 방식이다. == 특징 == DDoS 공격은 다수의 시스템이 동시에 참여하는 분산 구조를 가지기 때문에 공격 출처를 특정하기 어렵고, 정상 트래픽과 구분이 매우 어렵다는 특징이 있다. 공격 트래픽이 여러 지역과 네트워크에서 발생하므로 단순 IP 차단 방식으로는 방어가 거의 불가능하다. 또한 공격 규모가 커질수록 서버뿐 아니라 라우터, 방화벽, 상위 네트워크 대역까지 영향을 확장시킬 수 있어 인프라 전체의 가용성을 위협한다. 공격 목적 자체가 데이터 탈취나 변조가 아니라 서비스 가용성(availability) 저하에 집중되어 있다는 점도 특징이다. 더 나아가 최근에는 IoT 기기의 보급으로 봇넷 규모가 매우 커질 수 있어, 짧은 시간에도 대규모 트래픽이 발생하는 경향이 있다.