정보보안기사

네트워크 기반 공격의 이해 - 1

ragdo11 2023. 4. 21. 12:08

네트워크 기반 위협

- 네트워크를 취약하게 만드는 요인들

1. 많은 공격 지점 : 임의의 호스트에서 임의의 호스트를 공격할 수 있으며, 따라서 대규모 네트워크에서는 더 많은 취약지점이 존재한다.

2. 공유 : 네트워크는 자원 및 작업부하의 공유를 가능하게 하므로, 개별 컴퓨터에 비해 네트워크로 연결된 시스템들은 더 많은 수의 사용자가 접근할 수 있다.

3. 시스템의 복잡성 : 네트워크 운영/제어 시스템은 단일 컴퓨터 시스템을 위한 운영체제보다 훨씬 복잡할 가능성이 높다.

 

- 네트워크 위협의 유형

네트워크에 대한 보안 위협은 네트워크 시스템의 직접적인 파괴나 도난 같은 물리적 위협과 네트워크에 대한 지식을 가진 사람에 의한 기술적 위협이 있다. 기술적 위협은 수동적 공격과 능동적 공격으로 나뉘어진다.

수동적 공격은 통신회선상의 정보를 무단으로 취득하는 행위인데, 통신회선에 제 3자의 접속 시도를 방지하는 방법과 데이터를 암호화하여 기밀성을 보장하는 방법으로 방어할 수 있다.

능동적 공격은 통신회선상의 정보를 변조, 위조하는 행위인데 암호화와 함께 데이터의 무결성을 확인하는 방법을 사용하여 방어할 수 있다.

 

네트워크 기반 보안위협 및 대응책

서비스 거부공격(DoS)

정당한 사용자가 정보 시스템의 데이터나 자원을 적절한 대기 시간 내에 사용하는 것을 방해하는 행위로, 주로 시스템에 과도한 부하를 일으켜 정보 시스템의 사용을 방해하는 공격 방식이다.

서비스 거부 공격은 공격자가 단일 컴퓨터를 통해 공격하는 경우를 말하고, 분산 서비스 거부(DDoS)는 공격자가 물리적으로 분산된 다수의 컴퓨터(좀비 PC)를 이용하여 공격하는 형태를 말한다.

DoS 공격은 크게 소프트웨어의 취약점을 이용한 공격(poison 패킷)과 flooding 유형의 공격으로 구분할 수 있다.

 

+ poison 패킷 : 네트워크를 처리하는 소프트웨어의 버그를 이용하여 소프트웨어가 중단되도록하는 특별한 패킷

 

TCP SYN Flooding Attack

Syn Flooding 공격은 TCP 연결 설정 과정 중에 3-Way Handshaking 과정에서 Half-Open 연결 시도가 가능하다는 취약점을 이용한 공격으로 공격대상 시스템은 외부로부터 접속 요청을 더 이상 받아들일 수 없게 되어 정상적 서비스를 제공할 수 없게 된다.

공격자가 다수의 syn 신호를 공격대상자에게 전송하면 공격대상자는 syn/ack 신호를 공격자에게 전달하게 되는데 이때 공격자가 ack 신호를 반송하지 않으면 공격대상자의 시스템은 일정 시간동안 신호를 기다리게 된다.

이 공격은 윈도우시스템 뿐만 아니라 인터넷에 연결되어 TCP 기반의 서비스를 제공하는 모든 시스템에 피해를 줄 수 있다.

 

+ 시작 주소 Spoofing

DoS 공격에 사용되는 패킷의 공통된 특징은 조작된 시작 주소지다. 이를 시작 주소 spoofing이라고 한다.

시스템의 네트워크 코드에 마음대로 접근할 수 있다면 조작된 시작 주소를 가진 패킷은 생성하기는 매우 쉽다. 이는 주로 raw socket interface를 통해 행해지게 된다. 이 인터페이스는 네트워크를 테스트하거나 네트워크 프로토콜을 연구하는 목적으로 개발된 것으로 정상적인 작업에는 전혀 필요하지 않은 기능이다.

 

- SYN Flooding Attack 공격 과정

공격자는 시작 주소가 위조된 상당히 많은 양의 SYN 메시지를 목적지에 보낸다. 이 패킷 각각에 대해서 서버는 정보를 저장하고 다시 SYN+ACK를 주작된 주소로 보내게 된다.

만약 SYN 패킷을 송신하지 않은 TCP가 SYN+ACK 패킷을 수신하면 RST 패킷을 회신하여 연결설정 작업중단을 요쳥하고 RST 패킷을 수신한 서버는 연결설정 과정을 중단하고 연결 테이블의 자료구조를 해제한다.

