Slowloris 공격

From CS Wiki
Revision as of 07:06, 26 September 2019 by PE가즈아 (talk | contribs)
Slow HTTP Header DoS

일명 Slowloris 공격

  • HTTP Header 정보를 비정상적으로 조작하여 웹서버가 온전한 Header정보가 올때 까지 기다리도록 한다.
  • 서버가 연결 상태를 유지할 수 있는 가용자원은 한계가 있으므로 임계치를 넘어가면 다른 정상적인 접근을 거부하게 된다.

동작

  • HTTP에선 헤더의 끝을 /r/n 이라는 개행문자로 구분한다.
  • 공격자는 이 마지막 개행문자를 보내지 않고 지속적으로 의미없는 변수를 추가한다.
  • 서버는 헤더 정보가 아직 전송 중이라고 인식하고 연결을 유지한다.

공격 분석

Slowloris 패킷.png[1]

  • 한 클라이언트가 3-Ways-Handshaking을 통해 정상적으로 TCP 연결을 수립하고 나서 Keep Alive Signal을 보내어 연결을 유지하는 행위를 반복하고 있음을 알 수 있다.

Slowloris 패킷 분석.png

  • Keep alive 패킷은 PSH ACK 플래그를 포함한다.
  • Header와 Body를 구분하는 0d0a0d0a가 아닌, 0d0a에서 끝냈다는 것은 아직 전송할 헤더가 남았음을 의미한다.
  • 공격자는 이렇게 연결을 유지하여 가용자원을 소진되게 만든다.

대응

  • 공격자가 동시에 많은 세션을 유지하므로 방화벽 등을 통하여 세션 임계치 제한을 설정한다.
  • 공격자가 헤더를 천천히 전달하며 연결 시간을 지속시키므로 연결 타임아웃 시간을 적절히 짧게 두어 의심되는 연결이 종료되도록 한다. 단, 너무 짧게 둘 경우 일부 느린 네트워크의 정상적인 연결에 대해서도 가용성을 해칠 수 있다.

같이 보기