[normaltic 취업반 5기] 2024-01-31 13주차 과제 : Slowloris(with DDoS)

2024. 2. 11. 04:01normaltic 취업반 5기/과제

 

HTTP Header

 

  HTTP Header는 클라이언트와 서버가 요청 혹은 응답 시 부가적인 정보를 보낼 수 있도록 도와준다. 이때 클라이언트가 서버에 요청 시 보내는 헤더를 요청 헤더(Request Header), 서버가 클라이언트의 요청에 대한 응답 시 보내는 헤더를 응답 헤더(Response Header)라 한다.

 

좌 : 요청 헤더, 우 : 응답 헤더

 

  각 헤더는 '헤더 명 : 헤더 값'으로 이루어지며 헤더 간 구분은 줄 바꿈(CRLF)으로 알 수 있다. 그리고 요청 방식에 따라 헤더의 끝을 알 수 있는  방법이 정해져 있는데 GET 메서드를 사용하여 요청하는 헤더인 경우 헤더의 끝은 줄 바꿈 2회로 정해져 있다.

 

줄바꿈 기호인 '/r/n'이 헤더의 끝에서 두번 반복됨
해당 요청 헤더를 Hex data로 확인했을 때 줄바꿈을 의미하는 값인 '0d 0a'가 두번 반복됨

 

 

Slowloris 공격(with DDoS)

 

- 정의

  Slowloris 공격은 HTTP 요청하는 방식 중 GET 메서드를 사용하는 요청 헤더의 형태를 악의적으로 이용하여 서버의 세션 수를 가득 채워 정상적인 기능을 하지 못하게 만드는 공격이다.

 

- 원리

  공격자는 의도적으로 GET 메서드를 사용하는 요청 헤더를 전송할 때 헤더의 끝을 나타내는 줄 바꿈 2회를 모두 보내지 않고 1회만 보내어 헤더가 아직 전송중이라는 상태를 서버에 인식시킨다. 서버는 GET 메서드를 사용하는 요청 헤더는 줄바꿈 2회가 모두 전송될 시 헤더가 전부 전송되었다고 정해져 있기 때문에 요청 헤더의 내용이 전부 전송될 때까지 세션을 유지한 채로 대기하도록 만든다. 이러한 공격을 수많은 클라이언트가 수행한다면 공격대상이 되는 서버는 더 이상 연결 가능한 세션이 없어지게 되어 서비스가 불가능해진다.

 

- 방안

  이러한 유형의 공격을 방어하기 위하여 방화벽 등을 사용하여 세션 임계치 제한을 설정하거나 혹은 연결 시간제한을 설정하여 일정 시간 초과 시 연결을 종료시키는 방법을 사용한다.