나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2024-11-02 06:40:47

분산 서비스 거부 공격

디도스 공격에서 넘어옴
1. 개요2. 원리3. 공격 방법
3.1. 자동 새로고침(재접속)3.2. 좀비 PC 이용3.3. DDoS For Hire (웹 스트레서)3.4. 프로그램 이용3.5. L4 에서
3.5.1. Ping of death3.5.2. SYN Flooding3.5.3. UDP Flooding
4. 대응 방법
4.1. 임계치 기반 규칙 방어4.2. 인증 기반 대응4.3. 하이브리드 디도스 공격 대응
5. 법적 문제6. 기타7. 관련 사건8. 관련 문서

[clearfix]

1. 개요

분산 서비스 거부 공격(Distributed Denial of Service Attack)이란 여러 개의 장치를 이용하여[1] 컴퓨터 서버나 네트워크 장비를 대상으로 처리할 수 없을 정도의 과도한 트래픽을 발생시켜 정상적인 데이터 전송에 장애를 일으키는 서비스 거부 공격의 일종이다. 줄여서 디도스 공격(DDoS Attack)이라고도 부른다.[2]

데이터 전송이라는 인터넷의 가장 기본적인 원리를 사용하여 서비스 거부 공격 중에서는 가장 광범위하게 쓰이며 사이버테러에 널리 이용되는 방식이다. SQL 인젝션과 더불어 대역폭 DDoS(분산 서비스 거부 공격)은 가장 막강한 사이버 공격이라고 볼 수 있다.

2. 원리

각종 밈들로 설명한 영상.[3]

간단하게 말하면 고의로 접속량을 폭주시켜 서버를 마비시키는 것이다. 디도스 공격 방법은 다양하지만 사이트를 마비시키기 위하여 여러 클라이언트를 동원해 과도한 접속량을 주어 서버에 무리를 준다는 점은 똑같다. 비전공적으로 설명하자면 상기한 영상이나 이 만화 내용처럼 영업 방해를 목적으로 사람을 잔뜩 풀어 가게를 마비시키고 정상적인 손님이 오는 것을 막는 행위가 온라인에서 이루어지는 것이 바로 디도스 공격이다.

이러한 공격은 대상 웹 서버에 비정상적으로 많은 트래픽을 흘려보내면서 웹 서버에 과도한 트래픽 소모 및 프로세스 진행, 과도한 입출력등을 유발시키고 최종적으로 서버가 먹통이 되게 만든다. 어찌 보면 굉장히 간단하지만 의외로 확실하게 막을 방안이 없다. 그래서 디도스 공격은 사이버 범죄자들이 가장 오랜 기간 애용하는 공격 기법이다.

디도스 공격이 알려진 지 오랜 시간이 지났음에도 꾸준히 애용되는 이유는 방어가 어렵기 때문이다. 보안 이슈라면 인증 절차를 까다롭게 한다거나 암호화를 더 철저히 한다는 방법이 있지만[4] 디도스 공격은 공격 자체가 들어오면 그것을 '완화(Mitigation)'시키는 것이지 이를 대응하는 것은 힘들다. 애초에 데이터의 탈취나 위변조를 목적으로 하는 정밀한 해킹 공격이 아닌 서버 자체를 마비시키는 것이 목적이기 때문에 많은 접속량을 일일이 대응하는 것 자체가 디도스 공격자가 원하는 결말이다. 서버 자체의 접속을 까다롭게 하거나 특정 인원만을 선별해서 접속하게 하는 것도 결국 정상적인 이용자의 불편을 초래하기 때문에 원천적인 대응 방법은 되지 못한다.

대학교 수강신청, 콘서트 티케팅, 국가기술자격증 신청[5] 같은 일로 짧은 시간 안에 웹사이트 접속이 폭주해서 먹통이 되는 것도 사실 디도스 공격과 같은 원리다. 다만 이쪽은 의도적으로 서버를 마비시킬 목적으로 한 행동이 아니기 때문에 '공격'이라고 부르지 않는다. 즉, 단순히 Distributed Denial of Service 상황으로 Attack이 빠진 그냥 디도스(DDoS)이다. 어지간한 경우에는 애당초 사이트 측에서도 트래픽을 예상하기에 먹통되는 걸 막기 위해 대기열 시스템을 적용시킨다.