그러나 위조 IP 주소가 너무 바쁘거나 사용하고 있지 않은 IP 주소인 경우, RST 패킷이 서버로 회신되지 않고 서버는 행해진 시간 동안 SYN+ACK 패킷을 재전송하며 연결 설정 시도를 반복한다.

따라서 TCP SYN Flooding 공격은 RST 패킷 수신에 의한 연결설정 작업 중단을 막기 위해 사용하지 않는 IP 주소로 SYN 패킷의 출발지 주소를 위조하는 것이 일반적이다.

결국 SYN Flooding 공격에서는 공격자가 매우 많은 패킷을 목적시스템에 보낸다. 이를 통해 서버의 TCP 연결테이블은 꽉 차게 되고 이후에 들어오는 연결 요청은 거부된다.

 

- 보안대책

방화벽 또는 DDoS 대응장비를 이용하여 동일 Client(IP)의 연결 요청에 대한 임계치 설정을 통해 과도한 연결요청이 발생하는 것을 차단한다.

 

공격에 대한 대응 방법으로 Syn_Cookie를 생각할 수 있다. Syn_Cookie는 서버에서 클라이언트로 보내는 SYN+ACK 패킷에 임의로 생성되는 시퀀스 넘버 대신 서버에서 암호화 기술을 이용해 인증 정보가 담긴 시퀀스 넘버를 생성하여 클라이언트로 보내는 것이다.

서버는 클라이언트로부터 SYN 패킷을 받더라도 Syn_Cookie만 보내놓고 세션을 닫아버린다. 따라서 세션을 열고 기다릴 필요가 없으므로 SYN Flooding 공격이 통하지 않게 된다.

 

First SYN Drop 설정을 한다. 연결 요청 패킷을 보내는 클라이언트가 실제로 존재하는지를 파악하는 방법으로 클라이언트로부터 전송된 첫 번째 SYN은 Drop하여 재요청 패킷이 도착하는지 확인하여 출발지 IP가 위조되었는지 판단한다.

대부분의 공격툴이 다량의 SYN 요청을 생성할 뿐 패킷 Drop시 재전송을 수행하지 않는다는 점을 이용한 방법이다.

 

TCP 연결 테이블(Backlog Queue) 엔트리 선택적 삭제 기법은 연결 테이블이 오버플로우가 될 때 일부 엔트리를 삭제함으로써 새로운 SYN 패킷을 처리할 수 있게 만드는 것이다.

-> 정상적 연결 삭제 가능 & 지속적 DoS 공격에 대한 해법이 아님

 

SMURF Attack

광범위한 효과로 DoS 공격 중에서 가장 피해가 크며 가장 인기있는 공격 형태 중 하나로서 IP 위장과 ICMP 특징을 이용한 공격이다.

스머프 DoS 공격은 공격자가 출발지 IP 주소를 목표 시스템으로 스푸핑하고 목적지 주소를 직접 브로드캐스트 주소(Directed Brodcast Address)로 설정한 Ping 메시지를 송신하고, Ping 메시지를 수신한 네트워크 내의 모든 시스템이 Ping 응답 메시지를 출발지 주소인 공격 목표 시스템으로 동시에 전송함으로써 공격 목표를 마비시킨다.

직접적인 ICMP Broadcast와 세 가지 구성요소인 공격자, 증폭 네트워크, 공격대상 서버(표적)를 이용한다.

 

- 공격방법

공격자는 IP를 공격대상 서버의 IP 주소로 위장하여 ICMP를 브로드캐스트로 다수의 시스템에 전송한다.

이때 ICMP 브로드캐스트를 수신한 다수의 시스템은 ICMP Echo 패킷을 공격자가 아닌 공격대상 서버로 전송하게 된다.

결과적으로 공격대상 서버는 다수의 ICMP Echo를 수신하게 되어 시스템 성능에 문제를 일으키게 된다.

이때 다수의 시스템은 브로드캐스트에 대한 응답으로 다수의 ICMP Echo 패킷을 발생시키기 때문에 증폭 네트워크라고 불리게 된다.

 

- 보안대책

중간매개지로 쓰이는 것을 막기 위해 라우터에서 다른 네트워크로부터 들어오는 IP directed broadcast 패킷을 막도록 설정한다. (config-if)#no ip directed-broadcast

호스트는 IP broadcast address로 전송된 ICMP에 패킷에 대해 응답하지 않도록 시스템을 설정할 수 있다.

