JavaScript를 기반으로 한 DDoS 공격
DDoS란 Distributed Denial of Service의 약자로, DoS공격이 발전된 형태입니다. DDoS 공격은 공격자 수에서 Dos 공격과 가장 큰 차이가 있습니다. DoS 공격은 하나의 클라이언트가 특정 서버에 수많은 접속시도를 하는 것이며, DDoS 공격은 다수의 클라이언트가 특정 서버에 적게는 한 번에서 많게는 수 만번의 접속을 시도하는 것입니다.
DDoS 공격의 방어 기술과 장비들이 발전하면서, DDoS 공격 방법도 함께 진화하고 있습니다. 초창기의 DDoS 공격이 악성코드에 감염된 좀비 PC들(봇넷)을 이용했다면, 최근에는 NTP, SNMP, DNS 등을 활용한 증폭 공격 등 그 방식이 점차 지능화, 고도화되고 있습니다. 얼마 전 GitHub이 당한 DDoS 공격또한 조사결과 Javascript를 이용한 DDoS 공격으로 확인되었습니다.(이전 포스팅 참고 ▶ http://blog.alyac.co.kr/287)
※ JavaScript를 이용한 DDoS 공격 원리
다양한 기능 구현과 편리성 등의 이유로 많은 홈페이지에서 Javacsript를 HTML과 함께 사용하거나 <script src=””>와 같은 html태그를 이용하여 원격으로 서버로부터 Javascript 파일을 로드합니다. Web2.0에서는 자바스크립트 내의 내용을 비동기로 로드할 수 있습니다. Web2.0은 사용자와의 상호작용을 중요시 생각하므로 사용자가 새로운 컨텐츠를 제작하면 웹 서버에 실시간으로 동기화 할 뿐만 아니라, 동일한 홈페이지에서 다른 사용자들 함께 커뮤니케이션할 수 있도록 제작되었습니다. 심지어 다른 홈페이지들끼리도 정보를 공유할 수 있습니다.
Javascript로 제작된 HTTP(S) 요청은 브라우저로 하여금 더 다양한 기능을 구현할 수 있도록 만들어져 있습니다. 그러나 또 다른 한편으로는 이러한 특징을 이용한 공격으로 웹 브라우저가 사이버 공격의 가해자가 될 수도 있습니다. 브라우저는 자바스크립트가 켜져 있도록 기본설정되어 있으므로 사용자가 임의로 자바스크립트 실행 기능을 끄지 않는다면 자동으로 사용자 브라우저에서 실행됩니다. 만일 사용자가 아래와 같은 자바스크립트가 포함된 웹 페이지에 접속을 한다면, 자신도 모르게 해당 스크립트에 명시되어 있는 웹 페이지에 접속하게 됩니다.
function imgflood() {
var TARGET = 'victim-website.com'
var URI = '/index.php?'
var pic = new Image()
var rand = Math.floor(Math.random() * 1000)
pic.src = 'http://'+TARGET+URI+rand+'=val'
}
setInterval(imgflood, 10)
해당 스크립트는 공격하고자 하는 웹페이지에 이미지 클릭버튼을 만들어 놓고, 해당 이미지를 클릭하면 'victim-website.com' 페이지에 요청을 보냅니다. 사용자가 해당 스크립트가 포함되어 있는 페이지를 방문한다면, 'victim-website.com'페이지에 DDoS 공격을 하는 사람 중에 한명이 되는 것과 마찬가지입니다.
만약 공격자가 웹페이지에 악성 Javascript를 업로드 해 놓는다면, 해당 웹페이지를 방문하는 사용자들이 한 명의 DDoS 공격자가 되며, 이는 다른 DDoS 공격과 같이 대량의 좀비 PC가 필요하지 않습니다.
※ 취약한 JavaScript를 공유하는 서버
대부분의 웹 페이지에는 일반적으로 JavaScript DB를 갖고 있습니다. 이는 트래픽을 절약과 성능 향상 등의 이유로 IDC와 같은 다른 서버에 저장을 해 놓습니다. 즉, 만일 웹 페이지에 제 3의 서버 스크립트 주석이 포함되어 있다면 사용자는 자동으로 해당 웹페이지에 접속하여 자동으로 JavaScript를 다운받아 실행하게 된다. 만약 JavaScript 중에 DDoS 공격 코드가 들어있다면, 방문자는 DDoS 공격의 한 사람이 되는 것입니다.
이 경우, 브라우저는 자동으로 해당 .js 파일을 내려 받으며 파일의 악성여부를 판단하지 않은 채 바로 실행합니다. 브라우저 역시 해당 파일의 악성여부를 판단할 수 없습니다. 하지만 웹페이지의 해쉬값이 스크립트의 해쉬값과 일치하지 않는 경우 SRI는 브라우저에게 스크립트를 실행금지 명령을 전달합니다.
<script src="https://code.jquery.com/jquery-1.10.2.min.js"
integrity="sha256-C6CB9UYIS9UJeqinPHWTHVqh/E1uhG5Twh+Y5qFQmYg="
crossorigin="anonymous">
이러한 공격은 암호화된 HTTPS 통신을 통해 예방할 수 있습니다.
참고:
https://blog.cloudflare.com/an-introduction-to-javascript-based-ddos/
[해외보안동향] 구글, 사용자 동의 없이 음성 녹음 수집 (0) | 2015.06.25 |
---|---|
[해외보안동향] 삼성 갤럭시 선탑재 키보드에서 보안 취약점 발견 (0) | 2015.06.19 |
[해외보안동향] 피싱 공격을 허용하는 iOS, OS X의 메일 버그 발견 (2) | 2015.06.11 |
[해외보안동향] 단 몇 초 만에 다른 사용자의 왓츠앱 계정을 하이재킹하는 방법 (0) | 2015.06.10 |
[해외보안동향] 간단한 메시지만으로 충돌을 일으키는 버그, 스카이프에서도 발견 (0) | 2015.06.04 |
댓글 영역