3. 공격 방법

3.1. 자동 새로고침(재접속)

브라우저에서 특정 웹 페이지를 열어놓고 새로고침키[6]를 계속 연타[7]하면 서버에 해당 웹 페이지 크기와 새로고침을 한 횟수를 곱한 만큼의 트래픽을 주기 때문에 DDoS 공격에 해당된다.[8][9] 물론 혼자서 해서는 여러 대의 컴퓨터라는 정의에 맞지 않기 때문에 단순 DoS 공격일 뿐이고 조직적으로 특정한 시간대를 정해 다수의 인원이 동시에 새로고침을 연속적으로 하여 트래픽을 흘려넣으면 DDoS라고 부르는 것이 가능하다.[10] 디시의 유명 프로그램 방법 시리즈가 이 방식이다. 2010년 삼일절 사이버 전쟁도 수천 명이 Low Orbit Ion Cannon이란 프로그램으로 연속적인 새로고침을 가해 서버를 다운시켜 승리했으며 새로고침을 연속해서 눌러도 비슷한 효과가 있다.

일반인들도 누구나 할 수 있는 방법이지만 원한이 있다고 DDoS를 남발하지 말자. 서버에 로그가 남기 때문에 운이 나쁘면 적발되는 순간 징역을 선고받을 수 있다. 대표적인 사건은 수능 갤러리 강제정모이며 폭력조직의 청부폭력에 사용된 사례도 있다. 기사 하지만 서버의 로그도 말그대로 새로고침키만 눌렀다는 둥 변명을 할 수 있기 때문에 저것이 법정에서 증거로 쓰이려면 "악의"를 가졌다는 증거가 있어야 하고 로그가 "아주" 비정상적이거나 다른 사람들과 모의한 증거가 있거나 범죄를 예고하는 등의 증거가 있어야 할 것이다. 판례가 나오는 대부분의 사건들의 경우 트롤링 성의 새로고침 연타 이상으로 SNS에 범죄 과정을 자랑하거나 피해자한테 먼저 협박을 하는 등으로 적극적으로 악의를 표현했거나, 다른 범죄를 잡는 과정에서 잡힌 경우들이 많다.

하지만 아래의 좀비 PC를 이용하는 방법은 필연적으로 다른 사람의 컴퓨터에 바이러스를 심고 침투해야 하니 디도스 부분은 미수에 그친다고 할지라도 걸리게 되면 100% 범죄가 된다.

요즘에는 방어 기술이 발전하기도 했고 구글이나 유튜브 같은 곳은 수천만 명의 트래픽을 받는 것을 견뎌내기 때문에 개인의 공격으로는 끄떡도 하지 않는다. 개인 홈페이지나 블로그들 조차 만만한 상대가 아닌데 네이버, 구글 같은 곳에서 호스팅을 해주기 때문에 말그대로 네이버, 구글과 싸우는 꼴이 되기 때문이다.

휴대폰 인터넷처럼 용량에 따라 데이터 요금이 부과되는 구조일 경우 DDOS를 시전하다가는 말그대로 요금 폭탄을 맞아 자폭하게 되는 꼴이니 종량제로 인터넷 사용료만 받는 식이라면 이런 식의 DDOS 공격은 예전부터 사라졌을 것이다. 물론 호스팅을 이용하는 경우 반대로 서버를 운영하는 쪽이 요금 폭탄까지 맞을 수 있는 위험성이 있지만, DDOS의 악의가 발견되면 호스팅한 사람 책임이 아니기 때문에 요금을 받을 수 없다.

사실 개인 블로그 같은 것들보다 학교나 정부 기관 홈페이지들이 더 취약한 편으로, 이런 데서는 행정을 처리하는 데 원리 원칙을 지켜야 하므로 조직 재량으로 외부 호스팅이나 클라우드 서비스를 이용하지 못하고 직접 영세하게 서버를 구축하는 경우가 많기 때문이다. 대학교 수강신청 기간에 서버가 폭발하는 이유도 이와 같다.

3.2. 좀비 PC 이용

