Infomation

[DDoS] Slow HTTP POST Attack

DarkSoul.Story 2013. 7. 11. 14:55
반응형

1. 최근 DDoS 공격 유형


 과거에는 네트워크 대역폭 및 네트워크 장비와 서버의 커넥션 자원을 고갈시키는 TCP , UDP 등 유형의 Layer4 대상 공격이 주를 이루었으나, 공격자들은 이들 공격이 Anti-DDoS 솔루션으로 효과적인 대응이 가능하게 되자, 최근에는 웹 어플리케이션 등을 대상으로 하는 공격으로 방향을 전환하고 있다

 

 응용 계층 기반의 L7공격의 주요 특징은 다음과 같다.

 

  정상적인 TCP/UDP 연결 기반의 공격이다.

     - 변조된 IP 사용이 아닌, 정상 IP를 이용한 접속 요청 후 공격이 진행된다.

     - 정상 사용자의 트래픽과 구분이 어렵다.

     - 단순 행위 기반 탐지가 어렵다.

 

 소량의 트래픽을 이용한 공격이다.

     - 소량의 트래픽/세션 연결을 통해 서서히 오랜 시간에 걸쳐 공격이 진행된다.

     - 임계치/학습 기반 탐지가 어렵다.


 특정 서비스(어플리케이션)을 대상으로 한 공격이다.

   - 특정 서비스의 취약점을 이용하여 공격한다.

   - 현재까지는 대부분이 HTTP Protocol의 취약점을 이용한 공격이 주를 이룬다.

 

 다음은 L3 / L4 DDoS Attack  L7 DDoS Attack공격을 비교한 표이다.

 

 

L3 / L4 DDoS Attack

L7 DDoS Attack

주요     공격

- 대역폭 고갈 공격

- 세션 고갈 공격

- 서버의 리소스 고갈 공격

주요 프로토콜

- ICMP , UDP , TCP (SYN)

- HTTP , SMTP , FTP , VoIP 

         

- 단순 Flooding형태의 대량의

트래픽 발생을 통한 공격 진행

- Spoofed IP , 비정상적인 트래

픽을 이용한 공격의 비율이 높

.

- Anti-DDoS 장비를 통해 방어

가능

- 소량의 트래픽을 이용한 공격

- 특정 어플리케이션의 취약점을

이용한 공격

- 정상 트래픽을 이용한 공격 진행

(정상적인3-way Handshaking

진행)

 

위 에서 보듯 웹 어플리케이션 공격은 정상적인 트래픽과 구분이 어려우며, 아주 작은 양의 커넥션과 트래픽만 으로도 대상 서버에 아주 큰 영향을 줄 수 있기 때문에 피해 시스템의 하드웨어 성능과는 무관하게 영향을 줄 수 있다.

 

2. Slow HTTP POST Attack


 L7 공격은 주로 HTTP 서비스를 대상으로 한 공격이 많다. 그 종류를 보면 다음과 같다.

HTTP Reqeust Flooding Attack , CC Attack , Circle-CC Attack , 최근 발표된 Slowloris , Pyloris, Slow HTTP POST Attack이 있다.

 

 위의 L7 공격 중 필자는 Slow HTTP POST Attack에 대해서 이야기 하겠다.

 

Slow HTTP POST Attack 2010 11월 美워싱턴에서 개최된 2010 OWASP AppSec Conference에서 소개된 공격으로써, 웹 서버와의 커넥션을 최대한 장시간 동안 유지하여 웹 서버가 정상적인 이용자의 접속을 받아들일 수 없게 하는 공격방식으로Slowloris와 유사하나, 아파치 계열과 IIS 계열 웹 서버 모두에 영향이 가능하다는 차이점이 있다.

 

이 공격은 HTTP POST Method를 사용하며 헤더의 Content-Length 필드에 임의의 큰 값을 설정하여 전송함으로써, 웹 서버가 클라이언트에서 해당 크기의 메시지를 전송할 때까지 커넥션을 유지하게 되고, 공격자가 소량의 데이터를 느린 속도로 전송하여 웹 서버와의 커넥션을 장시간 동안 유지하게 함으로써 웹 서버는 이 공격에 취약하게 된다.



위 그림으로 쉽게 설명하면 다음과 같다

 

클라이언트와 서버가 정상적인 3-way Handshaking 을 거친 다음 클라이언트가 POST 데이터를 보낼 때, Content-Length 필드를 20000으로 지정 한 후, 서버로 보내면 서버는 클라이언트에서 20000 Byte의 데이터가 들어올 때까지 해당 세션을 열어둔다.하지만 클라이언트는 1초에 1Byte씩 보내게 되면, 20000초 즉, 5시간 30분 동안 세션을 유지 시킨다.

 

