서비스 거부 공격은 공격대상의 시스템(서버)에 과부하를 줘서 정상적인 서비스를 하지 못하도록 만드는 공격입니다. 그 종류는 TCP SYN Flooding, ICMP Flooding, Tear Drop, Land Attack, (slow) HTTP Get/Post Flooding, cache control Attack 등 다양한 취약점을 노린 공격기법이 있으며 이를 아래에서 살펴봅니다.
[ Contents ]
1. 서비스 거부 공격 (DoS: Denial of Service)
특정 서비스를 계속 호출하여 CPU, 메모리, 네트워크 등의 컴퓨터 리소스를 고갈시키는 공격
각 서비스는 평균적인 이용자 수, 서비스 이용률에 따라 리소스를 배분합니다. 따라서 갑작스런 서비스 요청이 폭주할 경우, 서버 과부하로 서비스가 거부되게 됩니다.
2. 분산 서비스 거부 공격 (D-DOS)
뉴스 기사에서 흔히 봤던 D-DoS(Distributed Denial of Service) 공격도 여러 공격자[Zombi PC]가 특정 시스템을 집중적으로 공격하는 방법입니다.
D-DoS공격에는 TCP SYN Flooding, Land Attack, ICMP Flooding 등이 있으며 아래서 자세히 알아보겠습니다.
1) TCP SYN Flooding
과도한 TCP의 SYN 연결 요청으로 시스템 과부하를 일으켜서 서비스를 중단시키는 공격
TCP는 데이터를 전송하기 전에 3-way handshake로 가상 연결을 맺습니다. SYN은 synchronize의 약자로, 동기화 연결 요청을 의미합니다.
2023.07.04 - [CS/데이터통신 & 네트워크] - [네트워크] TCP와 UDP의 필요성과 특징 (w. IP프로토콜의 한계)
서버에서 서비스 가능한 한도는 정해져 있고, 그 이상으로 방대한 연결 요청이 오면 서버의 대기큐가 가득 차서 DOS상태가 됩니다. 이를 대응하기 위해서는 IP당 SYN 요청 (PPS, Packet Per Second) 임계치를 조정하거나, 맨 처음 SYN 요청은 거부하여 재요청 여부를 파악하는 방법도 있습니다. (First SYN Drop 설정)
2) ICMP Flooding (Smurfing Attack)
다량의 ICMP 패킷을 서버로 전송하여 서비스를 중단시키는 공격
ICMP Echo Request는 일명 'ping'으로 불리는 패킷입니다. 목적지 ip주소와 통신할 수 있는지를 확인해보는 용도로 쓰입니다.
하지만 해당 서버로의 무수한 ping 요청은 서버 과부하를 유발하므로, 대부분의 사이트는 ping 요청을 막아두고 있습니다.
3) Tear Drop: IP Fragmentation (Ping of Death)
분할된 패킷의 offset을 임의로 조작하여 다시 조립할 수 없도록 만드는 공격
네트워크 패킷은 MTU(Maximum Transmission Unit, 최대 전송 단위)보다 큰 패킷이 오면 분할해서 해석합니다. 이때 분할된 정보를 flags와 offset이 관리합니다. 그런데 이 offset를 임의로 조작할 경우에는 다시 조립해서 해석할 수가 없습니다. 이를 해결하기 위해서는 시스템 정지나 재부팅이 필요합니다.
악성코드와 같은 유형이 아니기 때문에, 패킷 필터링 장비나 IDS도 우회활 수 있다는 특징을 갖고 있습니다.
4) Land Attack
송신자와 수신자의 IP 주소 및 Port 번호를 똑같이 보내서, 계속 되돌아오도록 만드는 공격
계속 반복해서 해당 패킷을 송신하고 수신하므로, 서버 과부하에 걸리게 됩니다. 따라서 송수신자가 같은 IP주소와 포트 번호는 필터링해야 합니다.
5) HTTP Get Flooding
HTTP Get 요청을 지속적으로 호출하여 서버 과부하를 유도하는 공격
정상적인 TCP 연결 이후에, HTTP Get 요청을 계속 시도하는 공격입니다. 서버에서 처리해줄 수 있는 한도는 정해져 있으므로, 과도한 요청은 DOS를 유발합니다.
이는 GET 요청 말고도, POST 요청으로 공격 시도할 수 있으며 이때는 HTTP POST Flooding이라고 합니다.
2023.07.10 - [CS/데이터통신 & 네트워크] - [네트워크] HTTP 메서드: GET, POST, PUT, PATCH, DELETE
(GET, POST 요청 관련 글)
6) Slow HTTP Get/Post Attack
지속적으로 소량의 트래픽을 보내거나, 대량의 데이터를 장기간에 분할 전송하여 서버 과부하를 유도하는 공격
HTTP 통신 시, 매번 TCP 연결을 하고 데이터를 주고 받으면 오버헤드가 상당히 큽니다. 그래서 HTTP 1.1부터는 지속 연결이라는 개념이 도입되었고, 일정 시간 동안은 데이터 전송이 없어도 TCP 연결을 유지합니다.
이 점을 노려 지속적으로 소량의 트래픽을 보내거나, 대량의 데이터를 분할 전송해서 서버와의 연결을 강제로 유지시킵니다. 그러면 다른 서비스 요청을 받을 수 없으므로, 과부하에 걸려 DOS 상태에 빠지게 됩니다.
2023.07.06 - [CS/데이터통신 & 네트워크] - [네트워크] HTTP의 특징: 무상태성(Stateless), 비연결성(Connectionless)
(HTTP 1.1 지속 연결과 관련된 글)
7) Cache Control Attack
브라우저 내 캐시 데이터를 저장하지 않고, 매번 서버로부터 자원을 요청하도록 만드는 공격
홈페이지의 로고나 스킨처럼 잘 변하지 않는 미디어와 파일은 브라우저가 '캐시'라는 형태로 저장해둡니다. 그래서 매번 같은 이미지나 영상을 서버로부터 요청하지 않습니다.
하지만 Cache-Control를 no-cache로 설정할 경우, 매번 서버로부터 페이지를 받아와야 합니다. 이는 서버에 많은 부하를 주게 됩니다.
HTTP 헤더의 cache-control 내용은 위 글에서 자세히 살펴보실 수 있습니다.
'CS > 보안' 카테고리의 다른 글
[보안] APT 공격의 개념과 단계: 침투, 탐색, 수집/공격, 유출 (0) | 2023.10.13 |
---|---|
[보안] 부트 바이러스와 파일 바이러스: 기생형, 겹쳐쓰기형, 산란형, 연결형 (0) | 2023.10.12 |
[보안] 컴퓨터 바이러스의 개념과 세대별 진화 과정: 원시, 암호화, 은폐형, 갑옷형, 매크로 (0) | 2023.10.10 |
[보안] SFTP와 FTPS, 그리고 보안 취약점 (FTP 능동모드에서의 보안 취약점) (0) | 2023.08.14 |
[보안] 웹 통신 보안: SSL, TLS를 이용한 HTTPS 보안 웹 브라우징 (0) | 2023.08.13 |
댓글