불특정 다수의 PC에 악성코드를 심어 유사시에 공격이 가능한 좀비 PC로 만든 뒤 공격에 동원하기도 한다. 악성코드에 감염된 수많은 좀비 PC가 공격자의 명령에 따라 일제히 서버에 대량의 트래픽을 전송하는 방식으로 이루어지며, 서버가 허용하는 트래픽 용량을 넘어서게 되면 정상적인 클라이언트가 서버로 접속할 수 없게 된다.[11] 근래 들어 수많은 컴퓨터가 좀비 PC가 되었다가 맛이 가는 사례가 뉴스에 종종 보도되니 주의하자. 다만 좀비 PC가 맛이 가는 경우는 DDoS 공격 자체의 특성이 아니고 좀비 PC를 조종하는 공격자가 파괴 명령을 내린 것이다.[12] 그렇지 않다면 좀비 PC측의 피해는 컴퓨터가 느려지는 정도.[13] 그 외에 좀비 PC에서 개인정보를 꺼내가기도 한다.[14]

좀비 PC 감염을 막으려면 당연히 OS 및 백신 프로그램을 항상 최신 버전으로 유지해야 하며, 앞서 이야기했듯 좀비 PC가 되면 개인정보가 유출될 수 있으니 PC에 불법복제 게임 등을 설치해 보안이 취약한 경우 중요한 개인정보를 저장하지 말자.

악성코드를 PC가 아닌 웹 사이트에 심는 방법도 있다. 가령 A라는 웹 사이트를 공격하고자 할 때, 접속량이 많은 B사이트를 해킹하여 B사이트에 접속 시 A사이트를 공격하도록 하는 스크립트를 삽입한다. 코드 삽입에 성공했다면 그 순간부터 B사이트에 접속하는 사람은 자신도 모르게 A사이트를 공격하는 것이다. 이 방식은 탐지하기 힘들다. 해킹당한 제 3의 사이트는 자신의 사이트에 아무런 영향이 없기에 해킹당했다는 것을 알지 못해 해킹에 대응하지 않고 공격을 하는 접속자는 자신의 컴퓨터가 감염된 것이 아니기에 디도스에 악용되고 있다는 상황을 인지하지 못한다. 보안 부분에서 제3의 빈 공간이 생겨서 허점이 만들어지는 것이다. 안랩기사 안랩 기술적 설명(악성 스크립트 부분)

이 방법이 2011년 하반기 재보궐선거/선관위 공격 사건 때 쓰였다. 러시아에서도 사례가 있는 걸 봐서는 정치적 이용이 우려되는 상황.

3.3. DDoS For Hire (웹 스트레서)

일정 금액을 지불하고 봇넷 혹은 대용량 대역폭 서버를 가진 업체의 DDoS-For-Hire 서비스를 이용하기도 한다.

일반인이 접근할 수 있을정도로 간단한 웹 UI, UX를 갖고 있는 경우가 많아, 이 분야의 전문가가 아니더라도 강력한 공격을 수행할 수 있도록 돕는다. 대개 Layer 4 에서 5~80 Gbit/s 의 공격을 지원하며, 일반적인 상황에서는 상상할 수 없을 정도로 큰 대역폭이다.

이 서비스는 적게는 월 $5에서부터, 많게는 $1000 이상까지 가격이 형성되어있고, 낮은 가격으로도 큰 공격을 수행할 수 있다.
이 서비스를 제공하는것은 물론, 사용하는 것까지 모두 불법이다.

2018년 대형 웹 스트레서 제공자 일당이 체포된 바 있으며, 사용자들 역시 추적중이라고 한다. 관련 기사

3.4. 프로그램 이용

가장 쉽게 할 수 있는 방식이다.
대표적으로 LOIC(Low Orbit Ion Cannon), HOIC(High Orbit Ion Cannon)[15]등이 인터넷 상 구석구석에 많이 퍼져있으며 다양한 변형버전 또한 함께 퍼져있다.

그외에도 리눅스에서 사용할 수 있는 torshammer, slowhttptest(RUDY - aRe yoU Dead Yet? "아직 안 죽었냐?" 공격), xerosploit, hping3 등의 툴이 있다.[16]

3.5. L4 에서

3.5.1. Ping of death

