# DoS : Denial of Service

## What is DoS?

DoS란, Denial of Service의 약자로 <mark style="background-color:purple;">**서버가 제공하고자 하는 서비스를 하지 못하도록 만드는 공격**</mark>을 말한다.

DoS 공격 전략을 크게 분류해보자면 다음과 같다.&#x20;

<mark style="background-color:purple;">**(1) Web Application 취약점 활용**</mark>&#x20;

다른 사용자 계정을 삭제할 수 있는 취약점을 발견했다고 할 때,

1초 마다 모든 사용자 계정을 삭제하는 코드를 반복 실행 한다면 아무도 로그인을 할 수 없게 된다..!

혹은 비밀번호 오류 횟수가 제한된 서비스에서 다른 사람의 비밀번호를 무작위로 입력하여

특정 시간 동안 로그인 하지 못하도록  만들 수도 있을 것이다.

<mark style="background-color:purple;">**(2) Server Resource 소모**</mark>&#x20;

게시판에 자료를 업로드하는 기능을 떠올려 보자.&#x20;

자료를 업로드한다는 건, 사용자의 필요에 따라 자료를 수정하거나 다운로드하거나 삭제할 수 있도록&#x20;

자료를 저장하고 있다는 의미이다.&#x20;

이때 중요한 건, 자료를 무한대로 저장할 수 있는 서버는 없다는 것..!&#x20;

저장 공간은 제한될 수 밖에 없기 때문에&#x20;

큰 파일을 많이 올리게 되면 어느 순간 정해진 용량을 꽉 채우게 될 것이다.&#x20;

이런 부분을 고려해봤을 때 대용량 파일 수백, 수천 개를 서버에 업로드하게 되면&#x20;

더는 파일을 업로드할 공간이 부족해 다른 사용자가 파일을 업로드할 수 없게 된다.&#x20;

<mark style="background-color:purple;">**(3) Network 대역폭 소모**</mark>&#x20;

네트워크 대역폭이란, 1초에 보낼 수 있는 최대 비트(bit per second)를 나타내는 값으로

1초 동안 전달할 수 있는 최대 데이터 양을 의미한다.&#x20;

자동차를 데이터, 차선을 대역폭으로 비유했을 때 서버로 어떤 요청을 보낸다는 건&#x20;

차선에 주행하는 자동차가 생기는 것으로 자동차가 많아지게 되면 1차선에만 주행하던 차가&#x20;

2차선, 3차선까지 늘어날 것이고, 어떨 때는 도로가 꽉 막히는 경우도 있을 것이다.&#x20;

즉 <mark style="background-color:purple;">**방대한 양의 데이터를 보내 네트워크 대역폭을 꽉 채우는 방법으로**</mark>&#x20;

<mark style="background-color:purple;">**다른 사용자가 정상적으로 서버와 소통하지 못하게 만드는 것**</mark> 또한 DoS 공격에 속한다 할 수 있다.&#x20;

## What is DDoS?&#x20;

DDoS는 Distributed DoS의 약자이다.

Distribute라는 단어는 "분산"이라는 의미를 나타내는데&#x20;

분산이라 함은 쉽게 말해 한 대의 컴퓨터가 아닌, 여러 대의 컴퓨터를 동작 시키는 거라 생각하면 된다.&#x20;

(업무를 여러 명에서 나눠서 수행한다 해서 분산 시스템이라 칭하는 것)

(3)번의 경우를 예시로 생각해보자. 요즘은 서버가 처리할 수 있는 데이터 양이 크기 때문에

한 대의 컴퓨터가 열심히 데이터를 날려봤자 서버를 다운 시키기는 무리일 것이다.&#x20;

그렇다 보니, 데이터를 많이 보내는 컴퓨터를 많이 동원해서 DoS를 수행한다.

<mark style="background-color:purple;">**한 대의 컴퓨터가 대장과 같은 역할을 맡아 나머지 컴퓨터에게 명령을 내리면 일제히 서버에**</mark>&#x20;

<mark style="background-color:purple;">**데이터를 마구마구 보내는 형태(= C\&C server)**</mark>로 DoS를 수행하다 보니&#x20;

여러 컴퓨터를 동원해 DoS 공격을 한다고 해서 DDoS 라 부른다.&#x20;

## What is DRDoS?

DRDoS란, Distributed Reflected DoS의 약자로&#x20;

DDoS와 마찬가지로 여러 컴퓨터를 동원해 공격을 수행하지만 다른 점이 있다면 중간에&#x20;

반사 서버가 등장한다는 점이다.&#x20;

여기서 말하는 반사 서버는 요청 하나를 주면 응답 10개를 주는 식으로 동작하는 서버를 말한다.

DDoS와 다른 점이 있다면 요청 하나에 복수의 응답을 돌려주기 때문에&#x20;

컴퓨터가 그리 많지 않아도 효율이 좋다는 것이다.&#x20;

여기서 반사되는 형태가 왜 중요하냐!

원래 서버는 요청을 보낸 곳에 응답을 돌려주기 마련인데 [ip-spoofing](https://hh-rys-log.gitbook.io/normaltic/13-1-31/network/ip-spoofing "mention")으로&#x20;

출발지 IP에 공격할 대상의 주소를 적게 되면 <mark style="background-color:purple;">**반사 서버에 요청을 한 번 보낼 때마다 10개의 응답이**</mark>&#x20;

<mark style="background-color:purple;">**대상 컴퓨터로 날아가게 된다.**</mark>&#x20;

이런 구조를 활용해 소수의 컴퓨터로도 효율성 좋게 DoS 공격을 할 수 있게 되는 것!&#x20;

***

이렇게 해서 DoS와 관련된 내용을 간략하게 정리해보았다.

DoS는 궁극적으로 서버가 서비스를 하지 못하도록 하는 게 목표이기 때문에&#x20;

여러 형태로 공격이 이루어질 수 있다 보니 정리한 바와 같이 전략 & 공격 유형이 다양하다.

그 중에서도 다음으로는 대표적인 DoS 예시로 접해볼 수 있는 Syn Flood 에 대해 살펴볼까 한다.&#x20;