스머프 공격의 특성상 공격이 시작되면 단시간에 다수의 ICMP Echo Reply 패킷을 희생자에게 전송한다. 따라서 동일한 ICMP Echo Reply 패킷이 다량으로 발생한다면 해당 패킷들을 침입차단시스템을 통해 모두 Drop 시킨다.

 

Fraggle Attack

Smurf와 유사하나 ICMP 대신에 UDP를 사용한다. 위장된 희생자의 IP 주소를 브로드캐스팅한다.

 

Land Attack

Land 공격은 시스템을 나쁜 상태에 빠지게 하는 것이며 방법도 간단하다.

패킷을 전송할 때 출발지 IP 주소와 목적지 IP 주소값을 똑같이 만들어서 공격 대상에 보내는 것이다. 이때 조작된 IP 주소값은 공격 대상의 IP 주소이다.

SYN Flooding 처럼 동시 사용자 수를 증가시키며 CPU에도 부하를 주게 된다.

 

- 보안대책

공격자가 보낸 패킷의 TCP를 분석하여 패킷의 소스 IP,포트와 목적지 IP, 포트가 동일한지 확인한다.

공격자가 보내는 패킷의 횟수를 카운트하여 공격인정 시간 내에 공격인정 횟수가 많으면 Land Attack으로 탐지한다.

라우터나 패킷 필터링 도구를 이용하여 자신의 시스템 주소와 동일한 소스 주소를 가진 외부 패킷을 필터링한다.

 

Ping of Death

공격의 기본은 ping을 이용하여 ICMP 패킷을 정상 크기(65535 bytes) 보다 아주 크게 만드는 것이다.

크게 만들어진 패킷은 네트워크를 통해 라우팅되어 공격 네트워크에 도달하는 동안 아주 작은 조각(fragment)으로 쪼개진다. 그리고 공격 대상은 조각화된 패킷을 모두 처리해야 하므로 정상적인 ping 처리보다 부하가 훨씬 많이 걸린다.

 

- 보안대책

관리하는 시스템이 Ping of Death 공격에 취약하다면 가장 일반적으로 할 수 있는 방법은 패치다.

Ping of Death 공격의 핵심은 Ping 패킷의 데이터 크기를 매우 크게 하여 패킷을 몇 개만 보내도 수십 개로 분할하여 목적지로 송신되는 것이다. 보통의 ICMP 패킷은 분할하지 않으므로 패킷 중 분할이 일어난 패킷을 공격으로 의심하여 탐지하는 방식을 사용한다.

 

Teardrop Attack

네트워크상에서 IP가 정상적으로 패킷을 전송할 때 IP 단편화가 발생하게 된다. 수신자는 재조립을 통해 단편화된 데이터를 복구하게 된다.

이때 재조립 시에 정확한 조립을 위해 Offset 값을 더하게 되어 있는데, 이 오프셋 값을 단편화 값에 중복되도록 고의적으로 수정하거나 정상적인 오프셋 값보다 더 큰 값을 더해 그 범위를 넘어서는 오버플로우를 일으켜 시스템의 기능을 마비시켜 버리는 DoS 공격기법의 하나이다.

 

- 보안대책

Teardrop은 침입탐지시스템, 방화벽을 우회할 수 있고 Boink와 같은 다양한 변종을 가지는 공격방법으로 완전한 차단에는 어려움이 있다.

따라서 근본적 해결을 위해서는 공격받는 시스템의 운영체제가 취약점을 갖지 않도록 패치하는 것이 가장 좋은 방법이다.

 

Inconsistent Fragmentation Attack

- Bonk

패킷을 프래그먼트하여 전송할 때 패킷을 조작하여 결과적으로 공격대상자의 시스템 부하를 증가시키는 공격이다.

처음 패킷을 1번으로 보낸 후 다음 패킷을 보낼 때 순서번호를 모두 1번으로 조작하여 전송하는 DoS 공격이다.

 

- Boink

Bonk를 수정한 DoS 공격도구로 처음 패킷을 1번으로 보낸 후 다음 패킷을 100번, 그 다음 패킷을 200번 등 정상적으로 보내다가 20번째 패킷을 2002, 21번째 패킷으 100, 22번째 패킷을 다시 2002 등으로 중간에 패킷 시퀀스 번호를 비정상적인 상태로 보내는 공격기술이다.

 

- 보안대책

Bonk,Boink 공격으로 최근의 시스템을 파괴할 수 있는 경우는 거의 없지만 일부 응용 프로그램에서는 이러한 공격이 동작하는 경우를 가끔 확인할 수 있다.

대응책은 SYN Flooding이나 Ping of Death 공격에 대한 대응책과 같다.

 

