Profile
owdin.network

2018.06.30

DDoS (Distributed Denial of Service) 란?

Views 202 Votes 5

1*_ed0-gU2IEw8zP3FD0a0mA.png

DDoS (Distributed Denial of Service) 란?

안녕하세요.

OWDIN입니다.

이번 시간에는 본격적인 방어 시스템을 이야기 하기 전 DDoS에 대해서 좀 더 자세히 살펴 보겠습니다.

DoS (Denial of Service, 서비스 거부 공격)

DoS 공격이란

특정 서버에게 수많은 접속 시도를 만들어 다른 이용자가 정상적으로 서비스 이용을 하지 못하게 하거나,

서버의 TCP 연결을 바닥내는 등의 방식을 통해,

악의적으로 해당 시스템의 자원을 부족하게 하여 원래 의도된 용도로 사용하지 못하게 하는 공격입니다.

 

수단, 동기, 표적은 다양할 수 있지만, 보통 인터넷 사이트 또는 서비스의 기능을 일시적 또는 무기한으로 방해 또는 중단을 초래하며, 이를 위해서 몸값을 요구하기도 하고 대표적으로 DDoS for BTC 같은 그룹이 있습니다.

 

블록체인의 경우 이런 DoS 공격을 막기 위한 시스템이 존재하며 그 근간은 경제적 방어입니다.

 

이더리움의 가스가 대표적인 방식입니다.

 

아무런 의미없는 계산을 시켜서 (이를테면 1+1을 무한히 반복하는 등) 이더리움 체인을 정지시키는 공격을 한다고 가정해 봅시다. 이 때, 이더리움은 아무리 작은 계산이라도 돈(가스)을 매겨서 그 공격을 위해 들이는 비용이 그 공격을 통해 얻는 비용보다 크게 하여 DoS 공격을 막고자 시도합니다.

즉, 공격에 쓰는 돈이 버는 돈 보다 많기에 공격을 방어하는 구조입니다.

 

이는 어쩔 수 없이 모든 상황에서 micropayment 를 강요합니다. 단돈 0.0001 이더를 보낼 때도 수수료가 드는 방식이죠.

일반적으로 저희는 이런 micropayment 에 익숙하지는 않습니다. 친구끼리 작은 현금을 주고 받을 때 수수료를 내는 건 무척이나 어색하죠.

(하지만 이런 방식은 B2B 쪽에선 충분히 합리적일 것입니다.)

 

스팀은 다른 방식을 사용합니다.

 

일부 스팀을 스팀파워로 쟁여놓으면, 그 스팀파워가 확보하는 용량 안에서는 수수료 없이 사용이 가능합니다.

확보하는 용량보다 더 많은 계산은 근본적으로 하지 못하도록 되어있는 것이죠.

(조금 더 일상 생활에는 적합한 방식으로 생각되며, 이 때문에 스팀이 이더리움보다는 좀 더 빨리 대중화 되고 있는 것으로 보입니다.)

DDoS (Distributed DoS, 분산 서비스 거부 공격)

근래 다양한 이슈들로 인해 유명해진 DDoS는 여러 대의 공격자를 분산적으로 배치(좀비 PC 라고도 하지요)해 동시에 서비스 거부 공격을 하는 방법입니다. 문제는 이런 좀비들은 이제 컴퓨터 뿐만이 아니라 사물인터넷 시대를 맞아 각 가전에 들어있는 작은 기기들에도 들어갈 수 있어 이전보다 훨씬 광범위한 규모의 공격이 가능하게 됩니다.

눈앞에 있는 멀쩡한 TV, 냉장고, 에어컨이 밖에서 DDoS 공격을 하고 있는 거죠.

 

일반적으로 DDoS 공격은 공격 대상인 OSI(Open Systems Interconnection) 모델의 계층에 따라 분리될 수 있습니다. DDoS 공격은 네트워크(계층 3), 전송(Layer 4), 프레젠테이션(계층 6) 및 애플리케이션(계층 7) 계층에서 가장 많이 나타납니다.

OSI 계층이란?

 