'죽음의 핑', 혹은 '죽음의 핑 공격'으로도 불린다.
우리가 익히 알고 있는 명령 프롬프트에서의 '( "ping [IP.IP.IP.IP]" )'의 패킷 크기를 정상 크기보다 매우 큰 수치로 부풀려 공격하는 것[17], 만들어진 패킷은 라우팅되어 공격 대상지에 도달하는 동안 파편화(fragment)되고, 공격 대상은 파편화된 패킷을 모두 처리해야 하여 리소스 사용량이 급증하여 정상적 이용이 불가능해진다.

3.5.2. SYN Flooding

3-Way Handshaking 과정에서 처음 단계인 SYN 전송 단계에서 대량의 SYN패킷을 서버로 전달하고, 서버는 TCP/SYN-ACK 응답을 다시 보내야 하는데, 도착 지점이 없기에 응답이 수립되지 않게 된다. 이러한 과정 중 서버는 대기를 하게 되고, 연결 요청을 수용하는 서버의 대기열이 가득 차게 되어 다른 연결 요청을 무시하게 된다.

3.5.3. UDP Flooding

단순하게 UDP 패킷을 쏟아 붓는 방식으로 회선 대역폭을 모두 점유하여 대상 호스트를 마비시킨다. 분산 반사 서비스 거부 공격은 대부분 UDP Flooding에 속한다.[18]

4. 대응 방법

모든 디도스 공격을 100% 방어하는 것은 불가능에 가깝다. 영어로도 디도스 공격 대응을 표현할 때 방어가 아닌 완화(Mitigation)라는 단어를 주로 사용한다.

4.1. 임계치 기반 규칙 방어

모든 디도스 대응 솔루션은 임계치 기반 규칙을 포함하고 있다. 임계치 기반 규칙은 패킷의 구성 요소를 일일이 셈하여, 기준치 이상의 트래픽이 발생할 경우 디도스 공격으로 탐지해 대응하는 기법이다.

임계치 기반 규칙은 크게 ‘도스(DoS)’와 ‘디도스(DDoS)’ 규칙으로 구분한다. 도스의 경우 단일 출발지 IP를 기준으로 패킷의 양을 측정하며, 단일 IP에서 트래픽이 많이 들어오는 관계로 즉각 차단하더라도 문제가 적어 차단·격리 방법으로 주로 대응한다. 반면 디도스는 다수의 출발지 IP 기준, 보호 대상에 인입되는 트래픽의 양을 측정한다. 단 디도스의 경우 특정 이벤트에 따라 트래픽이 많아지는 경우가 있어 단순히 차단을 할 경우 수많은 정상 사용자를 차단할 위험이 있다. 그러므로 인증을 통한 추가 검증 또는 QoS(Quality of Service)를 수행한다.

임계치 규칙의 경우 일상적인 대용량 공격 대응에 적합하지만, 저용량 정밀 타격 또는 비정상 프로토콜 공격에는 대응이 어렵다.

4.2. 인증 기반 대응

모든 디도스 솔루션이 임계치 기반 대응 역량을 제공하며, 고객도 해당 기능을 무리 없이 사용하는 편이다. 하지만, 실질적으로 발생하는 디도스 공격의 피해 사례는 임계치 기반 규칙을 우회하는 공격이다. 실제 2020년 국내 금융권에서 해당 공격으로 인한 서비스 장애 현상이 많이 발생하였으며, 이러한 공격은 인증 기능으로 대응해야 한다.

인증 기반 대응은 주로 봇(Bot) 기반의 자동화된 공격을 방어한다. 즉 저용량 공격이더라도 봇을 활용할 경우 해당 인증 기법으로 대응할 수 있다. 대부분의 디도스 공격은 사람이 직접 수행할 수 없다. 99% 이상이 자동화 소프트웨어(봇)을 활용하며, 이러한 공격은 인증을 통해 대응이 가능하다.

여기서 ‘인증’은 TCP와 HTTP 프로토콜의 특성을 활용한 기법이다. 이러한 기법은 한국인터넷진흥원(KISA)이 발간한 ‘DDoS 공격 대응 가이드 - 2012. 10’에도 명시되어 있는 보편적인 디도스 대응 기법으로, 타사 디도스 솔루션 역시 부분적으로 인증 기능을 제공한다.