+ Tiny Fragment : IP 헤더보다 작은 fragment를 만들어서 침입차단시스템을 우회하여 내부 시스템에 침입하는 공격기법으로 DoS 공격이 아닌 우회 공격 기법이다.

+ Fragment Overlap : IP fragment의 offset 값을 조작해 서비스 포트 필드를 중첩시켜서 재조합이 되고 나면 침입차단시스템에서 허용하지 않는 서비스에 접근 가능하게 만드는 공격기법으로 DoS 공격 기법이 아닌 우회 공격 기법이다.

 

DDoS 공격

다수의 서버, PC 등을 이용해 비정상적인 트래픽을 유발시켜서 대상 시스템을 마비시키는 공격 행위이다.

공격자는 취약한 서버를 공격하여 악성코드를 배포하고, 유포지/경유지 서버에서 악성코드를 내려 받은 서버/기기들을 이용하여 봇넷을 구축한다.

공격자는 봇넷에 명령을 전달하여 대규모 트래픽을 유발시키거나, 취약한 서버를 악용하여 반사공격(DRDoS)을 수행한다.

이때 공격자의 위치와 구체적인 발원지 파악은 불가능에 가깝다.

 

전통적인 DDoS 공격

- Trinoo 공격

많은 호스트로부터 통합된 UDP Flood DoS 공격을 유발하는데 사용되는 도구로 몇 개의 서버(혹은 마스터들)와 많은 수의 클라이언트(데몬)로 이루어진다.

 

- TFN(Tribed Flood Network) 공격

Trinoo와 거의 유사한 분산 서비스 거부 도구로 많은 소스에서 하나 혹은 여러 개의 목표 시스템에 대해 서비스거부 공격을 수행한다.

TFN은 UDP flood 공격 뿐 아니라 TCP SYN flood 공격, ICMP echo 요청 공격, ICMP 브로드캐스트 공격(smurf)을 할 수도 있다.

 

- Stacheldraht 공격

Stacheldraht은 독일어로 철조망이라는 뜻이다. 트리누와 TFN을 참고하여 제작된 도구로서 이들이 갖고 있는 특성을 대부분 가지고 있다. Stacheldraht의 마스터 시스템 및 자동적으로 업데이트되는 에이전트 데몬과의 사이에 통신을 할 때 암호화하는 기능이 추가되었다.

 

- TFN2K 공격

TFN2K는 TFN의 발전된 형태로 통신에 특정 포트가 사용되지 않고 암호화되어 있고 프로그램에 의해 UDP, TCP, ICMP가 복합적으로 사용되며 포트도 임의로 결정된다. 지정된 TCP 포트에 백도어를 실행시킬 수 있다.

 

DDoS 공격유형별 분류

구분 대역폭 공격 자원 소진 공격 웹/DB 부하 공격
공격 특성 높은 bps 높은 pps
높은 connection
높은 pps
높은 connection
공격 유형 UDP Flooding 및
UDP 기반 반사공격
(DNS, NTP, CLDAP, SSDP 등)
ICMP Flooding 등
TCP SYN, ACK Flooding 등 GET Flooding,
POST Flooding 등
피해 대상 동일 회선을 사용하는 모든 시스템 접속 불가 대상 서버, 네트워크 장비 등의 과부화 발생 대상 웹/DB 서버 과부하 발생
프로토콜 UDP, ICMP, TCP TCP HTTP, HTTPS
IP 위/변조 여부 위/변조 가능 위/변조 가능 위/변조 불가능(실제 IP로 공격)
비고 일시적으로 대량의 트래픽을 발생시키기 때문에 회선 대역폭이 작으면 방어가 어려움 대역폭 공격에 비해 적은 트래픽으로도 서버 과부하를 발생시킬 수 있음 정상적으로 세션을 맺은 후 과도한 HTTP 요청으로 웹/DB 서버의 과부하를 유도함

1) 대역폭 공격 - UDP, ICMP Flooding

- UDP Flooding

출발지 IP를 위/변조한 후 UDP 프로토콜로 대규모 데이터를 생성해 피해 대상 시스템을 향해 전달한다. UDP Flooding은 대상서버에서 UDP Port를 사용하지 않아도 공격할 수 있으며, 공격을 수행하는 감염된 기기가 많을수록 위험도는 증가한다. 단순한 공격방식과 강력한 효과로 과거부터 현재까지 지속적으로 사용되는 공격방식이다.

 

- ICMP Flooding

