개요
드라이브-바이 다운로드 용어 사용을 보면 기관, 기업, 연구소 등 서로 다른 다양한 형태로 사용되고 있다. SQLi, XSS나 Malware, Exploit, Vulnerability 등 명확한 단어를 사용하지 않는 이유로는 학술적으로 정의되어 있지 않았기 때문으로 생각이든다. 그래서 개인적으로 다음과 같이 용어를 정리해보았다. 이 용어들은 연구 과정에서 변경될 수 있는 정의이기에 지속적인 업데이트를 할 예정이다.
사전 정의
우선 드라이브-바이 다운로드 용어 사용에 앞서 정의한 요소들이 있다.
페이지 단위
드라이브-바이 다운로드 공격은 대개 경유지, 중계지, 유포지 세 가지로 분류되어 지는데, 공격의 큰 흐름을 보았을때 영역, 범위를 의미하는 접미사 '지' 라는 단어가 붙는다. 하지만 내부적인 소스코드를 분석하는 입장에서는 특정 HTML 파일 즉, 서버가 아닌 페이지 라는 개념을 기본으로 한다.
물론 예외 상황은 발생한다. 먼저, 악성코드 저장소의 경우 악성코드 파일이 페이지가 아니기 때문에 서버으로 해석하는게 맞다. 또 다른 예외 상황은 유포지 관리 서버의 존재이다. 이 경우 페이지를 트래픽 조건에 따른 제어, 감시, 관리 등이 가능한 구조이기 때문에 웹 서버 언어를 사용한다.
혼용
경유지, 중계지, 유포지가 혼용되어 사용될 수 있는 것은 인터넷 환경의 다양성을 추구하기 때문이다. 예를들어 경유지와 유포지가 하나가 될 수 있고, 경유지와 유포지가 하나가 아니지만 중계지를 사용하지 않을 수 있다. 이처럼 다양한 형태를 케이스별로 분류할 수 있으며, 단위로는 깊이(Depth)를 사용한다. 흥미로는 부분으로는 중계지, 유포지가 수 많은 경유지에 맞물려 돌아가기도 하는데, 수 많은 경유지를 수치화 했을 때 사용하는 단위로 폭(Breadth)을 사용한다. 마지막으로 깊이와 폭을 합쳐 전반적인 유포 영역을 범위(Scope)를 사용한다.
최근 정보보안기사 실기를 치시고 오신분께서 드라이브-바이 다운로드 문제를 보면서 "경유지가 유포지가 될 수 있지 않나요?" 라고 물어보셨다. 맞는 말이다. 다만 관점에 따라 다르게 분류할 수 있다.
-
사용자(피해자)와 브라우저의 관점
사용자의 입장에서 경유지에 접근하는 것만으로 악성코드 유포가되어 감염에 노출될 수 있기 때문에 유포지와 경유지가 혼합된 개념이 된다. 브라우저 역시 동일하다. iframe이나 script 등 리디렉션 코드에 의해 다른 서버의 페이지를 랜더링 하는 관점에서 소스코드를 배치 스크립트 형태로 동작하기 때문에 하나의 페이지에 모든 소스코드를 접목시켜 사용하는 것과 동일한 형태를 가지는 것으로 알고있다.
-
분석가의 관점
분석가는 소스코드를 진단하는 관점에서 자바스크립트 난독화를 해제하며 유포지로 추적을 하기 마련이다. 이 관점에서는 명확한 구조도가 보인다. 그렇기 때문에 경유지, 중계지, 유포지, 악성코드 저장소의 네 가지 구조를 볼 수 있어 분류가 가능하다는 점이다.
-
상황에 따른 관점
때론 경유지 소스코드를 분석하는 과정에 리디렉션 코드를 사용하여 구조화 시키지 않고 유포지에 사용되는 소스코드를 무식하게 변조하여 사용하는 경우도 발생한다. 이 때는 기술적으로 명확하게 경유지 = 유포지 공식이 나온다.
결론적으론 비기술영역인 관점이라는 요소가 들어감으로써 명확한 정의가 어렵고, 여러 상황에 따라 혼재되는 상황이 발생하는 것으로 해석하고 있다.
용어 정리
다음 내용은 드라이브-바이 다운로드 용어 정리로 관점은 "분석가의 관점"으로 정리하였다.
-
Drive-By Download (드라이브-바이 다운로드)
공격자가 서비스 중인 웹 페이지에 악의적인 스크립트를 삽입하고, 이 스크립트로 인해 웹 페이지에 접근한 사용자의 동의 없이 악의적인 소프트웨어를 다운로드 하고 실행하게 되는 공격 프로세스이다.
-
Referrer page (참조 페이지 - 리퍼러)
리퍼러는 방문자가 사이트로 유입되는 특정 HTML 페이지의 URL을 말한다. 즉, 피해자가 공격자의 서버로 유입 될 때 어떤 사이트의 페이지(특정 HTML 페이지 URL)에서 넘어온지 알 수 있다.
-
Landing page (방문페이지)
방문 페이지는 사이트 방문자가 해당 사이트에 방문 시 도착한 첫 페이지를 말한다. 인입 페이지(Entrance page)라고도 한다. 일반적으로 사용자가 웹 서비스를 이용하기 위해 브라우저로 접속한 페이지를 의미하며, 드라이브-바이 다운로드 공격에서는 악성 스크립트가 삽입되어 있는 페이지를 의미한다.
-
Hopping Pages (중계지)
악의적인 스크립트의 HTML 태그에 의해 랜더링 하는 페이지로 방문 페이지와 익스플로잇 페이지 사이의 징검다리 역할을 하는 페이지이다. 중계지로 인해 드라이브-바이 다운로드 공격이 구조화되고 추적하기 어려워진다.
-
Exploit Page (익스플로잇 페이지)
브라우저 취약점이 발생시키고 페이로드를 전송하여 지정한 악성코드 위치에서 악성코드를 다운로드하고 실행하게 하는 코드를 사용한다. 대부분의 익스플로잇 페이지는 독특한 형태의 자바스크립트 난독화가 되어있다. 독특한 이유는 자바스크립트 난독화 형태에 따라 특정 도구에서 생성되었음을 알 수 있기 떄문이다. 과거에는 익스플로잇 페이지와 익스플로잇 발생 코드들을 자체 서버에서 운영했지만, 최근에는 웹 서버를 탈취하고 운영하고 있다.
-
Malware Repository (악성코드 저장소)
드라이브-바이 다운로드 공격에서 악성코드는 공격자들이 쉽게 수정이 가능한 서버를 이용한다. 거의 50 대 50으로 자체적으로 운영하거나 정상 서비스를 하는 웹 서버에 탈취하여 운영한다. 자체적으로 운영할 경우 윈도우 또는 윈도우 서버에 HFS 애플리케이션을 올려 사용한다. 쉽게 수정이 가능한 서버에서 운영하는 이유는 동일한 파일 명으로 업로드를 하면, 실시간으로 다른 성향의 악성코드를 유포 할 수 있기 때문이다.
-
Normal code (정상 코드)
정상적인 웹 소스코드를 말한다.
-
Malicious code (악의적인 코드)
악의적인 행위에 사용되는 코드 Malware라고 할 수 없는 것은 Malware는 Malicious Software의 약자로 악의적인 행위를 하는 소프트웨어를 말한다. 단순히 코드라고 하는 것은 소프트웨어의 구성요소 이기 때문에 따로 분류하여 사용한다. 하지만 Web-based Malware(웹 기반 악성코드) 로 사용하기도 한다.
-
Suspicious Code (의심스러운 코드)
악의적인 행위를 하려고 만든 코드일 수도 있고, 정상일 수도 있는 코드일 수도 있기에 분류하는 형태이다. 사용자의 의도에 따라 분류하기 때문에 불가피하게 의심스러운 코드로 분류하여 사용한다.
-
Traffic Analytics(트래픽 통계)
트래픽 통계 또한 악의적인 목적과 아님을 구분하기 힘들지만, 국내 기업 혹은 사이트에서 중국어로 제공하는 중국 트래픽 통계 스크립트를 이용하는 것은 이상 행위로 판단된다. 또한 국제적인 기업인 구글, 야후 등 트래픽 통계사이트 외 영어로 서비스를 제공하지만 국내 기업 혹은 사이트에서 사용빈도가 낮은 얀덱스(러시아 검색사이트), 바이두(중국 검색사이트) 의 트래픽 통계 스크립트를 이용하는 것 또한 이상행위로 판단된다.
-
Obfuscated Code(난독화된 코드)
컴퓨터는 코드를 읽을 수 있지만, 사용자는 코드를 읽기가 어려운 것을 말한다.
-
De-obfuscated Code(난독화 해제한 코드)
난독화된 코드를 컴퓨터도 읽을 수 있고, 사용자도 읽을 수 있는 코드로 변형한 것을 말한다.
-
Exploit Toolkit (익스플로잇 도구)
취약점 코드와 난독화 소스코드 등을 제공하는 도구를 지칭한다. Blackhole 2.0, 공다팩, CK VIP, RIG EK 등 다양한 익스플로잇 도구들이 있다.
'Information Security > Security Information' 카테고리의 다른 글
attrition.org/mirror/attrition/months.html (0) | 2015.06.24 |
---|---|
Awesome Security (0) | 2015.06.02 |
CVSSv2 (Common Vulnerability Scoring System Version 2) (0) | 2015.05.19 |
CVE (Common Vulnerabilities and Exposures) (0) | 2015.05.12 |
전사적 정보보호 프레임워크에 관한 개인 위키 (0) | 2014.07.14 |