TCP 인증의 경우 최초 클라이언트(Client)의 SYN 패킷에 일종의 쿠키(COOKIE)를 추가한 SYN/ACK 응답을 생성하여, 쿠키가 포함된 ACK가 전송되는지 확인하는 방법이며, RST을 활용한 방법도 있다. HTTP 인증의 경우 HTTP 302 응답코드를 활용해, 정상적인 리다이렉트(REDIRECT)가 진행되는지 확인하는 방법이다.

위와 같은 방식으로 클라이언트가 정상 사용자인지, 디도스 공격을 수행하는 봇인지 탐지해 대응한다. 이러한 인증 기능을 수행할 경우 봇 기반의 디도스 공격에 효과적으로 대응할 수 있다.

또한, HTTP 디도스 공격의 일종인 Bruteforce(비밀번호 무차별 대입) 공격 역시 인증 기능을 통해 방어할 수 있다. 아래는 실제 비밀번호가 password인 경우 인증 기능 활성화 여부에 따른 서버의 응답 길이를 보여준다. 인증 기능을 활성화한 경우, 봇을 인지하여 일정한 길이(203)의 응답을 제공함을 알 수 있다.

TCP/HTTP 인증 기능을 통해 봇 기반 ‘저용량 정밀 타격’과 ‘비정상 프로토콜’ 공격을 방어할 수 있으며 기타 봇 기반의 공격을 방어한다.

만약 100Gbps ~ 1Tbps 이상의 초대용량 공격이 들어오면, 임계치 기반 규칙 또는 인증 기능으로 방어할 수 없다.

4.3. 하이브리드 디도스 공격 대응

2018년, 소스코드 저장소로 유명한 깃허브(Github)를 대상으로 1Tbps 이상의 디도스 공격이 발생했다. 일반적인 기업의 경우, 사용 중인 회선의 대역폭(1G, 10G) 이상의 디도스 공격이 발생할 경우 대응할 수 있는 방법이 마땅치 않다.

하지만, 반드시 유지되어야 하는 서비스에 대해서는 초대용량 디도스 공격을 방어할 수 있는 방법이 필요하다. 우리나라 금융권의 경우 금융보안원이 제공하는 서비스형 보안(SECurity-as-a-Service) 형태의 디도스 공격 대응 서비스 ‘스크러빙센터’의 보호를 받을 수 있다. 해당 대응 체계는 ▲1차 방어 – 스크러빙센터 ▲2차 방어 – 금융보안원 비상대응센터 ▲3차 방어 – 금융회사 자체 디도스 대응으로 구성되어 있다.

국내 보안회사는 초대용량 디도스 공격 방어를 위한 스크러빙센터를 제공하고 있지 않다. 2018년 이후 디도스 공격의 최대 규모가 점차 감소하고 있으며, 실질적으로 국내 일반 기업이 초대용량 디도스 공격에 노출될 가능성이 굉장히 낮기 때문이다. 실제 스크러빙센터를 이용할 경우 높은 수준의 비용이 청구되는 관계로, 실제 사용 고객은 극히 적은 편이다. 즉, 스크러빙센터는 혹시 모를 초대용량 디도스 공격 방어를 위한 비상 대응 방안으로 고려 가능하다.

5. 법적 문제

파일:상세 내용 아이콘.svg   자세한 내용은 사이버테러 문서
번 문단을
부분을
참고하십시오.

6. 기타

7. 관련 사건


===# 구체적인 사례 #===

8. 관련 문서



