지난 21일 금요일 발생한 대규모 DDoS 공격으로 인해 twitter나 github, CNN, Reddit, 뉴욕타임즈등 미국의 주요 웹사이트들이 정상적으로 접속이 되지 않는 초유의 사태가 있었다. 이와 관련한 자세한 내용은 아직 공개되지 않았지만, 각 커뮤니티 등에 공유되고 알려진 정보를 기반으로 기술적으로 궁금해 하는 내용을 Q&A로 엮어보았다. 이번 사건에 대한 기술분석 Q&A는 홍석범 씨디네트웍스 이사의 도움을 받아 정리됐다.
Q. 왜 여러 주요 사이트들이 동시에 서비스 영향이 있었는가?
공격의 대상이 dyn.com이라는 DNS 호스팅 서비스 업체였고, 피해를 입은 주요 업체들이 이 DNS 서비스를 이용하였기 때문이다. 공격이 지속되는 수 시간 동안 해당 DNS 서비스업체의 홈페이지를 포함해 서비스중인 모든 DNS서버가 정상적인 응답을 하지 못하였다. 한국의 경우 DNS가 많은 용량을 차지 하지 않고 국가내 RTT가 작기 때문에 주로 회사나 조직 자체적으로 소규모로 운영하고 있지만, 미국 등은 지역에 따라 RTT가 크고 DNS는 중요한 시스템이기 때문에 아무리 거대한 IT 회사라도 DNS는 전문회사에 아웃소싱을 하는 추세이다. 이러한 DNS 호스팅 서비스 업체들로는 dyn.com 외에도 Ultradns, Dnsmadeeasy, Amazon 등이 있다.
Q. 몇 개의 사이트들이 영향을 받았는가?
공격이 지속되는 동안 전체 DNS시스템에 접근할 수 없었던 것으로 알려졌으며 정확하게는 알 수 없겠지만, 아래의 통계를 근거로 대략 dyn.com의 DNS를 이용중인 약 8만여개의 사이트가 영향을 받았을 것으로 추측된다.
-http://webhosting.info/dns-providers-statistics/dyn-com/167
특히 dyn.com은 twitter나 CNN, github 등 주요 IT업체들의 DNS 서비스를 제공하고 있어 그 피해가 컸다.
Q. DNS는 cache가 있어서 피해가 적지 않나?
틀린 말은 아니다. 그러나, 잠깐 동안의 일시 단절에는 도움이 될 수 있지만, 지금과 같이 장애가 수 시간동안 지속될 경우는 그 피해가 눈덩이처럼 커진다. 즉, resolving DNS가 캐싱하는 시간은 random하기 때문에 resolving DNS가 언제 캐싱을 했는가에 따라 즉시 장애로 나타날 수도 있고, 일정 시간이 지난 후부터 장애로 나타날 수도 있다. 이론적으로 1시간(3600초) TTL을 사용하는 도메인의 경우 30분 장애가 지속되면 50%가 장애를 느끼게 되고, 1시간 지속되면 그 장애는 100%가 된다. 또한 주요 업체들의 경우 통상적으로 서비스 가용성을 위해 DNS TTL을 5분이나 1분등 작게 가져가는 경우도 많다.
Q. 공격으로 사용된 좀비(zombie)는 무엇이었는가?
알려진 바에 따르면, CCTV, DVR등 IoT 디바이스가 이번 공격에 사용된 것으로 알려져 있다. 이전과 달리 NTP나 DNS 증폭 공격은 아니었으며 admin/admin과 같이 default password를 사용하는 IoT 장치들을 해킹하여 공격에 활용한 것으로 알려져 있다.
Q. 한국 등 아시아 지역은 영향이 상대적으로 적었고 미국서부나 동부 등 특정 지역의 장애가 있었다고 한다. 이유는 무엇인가?
공격에 활용한 IoT 장비를 이 지역(미주)의 장비를 주로 이용하였기 때문으로 보인다. 대부분의 CDN이나 DNS 호스팅 업체들은 서비스의 가용성(availability)과 성능(performance)을 위해 Anycast 네트워크를 사용한다. Anycast란 전세계에 유일한 IP인 unicast와 달리 동일한 IP를 여러 라우팅 대역에서 동시에 BGP announce함으로써 해당 IP로 접속시 클라이언트와 지역적으로 가까운 device로 접속하도록 하는 기술이다. 이의 가장 대표적인 것이 root DNS나 구글의 DNS인 8.8.8.8인데 이 IP를 미주, 유럽, 아시아 등 각각의 지역에서 동시에 BGP announce함으로써 같은 IP로 접속을 하더라도 아시아 유저들은 아시아에 있는 서버로, 유럽 사용자들은 유럽의 서버로 접속을 하게 되는 것이다.
dyn.com의 DNS 서버중 하나인 ns3.p01.dynect.net.(208.78.71.1)을 한국에서 아래와 같이 조회해 보면 hostname이 dns4-08-tyo.dyndns.com 라고 출력되는데, 이는 tyo 즉 일본 tokyo에 있는 서버라고 짐작할 수 있다.
$ dig @208.78.71.1 hostname.bind txt ch +short
"dns4-08-tyo.dyndns.com"
동일한 요청을 유럽에 있는 팝에서 질의하면 아래와 같이 FRA 즉 독일의 프랑크푸르트(Frankfurt)에 있는 서버라고 짐작할 수 있다. 즉, IP는 같지만 지역에 따라 해당 서버의 위치가 다르다는 것을 알 수 있다.
"dns4-07-fra.dyndns.com"
Q. 공격 방식과 공격의 규모는 어느 정도였는가?
공격의 규모는 dyn.com에서 공개하지 않아 아직 알 수는 없다. 다만 공격 방식은 2가지 방식이 활용된 것으로 알려져 있다.
첫 번째는, DNS 서비스 포트인 53에 대해 TCP SYN패킷에 많은 데이터를 실어 1,000~1500Byte로 생성하여 공격을 시도하였다. 정상적인 SYN 패킷은 64byte내외인데, 공격자들은 한 패킷의 사이즈를 크게 생성하여 대규모로 발송함으로써 수십~수백Gbps의 공격 트래픽을 생성할 수 있게 된다. 물론 zone transfer를 제외하고 일반적인 DNS는 거의 UDP이므로 백본에서 TCP를 차단하면 되었겠지만, 워낙 대규모 트래픽이어서 upstream ISP와의 회선 대역폭이 가득 차서 달리 방도가 없었던 것으로 보인다.
두 번째는 Query Flooding 기법으로, dyn.com에서 서비스중인 수 만개의 도메인중 수천여개의 서비스 도메인에 대해 랜덤한 서브도메인을 생성하여 대규모로 질의하는 형태의 공격이었다. 즉, example.com 이라는 도메인에 대한 서비스를 한다면, aaaaaaa.example.com부터 zzzzzzzz.example.com까지 하위 도메인(sub-domain)을 random하게 무작위로 생성하여 빠르게 질의하는 것이다. 만약 한 개의 도메인에 대한 무작위 sub-domain 공격이라면 쉽게 대응할 수 있었겠지만, 수천개의 고객사 도메인에 대한 random 도메인 공격이어서 공격과 정상 트래픽을 구분하기 어려워 현실적으로 대응하기가 어려웠을 것이다. 즉, 이를 통해 dyn.com 인프라 자체를 공격하려는 목적이 강했으며 사전에 충분히 준비되었던 것이라는 것을 알 수 있다. 참고로 이 형태의 공격은 한국에서도 여러 차례 모니터링 되고 있는 공격으로 주의가 필요하다.
Q. 현재 공격으로 인해 장애를 입었던 주요 업체들의 움직임은 어떠한가?
twitter.com은 현재의 dyn.com DNS를 아직 유지하고 있지만 다른 주요 업체들 도메인을 질의해 보면, Amazon Route53이나 Ultradns등 다른 DNS hosting 업체로 서비스를 이관하거나 추가적으로 자사 DNS를 추가하여 이중화하는 등 다중화하는 모습을 보여주고 있다.
Q. 이러한 공격에 대응하려면 어떻게 하여야 하는가?
일단 자체적으로 대응하기 위해서는 DNS를 여러 IDC 또는 국가에 설치하여 가급적 다중화하는 것이 좋다. 물리적, 논리적으로 DNS를 분산하는 것은 서비스 가용성을 위한 기본 원칙이다. 또한, 중소기업이라면, KISA의 사이버대피소 서비스(www.krcert.or.kr/webprotect/cyberShelters/cyberShelters.do)를 이용할 수도 있다. 특히 대피소는 100Gbps가 넘는 고용량의 장비 및 회선 대역폭, 수년간의 대응 노하우를 통해 안정적으로 24시간 대응을 하기 때문에 대규모의 DNS 공격에 큰 도움이 될 것이다.
DNS의 경우 1,2차는 기본, 통상 1차에서부터 4차까지 지정할 수 있으므로(이론적으로는 13개까지 가능) 현재 설정된 DNS외 KISA대피소나 DDOS 공격 대응업체에서 제공하는 DNS를 추가로 설정하면 된다. DNS는 자체적으로 failover 기능을 제공하기 때문에 지정한 DNS중 하나라도 응답하면 서비스는 유지가 된다. 이를테면 4차까지 DNS를 설정시 1-3차는 공격으로 정상적인 응답을 하지 않더라도, 4차가 응답을 한다면 서비스 지연은 다소 있겠지만 서비스를 유지할 수는 있게 되는 것이다. 이를테면, amazon.com의 경우 아래와 같이 DYN과 UltraDNS 두 개 업체의 DNS를 이용중이다.
amazon.com. 172800 IN NS ns1.p31.dynect.net.
amazon.com. 172800 IN NS ns2.p31.dynect.net.
amazon.com. 172800 IN NS ns3.p31.dynect.net.
amazon.com. 172800 IN NS ns4.p31.dynect.net.
amazon.com. 172800 IN NS pdns1.ultradns.net.
amazon.com. 172800 IN NS pdns6.ultradns.co.uk.
Q. 기타 DNS DDoS에 대해 참고할만한 자료가 있는가?
아래의 기사를 참고하기 바란다.
-DDoS 공격자는 DNS 공격을 준비하고 있다
www.dailysecu.com/news/articleView.html?idxno=194
DNS 서버에 대한 DDoS 공격대응 솔루션 8가지
dailysecu.com/news_view.php?article_id=318
Bind DNS의 DDOS 차단 기능 100% 활용하기
www.dailysecu.com/news/articleView.html?idxno=4640
◇공무원-일반기업 보안실무자 정보보호 교육이수 컨퍼런스 안내◇
공무원 정보보호 교육 이수 및 개인정보관리사자격(CPPG) 7시간 교육 이수 컨퍼런스 등록
-PASCON 2016 사전등록: www.dailysecu.com/conference/pascon/2016.html
★정보보안 & IT 대표 미디어 데일리시큐!★