DDOS

DOS 공격

HJ922 2022. 12. 21. 03:00

● Dos (Denial of Service)(서비스 거부) 

● 공격 대상이 수용할 수 있는 능력 이상의 정보를 제공하거나

●  사용자 또는 네트워크 용량을 초과 시켜 정상적으로 작동하지 못하게 하는 공격

 

● Dos 공격의 특징

● 파괴 공격 : 디스크, 데이터, 시스템 파괴

● 시스템 자원 고갈 공격 : CPU, 메모리, 디스크의 과도한 사용으로 인한 부하 가중

● 네트워크 자원 고갈 공격 : 쓰레기 데이터로 네트워크 대역폭의 고갈

 

● Dos 공격의 5가지 종류

1. Ping of Death

① Ping을 이용하여 ICMP 패킷의 크기를 정상보다 아주 크게 만듬

② 크게 만들어진 패킷은 네트워크를 통해 라우팅되어 공격 네트워크에 도달하는 동안 아주 작은 조각으로 쪼개짐

③ 공격 대상은 조각화된 패킷을 모두 처리해야 하므로 정상적인 ping보다 부하가 훨씬 많이 걸림

 

※ 패킷을 작게 분할하여 전달하는 이유

● 라우팅은 패킷을 전달할 때 특성이 똗같은 네트워크를 지나지 않음

● 네트워크마다 최대로 전송이 가능한 패킷의 길이가 다름

● 최대 전송 가능길이가 작은 네트워크를 지나면 데이터가 쪼개짐

● 한번 분할된 패킷은 다시 커지지 않음

● 패킷을 늘리려면 패킷을 저자한 후 다음에 들어온 패킷 데이터를 재조합해야함

● 이는 라우터 성능에 치명적일 정도로 부하를 일으킴 

 

▣ 예를들어 ICMP 패킷의 길이를 65,500바이트로 설정 후 네트워크에 전송한다고 가정

▣ 패킷은 적절한 크기로 분할됨 

▣ 만약 패킷이 지나는 네트워크의 최대 전송 가능 길이가 100바이트라면 패킷 하나가 655개로 분할됨   

  

※ 보안 대책

● 반복적으로 들어오는 일정 수 이상의 ICMP 패킷을 무시하도록 설정

● 가장 일반적으로 할 수 있는 방법은 패치

● 현대 서버 운영체제에서는 반복 ICMP 차단 기능 탑재

 

2. SYN Flooding

● 서버별로 한정되어 있는 접속 가능 공간에 존재하지 않는 클라이언트가 접속 한 것으로 속여 다른 사용자가 서비스를 제공받지 못하게 하는 것 => 3 way handshake 선행 지식 필요

① 공격자는 많은 숫자의 SYN 패킷을 서버에 전송

② 서버는 받은 패킷에 대한 SYN/ACK 패킷을 각 클라이언트로 전송

③ 서버는 자신이 보낸 SYN/ACK 패킷에 대한 ACK 패킷을 받지 못함

④ 서버는 세션의 연결을 기다리게 됨

⑤ 공격 성공

 

※ 'SYN Received' 상태로 ACK 패킷을 기다리는 것을 '백로그에 빠졌다' 라고 표현함

※ 보안 대책

시스템 패치 설치

침입 탐지 시스템(IDS)이나 침입 차단 시스템(IPS)을 설치

짧은 시간 안에 똑같은 형태의 패킷을 보내는 형태의 공격을 인지했을 경우, 그에 해당하는 IP 주소 대역의 접속을 금지하거나 방화벽 또는 라우터에서 해당 접속을 금지시킴.

서버에서 클라이언트로 보내는 SYN+ACK 패킷에 암호화 기술을 이용해서 인증 정보가 담긴 시퀀스 넘버를 생성하여 클라이언트에 보내는 Syn_Cookie 이용

 

① 클라이언트로부터 SYN 패킷을 받으면, 간단한 인증 정보가 담긴 Syn_Cookie를 시퀀스 값에 넣고 세션을 닫음.

② 클라이언트가 Syn_Cookie가 포함된 값으로

ACK를 보내면 서버는 세션을 다시 열고 통신을 시작

3. Boink, Bonk, TearDrop Attack

