DRDos
1. DRDoS
DDoS (Distributed Denial of Service) 보다 한층 발전된 서비스 거부 공격 기술로 '''DRDoS (Distributed Reflection Denial of Service Attack, 분산 반사 서비스 거부 공격)''' 라는 공격 기술이 존재한다. 이 기술의 근간은 IP Spoofing으로, Internet Protocol의 약점과 서버들의 응답성을 악용한 공격이다.[1]
DRDoS의 공격 방식은 다음과 같다. IP 헤더에 들어가는 송신자 IP 주소를 피해자의 IP로 조작하여, 정상적인 서비스를 하는 서버들에게 서비스를 요청한다.[2] 그렇게 하면 일반적으로 서버들은 패킷의 송신자 IP를 보고 그 IP로 응답을 하는데 이로 인해 서비스를 요구하지도 않은 피해자에게 이에 대한 모든 응답이 되돌아가게 된다. 이를 고속으로 반복하여 피해자에게 대량의 트래픽을 유발, DDoS 공격의 형태로 만든 것이 바로 DRDoS이다. 여기서 IP가 위조된 패킷을 받아 피해자에게 의도치 않게 공격을 가하게 되는 서버들을 반사체나 반사자(Reflector), 또는 반사 서버(Reflection Server) 라고 하며, 인터넷 상에 연결 되어 외부의 요청에 대한 응답을 하는 어떠한 컴퓨터라도 반사체로 악용 될 가능성이 있다. 물론 여러분의 PC와 스마트폰도 반사체가 될 수 있다.
인터넷이나 공문서로 소개되는 일반적인 DRDoS는 TCP 기반 유형인데 이는 최초로 구현 되었던 유형이 TCP의 ACK 응답을 악용하는 형태였기 때문이다. 이렇게 알려지다보니 TCP로만 구현이 가능하다던지, TCP 특성상 대규모 공격이 어렵다던지 하는 식으로 전혀 엉뚱하게 TCP의 특성에 초점을 맞춰 잘못 이해하는 경우가 많은데 DRDoS는 TCP의 특성을 악용한게 아니라 위에서 언급했던 것처럼 네트워크에 연결 된 시스템의 응답성 그 자체를 악용한 것이고 TCP는 그냥 최초로 악용당한 프로토콜 중 하나일 뿐이다. 절대 잘못된 이해를 갖고 얕볼만한 것이 아니다.
1.1. 특징
DRDoS가 궁극적으로 일반적인 DDoS와 차별되는 특징은 크게 두가지가 있다.
1.1.1. 더 향상된 은닉
IP Spoofing만 되어 있어도 귀찮아지는데 중간자 역할을 하는 반사체까지 끼어 있어서 DDoS에 비해 공격 근원지를 찾아내기가 훨씬 까다롭다. 실제로도 직접적인 공격을 가하는 시스템은 반사체인데 이들은 공격자에 대한 정보를 전혀 가지고 있지 않을 뿐더러, 공격자가 발생시키는 공격 트래픽이 피해자에게 직접 전달 되지도 않기 때문에 공격이 끝나고 피해 서버에 남아있는 로그로 추적해보려고 해도 공격자에 대한 정보를 찾을 방법이 없다. 그러다보니 어떻게든 공격이 끝나도 추적이니 뭐니 하면서 후처리가 가능한 DDoS와는 달리 DRDoS는 일단 공격이 끊기면 단기적인 공격은 사후처리가 사실상 불가능하다는 특징이 있다.
당연히 공격자가 무조건 안전한 것은 아니다. 다른 이유로 인해 공격자가 노출될 수도 있고 어차피 트래픽은 ISP 업체의 라우터를 통해 흘러다닐 수 밖에 없기 때문에 공격 트래픽이 모니터링 될 가능성도 있다. DDoS에 비해서 더 많은 대비와 신속한 대응을 필요로 하지만 어찌됐든 공권력으로 쥐잡듯이 뒤져보면 다 찾을 수는 있기 때문에 장기적인 공격을 계획하는 공격자 입장에서는 이 특징이 크게 의미가 없다.
1.1.2. 증폭 공격의 구현
반사체의 응답 트래픽이 방어자에게 돌아간다는 원리를 응용하여 실제 공격시에 반사체로부터 가능한한 큰 응답을 끌어내 공격 규모를 극적으로 향상시킬 수 있다. 즉, '''공격자가 시도한 공격 규모에 비해서 피해자가 실제로 받는 공격 규모가 커진다.''' 문제는 이게 단순히 2배 3배 수준이 아니라 적어도 수십배, 많으면 수백배씩 말도 안되게 상상도 못할 수준으로 공격 규모가 커질 수 있으며,[3] PPS[4] 증폭까지 덤으로 발생한다는 것이다. 이로 인해서 실제 공격자가 단독으로 공격을 전개하더라도 어지간한 DDoS 이상의 공격 규모가 구현되고 좀비PC까지 동원해서 구현되기라도 하면 수백Gbps~수Tbps급의 국제적 규모가 되어버려 매우 심각한 문제를 일으키고 있으며, 이정도가 되면 방어 설정을 할 수 있고 없고가 문제가 아니라 공격 크기 자체가 문제가 된다.[5]
믈론 아무리 증폭비가 크더라도 이런 방법으로 전세계 인터넷을 어떻게 하네 어쩌네 이런건 다 허풍이다. 당연한 사실이지만 각각의 반사체가 보낼 수 있는 트래픽도 가정집과 마찬가지로 물리적으로 제한 되어 있기 때문에 절대적으로 발생시킬 수 있는 볼륨은 DDoS와 마찬가지로 반사체의 쪽수와 성능으로 결정 되며, 이 반사체들을 모두 가용하려면 결국 실제 공격 트래픽을 내보낼 Agent의 수도 많아야만 한다. 실제 공격 PC의 댓수가 하나면 이 한 대가 구현할 수 있는 크기 이상으로는 반사체가 백만개던 천만개던 규모가 증가하지 않는다.
1.2. 전망
위에 서술한대로 보자면 뭔가 엄청난 기술같지만 생각보다 전망이 좋지는 않다. DDoS보다 동작 조건을 만족시키기 어렵고 성능에 영향을 주는 변수가 많다보니 오히려 일정 이상의 공격 규모부터는 역효과가 나기 쉽기 때문이다. 특히 증폭을 통해 공격력이 뻥튀기 되는 만큼 에이전트로 쓸 수 있는 시스템도 이에 반비례해서 적다보니 절대적인 규모도 DDoS에 비해 그다지 이득을 보기 어렵고 반사체들은 자신들이 악용되지 않게 점점 방어를 시도하고 있는데다 증폭 특성을 만드는 각종 프로토콜의 결함들도 시간이 지남에 따라 보완이 이루어진다. 이렇게 되면 절대적인 반사체들의 쪽수가 확 줄어들기 때문에 한번 노출된 방법으로는 테라비트 단위의 대규모 공격을 만들기가 상당히 힘들다.[6] 원리 자체가 다른 시스템을 간접적으로 이용하는 것이고 인터넷 서비스는 변화가 굉장히 빠르기 때문에 어줍잖은 지식으로는 제데로 된 공격을 성립시키기 어려워서 변화에 적응할 능력이 없는 툴키디들이 범접하기 힘든 영역이다.[7]
2015년 이후부터는 DRDoS 공격에 자주 악용되던 프로토콜들이 보완됨에 따라 평균 공격 빈도와 규모가 조금씩 감소하는 추세다. 특히 사물인터넷이 발달함에 따라 PC뿐만이 아니라 여러 솔루션의 시스템을 DDoS 공격에 참여시켜 압도적인 쪽수로 밀어버리는 방법이 유행하고 있다. 그러나 DRDoS는 일단 세팅만 적당히 되면 써먹기가 편리한 점 때문인지 쉽게 사라지지는 않는 상황이며, 최고 공격 규모 역시 대부분 DRDoS 공격이 갱신하고 있다.
1.3. 관련 사건
[1] 그러니까 공격이 들어온걸 반사하는 것도 아니고 상대를 묻지도 따지지도 않고 좀비로 만드는 공격도 아니므로 말같지도 않은 창의력(?)은 발휘하지 않도록 하자. 이것도 맞는 입장에선 결국 DDoS와 크게 다르지 않으며 현실을 벗어나는 마법같은게 아니다.[2] 쉽게 설명하기 위해 뭔가를 요청한다는 뉘앙스로 썼지만 어찌됐든 서버에게서 뭔가 응답을 받을수만 있으면 된다.[3] DNS 기반일 경우 최고 57배, NTP는 최고 1004배의 증폭 공격이 가능하다. 즉, 100Mbps의 일반 가정집 회선으로도 NTP 기반 DRDoS 공격을 전개하면 이론상으로는 '''컴퓨터 단 1대로 약 100Gbps 규모의 DDoS 공격을 발생시킬 수 있다는 것이다.''' 심지어 비교적 최근에 공개된 memcached 기반 공격은 일반적으로 대략 5만배, 이론상으로는 증폭비가 아예 무제한이다.[4] Packet per Second, 초당 패킷 수[5] 방어장비는 무슨 화살을 막는 방패마냥 무조건 공격을 막아주는게 아니라 상단에서 들어오는 쓰레기 트래픽을 필터링하여 아래로 내려가지 하게 함으로써 하위망의 가용성을 지키는, 더 쉽게 이야기하자면 일종의 싱크대 거름망 같은 기능을 하는 장비다. 방어장비 상단의 회선 용량마저 초과할 수준으로 큰 공격이 들어와버리면 방어장비고 뭐고 다 무용지물이다.[6] 프로토콜에 따라 다르지만 대부분 악용되는 반사 서버들의 세팅을 약간 조정해줌으로써 손쉽게 무력화 된다. Memcached 기반 공격의 경우, 취약한 Memcached 서버의 캐시를 무효화하는 방법으로 아예 방어자가 증폭 공격 자체를 원천 차단할 수 있다.[7] 지금은 이마저도 툴이 나타나서 스크립트 키디들이 어설프게 종종 쓰고 다니는게 보이지만 공격 규모가 하찮은데다가 이것도 결국 한 때일 뿐이며, 언젠가 패치 한방에 소멸할 운명이 확정 되어 있다.