가장 흔한 DDoS 공격기법은 반사공격(reflection attack)으로서, 네트웍이 감당할 수 없는 트래픽의 양을 생성하여 정상적인 트래픽을 처리하지 못하도록 하는 것입니다. 반사공격(reflection attack)을 시작하려면, SSDP(Simple Service Discovery Protocol)나 DNS(Domain Name System), NTP(Network Time Protocol), SNMP(Simple Network Management Protocol)과 같은 UDP(User Datagram Protocol)서비스를 제공하는 인터넷 서버들을 스캔해서 정보를 요청하면서 정보를 받는 주소를 공격지점으로 지정합니다.

 

이렇게 서버들에 요청을 한 뒤 결과를 반환하게 되는데, 구성에 따라 요청한 양 보다 훨씬 큰 결과를 반환하는 경우가 많습니다. 이러한 부분을 이용하는 것을 증폭 공격(Amplification Attack)이라고 하며, 이 두 가지 기법을 이용하여 공격자가 소스 IP를 공격 대상 IP로 임의로 변경하여 많은 요청들을 해당 서버들에게 보내게 되면, 10배 혹은 수백배 큰 응답들이 공격 대상에게 전달되어 정상적인 서비스를 방해하도록 하는 것입니다.

 

예를 들면 이렇습니다.

공격자가 ‘’전 세계의 사람들의 주소를 알려줘’’ 라는 전보를 전세계의 부동산에 나눠서 보내고 배송지 목록이 적힌 책을 자기 집이 아닌 ‘OWDIN’ 회사로 보내는 상황을 가정해 봅시다.

그럼 요청할 때는 한 문장의 전보 수준이지만, 받을 때는 60억 인구의 주소가 적힌 아주 두꺼운 수십권의 책이 될겁니다. 그리고 전세계의 부동산에서 60억 개 주소를 보내게 되니 보낼 때는 한 문장이었지만, 수십~수백억 배가 된 이 쓸모없는 주소책 더미를 OWDIN 회사로 배송시켜 버리는 것입니다.

그러면 회사는 쓸모없는 주소 책 더미를 우겨 넣고도 공간이 모자라서 직원이 일을 못하는 사태가 되는 것이 반사/증폭 공격입니다.

 

아래 그림은 공격자가 어떻게 요청을 변조하여 DDoS반사/증폭(Reflection/Amplification)공격을 목표에게 전송시키는지를 나타냅니다.

0*FjAw4Z44WGjR1jPu.png

조금 분류를 해 보면 다음과 같습니다.

인프라 계층 공격

계층 3과 4에 대한 공격은 일반적으로 인프라 계층 공격으로 분류됩니다. 이러한 공격은 가장 일반적인 유형의 DDoS 공격이며, SYN(동기화된) 플러드(flooding) 같은 벡터 그리고 UDP(User Datagram Packet) 플러드 같은 기타 반사 공격을 포함합니다. 이러한 공격은 대개 볼륨이 상당히 크고, 네트워크 또는 애플리케이션 서버 용량에 과부하가 걸리게 하는 것을 목표로 합니다.

애플리케이션 계층 공격

계층 6과 7에 대한 공격은 주로 애플리케이션 계층 공격으로 분류됩니다. 이러한 공격은 덜 일반적이긴 하지만 좀 더 정교한 경향이 있습니다. 일반적으로 이러한 공격은 인프라 계층 공격과 비교하여 볼륨은 작지만, 애플리케이션에서 고가의 특정 부분을 집중적으로 공격하여 실제 사용자가 사용할 수 없도록 만듭니다. (간혹 이용자가 몰려 사이트가 안돌아 가면 인간 DDoS라고 하기도…)

 

도움이 되셨나요?

 

다음 번에는 블록체인, 특히 DPoS 시스템에서 DDoS 공격을 어떻게 막는지에 대한 좀 더 구체적인 방안을 알아보도록 하겠습니다.

 

참고문헌

http://www.ciokorea.com/news/36536

https://aws.amazon.com/ko/shield/ddos-attack-protection/

https://aws.amazon.com/ko/blogs/korea/how-to-help-prepare-for-ddos-attacks-by-reducing-your-attack-surface/

Profile
1
Lv

1개의 Comment

Profile
창창이
2018.06.30

감사합니다

Profile