DoS
서비스 거부 공격 (DoS : Denial of Service)
- 공격 대상 시스템의 서비스 가용성을 떨어뜨리는 공격
DoS vs DDoS
- 서비스 거부(DoS) 공격 : 공격자가 단일 컴퓨터를 이용하여 공격
- 분산 서비스 거부(DDoS) 공격 : 공격자가 분산된 다수의 컴퓨터를 이용하여 공격
DoS 종류
1. Ping of Death Attack
ping 명령을 통해 ICMP 패킷을 정상 크기보다 크게 만들어서 전송하면 하위 계층의 MTU에 의해 IP 단편화가 발생하게 된다. 공격 대상 시스템은 다수의 단편화된 패킷을 재조합하는 과정에서 많은 부하가 발생하여 성능이 저하된다.
대응책
현재 대부분의 시스템은 반복적으로 들어오는 일정 수 이상의 ICMP 패킷을 무시하게 설정되어 있음
2. LAND Attack
출발지 ip와 도착지 ip가 같은 패킷을 만들어 공격 대상 시스템에 전송한다. 공격 대상은 자기 자신에게 응답을 보내는 무한 루프에 빠져 시스템 자원을 소모한다.
대응책
현재 대부분의 운영체제에서는 랜드 어택에 대한 보안 패치가 적용되어 있음
3. Smurf Attack
출발지 ip를 공격 대상의 ip 주소로 위조하여 증폭 네트워크에 ICMP Echo Request를 브로드캐스트 한다. 공격 대상 시스템은 증폭 네트워크의 호스트들로 부터 대량의 ICMP Echo Reply 패킷을 수신하게 되어 서비스 거부가 발생한다.
대응책
증폭 네트워크로 악용되지 않게끔 Directed Broadcast 패킷을 허용하지 않도록 라우터를 설정한다.
4. Tear Drop
IP 단편화 취약점을 이용한 공격으로 단편화된 IP 패킷을 수신 측에서 재조합 시 오류가 발생하도록 offset 값을 조작하여 공격 대상에 전송하는 공격이다.
대응책
운영체제의 보안패치를 모두 적용한다.
DDoS
분산 서비스 거부(DDoS) 공격
- 분산된 다수의 좀비 PC에 의해 공격 대상 시스템의 서비스를 마비시키는 공격
일반적인 공격 구조를 살펴보면 4가지 구성요소로 이루어져 있다.
- 공격자 : C&C 서버에 공격을 전달하는 해커의 컴퓨터
- C&C(Command and Control) 서버 : 공격자로부터 직접 공격 명령을 전달 받아 좀비 PC 에게 전달한다.
- 좀비 PC : C&C 서버로 부터 전달받은 명령을 실행하여 공격 대상에 실제 공격을 수행한다.
- 공격 대상 : 공격의 대상이 되는 시스템
DDoS 종류
1. TCP SYN Flooding 공격
- TCP 연결설정과정(3-Way Handshake)의 취약점을 이용한 공격이다.
- 대량의 SYN 패킷을 보내서 공격 대상 시스템의 TCP 연결 자원(backlog queue)을 소진시켜 외부로부터의 새로운 TCP 연결 요청을 받을 수 없는 상태로 만든다.
대응책
- TCP 연결 설정 시 SYN Cookie를 이용하여 클라이언트의 유효성을 확인한 후 백로그 큐를 이용하도록 한다.
- DDoS 대응 장비나 방화벽을 이용하여 동일한 IP의 연결 요청에 대한 임계치를 설정한다.
- First SYN Drop 설정을 하여 첫 번째 SYN 패킷은 Drop 하여 재요청 패킷이 도착하는지 확인하여 출발지 IP가 위조되었는지 판단한다.
2. HTTP GET Flooding 공격
동일한 동적 컨텐츠에 대한 HTTP GET 요청을 다량으로 발생시켜 공격 대상 웹서버가 자원을 과도하게 사용하도록 하여 서비스 거부를 유발시키는 공격이다.
[Slow 계열 공격]
3. Slow HTTP Header Attack (Slowloris)
- 요청 헤더는 빈 라인을 기준으로 끝이 식별된다. 빈 라인 이후는 데이터가 담기는 요청 바디가 된다.
- 공격자는 빈 라인을 보내지 않고 지속적으로 의미없는 헤더를 보낸다. 웹 서버는 헤더를 모두 수신해야 요청 메시지 처리가 가능하기 때문에 이를 모두 수신할 때까지 연결을 지속한다. 공격자가 이러한 다수의 연결을 지속시키게 된다면 웹서버는 연결 자원을 모두 소진하여 새로운 연결 요청을 받을 수 없는 상태가 된다.
4. Slow HTTP POST Attack (RUDY)
- Content-Length는 전송하는 데이터의 크기를 나타낸다. 웹서버는 Content-Length를 참고해서 데이터 길이를 파악한 후 해당 데이터의 길이만큼 읽어 들이는 작업을 수행한다.
- 공격자는 요청 헤더의 Content-Length를 아주 큰 숫자로 조작하여 웹 서버에 전달한다. 웹 서버는 Content-Length의 크기만큼 데이터를 수신할 때까지 연결을 지속하므로 공격자가 이러한 다수의 연결을 지속시키게 된다면 웹 서버는 연결 자원을 모두 소진하여 새로운 연결 요청을 받을 수 없는 상태가 된다.
5. Slow HTTP READ Attack
공격자는 자신의 수신 버퍼의 여유 공간이 0임을 의미하는 zero window packet을 공격 대상 웹 서버에 전송한다. 웹 서버는 요청에 대한 응답을 전송하지 못하고 연결을 지속적으로 유지하게 된다. 공격자가 이러한 이러한 다수의 연결을 지속시키게 된다면 웹 서버는 연결 자원을 모두 소진하여 새로운 연결 요청을 받을 수 없는 상태가 된다.
DRDoS
DRDoS(Distributed Reflection DoS)
공격자는 출발지 IP를 공격 대상 IP로 위조하여 수많은 반사 서버에 요청을 전송하고,
공격 대상은 반사서버로부터 수많은 응답을 받아 서비스 거부 상태가 되는 공격이다.
반사와 증폭이 핵심 키워드다.
DRDoS와 일반적인 DoS(DDoS)의 차이점
- DRDoS 공격은 일반적인 DoS(DDoS)공격에서 발전된 공격의 형태로 좀비 PC를 이용하여 직접 공격을 수행하는 것이 아니라, 증폭 및 반사공격에 활용되는 서비스를 제공하는 서버를 공격 기기로 이용한다.
- 출발지 IP를 위조하여 공격의 근원지를 파악하기 어렵게 한다.
- DRDoS 공격은 요청 대비 응답의 크기가 크기 때문에 공격 트래픽 효율이 증가한다.
DRDoS 종류
1. DNS 증폭 DRDoS 공격
공격자는 출발지 IP를 공격 대상 IP로 위조하여 요청 대비 응답이 큰 DNS 질의타입(ANY, TXT)를 전송하여 공격 대상에 대량의 트래픽을 유발시키는 공격이다.
DRDoS 대응방법
IP 스푸핑에 대응할 수 있는 라우터를 사용한다.
DNS 증폭 DRDoS 공격 서버로 DNS 서버가 악용되지 않도록 다음과 같이 대응
- 내부 사용자만 DNS 질의가 가능하도록 제한한다.
- 동일 출발지 IP에 대해 단위 시간 당 요청 개수 제한을 설정한다.