ICMP Flooding은 ICMP Request 패킷을 이용하여 피해서버로 대량의 ICMP 패킷을 생성해 전달하여 피해서버의 대역폭을 고갈시키는 공격방식이다. 반사공격과 다르게 ICMP Flooding은 증폭이 발생하지 않기 때문에 공격기기의 대역폭에 따라 공격규모가 결정된다.

 

대역폭 공격 - DRDoS(Distributed Reflection Denial of Service)

분산 반사 서비스 거부 공격(DRDoS)은 분산 서비스 거부 공격보다 발전한 새로운 분산 서비스 거부 공격방법이다.

별도의 에이전트 설치 없이 프로토콜 구조의 취약점을 이용해 정상적인 서비스를 운영하는 시스템을 DRDoS 공격의 에이전트로 활용하여 공격한다.

DRDoS의 공격 형태는 다양한 형태로 나타날 수 있다.

· TCP의 연결설정과정(3-way handshake)의 취약점을 이용, 위조된 주소의 syn 요청을 반사서버로 전달하여 syn+ack 응답이 공격대상으로 향하도록 하는 방법

· ICMP 프로토콜의 Echo Request와 Echo Reply를 이용, 위조된 주소의 Echo Request를 반사 서버로 전달하여 Echo Reply가 공격대상으로 향하도록 하는 방법

· UDP 프로토콜 서비스를 제공하는 서버를 반사서버로 이용하여 그 응답이 공격 대상으로 향하도록 하는 방법

UDP 프로토콜을 사용하는 DNS, NTP, SNMP, CHARGEN 등의 서비스를 이용한 DRDoS 공격은 크게 반사와 증폭 공격 형태로 나타난다.

 

- DRDoS 공격의 위협요소

DRDoS 공격이 DDoS 공격보다 위헙적인 이유

· 패킷이 전송되는 경로가 무수히 많다. 공격자가 전송한 위조 SYN 패킷은 즉시 흩어지게 된다. 직접 공격대상 시스템이나 네트워크로 향하는 것이 아니라 네트워크에 연결되어 있는 수많은 TCP 반사 서버로 보내지게 된다.

· 반사 서버의 단계적 사용 및 확산이다. 엄청난 양의 반사 서버 목록을 보유하고 있다면 공격 초기에는 일부분을 사용하여 공격대상 서버에 지속적으로 집중적인 패킷을 전송할 수 있다. 그리고 점차 반사 서버를 추가함으로써 공격 경로를 끊임없이 변경할 수 있다.

· 마지막으로 위조 SYN 패킷 근원지의 IP를 랜덤으로 생성하는 전통적인 분산 서비스 공격 방법과 다르게 공격대상 IP를 근원지 IP로 위조하여 전송하기 때문에 역추적하기가 쉽지 않다.

 

- DRDoS 공격 종류

· DNS Reflection Attack (UDP)

공격자가 피해자의 IP로 위장(spoofing)하여 네임서버에 비정상 DNS 질의를 요청하고, 요청을 받은 네임서버는 DNS 응답값을 위장한 IP로 전송하여 공격대상의 회선 대역폭을 고갈시키는 공격이다.

공격 트래픽양을 높이기 위하여 단순 DNS Query가 아닌 Zone의 모든 정보를 요청하는 ANY Type 레코드를 요청하는 특징이 있다.

DNS 증폭 DRDoS의 반사서버로 DNS 서버가 악용되지 않도록 하기 위해서는 아래 사항을 점검한다.

① 공개용이 아닌 내부 사용자용 DNS 서버라면 서버 설정을 통해 내부 사용자 주소만 Recursive query가 가능하도록 제한한다.

② 서버 방화벽 또는 네트워크 보안 장비를 통해서 특정 byte 이상의 DNS 질의에 대한 응답을 차단하거나 동일 IP에 대해 단위 초당 요청 개수 제한을 설정한다.

 

· NTP Reflection Attack (UDP)

시간동기화를 위해 사용되는 NTP(Network Time Protocol) 서버를 반사서버로 악용한 공격이다.

스푸핑된 IP로 NTP 서버에게 가능한 많은 응답 패킷을 만들어 내기 위해 monlist(최근 접속한 최대 600개의 접속 호스트에 대한 정보를 응답 받을 수 있는 명령어. v2.4.7 이상 부턴 삭제)를 요청하는 비정상적인 패킷을 보내서 되돌아오는 응답값을 공격 payload로 활용하는 공격유형이다.

 

· CLDAP Reflection Attack (UDP)

CLDAP란 네트워크상에서 디렉터리를 연결/검색/수정하기 위해 사용되는 프로토콜이다.

