누구나 한번은 들어봤을 디도스, 어디에 쓰는 기술일까

새로고침(F5) 테러가 만들어낸 해커들의 ‘최애’ 사이버 공격법

2019-11-06     최형주 기자

[CCTV뉴스=최형주 기자] 현재 사이버 공격 중 가장 많이, 쉽게 사용되는 방법 중 하나는 바로 ‘서비스 거부 공격(Denial-of-service attack, 이하 DoS)이다. DoS는 대상 시스템의 자원을 부족하게 만들어 본래의 목적대로 시스템을 사용할 수 없게 만든다. 

간혹 ‘남은 보험금 찾기’ 등의 키워드가 포털 사이트에 올라오면, 해당 서비스를 제공하는 사이트는 많은 접속자가 몰리고 느려져 쉽게 접속하기 어렵다. 이렇게 컴퓨터의 자원이 부족해 서비스가 느려지거나 중단되는 상황을 만드는 공격이 바로 DoS다.

 

자연스럽게 탄생한 ‘서비스 거부 공격’

DoS는 사실 사이버 공격을 위해 해커가 고안해 낸 공격 방식이 아니다. 지금과 달리 인터넷 환경이 열악했던 1990년대엔 특정 사이트에 사람들이 몰릴 경우 서비스가 거부됐다.

그래서 초기 DoS는 ‘인터넷 시위(혹은 테러)’의 한 방법으로도 사용됐다. 당시 네티즌들은 일본 친화적인 사이트 등에 시간을 지정해 모두 함께 접속 시도를 하고 F5(새로고침)키를 누르는 방식으로 사이트 자원을 고갈시켜 해당 서비스를 마비시키기도 했다.

 

 

DoS 공격의 가장 큰 장점은 공격 대상의 회선, 장비, 서버 중 한 가지만 무력화시켜도 서비스가 불가능해진다는 점이다. 따라서 인터넷 서비스가 매출로 직결되는 사업자들은 DoS 공격을 받을 경우 해커에 돈을 지불하고 해결하기도 했었기 때문에, 취약점을 이용한 공격을 구성하지 않아도 되는 DoS 공격은 해커가 가장 쉽게 돈을 벌 수 있는 수단 중 하나였다.

DoS 공격이 진화를 시작한 것은 2000년 초 전 세계에 고속 인터넷이 상용화되기 시작한 시기, 그러니까 김영삼 정부와 김대중 정부가 각각 초고속 인터넷 통신망 구축 계획을 본격 추진했던 시절부터다. 1999년 국내에는 ‘ADSL’ 기술이 등장해 전국에 도입되기 시작했고, 2002년엔 초고속 인터넷 서비스 가입자만 1천만 명을 넘었다. 

 

이때부터 한국은 인터넷 강국이라 불리며 초고속 인터넷망이 발달하기 시작했고, 인터넷 사이트들의 트래픽 처리능력이 발전하며 DoS 공격만으로는 특정 사이트를 마비시키는 것이 어려워졌다. 그리고 이 시기에 탄생한 것이 바로 분산 DoS공격, 그러니까 우리가 익히 알고있는 ‘디도스(Distributed-Denial-ofservice attack, 이하 DDoS)’다.

 

완성형 DoS, ‘DDoS’

공식적으로 최초의 DDoS 공격은 1999년 8월 17일 미네소타 대학 홈페이지에 대한 공격으로 알려져 있으며, DDoS 공격 메커니즘을 살펴보면 다음과 같다.

DDoS는 공격자(Hacker), 마스터(Master), 핸들러(Handler), 에이전트(Agent, 좀비 PC), 데몬(Daemon)으로 구성된다.

여기서 공격자는 해커의 PC이고, 마스터와 좀비 PC는 해커가 해킹으로 장악한 임의의 PC를 말한다. 마스터에는 핸들러라는 프로그램이 설치돼 해커의 명령을 좀비 PC로 전달하는 중간 다리 역할과 좀비 PC관리자 역할을 수행하게 된다.

 

 

