Denial-of-Service Attacks (DoS)
서비스 거부 공격
“A denial of service (DoS) is an action that prevents or impairs
the authorized use of networks, systems, or applications by exhausting resources
such as central processing units (CPU), memory, bandwidth, and disk space.”
- Computer Security Incident Handling Guide (URL)
- 시스템의 Critical Resource를 소진시켜
서비스의 정상적 제공을 방해 및 봉쇄하여 서비스의 Availability(가용성)를 훼손하는 공격이다.
- 예를 들어, 웹 서버에 가짜 요청 메시지를 다량으로 전송하여 정상 사용자의 요청을 처리하지 못하게 하는 것이
대표적인 DoS 공격에 속한다.
- DoS 공격의 대상이 될 수 있는 Resource의 종류는 아래와 같다.
- Network Bandwidth
- 공격자가 발생시킨 악의적인 Traffic이 정상적인 Traffic을 밀어냄으로써
정상적인 사용자가 서버에 접근하지 못하게 한다. - System Resources
- 특별한 패킷을 보내서 공격 대상이 되는 시스템의 가용 자원을 제한시킨다. - Application Resources
- 소프트웨어의 버그를 악용하여 소프트웨어가 중단되도록 하는 Poison Packet을 보낸다.
Dos Attack Cases (DoS 공격 사례)
Case: YouTube Service Down (2008) (URL)
- 파키스탄 정부가 유튜브 검열을 위해 파키스탄의 ISP들에 지시한 검열사항을
이행하던 한 파키스탄 ISP에 의한 잘못된 Router 설정으로
전 세계 유튜브 접속이 수 시간동안 차단되었다.
Case: Internet Hijacking by China Telecom (2010) (URL)
- 중국 China Telecom의 AS23724에서는 보통 40개의 Prefix들을 Originate했는데,
15분가량 약 37,000개 가량의 Prefix를 Originate한 것이 감지된 사건이다.
(이는 대표적인 Prefix Hijacking의 사례에 속한다.)
- Hijacking한 주소의 대부분은 중국 내 인기 도메인들이었지만,
이 외에도 세계적으로 유명한 도메인들이 속했다.
Case: Communication Hijacking from Canadian to Korean Government Website by China Telecom (2016) (URL)
- 2016년에 6개월 동안 캐나다에서 한국 정부 웹사이트로 향하는 트래픽이
중국의 China Telecom을 거쳐 Routing되고 있음이 발견되었다.
Case: Google Service Down (2018)
- BGP 유출로 인해 구글로 향하는 전세계 트래픽의 15% 가량이
러시아의 Trans Telecom, 중국의 China Telecom, 나이지리아의 Main One으로 Redirect되면서
74분가량 구글 서비스(G Suite, Google Cloud, Google Analytics)를 이용할 수 없게 되었다.
- 이 사건의 주요 원인으로
나이지리아 Main One에서 Google BGP Prefix를 주변 AS로 Broadcasting하여
주변 AS들이 일제히 나이지리아의 Google BGP Prefix로 Redirect하여 트래픽이 몰리게 되었다는 분석이 있다.
- 또한, 중국의 China Telecom이 북미 네트워크의 PoPs(인터넷 접속 포인트) 10곳을 소유하면서
트래픽이 중국을 지나가도록하는 BGP Hijacking을 했다는 분석도 있다. (URL)
* Google BGP Prefix
- Google 서버에 직접적으로 빠르게 접근할 수 있게하는 네트워크 경로로,
네트워크 환경이 미흡한 국가의 편의를 위해 구글이 제공하는 경우가 있다.
* BGP (Border Gateway Protocol) (URL)
Types of DoS (DoS 공격 유형)
- DoS 공격의 대표적 유형들은 아래와 같다.
- Classic Flooding Attack
- Source Address Spoofing
- SYN Spoofing (SYN Flooding) (Packet Amplification)
- SYN Reflection (Packet Amplification)
- UDP Flooding
- ICMP Flooding
- DDoS Attack
Classic Flooding Attack (전통적 플러딩 공격)
- Capacity가 큰 공격자의 네트워크가 비교적 Capacity가 작은 공격 대상 네트워크에
ICMP echo Request(ping Command)를 Flooding(무수히 많이 보냄)하는 공격이다.
- 무수히 많은 ping Command를 받은 공격 대상 네트워크는 공격 기간동안 받은 다른 정상적 트래픽을 Discard한다.
- 공격 대상 네트워크는 ICMP echo Request에 대해 ICMP echo Response로 응답하기 때문에
공격자의 네트워크도 무수히 많은 Packet을 되돌려받게 되지만,
공격자의 네트워크는 Capacity가 여유롭기 때문에 이 Reflection을 견딜 수 있다.
- ICMP echo Request Packet에는 Source Address가 명시되어 있기 때문에, 공격자의 주소가 노출된다.
(그래서, 이후에 고안된 DoS 공격들은 공격자의 주소를 조작하는 방식을 택하게 되었다.)
Source Address Spoofing (시작 주소 스푸핑)
- Raw Socket Interface를 통해 공격자가 대량 전송할 Packet의 Source Address를 조작하여 전송하는 공격이다.
(본래 Raw Socket Interface는 네트워크를 테스트하거나, 네트워크 프로토콜을 연구하기 위해 개발된 인터페이스인데,
공격자들은 이를 악용한 것이다.)
- 공격자에 의해 Source Address가 무작위로 조작된 다량의 ICMP echo Request Packet들이
공격 대상 네트워크에 도착하고, 공격 대상 네트워크는 이들에 대한 ICMP echo Response Packet들을
조작된 주소로 전송한다.
- 조작된 주소들 중에는 실제 시스템의 주소인 경우도 있는데,
이들은 예상하지 못한 ICMP echo Response Packet(Backscatter Traffic)을 받았으므로
이에대한 에러 메시지를 다시 공격 대상 네트워크에 전송한다.
- 조작된 주소들 중 실제로 존재하지 않는 주소들에 대해서는
ICMP Destination Unreachable Packet을 수신하게 된다.
(즉, 추가적인 공격을 몇 차례 더 받게되는 셈이다.)
SYN Spoofing (SYN 스푸핑) \(\approx\) SYN Flooding (SYN 플러딩)
- TCP의 3-Way Handshake에서
SYN 패킷을 수신하면,
SYN-ACK로 응답하고 이에대한 ACK를 일정 시간동안 대기하는 점을 악용한 공격이다.
- 공격자는 공격 대상에게 Source Address가 조작된 다량의 SYN Packet을 전송한다.
- 공격 대상은 다량의 SYN에 대해 SYN-ACK로 응답해야 하는데,
이때, 실제로 존재하는 어떤 시스템에 SYN-ACK를 보내게 되면
RST로 응답받아 해당 ACK를 대기하지 않겠지만,
존재하지 않는 시스템에 SYN-ACK를 보내게 되면
RST를 받지 못해 TCP Timeout이 발생할 때 까지 해당 ACK를 기다려야 한다.
- ACK를 대기하는 동안 해당 정보를 TCP Connection Table(Backlog Queue)에 저장하고 있어야 하는데,
이런 허위 정보를 다량으로 저장하고 있는 탓에,
정상적인 통신 정보가 저장될 공간이 없이 통신이 거절되는 상황이 발생된다.
(즉, 정상적인 사용자들에 대한 Availability가 저해된다.)
- Flooding 공격과 달리, 공격자가 대용량의 네트워크 트래픽을 발생시키지 않고도 공격을 감행할 수 있다.
※ SYN Spoofing은 SYN Packet으로 공격하는데 초점이 맞춰진 용어이고,
SYN Flooding은 공격에 이용할 SYN Packet을 대량생산하는데 초점이 맞춰진 용어이다.
※ SYN Cookies Technique으로 대응한다.
- 이에 대한 설명은 본 포스트 하단에 있다.
SYN Reflection
- 공격자가 공격 대상의 주소를 Source Address로 한 SYN Packet을 Broadcasting하여
공격 대상이 다량의 SYN-ACK Packet을 수신하게 하는 공격이다.
DDoS Attack (Distributed Denial-of-Service Attack)
- 공격자가 다수의 선량한 시스템을 감염시켜 다수의 Zombie와 공격자로 구성된 Botnet을 구성하고,
Zombie들에게 명령을 내려 공격 대상에 수많은 Packet을 전송하는 공격방식이다.
- TFN(Tribe Flood Network)은 최초의 DDoS Tool로,
Sun Solaris System의 취약점을 악용하여 공격에 이용하다가
이후 개발된 TFN2K(Tribe Flood Network 2000)는 Unix, Solaris, Windows NT에서 사용되었다.
- IRC(Internet Relay Chat)는 초기에 개발된 인스턴트 메시징 프로그램으로,
오픈 소스로 구현되어 있어 공격자들이 많은 수의 Agent를 확보(감염)하기 위해 악용했다.
- 주로, Password의 취약점으로 인해 감염되는 경우가 많다.
Countermeasure of DoS Attacks (Dos 공격에 대한 대응책)
SYN Cookies Technique (Resist SYN Flooding)
- TCP 3-Way Handshake 과정에서 연결 정보를 TCP Connection Table에 저장하지 않고,
SYN-ACK Packet에 연결 정보를 암호화하여 전송하고,
클라이언트가 이 연결 정보를 ACK에 다시 첨부하고 암호화하여 전송하는 방식이다.
(SYN, ACK와 연결 정보를 함께 담고 있는 Packet을 'Cookie'라 지칭한다.)
- 즉, 서버가 연결 정보를 따로 저장해두지 않아 서버의 리소스를 소모하지 않아도 되고,
서버 입장에서 통신하고자 하는 클라이언트에 대한 인증까지 수행할 수 있게 된다.
- Cookie를 구성하는데 CPU Operation이 필요하다.
Reference: Information Security: Principles and Practice 2nd Edition
(Mark Stamp 저, Pearson, 2011)
Reference: Computer Security: Principles and Practice 3rd Edition
(William Stallings, Lawrie Brown, Pearson, 2014)
Reference: BGP 유출로 인한 구글 서비스 다운 발생; 러시아, 중국, 나이지리아를 통해 트래픽 하이잭,
ESTsecurity, 2018.11.14, URL, 2022.05.05 검색
Reference: 2022학년도 1학기 홍익대학교 네트워크 보안 강의, 이윤규 교수님