CLDAP Reflection Attack은 CLDAP를 반사서버로 악용한 공격으로서 피해자의 IP로 스푸핑된 IP를 통해 CLDAP 서버에게 비정상적인 Query를 보낸 후 되돌아오는 응답값을 공격패킷으로 활용하는 공격유형이다.

UDP 프로토콜을 사용하며 389번 포트를 출발지 포트로 사용한다.

 

· SSDP Reflection Attack

SSDP(Simple Service Discovery Protocol)는 UPnP(Universal Plug and Play) 장치를 탐색할 때 주로 사용되는 프로토콜로서 네트워크상의 다른 장치를 찾거나 알리는 역할을 수행한다. IoT 기기들에 널리 사용되고 있다.

SSDP Reflection Attack은 이러한 SSDP의 기능을 악용하여 가능한 많은 데이터를 요청하는 search 명령을 보내서 스푸핑된 피해자의 서버 IP로 대규모 응답이 가게 만드는 공격기법이다.

 

· Memcached Reflection Attack

Memcached 서비스는 내부에서 DB 부하감소 및 응답속도 증가를 위해 분산된 메모리에 데이터를 캐싱하는 서비스다. 내부에서만 접근하여 사용하도록 설계되었으며 Key 값으로 Data를 매핑하는 구조이다.

Memcached Reflection Attack은 이러한 Memcached 서버의 기능을 악용하여 저장된 캐싱 데이터를 가능한 많이 요청하는 request 명령을 요청하고 스푸핑된 피해자의 IP로 대규모 응답이 가게 만드는 공격기법이다.

 

· CoAP Reflection Attack

Constrained Application Protocol이란 IoT 기기들을 위해 사용되는 프로토콜의 일종으로서 주로 저전력 컴퓨터들을 위해 만들어진 간단한 UDP 프로토콜이다.

CoAP Reflection Attack은 피해자 IP로 스푸핑한 출발지 IP에서 외부 노출된 IoT 기기 및 모바일 장치들을 대상으로 변조된 GET Request를 보내고 돌아오는 응답 Packet을 피해자 시스템으로 보내서 피해시스템의 회선 대역폭을 고갈시키는 공격기법이다.

 

· SNMP Reflection Attack

SNMP agent에 MIB와 같은 정보를 대량 요청(GetBulkRequset)하여 공격대상자에게 대량 트래픽을 유발시킨다.

 

· CHARGEN reflection Attack

CHARGEN 서버에 접속 시 대량의 문자열을 전송하여 대량의 트래픽을 유발시킨다.

 

2) 자원 소진 공격 

· SYN Flooding

TCP Protocol의 3-way handshake를 악용한 공격기법으로 SYN Flag만 지속적으로 전달하고 돌아오는 SYN/ACK 패킷에 응답을 주지 않아서 피해서버의 자원을 소모하게 만드는 공격기법이다.

bps에 비해 높은 pps를 보이는 것이 특징이며 대역폭 공격과 다르게 대규모 트래픽을 발생시키지 않아도 서비스 접속불가를 유도할 수 있다.

 

· ACK Flooding

ACK Flooding은 SYN Flooding과 유사하게 3-way handshake의 특성을 악용한다.

다량의 ACK Packet을 피해대상에게 보내서 자원을 소모하게 만드는 공격기법이다.

 

· DNS Query Flooding

DNS Query Flooding은 DNS 서버에 대량의 DNS 질의를 보내서 정상 서비스를 할 수 없게 만드는 공격이다.

 

3) 웹/DB 부하공격

· GET Flooding

공격자는 TCP Protocol의 3-way handshake를 통해 서버와 세션을 맺은 후 HTTP GET 메소드 요청을 통해 웹서버의 자원을 소진함과 동시에 DB서버까지 자원을 소진시켜서 정상적인 사용자의 웹 서비스 이용을 차단한다.

 

· Slowloris Attack

Slowloris Attack은 GET Flooding에 비해 상대적으로 규모가 작은 공격이다. HTTP GET 메소드 요청과 유사하지만 단시간 내 폭발적으로 요청하는 공격이 아니라 오랜 시간 동안 지속적으로 공격을 수행한다는 차이점이 있다.

정상적인 HTTP 패킷의 헤더는 Carrige Return & Line Feed가 두 번 나타난다. 첫 번째 개행 문자는 헤더의 종료이며 두 번째 개행 문자는 전체 헤더의 종료를 의미한다.

만일 헤더의 마지막에 개행 문자를 하나만 전송하면 웹 서버는 헤더가 모두 도착하지 않은 것으로 간주하고 연결을 유지하며 대기 상태를 유지한다. 즉, 지속적으로 서버의 자원을 잠식하는 공격이다.

 