● 시스템의 패킷 재전송과 재조합에 과부하가 걸리도록 시퀀스 넘버를 속이는 것

Bonk : 처음 패킷을 1번으로 보낸 후 두 번째와 세 번째 패킷의 시퀀스 넘버를 모두 1번으로 조작해서 보냄.

Boink : 처음 패킷을 1번으로 보낸 후 두 번째 패킷은 101, 세 번째 패킷은  201번 등으로 정상적으로 보내다가 중간에서 일정한 시퀀스 넘버를 보냄.

Teardrop : 시퀀스 넘버를 일정하게 바꾸는 것을 넘어 중첩과 빈 공간을 만들어 시퀀스 넘버가 좀더 복잡해지도록 섞음

=> 전혀 맞지 않는 시퀀스 넘버 때문에 공격 대상이 패킷화된 데이터를 제조합하는 데 혼란이 생겨 CPU에 과부하가 걸리게 됨

 

4. Nand Attack

● 시스템을 나쁜 상태에 빠지게 하는 것

패킷을 전송할 때 출발지 IP 주소와 목적지 IP 주소의 값을 똑같이 만들어서 공격 대상에게 보냄(조작된 IP 주소 값은 공격 대상의 IP 주소여야 함)

● Land 공격법은 동시 사용자 수를 점유하여 CPU 부하까지 올림.

5. Smuff Attack

웜이 네트워크를 공격할 때 많이 사용하는 것으로 ICMP 패킷 이용
라우터는 기본적으로 브로드캐스트를 지원하지 않아 다른 네트워크에 브로드캐스트를 할 때는 다이렉트 브로드캐스트를 하게 됨.
목적지 IP 주소 값을 255.255.255.255로 설정하여 패킷을 보내면 라우터가 외부 네트워크로 나가는 것을 차단하여 내부 네트워크인 랜(LAN) 안에서만 동작

ICMP Request를 받게 된 네트워크는 ICMP Request 패킷의 위조된 시작 IP 주소로 ICMP Reply를 다시 보냄

공격 대상은 수많은 ICMP Reply를 받게 되고 Ping of Death처럼 수많은 패킷이 시스템을 과부하 상태로 만듦.

 

● 최근의 DOS 공격은 웹 어플리케이션 등을 대상으로 공격 방향을 전환 (7계층 Dos 공격)

 

※ 7계층 공격의 주요 특징

정상적인 TCP/UDP 연결 기반의 공격으로, 변조된 IP가 아닌 정상 IP를 이용한 접속 요청 후 공격이 진행되어 정상 사용자의 트래픽과 구분하기가 어려워 탐지가 어려움.

소량의 트래픽을 이용한 공격으로 오랜 시간에 걸쳐 서서히 공격이 진행되어 탐지가 어려움.

● 특정 서비스의 취약점을 이용하여 공격(현재까지는 웹 서비스의 취약점을 이용한 공격이 주를 이루고 있음)

 

 

웹 어플리케이션에 대한 DoS 공격 유형
HTTP GET Flooding 공격
- 공격 대상 시스템에 TCP 쓰리웨이 핸드셰이킹 과정을 통해 정상적으로 접속한 뒤,  HTTPGET Method를 통해 특정 페이지를 무한대로 실행하는 방식
 
HTTP CC 공격
- DoS 공격 기법에 ‘Cache-Control: no-store, must-revalidate’ 옵션을 사용하면, 웹 서버는 캐시를 사용하지 않고 응답을 해야 하므로 웹 서비스의 부하가 증가
 
동적 HTTP Request Flooding 공격
- 요청 페이지를 변경하여 웹 페이지를 지속적으로 요청하는 기법
 
Slow HTTP Header DoS(Slowloris) 공격
- 서버로 전달할 HTTP 메시지의 Header 정보를 비정상적으로 조작하여 웹 서버가 헤더 정보를 완전히 수신할 때까지 연결을 유지하도록 하여 시스템 자원을 소비시켜 다른 클라이언트의 정상적인 서비스를 방해하는 공격
- 불안전한 메시지를 수신한 웹 서버는 클라이언트의 요청이 끝나지 않은 것으로 인식하여 웹 로그를 기록하지 않음.