본문 바로가기

보안/인프라

Slow-Rate: Slowloris 공격 실습

Slowloris 공격

- 한대의 컴퓨터에서 Slow-Rate 공격 기법을 이용하여 웹서버를 다운시키는 공격 도구

-HTTP Flood의 유형

- Apache 1.x, 2.x에서 효과적

- 여러 세션을 길게 유지하여 연결 가능한 세션 수를 초과시켜 정산 연결을 할 수 없도록 하는 공격

- HTTP Request 헤더를 불완전 전송하여 완전한 패킷이 올 때까지 세션 연결을 유지함.

- GET 방식을 이용한 공격

 

 

HTTP 메세지의 헤더와 바디는 개행문자 2번으로 구분됨.
=> /0d/0a/0d/0a
그런데 개행을 2번 쓰는게 아니라 의도적으로 1번만 쓰고 전달하면..  웹 서버는 
"어라 아직 헤더 올게 남았나보다"
하고 세션 연결을 유지한다.

이렇게 최대 동시 연결 풀을 채우는 것.

 

 

평화로워야 할 CentOS 7.6 (희생자)

아주 난리가 났다.

 

와이어샤크로 분석을 해보자

- 3 way handshake 연결 진행

- 이후 GET 방식으로 계속 뭘 보내. 보면 헤더 부분만 조금씩 바꾸어가며 전송하고 있다.

첫 번째 GET 방식 전송 패킷.

위 사진을 보면 마지막이 /0d /0a인 것을 확인할 수 있다.

헤더가 끝났다면 /0d /0a /0d /0a일텐데.. 개행 하나뿐이니 더 올 헤더가 남아있다고 생각하는 웹서버.

 

두 번째 GET 방식 전송 패킷

그 다음의 get 방식으로 전송된 패킷을 보면.. /0d /0a이다.

세번째도 네번째도 앞으로도 쭉 이렇다.

 

헤더의 내용은 미세하게 다름.

 

웹 서버는 /0d/0a/0d/0a를 받을 때까지 세션 연결을 유지하는 것.


Slowloris 공격 대응 방안

1. Session Timeout 설정

- 웹 서버에서 클라이언트와 Timeout 설정 값을 조절하여 일정시간동안 Session을 유지하고 있는 요청을 차단하는 설정

2. 시그니처 차단

- GET 요청의 개행 문자가 두번 반복되지 않고 한번만 표시되는 패킷을 시그니처로 등록하여 차단한다.