여러 클라이언트 들이 좀비가 되어 공격한다면, 좀비 수 만큼의 세션이 장시간 유지가 되면, 결국 웹 서버의 모든 세션이 점유 당하고, 신규 서비스 불가 상태가 되면서 서비스 장애가 발생하게 되는 것이다.

 

대부분의 웹 서버는 하나의 HTTP POST 요청에서 최대 2GB의 데이터 전송을 허용하고 있어, HTTP POST Method(로그인, 파일 업/다운로드, 이메일 등)를 수용하는 모든 웹 서버는 이런 공격의 위협에 취약하다.

 

Slowloris와 같이 Layer4 기반 탐지 시스템에서 탐지가 어려우나 Slowloris와는 다르게 HTTP 헤더 전송에 시간 지연이 없으므로 IIS HTTP 헤더 타임아웃 제한 기법에 대한 우회가 가능하다. Content-Length, POST 메시지 값, 데이터 전송 지연시간 등은 랜덤 하게 변경 되어질 수 있어, 패턴 기반 탐지가 더욱 어려울 수 있다.

 

기본 설정의 IIS 서버는 하드웨어 성능과 무관하게 약 20,000개의 HTTP POST 연결만으로도 서비스 거부 상태가 발생되는 것으로 알려져 있다. 또한 HTTP 1.1 에서는 HTTP 헤더에 Content-Length 필드가 정의되지 않아 웹 서버가 해당 POST 요청의 메시지 크기를 알 수 없어 위협이 더욱 클 수 있다.

 

소량의 트래픽으로 최고의 효과를 볼 수 있는 Slow HTTP POST Attack에 대해 아파치 소프트웨어 재단과 마이크로소프트사는Slow HTTP POST Attack HTTP 프로토콜 자체적인 문제점을 악용하는 것으로 이 문제에 대해 보안패치를 발표할 계획이 없다고 밝혔다.

 

3. 실제 Slow HTTP POST Attack 분석

 

Slow HTTP POST Attack의 특징은 다음과 같다

 

 Slow HTTP POST Attack이 시작되면 다음과 같이 정상 적인 3 - way Handshaking 을 실시 하며, 패킷을 나누어 보내겠다는 메시지도 같이 전달한다.

 


 패킷의 헤더 내용을 보면 다음과 같다.



- Content-Length 필드의 값이 18468 Byte라는 것을 확인 할 수 있다.

- Content-Length 필드의 값은 필자가 지정한 값에서 랜덤으로 설정하도록 하였다.

- Slow HTTP POST Attack이라는 문구는 패킷을 구분하기 쉽게 필자가 임의로 넣은 문구 이다.

 

 지정된 시간이 지나면, 작게 쪼갠 패킷을 전송한다.



위에서 보듯 작게 쪼개서 보내는 Data의 양을 보면 1Byte인 것을 확인할 수 있다.

 

 1Byte씩 보내는 패킷을 보면 다음과 같이 임의의 값을 보낸다


13Byte 보낸 상태



- 55Byte 보낸 상태


4. 대응 방안

 

Slow HTTP POST Attack 대응 방안으로는 다음과 같다.

 

  POST 폼에 메시지 크기를 제한 한다.

 최저 데이터 전송 속도를 제한 한다.

- 공격자가 공격 속도를 임계치를 상회하도록 조절하여 공격할 수 있으며, 접속자 라인 속도의 다양성, HTTPS 등에 의한 속도 저하 등 다양한 변수가 존재하여 적용에 어려움이 있다.

  항시 TCP 상태를 모니터링 하여, 평상시 보다 Established  Time Wait 값이 많은지 확인 한다.

 

위와 같은 대응 방안은 Slow HTTP POST Attack의 임시적인 완화 방안이라는 것을 명심한다웹 서비스 대상 공격 기법은 다양화 되고 있으며, 현재의 대응 기법들을 우회하기 위하여 진화하고 있다. Slowloris , Pyloris, Slow HTTP POST Attack과 같이 L7 기반의 공격이 이슈화 될 것이며, 앞으로 위에서 언급한 공격 이외에 웹 서버 및 HTTP Protocol의 특성을 이용한 새로운 공격 기법이 출현 할 것으로 예상된다.


반응형

'Infomation' 카테고리의 다른 글

[wireless] 숨긴 SSID 확인  (0) 2013.07.11
[DoS] Hash Table DoS (HashDoS) Attack  (0) 2013.07.11
2011년 3.4 DDoS Attack 내용  (0) 2013.07.11
[Web] 웹쉘 (web shell)  (0) 2013.07.11
[Web] XSS (Cross-Site Scripting)  (0) 2013.07.11