DDoS란 무엇이며, 어떤 종류가 있을까요?
DDoS는 Distributed Denial of Service의 약자로 분산된 서비스 거부 공격이라고 하여 인터넷에 연결된 여러 개의 단말(통상 좀비 PC)이 특정한 목적지(공개된 웹, DNS 서버 등)로 패킷을 대량으로 전송하여 해당 서버가 정상적으로 서비스되는 것을 방해하는 행위를 뜻합니다.
이 공격은 정치적인 이슈에 대한 주장을 위한 과시, 경쟁업체 방해를 통한 사익추구, 협박을 통한 금전적 이익 추구 등 다양한 목적으로 발생되는 공격행위로 인터넷의 보급이 늘어나기 시작한 1999년부터 시작되어 2010년 이후 급속히 증가하기 시작하였습니다.
그럼 DDoS 공격이 어떻게 이루어지는지 알아보시죠. 아래 <그림 1>과 같이 공격자는 사전에 확보한 악성코드에 감염된 좀비 PC를 C&C(Command & Control) 서버를 통해 관리하면서, 공격 대상이 정해지면 공격 유형을 결정하여 명령을 내립니다. 공격명령을 받은 C&C 서버는 관리하고 있는 좀비 PC에게 공격 대상 IP와 공격 시간, 공격 방식 등을 지정하여 내려 보내면, 좀비 PC가 실제 공격을 수행하게 되어 있습니다.
또한 새로운 공격 방식이 개발되면 C&C 서버에서 좀비 PC로 새로운 공격 모듈을 보내서 공격 방식을 업그레이드하고 DDoS 공격 이외에도 스팸 메일을 보내거나, 감염 PC의 정보를 탈취하는 등 다양한 종류의 공격을 수행할 수 있게 지속적으로 관리됩니다.
최근에는 일반 PC나 노트북 등의 전통적인 개인용 단말 장비뿐만 아니라 인터넷 연결이 가능한 통신 모듈이 설치되어 있는 가전제품, 센서 장비, 가정용 네트워크 공유기 등의 IoT(Internet Of Things) 장비를 해킹하여 공격을 수행하는 장비로 활용되고 있습니다.
각종 단말 장비의 보안이 강화되면서 단말을 해킹하는 난이도가 높아지게 되자 인터넷상에 공개되어 불특정 다수에게 다양한 서비스를 제공하는 공개 서버들, 예를 들면 표준시간 정보를 제공해주는 NTP 서버, 도메인 네임 질의에 응답해주는 DNS 서버, 네트워크 서비스나 정보를 찾기 위해 사용하는 SSDP 서버 등을 활용하여 공격을 수행하는 서비스 반사 증폭 공격(Reflection/Amplification Attacks)이 최신 DDoS 공격 방식으로 유행하고 있습니다.
공격을 수행하는 좀비 PC나 각종 IoT장비의 CPU 성능이 높거나, 인터넷에 연결된 회선의 대역폭이 넓을수록 공격의 강도가 증가됩니다. 최근에는 멀티코어 CPU의 보급과 100 Mbps 이상의 속도를 내는 회선에 연결된 단말이 증가하면서, 적은 수의 좀비 PC나 IoT장비로도 대용량의 DDoS 공격을 손쉽게 수행할 수 있는 환경을 갖추어지고 있습니다.
그럼 DDoS 공격에는 어떤 종류가 있을까요? 최초로 나온 공격이면서, 최근까지도 가장 많은 공격 빈도를 보이는 공격이 용량(Volume) 기반 공격입니다. 말 그대로, 대용량 트래픽을 공격 목표로 무차별적으로 다량의 패킷을 전송하는 방식으로 주로 핑(Ping: 네트워크 연결 상태 확인용도)을 이용할 때 사용하는 ICMP와 집에서 보는 IPTV에서 사용되는 멀티 케스팅에 사용되는 IGMP, 그리고 가장 빈번하게 사용되는 UDP 패킷을 이용하는 공격입니다.
이 공격은 인터넷에서 공격 대상이 연결된 인터넷 회선의 대역폭을 소모시켜 회선 사용량을 100%로 만드는 단순하고 무식한 방법이지만 효과는 확실한 공격으로 서버 자체를 공격하는 것이 아니고 서버까지 가는 길목을 막아버리는 것이 목적입니다. 대역폭 사용량이 100%가 되어 버리면, 더 이상 신규 트래픽을 수용할 수 없어서 정상 서비스가 불가능해지는 방식으로, 회선 대역폭의 증설 밖에는 답이 없지만, 회선을 증설한다고 해도 손쉽게 증설한 양만큼 공격 트래픽이 채워버리면 무용지물이 되게 만드는 공격 방식입니다.
아래 <그림 2>와 같이 다수의 좀비 단말이 다량의 패킷을 생성하여 한 곳의 공격 대상으로 동시에 전송하는 방식으로 동작하여 공격을 수행합니다.
두 번째 공격 유형은 자원 소모 공격으로 대표적인 공격은 TCP SYN Flood가 있습니다. 이 공격 유형은 회선 대역폭이 아니라 공격 대상 서버의 TCP 연결 자원을 소모시켜 더 이상 신규 연결을 못하게 차단하는 방식으로 동작합니다. 즉 길목을 막는 것이 아니라 대상 서버 자원을 소모시키는 것이 목적인 공격입니다.
아래 <그림 3>의 왼쪽 그림과 같이 TCP 연결이 되기 위해서는 3 way handshake라고 하여 연결이 필요한 단말이 대상 서버와 3단계(SYN- SYN/ACK-ACK) 통신을 통해 패킷 전송 준비를 하는 과정이 필요합니다. 공격은 <그림 3>의 오른쪽 그림과 같이 연결 단계를 악용하여 최초의 SYN만 계속 보내고 서버가 보내는 2번째 SYN/ACK에 대한 3번째 ACK를 고의적으로 보내지 않아 서버가 계속 TCP 연결을 완료하지 못하게 해서 서버가 감당할 수 있는 TCP Queue를 초과하게 만드는 공격입니다. 이렇게 큐가 Full이 되게 되면 신규 TCP 연결이 안 되기 때문에 정상적인 서비스가 불가능하게 됩니다.
다음 공격 유형은 애플리케이션 공격으로, 앞의 2가지 공격은 주로 OSI 7 계층 중 3~4 계층을 이용한 공격이라면 이 공격은 7 계층에서 이루어지는 공격입니다. 사용자들이 가장 많이 사용하는 HTTP, DNS, VoIP 등은 외부에 공개되어 서비스되어야 하기 때문에, 빈번하게 DDoS의 공격 대상이 됩니다.
아래 <그림 4>와 같이 HTTP Get/Post 요청 트래픽을 대량으로 보내 웹 서버 데몬이 처리할 수 있는 한계를 넘겨서 더 이상 새로운 웹 접속이 못하게 방해하거나 HTTPS 기반 웹 서버의 경우 SSL연결 과정을 악용하여 신규 접속을 방해하는 방식을 사용합니다. DNS Flooding 공격의 경우 서버에 과도한 질의 요청을 보내 해당 서버의 DNS 데몬을 마비시키거나 VoIP서버에 많은 양의 패킷을 보내 서버가 더 이상 음성 데이터를 처리할 수 없게 마비시키는 공격 등이 사용되고 있습니다.