[1] 단일 장치를 이용하면 분산이라는 조건이 충족되지 않기 때문에 여러 대의 장치를 이용하여야 한다. 다만 하나의 장치로는 서비스 거부 공격을 하기 힘들기 때문에 여러 대의 장치를 이용하여 디도스를 치는 것.[2] 공격이 아닌 디도스, 곧 '분산 서비스 거부' 현상 자체는 일반적인 오류 상황을 포함하는 개념으로, 많은 이용자가 몰리면 의도치 않게 발생하기도 한다. 흔히 볼 수 있는 게 대학교 수강 신청과 아이돌의 콘서트 티겟팅이다.[3] 공격자가 AMOGUS 밈 프로그램(bot)을 여러 클라이언트에 퍼트린 뒤 이들로 한꺼번에 서버를 공격하자 서버가 밈을 견디지 못하고 터져 서버를 쓰던 사용자들이 빡치는 내용이다.[4] 물론 해킹과 보안의 창과 방패의 싸움에서 시간이 지나면 결국 모든 보안은 뚫린다곤 하지만 새로운 체계를 끊임없이 세워 그 시간을 계속 이어가는 것이 보안 시스템이 가지는 목적이다.[5] 이쪽은 예비 서버가 많은지 다운은 안되지만 대기 시간이 엄청 길게 잡힌다.[6] 웹 브라우저에선 주로 F5 키를 이용해서 새로고침을 할수 있다.[7] 길게 누르는 것이 가능할 경우 길게 누른다.[8] 참고로 나무위키에서는 DDoS 공격을 감지한다. 새로고침을 계속 하고 있으면 비정상적인 트래픽 감지라는 접속 차단 페이지가 뜬다. 파일:비정상적인 트래픽 감지.png[9] 네이버에서도 동일한 형식의 접속 차단 페이지가 뜬다. 파일:네이버 검색서비스 이용 제한.png[10] 후술할 좀비 PC가 바로 이 짓을 자동으로 수행하는 악성코드를 심어서 만들어진다. 사람이 하냐, 프로그램이 하냐의 차이.[11] 개인 컴퓨터 레벨에서 이런 DDoS 공격을 받게 되면 간혹 블루스크린이 뜰 가능성은 있으나 이것은 소프트웨어적인 문제인거지 기계적으로 뭔가 이상이 있는 것은 아니다.[12] 주로 흔적을 지우기 위해 파괴 명령을 내린다.[13] 좀비 PC는 악성코드가 치료되지 않는 한 계속해서 재사용될 수 있기 때문에 일회용이 아닌 한 대부분의 경우 파괴되는 일은 많지 않다.[14] 대개 공동인증서가 취약하다. 주변을 둘러보면 이런 일이 의외로 흔하다. 공동인증서는 주민번호와 마찬가지로 매우 중요한 개인정보이므로 주의하자.[15] LOIC의 업그레이드 버전이다.[16] 재미로 쓰다가는 소규모 웹사이트는 진짜로 가버려서 어마어마한 처벌을 받을 수도 있다.[17] ping을 한번 보낼 때마다 최대 65536 바이트 (≒ 65 킬로바이트)까지 보낼수가 있는데 최대 크기로 여러 번 보내버리는 방식이다.[18] 다만 middlebox amplification 같은 TCP 기반 공격 방식도 존재하는데, 이 공격은 증폭비가 650만배까지 올라가는 반사체도 존재하였다.[19] 일단 공식적으로 밝힌 이유도 '과도한 데이터 스크래핑' 때문이니 일종의 디도스 상황으로 볼 수 있다. 이외에 비공식적으로 추정되는 원인중 하나는 버그로 인한 셀프 디도스 공격으로 추정된다(...)[20] 자세히 설명하자면 당시 SQL 서버들의 취약점을 악용한 슬래머웜이 침투하여 혜화 전화국 DNS 서버에 DDoS 공격을 하여 발생 한 것이다. 결국, 이 대란이 수습된 이후, KT 에서는 주요 관문국 시설을 서울 시내 6개 전화국사 들에다가 분산시켜 놓는 조치를 취했다.[21] 일부는 중국홍객연맹의 일원으로 알려져 있다.[22] 당시 DDoS 공격의 평균 규모는 약 2 Gbps 남짓이였기 때문에 아래에 서술된 내용에 비하면야 하찮긴 하지만 큰 공격인건 맞다.[23] 2시간 30분 짜리 HD 유튜브 동영상 20개가 1초당 한번씩 보내지는 것이라고 생각하면 상상하기 쉽다.[24] 다만 위의 DDoS 공격 주장은 자신이 IDC 직원이라 주장하는 거짓이라 주장하고 있다.[25] 공격받기 하루 전으로 복구한것으로 보임.[26] 임시서버를 이용한 복구 이후에도 공격을 당했다고 한다.[27] 파일:디도스.jpg[28] 이때가 딱스터콜의 기점이다.[29] 해당 아이디는 안나 니시키노미야를 따서 지었고 미라이란 이름은 미래일기에서 따왔다고 한다.[30] 사실 이건 이미 2004년에 Wifatch라는 웜이 보여주긴 했다. 단지 그 웜이 돌아다니는 원리가 악용 될 가능성이 너무나도 높을 뿐이다.