· RUDY Attack(Slow HTTP POST DoS)

RUDY(R U Dead Yet) Attack이란 POST Method를 이용하는 대표적인 Slow 공격 유형이다.

POST 요청은 전달할 데이터의 크기를 Content-Length 헤더에 삽입하여 보내게 되는데, RUDY Attack은 이 크기를 매우 크게 설정한 후 서버로 전달할 데이터를 장시간에 걸쳐 조금씩 분할하여 전달하게 한다.

서버는 POST 데이터가 모두 수신되지 않았다고 판단하여 연결을 장시간 유지하게 된다.

 

· Slow read Attack

Slow read Attack은 TCP 통신에서 사용되는 windows size를 악용한 공격기법이다. 클라이언트마다 한 번에 처리할 수 있는 패킷의 크기가 다르기 때문에 해당 크기를 windows size 필드를 통해 전달하며, windows size를 기준으로 패킷을 주고받게 된다.

Slow read Attack은 windows size를 낮게 설정하여 서버로 전달하고, 해당 size를 기준으로 통신하면서 데이터 전송이 완료될 때까지 connection을 유지하게 만들어 서버의 connection 자원을 고갈시키는 공격이다.

 

· GET Flooding with Cache-Control(CC Attack)

일반적으로 웹서버의 부하를 감소시키기 위해 캐싱서버를 운영하여 많이 요청받는 데이터를 웹서버가 아닌 캐싱서버를 통해 응답하도록 구축한다.

하지만 공격자는 HTTP 메시지의 캐시 옵션을 조작하여 캐싱서버가 아닌 웹서버가 직접 처리하도록 유도하여 캐싱서버의 기능을 무력화하고 웹서버의 자원을 소진시킨다.

 

· Dynamic HTTP Request Flooding Attack

HTTP Get Flooding 공격이나 HTTP CC 공격은 일반적으로 지정된 웹 페이지를 지속적으로 요청하는 서비스 거부 공격이다. 그러나 이 두 가지 공격은 웹 방화벽을 통해 특징적인 HTTP 요청 패턴을 방어할 수 있다.

동적 HTTP Request Flooding은 이러한 차단 기법을 우회하기 위해 지속적으로 요청 페이지를 변경하여 웹 페이지를 요청하는 기법이다.

 

- 기타 서비스 마비 공격

· 해시도스(HashDoS) 공격

웹서버는 클라이언트로부터 전달받는 HTTP 메시지의 파라미터 관리를 위해 해시테이블을 사용한다.

조작된 매개정보를 포함한 다량의 메시지는 해시테이블 검색을 위한 인덱스로 사용되는 해시값에 충돌을 발생시켜 정확한 값을 찾기 위해 모든 해시테이블을 검사하게 되는데, 이때 웹 서버는 CPU 자원을 소진하게 되어 정상적인 서비스를 방해한다.

 

· 헐크도스(HulkDoS) 공격

HULK(Http Unbearable Load King) DoS는 웹 서버의 가용량을 모두 사용하도록 하여 정상적인 서비스가 불가능하도록 유도하는 GET Flooding 공격 유형이다.

공격대상 웹사이트 주소(URL)를 지속적으로 변경하여 DDoS 차단정책을 우회한다는 특징을 가진다.

 

· SIP Flood

Voice over IP(VoIP) 전화는 인터넷에서 이미 널리 사용되고 있는 기술이다. VoIP에서 전화연결에 많이 사용하는 프로토콜을 Session Initiation Protocol(SIP)이라고 한다. SIP Flood 공격은 하나의 INVITE request 메시지가 상당한 양의 자원을 소모하게 한다는 사실을 악용한다.

공격자는 SIP 프락시에 수많은 INVITE request를 가짜 시작주소에 넣어 보내거나 혹은 봇넷을 이용한 DDoS를 통해서 보낸다.

 

DDoS 예방대책

- DDoS 대응 서비스 가입

1Gbps 이상의 대규모 DDoS 공격을 대응하기 위한 자체 인프라 구축에는 인력과 비용 측면에서 현실적인 한계가 생긴다.

보다 효과적 대응을 위해서 ISP나 클라우드 서비스에서 제공하는 DDoS 방어서비스를 이용하는 것이 좋다.

 

- 백업 서버 구축

DDoS 공격에 의한 서버 장애를 대비하여 중요 서버들은 서로 다른 회선에 이중화 구성을 해야 한다.