마지막으로 에이전트는 흔히 말하는 좀비 PC를 지칭한다. 좀비 PC는 사용자 모르게 DDoS 공격에 사용되는 PC로, 데몬이라는 프로그램이 설치돼 마스터의 명령에 따라 최종 목표 대상을 공격한다.

DoS가 이렇게 분산공격으로 진화한 것은 앞서 언급한 바와 같이 서버의 트래픽 처리량이 늘어났기 때문이다. 해커는 공격을 성립시키기 위해 발전하는 트래픽 처리량에 맞춰 좀비 PC의 숫자를 늘릴 수 밖에 없었다. 

이전보다 해커가 해야 할 일이 조금 늘어나긴 했지만, 인터넷이 대중화되며 좀비 PC를 만드는 일이 어렵지 않게 됐다. 그렇게 DDoS공격은 오늘날에도 해커들이 애용하는 공격 방식의 하나로 남았다.

 

DDoS 공격 유형

DDoS는 기본적으로 플러딩(Flooding) 공격을 바탕으로 하며, 이는 단어 뜻 그대로 특정 전산 자원을 소진시키기 위해 악성 패킷을 넘쳐흐르게 만드는 공격이다. 

공격 유형은 공격 형태와 공격 대상에 따라 나눌 수 있고, 전산자원을 소진시키는 공격, 구성정보 혹은 상태정보를 교란하는 공격, 물리적 전산망 요소를 교란하는 공격, 통신매체를 차단하는 공격 등이 있다. 

특히 이 공격들에 악성코드 사용이 포함되면 프로세서 과부하, 오류 발생, 자원 소진 혹은 자원 효과 감소 등의 결과를 초래한다. 다양한 전산자원을 타깃으로 하는 플러딩 공격은 그 유형이 다양해, 여기서는 몇 가지만 소개해본다.

먼저 ICMP(Internet Control Message Protocol) Flood는 특정 전산망으로 전달된 패킷이 망 내의 모든 컴퓨터에 전달된다는 점을 이용한다. 해커가 보낸 대량의 IP패킷으로 인해 전산망의 대역폭이 빠르게 소진되고 정상 패킷은 목적지에 도달하지 못한다.

 

 

Ping Flood는 공격 대상에 무수히 많은 핑 패킷을 보내 해당 네트워크의 대역폭을 포화시키는 공격 방식이다. 이 경우 서비스가 느려지거나 네트워크 자체가 단절된다.

SYN Flood는 TCP가 데이터를 보낼 때 상대방과 연결돼야만 하는 ‘연결지향성’을 이용하며, 앞서 언급한 두 방식과 마찬가지로 송신자 주소를 위조한 패킷 Flood 공격을 한다. 패킷을 받은 서버는 위조된 송신자 주소로부터의 패킷을 기다리지만 위조된 주소이므로 응답은 돌아오지 않고, 이때 포트엔 위조 송신자 주소에 대한 대기 큐가 가득 차 다른 정상 송신자들의 연결요청을 무시하게 된다.

UDP Flood는 UDP의 비연결성과 비신뢰성을 이용한 공격 방법이다. 해커가 공격대상A에게 공격대상B의 IP로 위장한 대량의 UDP패킷을 전송하면 A와 B는 계속해서 서로 패킷을 주고받게 되고, 두 시스템 사이에 네트워크 과부하가 발생한다.

Cache Control(CC) 공격은 말 그대로 서버가 클라이언트에게 페이지를 제공할 때 캐싱을 요청하기 위해 사용되는 Cache Control 값을 비정상적으로 조작해 공격 대상의 URL을 호출한다. 이 공격으로 CPU와 메모리 자원을 전부 소진시켜 서비스 불능 상태로 만든다.

 

진화하는 DDoS

DDoS 공격 방식에는 DDoS, PDoS(Permanent Denial of Service), DRDoS(Distributed Reflection Denial of Service), CDoS(Concentrated Denial of Service) 등이 있다.

먼저 우리가 가장 많이 들어본 DDoS는 DoS 공격을 위한 프로그램을 여러 컴퓨터에 분산해 설치하고, 목표한 공격 대상의 데이터 패킷을 넘치게 만들어 제 기능을 다하지 못하게 만든다.

