공격기법 | 요약 | 비유 | 특징 |
HTTP GET Flood | GET 요청 폭탄 | GET 폭탄 요청을 하는 손님이 있다. → (HTTP GET Flooding) “계속 메뉴만 달라면서 음식은 안 시켜!” |
탐지 어려움, 단순 요청 |
Slowloris (Slow HTTP Header DoS) |
헤더를 느리게 보내며 연결 유지 | 숨만 쉬며 전화를 끊지 않는 손님도 있다. → (Slowloris) “전화 연결은 했는데 말을 안 해… 숨만 쉰다…” |
연결만 점유, 저속 공격 |
RUDY (Slow HTTP Post DoS) |
POST 요청 본문을 천천히 전송 | 글자를 천천히 말하는 손님도 있다. → (RUDY) “죽었냐고? 아니, 초당 한 글자씩 말하고 있어… 너무 느려!” |
POST Body 점유 공격 |
Slow Read | 응답을 아주 천천히 읽음 | 자판기 컵을 천천히 비우는 사람 or 음식을 받아놓고 천천히 씹는 손님도 있다. → (Slow Read) “다 받았는데… 안 삼켜… 너무 느려…” |
응답 큐 점유, 윈도우 조작 |
Hulk DoS | 매번 새로운 URL 요청 생성 | 계속 다른 책 찾게 만드는 사람 or 매번 다른 음식을 시키는 손님도 있다. → (HULK) “한 번도 같은 메뉴를 안 시킨다! 캐시도 못 쓰겠어!” |
캐시 무력화, 무작위 요청 |
Hash DoS | 해시 충돌 유발로 처리 성능 저하 | '모두 이름이 '김김김김김'인 손님도 있다. → (Hash DoS) “예약 명부가 전부 김씨야. 이름 구분 못 하겠어!” |
CPU 리소스 낭비 유도 |
✅ 1. HTTP GET Flooding
📌 개념
- 웹서버에 HTTP GET 요청을 짧은 시간에 엄청나게 많이 보내서 서버를 마비시키는 공격이다.
📦 비유
"식당에 수백 명이 메뉴만 달라고 외치고 주문은 안 하고 나가는 상황"
→ 서버는 페이지를 계속 전달하느라 지치고,
→ 정상적인 사용자는 대기하게 된다.
💣 특징
- 매우 단순한 요청만 보낸다 (예: /index.html).
- 정상적인 요청처럼 보여 탐지하기 어렵다.
🛡️ 대응
- 요청 속도 제한 (Rate Limiting)
- IP 기반 접속 제어 (방화벽, 웹방화벽 등)
✅ 2. Slowloris
📌 개념
- 클라이언트가 HTTP 요청을 매우 느리게 보냄으로써
웹서버가 계속 기다리게 만들어 자원을 잠식하는 공격이다. - 대상 웹 서버와 연결상태를 장시간 지속시켜 -> 연결 자원을 모두 소진시킨다.
📦 비유
"전화해서 말끝을 계속 흐리며 말을 안 끝내고 계속 숨만 쉬는 사람 수백 명이 동시에 걸어오는 상황"
→ 콜센터는 전화를 끊지도 못하고 계속 전화선만 점유당함
💣 특징
- 연결을 유지하면서도 요청 본문을 끝까지 보내지 않음
- Apache, Nginx 등 일부 웹서버에서 취약했던 공격 방식
🛡️ 대응
- 커넥션 타임아웃 설정
- 최소 전송 속도 제한 적용
✅ 3. R.U.D.Y (R-U-Dead-Yet)
📌 개념
- POST 요청을 보내는데, 본문 데이터를 아주 천천히 한 글자씩 전송하면서
서버가 요청 본문이 다 올 때까지 계속 기다리게 만드는 공격이다. - 요청 헤더의 Content-Length를 비정상적으로 크게 설정하여 메시지 바디 부분을 매우 소량으로 보내 계속 연결상태를 유지시키는 공격이다.
📦 비유
"누군가 글을 불러주라고 해서 기다리고 있는데,
'ㄱ... ㅏ... ㅁ... ...' 이렇게 초당 한 글자씩 보내는 상황"
→ 서버는 끝날 줄 모르고 계속 대기 상태로 리소스를 소비함
💣 특징
- Slowloris는 Header만,
RUDY는 Body까지 포함한 점이 다름
🛡️ 대응
- 요청당 최대 대기 시간 설정
- 특정 POST 요청 비정상 속도 탐지 및 차단
✅ 4. Slow Read Attack
📌 개념
- 공격자가 데이터를 요청해놓고,
응답을 천천히 읽는 방식으로 서버의 응답 큐를 가득 채워 서버를 마비시키는 공격이다.
📦 비유
"자판기에서 음료를 뽑았는데, 종이컵을 천천히 비워서 다음 사람이 자판기를 못 쓰는 상황"
💣 특징
- 클라이언트가 **TCP 윈도우 크기(Window Size)**를 작게 설정해서
서버가 천천히 데이터를 보내도록 강제한다.
🛡️ 대응
- 최소 데이터 전송 속도 설정
- 타임아웃 설정
✅ 5. Hulk DoS
📌 개념
- 자동화된 스크립트로 매번 다른 URL 요청을 생성해서
웹서버가 캐싱을 못 하게 하고, 과부하를 유도하는 공격이다.
📦 비유
"도서관에서 매번 다른 책을 주문해서 사서가 책을 계속 찾아오게 하는 상황"
→ 자주 찾는 책은 빨리 나오지만, 매번 다른 책이면 사서가 지친다.
💣 특징
- URL에 랜덤 파라미터를 붙여 서버 캐시를 무력화시킴
- 사용자 에이전트(User-Agent)도 계속 바꿔서 탐지 회피 시도
🛡️ 대응
- 요청 패턴 감시 (같은 IP에서 URL이 너무 자주 바뀔 때 차단)
- CAPTCHA 또는 접근 인증 도입
✅ 6. Hash DoS
📌 개념
- 웹 서버에서 폼 데이터 등을 처리할 때
**해시 테이블(Hash Table)**을 사용하는데,
이를 악용해 충돌이 많은 해시값을 고의로 보내서 처리 성능을 떨어뜨리는 공격이다.
📦 비유
"식당에 예약 이름을 전부 '김김김김김...'으로 보내서,
직원이 한 명 찾는데도 모두 비슷한 이름이라 시간이 오래 걸리는 상황"
💣 특징
- 일반적으로는 빠른 해시 탐색이,
해시 충돌이 많아지면 느려지고, CPU를 과도하게 사용하게 된다.
🛡️ 대응
- 충돌에 강한 해시 함수 사용
- 폼 입력 필드 수 제한, 요청 파라미터 수 제한
- 웹 서버 성능 튜닝
🛡️ 전체적인 애플리케이션 공격 대응 방안
- 충돌에 강한 해시 함수 사용
- 폼 입력 필드 수 제한, 요청 파라미터 수 제한
- 웹 서버 성능 튜닝
- 동시연결에 대한 임계치(Threashold) 설정을 통해 차단
- 연결(커넥션) 타임아웃 설정
- 읽기(Read) 타임아웃 설정