1. HTTP
인터넷에서 브라우저와 웹서버 간에 문서를 전송하기 위해 사용되는 통신 규약.
Header와 Body로 구성
-Header: 보낼 메시지의 형식
-Body: 실제 보낼 메시지의 내용을 정의
HTTP 메시지는 TCP를 통해 최소 1개 이상의 패킷으로 분할되어 전송
<HTTP 메시지에 사용하는 지시자 >
(1) GET
URL에 해당하는 자료를 제공해 줄 것을 요청 ․웹서버에 저장된 정보를 단순히 요청하기 위해 사용하는 방법 으로 클라이언트는 GET 지시자와 함께 URL 정보를 웹서버로 전달하면 웹서버는 해당 정보를 브라우저로 회신하게 됨
(2) POST
클라이언트에서 웹서버로 데이터를 전송할 때 사용하는 방법으로 웹서버가 처리할 수 있는 자료(예:ID, PWD 등)를 전달할 때 사용
(3) HEAD
GET과 같은 요청이지만 자료에 대한 정보(meta-information) 만을 수신하는 요청
(4) PUT
해당 URL에 자료를 저장하는 요청
(5) DELETE
해당 URL의 자료를 삭제하는 요청
(6) TRACE
이전에 요청한 내용(히스토리)을 요청
(7) OPTIONS
서버가 특정 URL에 대해 어떠한 HTTP 지시자를 지원하는 지 질의하는 요청
(8) CONNECT
프록시(Proxy)가 사용하는 요청
2. HTTP Traffic Flooding 공격
(1) GET Flooding
공격자가 동일한 URL을 반복 요청하여 웹서버가 URL에 해당되는 데이터를 클라이언트에게 회신하기 위해 서버 자원을 사용하도록 하는 공격
*웹서버는 한정된 HTTP 처리 connection 용량을 가지기 떄문에 용량 초과시 정상적인 서비스 어려워짐
결과: 웹서버는 클라이언트의 과도한 응답요구로 인해 DoS 상태에 빠짐
(2) GET Flooding with Cache-Control (CC Attack)
웹서버의 부하를 감소시키기 위해 캐싱서버를 운영하여 많이 요청받는 데이터들을 웹서버가 아닌 캐싱서버를 통해 응답하도록 구축하는 경우에,
공격자가 HTTP 메시지의 캐시 옵션을 조작하여 캐싱서버가 아닌 웹서버가 직접 처리하도록 유도하여 캐싱서버의 기능을 무력화하고 웹서버의 자원을 소진시키는 공격
사용 방법: HTTP 메시지의 헤더정보에 포함된 Cache-Control 값을 no-store, must-revalidate로 지정하여 캐싱 장비가 응답하지 않고 웹서버가 직접 응답하도록 유도하여 웹서버의 자원을 소진시킴
*no-store(캐시 저장 금지): 클라이언트로부터 요청받은 데이터를 디스크나 메모리, 별도의 시스템에 저장하는 것을 방지. HTTP 요청에 포함하여 전송하게 되면 Cache 요청에 대한 응답을 저장할 수 없어 신속히 전송 후에 정보 삭제.
*must-revalidate: 캐싱서버와 같은 별도의 시스템을 운영하는 경우 웹서버가 캐싱서버에 저장된 캐시데이터에 대한 검증을 요구할 수 있음. 즉, 이 지시자를 추가할 경우 무조건 Server에서 재검증한 후 응답 값을 받게 됨.
Cache-Control을 변조한 것 이외의 GET Flooding 공격과 차이점 X
(3) HTTP Header/Option Spoofing Flooding 공격
웹서버의 가용량을 모두 소비시켜 정상적인 웹서비스를 제공하지 못하도록 하는 DoS 상태를 유발하는 공격
*정상적인 TCP 통신을 수행하기 때문에 TCP 전송계층 에서의 공격여부를 판단할 수 없음
< HTTP Header/Option 을 이용한 대표적인 공격기법 >
- Slow HTTP POST DoS
- Slow HTTP Header DoS (Slowloris)
- Slow HTTP Read DoS
(3)-1 Slow HTTP POST DoS
공격자는 HTTP POST 지시자를 이용하여 서버로 전달할 대량의 데이터를 장시간에 걸쳐 분할 전송하며, 서버는 POST 데이터가 모두 수신하지 않았다고 판단하여 연결을 장시간 유지하므로 가용량을 소비하게 되어 다른 클라이언트의 정상적인 서비스를 방해
※ GET 방식과 달리 POST 방식은 클라이언트가 서버로 전송할 데이터의 크기를 설정할 수 있기 때문에 서버는 데이터 수신시까지 대기해야 함
Slow HTTP POST DoS는 POST 데이터를 일정한 간격으로 1바이트씩 분할하여 서버로 전송하여 서버가 해당 데이터를 수신하기 위한 연결상태를 종료하지 못하도록 유지시켜 다른 클라이언트의 연결이 원활하지 못하도록 유도
(3)-2 Slow HTTP Header DoS (Slowloris)
공격자는 서버로 전달할 HTTP 메시지의 Header 정보를 비정상적으로 조작하여 웹서버가 헤더 정보를 완전히 수신할 때까지 연결을 유지하도록 하여 가용량을 소비시킴으로 다른 클라이언트의 정상적인 서비스를 방해함
-> 웹서버는 HTTP 메시지의 헤더와 바디(데이터)를 개행문자(CRLF, ‘\r\n\r\n')로 구분. 만약, 클라이언트가 개행문자 없이 HTTP 메시지를 웹서버로 전달하게 되면, 웹서버는 HTTP 헤더 정보가 다 수신하지 않은 것으로 판단하여 연결을 유지하기 때문에, 충분히 많은 클라이언트를 이용하여 불완전한 메시지를 전달하면 웹 서버는 다른 클라이언트에 대한 정상적인 연결을 제공하지 못하게 되어 서비스 장애가 발생.
웹서버는 이러한 불완전한 메시지를 수신하게 되면, 클라이언트로부터의 요청이 끝나지 않은 상태로 인식하기기 때문에 웹로그를 기록하지 않는다.
위의 공격 형태를 보면 정상적인 HTTP 메시지의 경우 헤더 정보가 '0D0A0D0A' 로 종료되지만, Slow HTTP Header (Slowloris) DoS 메시지는 '0D0A0D0A' 가 없음
불완전한 헤더 정보를 가진 HTTP 메시지를 일정한 간격으로 웹서버로 전달하여 웹서버가 HTTP 헤더 정보를 완전히 수신하기 위해 연결 상태를 종료하지 못하도록 유지시켜 다른 클라이언트의 연결이 원활하지 못하도록 유도
(3)-3 Slow HTTP Read DoS
공격자는 TCP 윈도우 크기와 데이터 처리율을 감소시킨 상태에서 다수의 HTTP 패킷을 송신하여 웹서버가 정상적으로 응답하지 못하도록 DoS 상태를 유발
TCP 윈도우 : TCP 헤더의 구성요소로써 수신자 측의 수신 가능한 데이터 버퍼용량
데이터 처리율 : 클라이언트가 수신한 데이터를 읽어들이는 단위시간당 처리능력
공격자가 자신의 TCP 윈도우 크기가 0 byte 임을 서버로 전달(ACK) 하면 서버는 공격자의 윈도우 크기가 0 byte 임을 인지한 후 더 이상 데이터를 전송하지 않고 공격자의 윈도우 크기를 점검하는 probe 패킷을 ACK 로 전송하며 대기 상태에 빠지게 된다.
서버가 공격자와 정상적인 통신이 이루어지지 않고 지속적으로 연결을 유지하는 상태로 빠지게 하여 서버의 자원을 소진시킴으로 DoS 상태를 유발
'CS' 카테고리의 다른 글
IAT,EAT 로딩 과정 문서화 (0) | 2020.11.02 |
---|---|
네트워크 보안 2주차 (0) | 2020.09.19 |
네트워크 보안 1주차 (0) | 2020.09.14 |
wireshark를 이용한 패킷 분석 (0) | 2020.02.17 |
패킷 구조 (0) | 2020.02.17 |