PDoS는 플래싱이라고도 불리며, 패치 등을 업데이트 할 때 그 안에 악성코드를 삽입해 대상 시스템을 손상시키거나 개인정보를 빼낸다. 이 공격은 하드웨어 원격 관리 인터페이스의 보안 취약점을 이용하며, 원격으로 장치 펌웨어를 조작해 불안정한 상태로 만든다. PDoS는 시스템 전체에 위협을 가하지는 않지만, 펌웨어에 결함이 생긴 하드웨어는 영구적으로 사용이 불가능할 수 있다.

‘TCP 분산 반사 서비스 거부 공격’을 의미하는 DRDoS는 차세대 DDoS의 진화판이라 불린다. 이 방식의 특징은 좀비 PC를 이용하지 않고, 인터넷을 통해 접속할 수 있는 정상 운영 중인 서버를 경유지로 대상을 공격한다.

공격을 위해 해커는 먼저 패킷 반사체로 쓸 대형 웹 서버 목록을 작성한다. 이어 봇넷을 이용, 공격할 대상의 IP주소를 패킷의 출발지로 위조 설정한 상태에서 반사체 서버로 TCP SYN패킷을 보낸다.

여기서 SYN이란 정보 교환 중 비트의 송신과 수신 타이밍을 맞추기 위해 사용되는데, 이 패킷을 받은 반사체 서버는 위조된 IP에서 자신에게 접속을 요청했다고 생각하고, 위조된 IP로 응답하게 되면 공격이 성공한다.

DRDoS의 가장 큰 장점은 해커가 반사체 서버를 선택할 때 보통 큰 규모의 서버를 선정하기 때문에 최종 공격 대상이 받는 트래픽이 크게 증폭된다는 점이다. 또한 해커가 반사체 서버에 패킷을 보낼 때 자신의 IP를 위조했기 때문에 해커를 추적할 수 없고, 해커가 보내는 패킷이 많지 않아 눈에 잘 띄지도 않는다.

CDoS는 상대적으로 적은 좀비PC를 사용해 공격 대상에 다수의 트래픽을 유발하는 공격 방식이다. 기존의 DDoS가 여러 대의 좀비 PC로 한 대의 서버를 공격하는 방식이었다면, CDoS는 공격 대상이 되는 서버가 한 대의 좀비 PC로 다수의 패킷을 보내게 만든다. 따라서 DDoS와 비교해 30% 정도 적은 수의 PC를 사용하며, 좀비PC간 통신을 통해 스케쥴링 프로그램을 전파해 공격을 지시한다.

특히 CDoS는 해커의 PC도 좀비PC로 사용한다. 좀비PC는 정상 공격명령 외에 가짜 공격명령을 좀비PC끼리 수시로 주고받아 공격코드를 찾기 어려워 방어도 어렵다. 게다가 좀비PC 간의 통신으로 분석해야 할 패킷의 양이 늘어나면 해커의 신원보장 및 공격코드 보호에 이점이 있다.

 

 

DDoS 공격은 1999년 Trinoo 공격 툴이 등장한 이래로 진화를 거듭해왔다. 2000년엔 플러딩 기능이 확장됐고, 2001년엔 DDoS 기능이 포함된 웜(Worm) 바이러스가 등장했다. 2002년엔 DRDoS가 출현하는 등, 공격 방식과 유형이 무궁무진하다.

그렇다면 해커들은 어떻게 DDoS 공격을 이용해왔을까? 2009년 7월 7일 전 세계를 놀라게 한 ‘7.7 DDoS’ 사태부터 한국 정부와 금융기관을 대상으로 한 ‘3.3 DDoS’ 사태, 그리고 테라급 규모 DDoS공격에 이르기 까지, DDoS 공격의 대표적 사례들을 다음 기사를 통해 들여다보기로 한다.

 

*본 기사는 SecuN 11월호에 게재된 커버스토리로, 3부로 나누어 업로드 됩니다.