서로 다른 회선을 이용해서 이중화를 구성하면 Master 서버의 회선에 DDoS 공격으로 인한 장애가 발생하더라도 다른 회선에 있는 Slave 서버가 동작하여 서비스 장애를 최소화할 수 있다.

 

- 공격 대상의 최소화

외부에 노출된 웹서비스 외 기업 내부용 서버는 외부에 노출되지 않도록 내부망으로 망 분리 조치 후 운영한다.

내부용 서버는 DDoS 공격 및 기타 사이버공격을 예방하기 위해 기업의 내부 서버 IP 및 서비스가 외부에 OPEN 되어 있는지 주기적인 스캐닝을 시행하고 Shodan 및 다크 웹 노출 여부를 확인한다.

외부에서 부득이하게 내부망으로 접속이 필요한 경우에는 DDoS 대응 및 방어 설정이 가능한 VPN 등의 별도 서비스를 이용한다.

 

DDoS 방어대책

DDoS를 대응하기 위한 방어대책으로 자체적으로 방어를 대비하는 방법과 DDoS 방어 서비스를 제공하는 업체를 이용하는 방법으로 나뉜다.

- 자체 방어 준비

충분한 회선용량과 DDoS 방어장비가 없다면 서버 가용량 이하의 소규모 공격에 한해서만 일부 방어가 가능하다.

· TCP 기반 DDoS 방어

TCP 계열의 DDoS 공격을 방어하기 위해 방화벽 및 Proxy Server와 같은 주변장치에서 TCP Keepalive 및 최대연결을 설정하여 SYN Flood 등과 같은 공격을 방어할 수 있도록 준비한다.

 

· 이상 트래픽 모니터링

평상시 발생하는 기본 트래픽(bps, pps, 동시접속수) 정보를 인지하고, 이상트래픽의 발생을 주기적으로 모니터링해야 한다.

 

· Whitelist 방식의 방화벽 설정

필요한 서비스에 대한 최소한의 정책만 open하고 모든 프로토콜과 포트를 차단(All Deny)하는 설정을 통해 기타 포트로 들어오는 공격에 대한 방어가 가능하다.

 

· 서버 분산을 통한 가용성 확보

Load Balancer를 이용하여 서버 부하를 분산함으로써 서버 장애를 최소화할 수 있다.

 

- DDoS 대응서비스를 통한 방어 준비

① 0단계 - 사전준비

DDoS 공격상황에 즉시 적용할 수 있는 방어서비스를 알아보고 적용절차 및 시간 등을 미리 파악해야 한다.

 

② 1단계 - 공격인지

모니터링 시스템을 구축하여 주기적으로 모니터링을 수행하고, 사이트의 이상정보 탐지 시 DDoS 공격에 의한 현상인지 서버 자체 원인인지 파악한다.

 

③ 2단계 - 공격 정보 파악

DDoS 공격으로 판단될 경우 해당 공격의 정보(유형, 규모, 시간 등)를 파악해야 한다.

DDoS 공격은 크게 대역폭공격, 자원소진공격, 웹/DB 부하 공격으로 나뉘며 각 특성에 맞게 공격정보를 신속히 파악하여 대응한다.

 

④ 3단계 - 방어서비스 적용

DDoS 공격에 의한 서버 장애가 확실할 경우 0단계에서 구축한 방어 서비스 적용 프로세스를 수행하여 신속하게 대응할 수 있도록 조치해야 한다. 단, DDoS 공격이 빈번하거나 중요한 서비스일 경우 공격의 발생 이전 시점부터 방어 서비스를 적용하여 운영할 수 있다.

 

⑤ 4단계 - 서비스 모니터링

DDoS 공격은 차단되었으나 이미 점유된 세션 혹은 서버 부하로 인해 서비스가 느려질 수 있다. 따라서 DDoS 공격을 차단한 이후 서비스 및 장비 모니터링을 통해 이미 유입된 공격에 의한 장비상태를 확인하여 조치하여야 한다.

 

⑥ 5단계 - 사후 조치

DDoS 공격이 종료된 후 공격을 받은 시스템을 다시 한번 점검하여 특이사항이 없는지 확인해야 한다.

 

DNS Sinkhole

악성 봇을  조종하는 조종자를 탐지하고 감염된 개인용 컴퓨터와 조종자 간의 접속을 차단해 2차 피해를 예방하기 위한 시스템이다.

DDoS 공격 차단 방법의 하나로 감염된 PC에서 특정 주소로 연결을 원할 때 실제 해당 주소로 데이터가 전송되지 않고 싱크홀 네트워크가 대신 응답하여 패킷이 외부로 전달되지 않도록 처리한다.