KR101917996B1 - 악성 스크립트 탐지 방법 및 장치 - Google Patents

악성 스크립트 탐지 방법 및 장치 Download PDF

Info

Publication number
KR101917996B1
KR101917996B1 KR1020160177481A KR20160177481A KR101917996B1 KR 101917996 B1 KR101917996 B1 KR 101917996B1 KR 1020160177481 A KR1020160177481 A KR 1020160177481A KR 20160177481 A KR20160177481 A KR 20160177481A KR 101917996 B1 KR101917996 B1 KR 101917996B1
Authority
KR
South Korea
Prior art keywords
script
content
html
malicious
client terminal
Prior art date
Application number
KR1020160177481A
Other languages
English (en)
Other versions
KR20180073933A (ko
Inventor
김환국
배한철
박성민
권민희
오상환
윤수진
Original Assignee
한국인터넷진흥원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국인터넷진흥원 filed Critical 한국인터넷진흥원
Priority to KR1020160177481A priority Critical patent/KR101917996B1/ko
Publication of KR20180073933A publication Critical patent/KR20180073933A/ko
Application granted granted Critical
Publication of KR101917996B1 publication Critical patent/KR101917996B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic

Abstract

웹 트래픽을 실시간으로 수집하고, 수집된 트래픽 데이터에서 악성 스크립트를 탐지하는 악성 스크립트 탐지 방법 및 장치가 제공된다. 상기 악성 스크립트 탐지 장치는, 클라이언트 단말이 웹 서버로 제1 HTML 콘텐츠를 요청하는 HTML 요청 메시지를 수신하고, 상기 웹 서버로부터 상기 제1 HTML 콘텐츠가 포함된 HTML 응답 메시지를 수신하며, 상기 클라이언트 단말로 상기 제1 HTML 콘텐츠에서 내부 스크립트 콘텐츠가 제거된 제2 HTML 콘텐츠를 전송하는 프록시부, 상기 HTML 요청 메시지를 수신함에 따라 상기 클라이언트 단말에 대한 세션을 생성하고, 상기 제1 HTML 콘텐츠에서 상기 내부 스크립트 콘텐츠를 추출하며, 상기 내부 스크립트 콘텐츠가 추출된 부분에 임의의 외부 스크립트 경로를 삽입하여 상기 제2 HTML 콘텐츠를 생성하는 콘텐츠 처리부 및 상기 내부 스크립트 콘텐츠에 대하여 시그니처 기반의 악성 스크립트를 탐지하고, 상기 내부 스크립트 콘텐츠에서 탐지된 악성 스크립트를 제거하는 사후 처리를 수행하는 분석부를 포함할 수 있다.

Description

악성 스크립트 탐지 방법 및 장치{Method and Apparatus for Detecting Malicious Script}
본 발명은 악성 스크립트 탐지 방법 및 장치에 관한 것이다. 보다 자세하게는, 웹 트래픽을 실시간으로 수집하고, 수집된 트래픽 데이터에서 악성 스크립트를 탐지하는 악성 스크립트 탐지 방법 및 장치에 관한 것이다.
공격 코드는 특정 어플리케이션 또는 시스템의 보안 상의 취약점을 이용하여 시스템에 비정상적인 동작을 일으키거나, 사용자의 개인 정보를 몰래 탈취하는 등의 방식으로 사용자를 공격하는 코드를 의미한다. 상기 공격 코드는 웜(worm)이나 바이러스(virus)와 같은 실행 파일 형태의 공격 코드와 웹 브라우저를 통해서 실행되는 스크립트 형태의 공격 코드를 포함한다.
이중에서 스크립트 형태의 공격 코드는 컴파일러에 의해 동작되는 것이 아닌 해석기를 통해 읽혀지며 다양한 환경에서 실행 가능하고 제작이 쉬운 특징을 지니고 있는 스크립트 언어(scripting language)를 사용하여 제작된다. 예를 들어, 상기 공격 코드는 자바 스크립트(java script)나 비주얼 베이직 스크립트(visual basic script) 등의 스크립트 언어로 작성된다.
스크립트 언어로 작성된 공격 코드가 포함된 악성 스크립트는 통상적으로 웹 페이지에 삽입되어 있다가, 사용자가 웹 브라우저(web browser)를 통해 해당 웹 페이지에 접속함에 따라 클라이언트 단말에서 실행된다. 상술한 바와 같이 클라이언트 단말에서 공격 코드가 실행되는 경우, 클라이언트 단말이 DDoS 공격에 이용되거나, 클라이언트 단말 또는 클라이언트 단말이 연결된 인트라넷(intranet)에 존재하는 개인 정보 또는 기업 비밀이 유출되는 등 심각한 보안 문제를 야기할 수 있다.
따라서, 실시간으로 웹 트래픽을 감시하여 공격 코드가 포함된 악성 스크립트를 탐지하는 악성 스크립트 탐지 방법이 요구된다.
한국공개특허 제2015-0134171호
본 발명이 해결하고자 하는 기술적 과제는, 실시간으로 웹 트래픽을 감시하여 상기 웹 트래픽에 포함된 악성 스크립트를 탐지하는 방법 및 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상술한 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 악성 스크립트 탐지 장치는, 클라이언트 단말이 웹 서버로 제1 HTML 콘텐츠를 요청하는 HTML 요청 메시지를 수신하고, 상기 웹 서버로부터 상기 제1 HTML 콘텐츠가 포함된 HTML 응답 메시지를 수신하며, 상기 클라이언트 단말로 상기 제1 HTML 콘텐츠에서 내부 스크립트 콘텐츠가 제거된 제2 HTML 콘텐츠를 전송하는 프록시부, 상기 HTML 요청 메시지를 수신함에 따라 상기 클라이언트 단말에 대한 세션을 생성하고, 상기 제1 HTML 콘텐츠에서 상기 내부 스크립트 콘텐츠를 추출하며, 상기 내부 스크립트 콘텐츠가 추출된 부분에 임의의 외부 스크립트 경로를 삽입하여 상기 제2 HTML 콘텐츠를 생성하는 콘텐츠 처리부 및 상기 내부 스크립트 콘텐츠에 대하여 시그니처 기반의 악성 스크립트를 탐지하고, 상기 내부 스크립트 콘텐츠에서 탐지된 악성 스크립트를 제거하는 사후 처리를 수행하는 분석부를 포함할 수 있다.
일 실시예에서, 상기 콘텐츠 처리부로부터 상기 제2 HTML 콘텐츠를 수신하여 저장하고, 상기 클라이언트 단말의 HTML 요청 메시지에 대응되는 제2 HTML 콘텐츠를 상기 클라이언트 단말로 제공하는 캐시부를 더 포함할 수 있다.
일 실시예에서, 상기 콘텐츠 처리부는, 상기 제1 HTML 콘텐츠에 외부 스크립트 경로가 포함된 경우, 상기 외부 스크립트 경로가 가리키는 외부 스크립트 콘텐츠를 수집하고, 상기 분석부는, 상기 수집된 외부 스크립트 콘텐츠에 대하여 시그니처 기반의 악성 스크립트 탐지를 수행할 수 있다.
일 실시예에서, 상기 프록시부는, 상기 클라이언트 단말이 상기 제2 HTML 콘텐츠에 포함된 외부 스크립트 경로가 가리키는 외부 스크립트 콘텐츠를 요청하는 스크립트 요청 메시지를 수신함에 따라 상기 사후 처리가 수행된 안전한 외부 스크립트 콘텐츠를 송신할 수 있다.
상술한 기술적 과제를 해결하기 위한 본 발명의 다른 실시예에 따른 악성 스크립트 탐지 방법은, 클라이언트 단말이 웹 서버로 제1 HTML 콘텐츠를 요청하는 HTML 요청 메시지를 수신하는 단계, 상기 HTML 요청 메시지를 수신함에 따라, 상기 클라이언트 단말에 대한 세션을 생성하는 단계, 상가 HTML 요청 메시지를 상기 웹 서버로 전송하고, 상기 웹 서버로부터 상기 제1 HTML 콘텐츠가 포함된 응답 메시지를 수신하는 단계, 상기 제1 HTML 콘텐츠에서 내부 스크립트 콘텐츠를 추출하고, 상기 내부 스크립트 콘텐츠가 추출된 부분에 임의의 외부 스크립트 경로를 삽입하여 제2 HTML 콘텐츠를 생성하는 단계 및 상기 제2 HTML 콘텐츠를 상기 클라이언트 단말로 전송하는 단계를 포함할 수 있다.
상술한 기술적 과제를 해결하기 위한 본 발명의 또 다른 실시예에 따른 컴퓨터 프로그램은, 컴퓨팅 장치와 결합하여, 클라이언트 단말이 웹 서버로 제1 HTML 콘텐츠를 요청하는 HTML 요청 메시지를 수신하는 단계, 상기 HTML 요청 메시지를 수신함에 따라, 상기 클라이언트 단말에 대한 세션을 생성하는 단계, 상가 HTML 요청 메시지를 상기 웹 서버로 전송하고, 상기 웹 서버로부터 상기 제1 HTML 콘텐츠가 포함된 응답 메시지를 수신하는 단계, 상기 제1 HTML 콘텐츠에서 내부 스크립트 콘텐츠를 추출하고, 상기 내부 스크립트 콘텐츠가 추출된 부분에 임의의 외부 스크립트 경로를 삽입하여 제2 HTML 콘텐츠를 생성하는 단계 및 상기 제2 HTML 콘텐츠를 상기 클라이언트 단말로 전송하는 단계를 실행시키기 위하여 기록매체에 저장될 수 있다.
상술한 본 발명에 따르면, 실시간으로 웹 트래픽을 감시하고, 상기 웹 트래픽에 포함된 악성 스크립트를 사전에 탐지 및 차단함으로써, 악성 스크립트 실행에 따라 클라이언트 단말이 DDoS 공격 자원으로 이용되거나, 사용자 단말에 포함된 개인 정보가 유출되는 등의 피해를 예방할 수 있다. 또한, 기업 인트라넷(intranet)에 본 발명에 다른 악성 스크립트 탐지 장치가 설치되는 경우, 상기 기업 인트라넷의 전반적인 보안 수준을 향상시키는 효과가 있다.
또한, 캐시(cache) 기반으로 스크립트 콘텐츠의 악성 스크립트 분석 결과를 재활용함으로써 동일한 스크립트 콘텐츠에 대하여 반복하여 악성 스크립트 분석을 수행하거나 웹 서버로 동일한 HTML 콘텐츠 또는 스크립트 콘텐츠를 요청하는 것을 방지한다. 이에 따라, 악성 스크립트 분석에 소요되는 컴퓨팅 비용 및 웹 서버와의 통신에 요구되는 네트워크 비용을 절감하는 효과가 있다.
또한, 스크립트에 대한 분석 수행 후 클라이언트 단말이 요청한 HTML 콘텐츠를 전달하는 것이 아니라, 스크립트가 제거된 HTML 콘텐츠를 먼저 제공하고, 추후 스크립트 콘텐츠 요청에 따라 악성 스크립트 분석이 수행된 안전한 스크립트를 제공함으로써 웹 브라우저 로딩 시간 등 사용자가 체감하는 응답 시간을 최소화하는 효과가 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 악성 스크립트 탐지 시스템의 구성도이다.
도 2는 본 발명의 다른 실시예에 따른 악성 스크립트 탐지 장치의 기능 블록도이다.
도 3은 악성 스크립트 탐지 장치의 내부 구성 요소의 동작 및 주요 데이터 흐름을 설명하기 위한 도면이다.
도 4는 본 발명의 또 다른 실시예에 따른 악성 스크립트 탐지 장치의 하드웨어 구성도이다.
도 5는 본 발명의 또 다른 실시예에 따른 악성 스크립트 탐지 방법의 순서도이다.
도 6은 프록시부의 동작을 나타내는 순서도이다.
도 7은 콘텐츠 처리부의 동작을 나타내는 순서도이다.
도 8은 요청 메시지를 처리하는 단계의 상세 순서도이다.
도 9는 응답 메시지를 처리하는 단계의 상세 순서도이다.
도 10은 외부 스크립트 콘텐츠를 수집하는 단계의 상세 순서도이다.
도 11은 분석부의 동작을 나타내는 순서도이다.
도 12a 및 도 12b는 사후 처리가 수행되는 악성 스크립트 탐지 영역을 결정하는 단계를 설명하기 위한 도면이다.
도 13은 시그니처 관리부의 동작을 나타내는 순서도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 공통으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
명세서에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는 (comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
본 명세서에서 사용되는 용어의 정의는 다음과 같다.
웹 트래픽은 일반적으로 웹 브라우저를 통해 HTTP/HTTPS 프로토콜을 사용하여 발생하는 네트워크 트래픽을 의미한다.
포워드 프록시(Forward Proxy)는 클라이언트가 웹 서버에 접근하고자 할 때, 웹 서버의 주소를 프록시에 전달하여, 프록시가 요청된 내용을 가져오는 방식을 의미한다.
버킷(bucket)은 하나의 HTML 콘텐츠에 포함된 다수의 스크립트 컨텐츠 정보를 모아서 함께 처리하기 위해 묶은 정보의 단위를 의미한다.
시그니처(signature)는 스크립트 분석 엔진에서 악성 스크립트 탐지를 위해 사용되는 패턴 정보로서, 기존에 탐지된 악성 스크립트에 관한 패턴 정보를 가진 객체로 정의될 수 있다.
정적 시그니처는 YARA 시그니처 형태로 스크립트 내 키워드를 통하여 탐지하는 시그니처를 의미하고, 콜 트레이스 시그니처 또는 동적 시그니처는 악성 스크립트의 스크립트 수행 정보로서, 동적 분석에서 탐지할 때 사용되는 시그니처를 의미한다.
토큰은 의미를 가지고 있는 언어 요소를 의미한다. 정적 시그니처는 복수의 토큰을 포함할 수 있다.
결합 시그니처는 결합 대상이 되는 스크립트 간의 공통된 토큰을 추출하고 이를 결합하여 생성된 시그니처로 정의 될 수 있다.
YARA 시그니처는 YARA 툴에서 악성 코드 탐지에 사용되는 시그니처로서 YARA 툴의 탐지 규칙을 포함하는 시그니처이다.
IDS 시그니처는 IDS(Intrusion Detection System)에서 사용되는 시그니처로 IDS의 탐지 규칙을 포함하는 시그니처를 의미한다.
이하, 본 발명에 대하여 첨부된 도면에 따라 보다 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 악성 스크립트 탐지 시스템의 구성도이다.
도 1을 참조하면, 악성 스크립트 탐지 시스템(10)은 실시간으로 웹 트래픽을 수집하고, 수집된 웹 트래픽에서 클라이언트 단말 또는 상기 클라이언트 단말이 연결된 인트라넷에 악영향을 끼칠 수 있는 악성 스크립트를 탐지하고 차단하는 시스템이다. 도 1의 경우, 상기 악성 스크립트 탐지 시스템이 기업의 인트라넷(intranet)에 설치되어 외부의 네트워크로부터 유입되는 웹 트래픽에서 악성 스크립트를 탐지하는 것을 예로 도시하였다. 이때, 상기 네트워크는 근거리 통신망(Local Area Network; LAN), 광역 통신망(Wide Area Network; WAN), 개인 근거리 무선통신(Personal Area Network; PAN), 이동 통신망(mobile radio communication network), 위성 통신망 등과 같은 모든 종류의 유/무선 네트워크로 구현될 수 있다
악성 스크립트 탐지 시스템(10)은 악성 스크립트 탐지 장치(100)와 행위 분석 장치(300)를 포함할 수 있다. 다만, 도 1에는 본 발명의 실시예와 관련 있는 구성요소들만이 도시되어 있다. 따라서, 본 발명이 속한 기술분야의 통상의 기술자라면 도 1에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있음을 알 수 있다.
각 구성 요소를 살펴보면, 악성 스크립트 탐지 장치(100)는 실시간으로 웹 트래픽을 수집하고, 수집된 웹 트래픽에서 악성 스크립트를 사전에 탐지하고 차단하는 컴퓨팅 장치이다. 여기서, 상기 컴퓨팅 장치는 예를 들어 데스크톱(desktop), 랩탑(laptop) 등을 포함할 수 있으나, 이에 국한되는 것은 아니며 컴퓨팅 기능과 통신 기능을 갖춘 모든 종류의 장치를 포함할 수 있다. 단, 도 1에 도시된 바와 같이 일정 규모 이상의 네트워크에 대하여 웹 트래픽을 감시하고 악성 스크립트를 탐지하는 경우 고성능의 서버로 구성되는 것이 바람직할 수 있다.
상기 악성 스크립트 탐지 장치(100)는 바람직하게는 기 설정된 차단 정책에 따라 외부의 트래픽을 차단하는 방화벽 앞쪽에 설치될 수 있다. 이와 같은 경우, 방화벽을 통해 일차적으로 유해 트래픽을 차단하고, 차단되지 않은 트래픽 중에서 악성 스크립트를 탐지함으로써 보다 효율적으로 악성 스크립트 탐지를 수행할 수 있다.
악성 스크립트 탐지 장치(100)는 클라이언트 단말과 웹 서버 사이에서 포워드 프록시(forward proxy) 형태로 실시간 트래픽을 수집하고, 수집된 웹 트래픽을 클라이언트 단말의 세션(session) 단위로 관리하며, 수집된 웹 트래픽에 포함된 스크립트 콘텐츠에 대하여 시그니처 기반의 정적 분석과 샌드박스 기반 동적 분석을 수행한다.
또한, 악성 스크립트 탐지 장치(100)는 악성 스크립트가 입력되는 경우 상기 악성 스크립트의 탐지에 이용되는 시그니처를 자체적으로 생성할 수 있다.
또한, 악성 스크립트 탐지 장치(100)는 악성 스크립트에 대한 추가 분석이 필요할 경우 행위 분석 장치(300)에게 추가 분석 정보를 요청하고 분석 결과를 수신할 수 있다.
행위 분석 장치(300)는 악성 스크립트 탐지 장치(100)로부터 추가 분석이 필요한 스크립트에 대한 행위 분석을 요청 받은 경우, 해당 스크립트에 대한 행위 분석을 수행하고 결과를 송신하는 컴퓨팅 장치이다.
여기서 행위 분석이란, 웹 워커 등을 이용한 DoS 공격, 웹 스토리지/웹 캐시/히스토리 등의 정보 조작, 웹 소켓 탈취(hijacking)를 통한 요청 메시지 위조, 자동 완성/진동 기능을 이용하여 사용자를 속이는 사회 공학적 공격 및 정보 유출 등 악성 스크립트에서 수행될 수 있는 각종 행동들을 감시하여 특정 웹 사이트가 악성 스크립트를 배포하는지 여부를 판단하는 분석을 의미한다.
참고로, 도 1에서 악성 스크립트 탐지 장치(100)와 행위 분석 장치(300)는 물리적으로 독립된 장치로 도시되어 있으나, 동일한 장치 내의 서로 다른 로직의 형태로 구현될 수도 있다.
지금까지, 도 1을 참조하여 본 발명의 일 실시예에 따른 악성 스크립트 탐지 시스템(10)에 대하여 설명하였다. 상술한 바에 따르면, 상기 악성 스크립트 탐지 시스템은 실시간으로 웹 트래픽을 감시하고, 악성 스크립트를 사전에 탐지 및 차단함으로써, 악성 스크립트 실행에 따라 클라이언트 단말이 DDoS 공격 자원으로 이용되거나, 상기 클라이언트 단말에 포함된 개인 정보가 유출되는 등의 피해를 예방할 수 있다. 또한, 상기 악성 스크립트 탐지 시스템이 기업 내부 인트라넷에 설치되는 경우 상기 인트라넷의 보안 수준이 전반적으로 향상되는 효과가 있다.
다음으로, 도 2 내지 도 4를 참조하여 본 발명의 다른 실시예에 따른 악성 스크립트 탐지 장치(100)의 동작 및 구성에 대하여 설명한다.
도 2는 악성 스크립트 탐지 장치(100)의 기능 블록도이다.
도 2를 참조하면, 악성 스크립트 탐지 장치(100)는 트래픽 처리부(110), 콘텐츠 처리부(130), 분석부(150) 및 시그니처 관리부(170)를 포함할 수 있다. 다만, 도 2에는 본 발명의 실시예와 관련 있는 구성요소들만이 도시되어 있다. 따라서, 본 발명이 속한 기술분야의 통상의 기술자라면 도 2에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있음을 알 수 있다.
각 구성 요소를 살펴보면, 트래픽 처리부(110)는 클라이언트 단말과 웹 서버 사이에서 포워드 프록시 형태로 웹 트래픽을 실시간으로 수집하고, 웹 콘텐츠를 요청하거나 전송하는 등의 통신 기능을 수행한다. 여기서, 상기 웹 콘텐츠는 예를 들어 웹 페이지 문서를 가리키는 HTML 콘텐츠, 상기 HTML 콘텐츠에 포함된 스크립트를 가리키는 스크립트 콘텐츠 등이 될 수 있다.
트래픽 처리부(110)는 프록시부(110a)와 캐시부(110b)를 포함한다.
프록시부(110a)는 클라이언트 단말과 웹 서버의 중간에서 프록시 방식으로 웹 트래픽을 수집한다. 또한, 프록시부(110a)는 클라이언트 단말이 웹 서버로 제1 HTML 콘텐츠를 요청하는 HTML 요청 메시지, 상기 HTML 요청 메시지에 응답하여 웹 서버가 클라이언트 단말로 제1 HTML 콘텐츠를 전송하는 HTML 응답 메시지를 수신하고, 클라이언트 단말로 제2 HTML 콘텐츠를 전송하거나, 웹 서버로 상기 HTML 요청 메시지를 포워드한다.
여기서, 상기 제1 HTML 콘텐츠는 웹 서버가 제공하는 원본 HTML 콘텐츠를 의미하고, 상기 제2 HTML 콘텐츠는 상기 제1 HTML 콘텐츠에서 내부 스크립트 콘텐츠를 제거하고 임의의 외부 스크립트 경로를 삽입하여 수정된 콘텐츠를 의미한다. 즉, 프록시부(110)는 클라이언트 단말의 제1 HTML 콘텐츠 요청에 대해 내부 스크립트 콘텐츠가 제거된 제2 HTML 콘텐츠를 클라이언트 단말로 전송하고, 이후 상기 내부 스크립트 콘텐츠에 대한 악성 스크립트 분석을 수행한다. 이는, 내부 스크립트 콘텐츠와 제1 HTML 콘텐츠에 포함된 외부 스크립트 경로가 가리키는 외부 스크립트 콘텐츠에 대한 악성 스크립트 분석을 수행하는 동안, 클라이언트 단말의 브라우저를 통해 정적인 콘텐츠를 담고 있는 제2 HTML 콘텐츠가 먼저 로딩되게 하여 사용자가 체감하는 응답 시간을 최소화하기 위한 것으로 이해될 수 있다. 이하, 본 명세서에서 상기 원본 HMTL 콘텐츠 및 상기 수정된 콘텐츠는 각각 제1 HTML 콘텐츠 및 상기 제2 HTML 콘텐츠로 명명한다.
이외에도, 프록시부(110)는 악성 스크립트 탐지 장치(100)와 클라이언트 단말 및 상기 악성 스크립트 탐지 장치와 웹 서버 간에 데이터 통신 기능을 담당하고, HTTPS 프로토콜을 이용하는 웹 트래픽에 대한 암호화 및 복호화 기능을 수행할 수 있다. 이에 따라, 프록시부(110)는 SSL(Secure Socket Layer)로 암호화된 웹 트래픽 또한 처리할 수 있다.
캐시부(110b)는 제2 HTML 콘텐츠 또는 악성 스크립트 탐지에 따라 사후 처리가 수행된 안전한 스크립트 콘텐츠를 저장한다. 또한, 클라이언트 단말로부터 HTML 콘텐츠를 요청하는 HTML 요청 메시지 또는 스크립트 콘텐츠를 요청하는 스크립트 요청 메시지가 수신된 경우, 상기 요청 메시지에 대응되는 콘텐츠가 존재하는지 확인하고, 상기 대응되는 콘텐츠를 클라이언트 단말로 제공한다. 즉, 웹 서버로 제1 HTML 콘텐츠를 요청하여 얻어오거나, 악성 스크립트 분석을 수행하는 등의 처리 과정을 반복하여 수행하지 않고 캐시된 콘텐츠를 제공한다. 이에 따라, 악성 스크립트 분석에 요구되는 컴퓨팅 비용과 웹 서버에 제1 HTML 콘텐츠를 요청하고 수신하는데 소요되는 네트워크 비용 등이 절감될 수 있다.
캐시부(110b)는 클라이언트 단말에 바로 제공될 수 있는 콘텐츠를 보관하는 것으로 이해될 수 있으며, 상기 캐시부의 캐시 정책은 LRU(Least Resent Used), LFU(Least Frequently Used) 등 시스템의 목적에 따라 다양하게 설정될 수 있다.
다음으로, 콘텐츠 처리부(130)는 수집된 웹 트래픽에서 각 클라이언트 단말에 대한 세션을 생성하고, 웹 트래픽에서 HTML 콘텐츠와 내부 및 외부 스크립트 콘텐츠를 포함하는 웹 콘텐츠를 추출하거나 수집하며, 추출되거나 수집된 내부 및 외부 스크립트 콘텐츠의 악성 스크립트 분석 결과를 저장하는 기능을 수행한다. 여기서, 상기 악성 스크립트 분석 결과는 악성 스크립트 탐지 여부에 관련된 정보, 탐지된 악성 스크립트에 대하여 사후 처리가 수행된 안전한 스크립트 콘텐츠 등을 포함할 수 있다.
콘텐츠 처리부(130)는 버킷 관리부(130a) 및 웹 콘텐츠 관리부(130b)포함한다.
버킷 관리부(130a)는 상술한 기능 중 클라이언트 단말에 대한 세션 생성 기능 및 웹 콘텐츠 추출 기능을 담당한다. 보다 자세하게는, 상기 버킷 관리부는 프록시부(110a)가 HTML 요청 메시지를 수신하는 경우, 클라이언트 단말에 대한 세션을 생성하고, 웹 서버로부터 수신한 제1 HTML 콘텐츠에서 내부 스크립트 콘텐츠를 추출하며, 상기 내부 스크립트 콘텐츠가 추출된 부분에 임의의 외부 스크립트 경로를 삽입하여 제2 HTML 콘텐츠를 생성한다. 또한, 제1 HTML 콘텐츠에 외부 스크립트 경로가 포함된 경우, 상기 외부 스크립트 경로가 가리키는 웹 서버로부터 외부 스크립트 콘텐츠를 수집한다.
버킷 관리부(130a)는 상기 내부 스크립트 콘텐츠 및 상기 외부 스크립트 콘텐츠를 하나의 버킷으로 관리하고, 상기 버킷 단위로 스크립트 콘텐츠에 대한 악성 스크립트 분석이 수행되도록 분석부(150)로 전달한다.
웹 콘텐츠 관리부(130b)는 내부 스크립트가 제거된 제2 HTML 콘텐츠, 내부 및 외부 스크립트 콘텐츠를 포함하는 스크립트 콘텐츠, 상기 스크립트 콘텐츠에 대하여 수행된 악성 스크립트 분석 결과 등을 저장하고 관리한다.
또한, 웹 콘텐츠 관리부(130b)는 제2 HTML 콘텐츠, 사후 처리가 수행된 안전한 스크립트 콘텐츠 등을 캐시부(110b)에 저장되도록 전달한다.
분석부(150)는 스크립트 콘텐츠에 대하여 악성 스크립트 분석을 수행한다. 분석부(150)는 상기 악성 스크립트 분석을 수행하기 위해 정적 분석부(150a) 동적 분석부(150b)를 포함할 수 있다.
정적 분석부(150a)는 시그니처 관리부(170)가 생성한 시그니처 기반으로 스크립트 콘텐츠에 대한 악성 스크립트 검사를 수행한다. 또한, 동적 분석부(150b)는 샌드박스 기반으로 상기 스크립트 콘텐츠를 실행하여 동적 분석을 수행한다. 상기 정적 분석부 및 동적 분석부가 수행하는 악성 스크립트 분석에 대한 상세한 설명은 도 11을 참조하여 후술한다.
악성 스크립트 제거부(미도시)는 스크립트 콘텐츠에서 악성 스크립트가 탐지된 경우 악성 스크립트가 탐지된 부분을 제거하여 상기 스크립트 콘텐츠를 안전한 스크립트 콘텐츠로 만드는 사후 처리를 수행한다. 예를 들어, 상기 악성 스크립트 제거부는 정적 분석을 통해 시그니처를 구성하는 복수의 토큰이 탐지된 위치 정보를 이용하여 상기 복수의 토큰이 모두 포함되는 탐지 영역을 산출하고 상기 탐지 영역을 삭제함으로써 사후 처리를 수행할 수 있다. 악성 스크립트 제거부가 상기 탐지 영역을 산출하는 방법에 대한 자세한 사항은 도 12a 및 12b를 참조하여 후술한다.
시그니처 관리부(170)는 악성 스크립트가 입력된 경우, 자동으로 상기 악성 스크립트에 대한 시그니처를 생성한다. 상기 시그니처를 생성하는 방법에 대한 자세한 설명은 도 13을 참조하여 후술한다.
도 2의 각 구성 요소는 소프트웨어(Software) 또는, FPGA(Field Programmable Gate Array)나 ASIC(Application-Specific Integrated Circuit)과 같은 하드웨어(Hardware)를 의미할 수 있다. 그렇지만, 상기 구성 요소들은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니며, 어드레싱(Addressing)할 수 있는 저장 매체에 있도록 구성될 수도 있고, 하나 또는 그 이상의 프로세서들을 실행시키도록 구성될 수도 있다. 상기 구성 요소들 안에서 제공되는 기능은 더 세분화된 구성 요소에 의하여 구현될 수 있으며, 복수의 구성 요소들을 합하여 특정한 기능을 수행하는 하나의 구성 요소로 구현될 수도 있다.
지금까지 도 2를 참조하여, 악성 스크립트 탐지 장치(100)의 기능블록에 대하여 설명하였다. 다음으로, 보다 이해의 편의를 제공하기 위해, 악성 스크립트 탐지 장치(100)의 각 구성 요소가 동작하는 순서 및 주요 데이터 흐름에 대하여 도 3을 참조하여 설명한다. 도 3에서, A.HTML은 제1 HTML 콘텐츠를 의미하고, A1.HTML은 제2 HMTL 콘텐츠를 의미하며, A2.JS는 내부 스크립트 콘텐츠를 의미하고, B.JS는 외부 스크립트 콘텐츠를 의미한다. 또한, A'.HTML, A2'.JS, B'.JS는 각각 사후 처리가 수행된 제1 HTML 콘텐츠, 내부 스크립트 콘텐츠 및 외부 스크립트 콘텐츠를 의미한다.
도 3을 참조하면, 먼저 프록시부(110a)는 클라이언트 단말이 송신하는 HTML 요청 메시지를 웹 서버로 포워딩하여 제1 HTML 콘텐츠(A.HTML)가 포함된 응답 메시지를 수신한다(①). 프록시부(110a)는 상기 제1 HTML 콘텐츠(A.HTML)를 버킷 관리부(130a)로 전달한다(②). 버킷 관리부(130a)는 제1 HTML 콘텐츠(A.HTML)에서 내부 스크립트 콘텐츠(A2.JS)를 추출하여 제거하고, 제거된 부분에 임의의 외부 스크립트 경로를 삽입하여 제2 HTML 콘텐츠(A1.HTML)을 생성한다(③). 이때, 도 3에는 도시되어 있지 않으나, 프록시부(110a)가 HTML 요청 메시지를 수신한 경우, 상기 HTML 요청 메시지를 버킷 관리부(130a)로 전달하고, 버킷 관리부(130a)는 클라이언트 단말에 대한 세션을 생성할 수 있다.
다음으로, 버킷 관리부(130a)는 제2 HTML 콘텐츠(A1.HTML)를 캐시부(110b)로 전달하여 저장한다(④). 추후, 프록시부(110a)가 클라이언트 단말로부터 다시 제1 HTML 콘텐츠(A.HTML)에 대한 HTML 요청 메시지를 수신하면, 다시 웹 서버로부터 제1 HTML 콘텐츠(A1.HTML)을 수신할 필요 없이 캐시부(110b)에 캐시된 제2 HTML 콘텐츠(A1.HTML)를 제공할 수 있다.
다음으로, 버킷 관리부(130a)는 제1 HTML 콘텐츠(A.HTML)에 외부 스크립트가 포함된 경우 상기 외부 스크립트 경로가 가리키는 웹 서버로부터 외부 스크립트 콘텐츠(B.JS)를 수집한다(⑤). 외부 스크립트 콘텐츠(B.JS)가 수집되면, 버킷 관리부(130a)는 제1 HTML 콘텐츠(A.HTML)과 외부 스크립트 콘텐츠(B.JS)를 웹 콘텐츠 관리부(130b)를 통해 저장소에 저장한다(⑥, ⑦). 단, 구현 방식에 따라, 웹 콘텐츠 관리부(130b)는 제2 HTML 콘텐츠(A1.HTML), 내부 스크립트 콘텐츠(A2.JS) 및 외부 스크립트 콘텐츠(B.JS)로 구분하여 저장할 수도 있다.
다음으로, 버킷 관리부(130a)는 내부 스크립트 콘텐츠(A2.JS)가 포함된 제1 HTML 콘텐츠(A.HTML)와 외부 스크립트 콘텐츠를 분석부(150)로 전달하고(⑧), 분석부(150)는 시그니처 관리부(170)가 생성한 시그니처를 조회하고, 이를 이용하여 악성 스크립트 분석을 수행한다(⑨, ⑩). 여기서, 버킷 관리부(130a)는 클라이언트 단말이 요청한 HTML 콘텐츠(A.HTML) 내에 포함된 스크립트 콘텐츠(A2.JS, B.JS)를 모아서 버킷 단위로 한번에 분석을 요청할 수 있다. 참고로, 상기 버킷에는 클라이언트 단말의 세션 단위로 추출되거나 수집된 스크립트 콘텐츠가 포함되므로 상기 버킷 단위는 클라이언트 단말의 세션 단위로 수집된 스크립트 콘텐츠와 동일할 수 있다.
다음으로, 분석부(150)는 악성 스크립트 분석 결과와 악성 스크립트 탐지에 따라 사후 처리가 수행된 안전한 스크립트 콘텐츠를 버킷 관리부(130a)로 전달한다(⑪). 버킷 관리부(130a)는 악성 스크립트 분석 결과와 사후 처리된 안전한 스크립트 콘텐츠를 웹 콘텐츠 관리부(130b)를 통해 저장소에 저장한다(⑫, ⑬). 또한, 사후 처리된 안전한 콘텐츠(A'.HTML, A2'.JS, B'.JS 등)는 캐시부(110b)에 저장된다. 추후, 프록시부(110a)가 클라이언트 단말로부터 다시 제1 HTML 콘텐츠(A.HTML)에 대한 HTML 요청 메시지를 수신하면, 다시 웹 서버로부터 제1 HTML 콘텐츠(A1.HTML)을 수신할 필요 없이 캐시부(110b)가 사후 처리된 안전한 콘텐츠(A'.HTML, A2'.JS, B'.JS 등)를 바로 클라이언트 단말에게 제공할 수 있다(⑮).
또한, 도 3에는 도시되어 있지 않으나, 클라이언트 단말은 제2 HTML 스크립트 콘텐츠를 수신하여 웹 페이지를 로딩한 후, 제2 HTML 스크립트 콘텐츠에 포함된 외부 스크립트 경로가 가리키는 외부 스크립트 콘텐츠를 실행하기 위해 스크립트 요청 메시지를 송신할 수 있다. 이때, 요청되는 외부 스크립트 콘텐츠는 제1 HTML 스크립트에서 추출된 내부 스크립트 콘텐츠(A2.JS)와 수집된 외부 스크립트를 콘텐츠(B.JS)를 포함한다. 즉, 내부 스크립트 콘텐츠(A2.JS)가 추출되고 임의의 외부 스크립트 경로가 삽입됨에 따라, 클라이언트 단말 측에서는 내부 스크립트 콘텐츠(A2.JS) 또한 외부 스크립트 콘텐츠로 인식되는 것이다.
프록시부(110a)는 상기 스크립트 요청 메시지를 수신하고, 사후 처리가 수행된 안전한 스크립트 콘텐츠(A2'.JS, B'.JS)를 송신한다. 이때, 상기 안전한 스크립트 콘텐츠(A2'.JS, B'.JS)는 캐시부(110b) 또는 웹 콘텐츠 관리부(130b)에 의해 제공될 수 있다.
지금까지 도 3을 참조하여, 악성 스크립트 탐지 장치(100)의 각 구성 요소의 동작 및 주요 데이터 흐름에 대하여 설명하였다. 다음으로, 도 4를 참조하여 본 발명의 또 다른 실시예에 따른 악성 스크립트 탐지 장치(100)의 하드웨어 구성에 대하여 설명한다.
도 4를 참조하면, 악성 스크립트 탐지 장치(100)는 하나 이상의 프로세서(101), 버스(105), 네트워크 인터페이스(107), 프로세서(101)에 의하여 수행되는 컴퓨터 프로그램을 로드(load)하는 메모리(103)와, 악성 스크립트 탐지 소프트웨어(109a)를 저장하는 스토리지(109)를 포함할 수 있다. 다만, 도 4에는 본 발명의 실시예와 관련 있는 구성요소들만이 도시되어 있다. 따라서, 본 발명이 속한 기술분야의 통상의 기술자라면 도 4에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있음을 알 수 있다.
프로세서(101)는 악성 스크립트 탐지 장치(100)의 각 구성의 전반적인 동작을 제어한다. 프로세서(101)는 CPU(Central Processing Unit), MPU(Micro Processor Unit), MCU(Micro Controller Unit), 또는 본 발명의 기술 분야에 잘 알려진 임의의 형태의 프로세서를 포함하여 구성될 수 있다. 또한, 프로세서(101)는 본 발명의 실시예들에 따른 방법을 실행하기 위한 적어도 하나의 애플리케이션 또는 프로그램에 대한 연산을 수행할 수 있다. 악성 스크립트 탐지 장치(100)는 하나 이상의 프로세서를 구비할 수 있다.
메모리(103)는 각종 데이터, 명령 및/또는 정보를 저장한다. 메모리(103)는 본 발명의 실시예들에 따른 악성 스크립트 탐지 방법(이하, '악성 스크립트 탐지 방법')을 실행하기 위하여 스토리지(109)로부터 하나 이상의 프로그램(109a)을 로드할 수 있다. 도 4에서 메모리(103)의 예시로 RAM이 도시되었다.
버스(105)는 악성 스크립트 탐지 장치(100)의 구성 요소 간 통신 기능을 제공한다. 버스(105)는 주소 버스(Address Bus), 데이터 버스(Data Bus) 및 제어 버스(Control Bus) 등 다양한 형태의 버스로 구현될 수 있다.
네트워크 인터페이스(107)는 악성 스크립트 탐지 장치(100)의 유무선 인터넷 통신을 지원한다. 또한, 네트워크 인터페이스(107)는 인터넷 통신 외의 다양한 통신 방식을 지원할 수도 있다. 이를 위해, 네트워크 인터페이스(107)는 본 발명의 기술 분야에 잘 알려진 통신 모듈을 포함하여 구성될 수 있다.
네트워크 인터페이스(107)는 클라이언트 단말과 웹 서버 사이의 웹 트래픽을 실시간으로 수집한다.
스토리지(109)는 상기 하나 이상의 프로그램(109a)을 비임시적으로 저장할 수 있다. 도 4에서 상기 하나 이상의 프로그램(109a)의 예시로 악성 스크립트 탐지 소프트웨어(109a)가 도시되었다.
스토리지(109)는 ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리 등과 같은 비휘발성 메모리, 하드 디스크, 착탈형 디스크, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터로 읽을 수 있는 기록 매체를 포함하여 구성될 수 있다.
악성 스크립트 탐지 소프트웨어(109a)는 본 발명의 실시예에 따라 클라이언트 단말과 웹 서버 사이의 웹 트래픽을 실시간으로 수집하고, 세션 및 콘텐츠 별로 수집된 데이터를 관리하며, 정적 분석 및 동적 분석을 통해 악성 스크립트를 탐지하는 기능을 수행한다.
자세하게는, 악성 스크립트 탐지 소프트웨어(109a)는 메모리(103)에 로드되어, 하나 이상의 프로세서(101)에 의해, 클라이언트 단말이 웹 서버로 제1 HTML 콘텐츠를 요청하는 HTML 요청 메시지를 수신하는 오퍼레이션, 상기 HTML 요청 메시지를 수신함에 따라, 상기 클라이언트 단말에 대한 세션을 생성하는 오퍼레이션, 상가 HTML 요청 메시지를 상기 웹 서버로 전송하고, 상기 웹 서버로부터 상기 제1 HTML 콘텐츠가 포함된 응답 메시지를 수신하는 오퍼레이션, 상기 제1 HTML 콘텐츠에서 내부 스크립트 콘텐츠를 추출하고, 상기 내부 스크립트 콘텐츠가 추출된 부분에 임의의 외부 스크립트 경로를 삽입하여 제2 HTML 콘텐츠를 생성하는 오퍼레이션; 및 상기 제2 HTML 콘텐츠를 상기 클라이언트 단말로 전송하는 오퍼레이션을 수행할 수 있다.
지금까지, 도 2 내지 도 4를 참조하여 본 발명의 실시예에 따른 악성 스크립트 탐지 장치(100)의 동작 및 구성에 대하여 설명하였다.
다음으로, 도 5 내지 도 14를 참조하여 본 발명의 또 다른 실시예에 따른 악성 스크립트 탐지 방법에 대하여 상세하게 설명한다. 이하, 상기 악성 스크립트 탐지 방법의 각 단계는, 악성 스크립트 탐지 장치(100)에 의해 수행되는 것으로 가정하며, 이해의 편의를 제공하기 위해 전반적인 단계 설명 이후 도 2에 도시된 각 기능 블록 단위로 상기 악성 스크립트 탐지 방법이 수행되는 과정을 설명한다.
참고로, 설명의 편의를 위해 상기 악성 스크립트 탐지 방법에 포함되는 각 동작의 주체는 그 기재가 생략될 수 있으며, 악성 스크립트 탐지 방법의 각 단계는 악성 스크립트 탐지 소프트웨어(109a)가 프로세서(101)에 의해 실행됨으로써, 악성 스크립트 탐지 방법 장치(100)에서 수행되는 오퍼레이션일 수 있다.
먼저, 도 5는 악성 스크립트 탐지 방법의 전반적인 단계를 나타내는 순서도이다.
도 5를 참조하면, 악성 스크립트 탐지 장치(100)는 웹 트래픽을 실시간으로 수집한다(S100). 상술한 바와 같이, 웹 트래픽은 HTTP 또는 HTTPS 프로토콜에 의해 송수신되는 트래픽을 의미한다. 악성 스크립트 탐지 장치(100)는 상기 웹 트래픽을 실시간으로 수집하기 위해 클라이언트 단말과 웹 서버 사이에서 포워드 프록시 방식으로 동작한다.
다음으로, 악성 스크립트 탐지 장치(100)는 수집된 트래픽의 종류(type)에 따라 요청 메시지(REQ)와 응답 메시지(RES)로 분류한다(S101). 여기서, 상기 요청 메시지는 클라이언트 단말이 웹 서버로 제1 HTML 콘텐츠를 요청하는 HTML 요청 메시지 및 스크립트 콘텐츠를 요청하는 스크립트 요청 메시지를 포함한다. 또한, 응답 메시지는 요청에 따라 웹 서버가 클라이언트 단말로 전송하는 메시지로, 제1 HTML 콘텐츠가 포함된 HTML 응답 메시지 및 스크립트 콘텐츠가 포함된 스크립트 응답 메시지를 포함한다.
트래픽의 종류가 요청 메시지인 경우, 악성 스크립트 탐지 장치(100)는 캐시에 상기 요청 메시지에 대한 콘텐츠가 있는지 조회하고(S102), 캐시 히트(hit)인 경우 캐시에 저장된 콘텐츠를 이용하여 클라이언트 단말로 응답 메시지를 전송한다(S107). 여기서 상기 콘텐츠는 상술한 바와 같이 내부 스크립트 콘텐츠가 제거된 제2 HTML 콘텐츠, 사후 처리가 수행된 안전한 스크립트 콘텐츠 등이 될 수 있다.
캐시 상에 해당하는 콘텐츠가 존재하지 않는 경우, 악성 스크립트 탐지 장치(100)는 요청 메시지가 기 존재하는 세션에 대한 요청인지 확인한다(S103). 또한, 이미 존재하는 세션에 대한 요청 메시지라면 기 저장된 악성 스크립트 분석 결과가 있는지 조회한다(S106). 여기서, 기 존재하는 세션에 대한 요청 메시지인 경우 악성 스크립트 분석 결과를 조회하는 이유는 HTML 요청 메시지 수신 시 세션이 생성되고 이때 내부/외부 스크립트 콘텐츠에 대한 수집 및 악성 스크립트 분석이 수행되기 때문이다. 따라서, 세션이 생성된 이후에는 상기 악성 스크립트 분석에 따른 악성 스크립트 분석 결과가 산출될 것이므로, 기 존재하는 세션에 대한 요청 메시지인 경우 악성 스크립트 분석 결과를 조회하는 것으로 이해할 수 있다. 또한, 상기 악성 스크립트 분석 결과가 존재하는 경우 클라이언트 단말로 악성 스크립트 분석 결과를 전송한다(S107).
기 존재하는 세션에 대한 요청이 아닌 신규 요청 메시지인 경우, 요청 메시지에 대한 새로운 세션을 생성하는 등의 처리를 수행하고(S104) 요청 메시지에 대한 웹 콘텐츠를 획득하기 위해 상기 요청 메시지를 웹 서버로 포워드한다(S105). 요청 메시지 처리 단계(S104)에 대한 자세한 설명은 도 8을 참조하여 후술한다.
트래픽의 종류가 응답 메시지의 경우, 악성 스크립트 탐지 장치(100)는 먼저 기 저장된 악성 스크립트 분석 결과가 존재하는지 조회한다(S108). 구현 방식에 따라, 악성 스크립트 탐지 장치(100)는 캐시 또는 저장소에서 상기 악성 스크립트 분석 결과가 존재하는지 조회할 수 있다. 악성 스크립트 분석 결과가 존재하는 경우, 악성 스크립트 탐지 장치(100)는 분석 결과와 함께 악성 스크립트가 안전하게 사후 처리된 스크립트 콘텐츠를 이용하여 응답 메시지를 사용자에게 전송한다(S107).
분석 결과가 존재하지 않는 경우, 악성 스크립트 탐지 장치(100)는 수신한 응답 메시지를 저장하고 버킷 단위로 스크립트 콘텐츠를 수집하는 등의 처리를 수행한다 (S109). 응답 메시지 처리 단계(S109)에 대한 자세한 설명은 도 9를 참조하여 후술한다.
또한, 악성 스크립트 탐지 장치(100)는 응답 메시지에 포함된 웹 콘텐츠의 스크립트에 대한 정적 분석 및/또는 동적 분석을 수행하고(S110), 분석 결과 악성 스크립트가 탐지된 경우 상기 악성 스크립트 삭제 등의 사후 처리를 수행하며(S111), 안전한 스크립트 콘텐츠를 포함하는 악성 스크립트 분석 결과를 저장소 및/또는 캐시에 저장한다.
지금까지, 도 5를 참조하여 본 발명에 실시예에 따른 악성 스크립트 탐지 방법의 전반적인 단계에 대하여 설명하였다. 단, 이는 본 발명의 목적을 달성하기 위한 바람직한 실시예일 뿐이며, 필요에 따라 일부 단계가 추가되거나 삭제될 수 있음은 물론이다.
지금부터 도 2에 도시된 각 기능 블록 단위로 상기 악성 스크립트 탐지 방법이 수행되는 과정을 도 6 내지 도 14를 참조하여 설명한다.
먼저, 도 6을 참조하여 트래픽 처리부(110)에 의해 수행되는 세부 단계에 대하여 설명한다.
트래픽 처리부(110)는 실시간으로 클라이언트 단말과 웹 서버 사이의 트래픽을 수집하고, 수집된 트래픽이 웹 트래픽인지 확인한다(S200). 자세하게는, 수집된 트래픽에 포함된 메시지 헤더를 참조하여 HTTP 또는 HTTPS 프로토콜에 따른 웹 트래픽인지 확인하고, 웹 트래픽인 아닌 경우 수집 대상에 제외한다(S201).
HTTP 또는 HTTPS 프로토콜에 따른 웹 트래픽인 경우, 트래픽 처리부(110)는 HTTPS 프로토콜에 대한 트래픽인지 확인하고, HTTPS 프로토콜인 경우 SSL(Secure Socket Layer)에 따른 암/복호화 처리를 수행한다(S202, S203). 이에 따라, 악성 스크립트 탐지 장치(100)는 암호화된 웹 트래픽에 대해서도 수집 및 악성 스크립트 탐지를 수행할 수 있다.
다음으로, 트래픽 처리부(110)는 상술한 바와 같이 수집한 웹 트래픽의 메시지 종류를 확인하고(S204), 응답 메시지인 경우 해당 메시지를 콘텐츠 처리부(130)로 전달하여 처리한다(S205, S206).
요청 메시지인 경우, 트래픽 처리부(110)는 상기 요청 메시지에 대한 응답 메시지가 캐시부(110a)에 존재하는지 조회하고(S207), 캐시부(110a)에 존재하는 경우(cache hit) 상기 캐시부에 저장된 콘텐츠를 이용하여 응답 메시지를 생성하고 클라이언트 단말로 전송한다(S208, S209).
캐시부(110a)에 존재하지 않는 경우(cache miss)에 존재하지 않는 경우, 트래픽 처리부(110)는 요청 메시지를 콘텐츠 처리부(130)로 전달하여 클라이언트 단말에 대한 세션을 생성하고, 이를 웹 서버로 포워드한다(S211, 212).
지금까지, 트래픽 처리부(110)에 의해 수행되는 세부 단계에 대하여 설명하였다. 다음으로, 도 7을 참조하여 콘텐츠 처리부(130)에 의해 수행되는 세부 단계에 대하여 설명한다.
먼저, 콘텐츠 처리부(130)는 트래픽 처리부(110)로부터 요청 또는 응답 메시지를 수신한다(S300). 여기서, 다음으로, 콘텐츠 처리부(130)는 수신한 메시지에 포함된 콘텐츠의 타입을 확인한다(S301). 즉, 수신된 메시지에 이미지 등의 콘텐츠가 포함된 경우는 악성 스크립트 분석 대상이 아니므로 이와 같은 콘텐츠가 포함된 메시지는 처리하지 않고 통과시킨다(S302).
콘텐츠 타입이 스크립트 콘텐츠 또는 HTML 콘텐츠인 경우, 콘텐츠 처리부(130)는 수신된 메시지의 종류가 요청 메시지 및 응답 메시지 중 어느 메시지에 해당하는지 확인한다(S303). 수신된 메시지가 요청 메시지인 경우, 세션을 생성하는 등의 단계를 수행하여 요청 메시지를 처리한다(S304). 상기 요청 메시지 처리 단계(S304)에 대한 자세한 설명은 도 8을 참조하여 후술한다.
수신된 메시지가 응답 메시지인 경우, 콘텐츠 처리부(130)는 해당 메시지에 대한 악성 스크립트 분석 결과가 존재하는지 확인한다(S305). 악성 스크립트 분석 결과가 존재하는 경우, 악성 스크립트가 사후 처리된 안전한 콘텐츠(A'.HTML, B'.JS) 등의 악성 스크립트 분석 결과를 이용하여 응답 메시지를 생성(RES)하고 상기 응답 메시지(RES)를 트래픽 처리부(110)를 통해 클라이언트 단말로 송신하도록 한다(S307, S308).
분석 결과가 존재하지 않는 경우, 콘텐츠 처리부(130)는 응답 메시지에 대한 악성 스크립트 분석 등의 처리 과정을 수행한다(S306). 상술한 응답 메시지 처리 단계(S306)에 대한 자세한 설명은 도 9를 참조하여 후술한다.
지금까지, 도 7을 참조하여 콘텐츠 처리부(130)에 의해 수행되는 세부 단계에 대하여 설명하였다. 다음으로, 도 8을 참조하여 콘텐츠 처리부(130)가 요청 메시지를 처리하는 단계(S104, S304)에 대하여 설명한다.
먼저, 콘텐츠 처리부(130)는 수신한 요청 메시지가 기 생성된 세션에 대한 메시지인지 확인한다(S400, S401). 생성되지 않은 세션에 대한 요청 메시지인 경우, 콘텐츠 처리부(130)는 새로운 세션을 생성하고, 세션과 관련된 정보를 저장소에 저장한다(S402, S403). 상술한 바와 같이, 신규 세션이 생성되는 메시지는 예를 들어 클라이언트 단말이 제1 HTML 콘텐츠를 요청하는 HTML 요청 메시지가 될 수 있다. 이후, 콘텐츠 처리부(130)는 요청 메시지에 대한 HTML 콘텐츠를 얻기 위해 트래픽 처리부(110)로 전달하고, 트래픽 처리부(110)는 상기 요청 메시지를 웹 서버로 포워드한다.
요청 메시지에 대한 세션이 기 존재하는 경우, 콘텐츠 처리부(130)는 저장소에서 해당 요청 메시지에 대한 악성 스크립트 분석 결과가 존재하는지 조회한다(S405). 이때 요청 메시지는 예를 들어 스크립트 요청 메시지가 될 수 있다. 분석 결과가 존재하는 경우, 콘텐츠 처리부(130)는 분석 결과로부터 사후 처리된 안전한 스크립트 콘텐츠(A2'.JS)를 추출하고 추출된 스크립트 콘텐츠를 이용하여 응답 메시지를 생성하며, 이를 트래픽 처리부(110)로 전달한다(S406, S410, S411, S412). 트래픽 처리부(110)는 상기 응답 메시지를 클라이언트 단말로 송신하게 된다.
분석 결과가 존재하지 않는 경우, 콘텐츠 처리부(130)는 기 설정된 시간을 대기 후 다시 분석 결과를 조회한다(S405). 기 설정된 대기 시간을 초과한 경우는 더 이상 분석 결과를 조회하지 않고 처리 결과(분석 결과 Timeout)를 저장소에 저장하고 종료한다(S408, S409).
지금까지, 도 8을 참조하여 콘텐츠 처리부(130)가 요청 메시지를 처리하는 단계(S104, S304)에 대하여 설명하였다. 다음으로, 도 9를 참조하여 콘텐츠 처리부(130)가 응답 메시지를 처리하는 단계(S109, S306)에 대하여 설명한다.
먼저, 콘텐츠 처리부(130)는 수신한 응답 메시지와 상기 응답 메시지에 포함된 제1 HTML 콘텐츠를 저장소에 저장한다(S501). 다음으로, 콘텐츠 처리부(130)는 수신한 제1 HTML 콘텐츠에 스크립트 콘텐츠가 포함되어 있는지 확인한다(S502). 스크립트 콘텐츠가 포함되어 있지 않는 경우는 악성 스크립트 분석 대상이 존재하지 않으므로 처리 과정이 종료된다(S509).
스크립트 콘텐츠가 포함되어 있는 경우, 콘텐츠 처리부(130)는 제1 HTML 콘텐츠(A.HTML)에서 내부 스크립트 콘텐츠(A2.JS)를 추출한다(S503). 보다 자세하게는, 상기 제1 HTML 콘텐츠(A.HTML)에 내부 스크립트 콘텐츠(A2.JS)가 포함되는 경우, 상기 내부 스크립트 콘텐츠를 추출하여 제거하고 임의의 외부 스크립트 경로를 추가하여 제2 HTML 콘텐츠(A1.HTML)를 생성한다. 또한, 구현 방식에 따라 제1 HTML 콘텐츠에 외부 스크립트 경로가 존재하는 경우 상기 외부 경로의 스크립트의 경로에 세션 ID를 추가하여 상기 제2 HTML 콘텐츠를 수정한다(S504).
다음으로, 콘텐츠 처리부(130)는 제2 HTML 콘텐츠를 캐시부(110a)에 저장한 후, 응답 메시지로 생성하여 트래픽 처리부(110)로 전달한다(S505). 최종적으로 트래픽 처리부(110)는 상기 생성된 응답 메시지를 클라이언트 단말로 송신하게 된다.
또한, 콘텐츠 처리부(130)는 제1 HTML 콘텐츠에 외부 스크립트 경로가 존재하는 경우 상기 외부 스크립트 콘텐츠를 수집한다(S507). 외부 스크립트 경로 수집 단계(S507)에 대한 상세한 설명은 도 10을 참조하여 후술한다. 또한, 콘텐츠 처리부(130)는 추출된 내부 스크립트 콘텐츠와 수집된 외부 스크립트 콘텐츠를 분석부(150)로 전달하여 악성 스크립트 분석을 요청하고 결과를 수신한다(S508).
지금까지, 도 9를 참조하여 콘텐츠 처리부(130)가 응답 메시지를 처리하는 단계(S109, S306)에 대하여 설명한다. 다음으로, 도 10을 참조하여 콘텐츠 처리부(130)가 외부 스크립트 경로를 수집하는 단계(S507)에 대하여 설명한다.
콘텐츠 처리부(130)는 제1 HTML 콘텐츠(A.HTML)에 외부 스크립트 경로가 포함되어 있는 경우(S600, 상기 외부 스크립트 경로가 가리키는 웹 서버에 요청하여 외부 스크립트 콘텐츠를 수집한다(S601).
다음으로, 웹 서버로부터 요청한 외부 스크립트 콘텐츠가 수신된 경우(S602), 상기 수신된 외부 스크립트 콘텐츠를 저장소에 저장하고(S607), 요청한 외부 스크립트 콘텐츠가 수신되지 않는 경우 기 설정된 대기 시간 동안 대기한다(S603). 구현 방식에 따라, 상기 대기 시간이 초과된 경우, 콘텐츠 처리부(130)는 해당 외부 스크립트 콘텐츠 가 누락되었다는 정보를 저장할 수 있다(S605, S606, S606). 또한, 모든 외부 스크립트 콘텐츠에 대하여 상술한 단계(S602 내지 S607)를 반복한다(S608, S609).
지금까지, 도 10을 참조하여 콘텐츠 처리부(130)가 외부 스크립트 경로를 수집하는 단계(S507)에 대하여 설명하였다. 다음으로, 도 11을 참조하여 분석부(150)에 의해 수행되는 세부 단계에 대하여 설명한다.
분석부(150)는 추출된 내부 스크립트 콘텐츠 및 수집된 외부 스크립트 콘텐츠에 대한 정적 분석 및/또는 동적 분석을 수행한다. 먼저, 정적 분석을 수행하기 위해, 분석부(150)는 기 생성된 정적 시그니처를 조회한다(S700). 상기 정적 시그니처는 시그니처 관리부(170)에 의해 생성될 수 있으며 예를 들어 YARA 시그니처가 될 수 있다.
다음으로, 분석부(150)는 스크립트 콘텐츠에서 시그니처 기반의 정적 분석을 수행하여 악성 스크립트를 탐지한다(S701). 상기 시그니처 기반의 정적 분석은 당해 기술 분야에서 널리 알려진 것이므로 이에 대한 상세한 설명은 생략한다.
스크립트 콘텐츠에서 악성 스크립트가 탐지된 경우, 분석부(150)는 분석 대상 콘텐츠에서 악성 시그니처가 탐지된 영역을 결정하고(S707), 상기 탐지된 영역에서 악성 코드를 제거하는 등의 사후 처리를 수행하며 악성 스크립트 분석 결과를 저장한다(S708). 상기 탐지 영역을 결정하는 단계(S707)에 대한 자세한 설명은 추후 도 12를 참조하여 부연 설명한다.
시그니처 기반의 정적 분석을 통해 악성 시그니처가 탐지되지 않은 경우, 분석부(150)는 기 설정된 정책에 따라 동적 분석을 수행한다. 예를 들어, 분석부(150)는 분석 대상 콘텐츠에 대하여 HTML5 태그 사용 여부, 자바 스크립트 API 사용 여부 및 난독화 여부를 검사하고, 상기 검사된 결과에 따라 동적 분석 수행 여부를 결정한다(S703 내지 S706). 도 11의 도면에 도시되어 있지 않으나, 동적 분석이 필요하다고 결정된 경우, 분석부(150)는 분석 대상 콘텐츠에 대하여 동적 분석을 수행할 수 있다. 상기 동적 분석을 수행하는 단계는 추후 도 13을 참조하여 후술한다.
지금까지, 도 11을 참조하여 분석부(150)에 의해 수행되는 세부 단계에 대하여 설명하였다. 다음으로, 도 12a 및 도 12b를 참조하여 분석부(150)가 시그니처 탐지 영역을 결정하는 단계(S707)에 대하여 부연 설명한다.
분석부(150)는 악성 시그니처 기반으로 스크립트 콘텐츠에 대한 정적 분석을 수행하고, 상기 스크립트 콘텐츠에서 악성 시그니처가 탐지된 위치를 이용하여 사후 처리가 수행될 탐지 영역을 결정한다.
구체적으로, 분석부(150)는 도 12b에 도시된 바와 같이 시그니처에 포함된 특정 토큰이 모두 최소한 한번은 들어가는 탐지 영역을 결정하기 위해 다음의 단계를 수행한다.
먼저, 분석부(150)는 시그니처 안의 토큰이 스크립트에서 발견된 위치를 각 그룹으로 나눈다. 자세하게는, 분석부(150)는 특정 토큰이 처음 발견된 위치의 그룹(G1)과 특정 토큰이 가장 마지막을 발견된 위치 그룹(G2)으로 그룹핑한다(S801, S802). 참고로, 시그니처의 특정 토큰은 한 번 혹은 여러 번 나타날 수 있다. 한 번 나타날 경우 특정 토큰의 위치 값은 그룹(G1)과 그룹(G2)에 같은 값이 들어가게 되고, 여러 번 나타나면 위치 값이 가장 작은 값이 그룹(G1)에, 위치 값이 가장 큰 값이 그룹(G2)에 들어가게 된다.
다음으로, 분석부(150)는 각 그룹 내의 최소값과 최대값을 구한다(S802, S804). 또한, 분석 대상 콘텐츠에서 탐지 영역(G)을 가리키는 최소값(G.min)과 최대값(G.max)를 구하기 위하여, 분석부(150)는 탐지 영역(G)의 최소값(G.min)을 그룹(G2)의 최소값(G2.min)으로 설정한다(S805). 다음으로, 최소값(G.min)이 그룹(G1)의 최대값(G1.max)보다 큰 경우, 최소값(G.min)을 그룹(G1)의 최대값(G1.max)으로 설정한다(S806, S807, S808). 또한, 탐지 영역(G)의 최대값(G.max)이 그룹(G2)의 최소값(G2.min)보다 작은 경우, 탐지 영역(G)의 최대값(G.max)을 그룹(G2)의 최소값(G2.min)으로 설정한다(S809, S810, S811). 이를 표로 정리하면 아래의 표 1과 같다. 즉, 탐지 영역(G)을 가리키는 최소값(G.min)과 최대값(G.max)은 상술한 2개의 조건에 따라 아래의 4가지 경우로 나타나게 된다.
(G.min, G.max) G2.min > G1.max G2.min < G1.max
G1.max < G2.min (G1.max, G2.min) (G2.min, G2.min)
G1.max > G2.min (G1.max, G1.max) (G2.min, G1.max)
다음으로, 분석부(150)는 탐지 영역 내에 탐지 시그니처의 모든 토큰이 있는지 확인한다(S811). 만약 누락된 토큰이 있을 경우, 탐지 영역(G)은 (G1.min, G2.max)로 설정한다(S812).
분석부(150)는 탐지 영역(G)이 결정되는 경우, 상기 탐지 영역의 스크립트 코드를 삭제하는 등의 사후 처리를 수행하여 악성 스크립트가 탐지된 스크립트 콘텐츠를 안전한 스크립트 콘텐츠로 만들 수 있다.
다음으로, 도 12a 및 도 12b를 참조하여 분석부(150)가 시그니처 탐지 영역을 결정하는 단계(S707)에 대하여 설명하였다. 다음으로, 도 14를 참조하여 시그니처 관리부(170)가 시그니처를 생성하는 단계에 대하여 간략하게 설명한다.
상술한 바와 같이 시그니처 관리부(170)는 악성 스크립트가 입력된 경우 자동으로 입력된 악성 스크립트에 대한 시그니처를 생성할 수 있고, 구체적인 생성 단계는 다음과 같다.
먼저, 시그니처 관리부(170)는 정적 시그니처로 생성하고자 하는 악성 스크립트 정보가 입력된 경우 입력된 악성 스크립트에서 주석을 제거한다(S901). 다음으로, 시그니처 관리부(170)는 악성 스크립트에서 띄어쓰기, 특수 문자 등을 기준으로 파싱하여 복수의 토큰을 추출한다(S902). 상기 토큰은 일종의 키워드로 악성 스크립트 내 의미를 가지는 문자열을 가리킨다.
다음으로, 시그니처 관리부(170)는 기 설정된 보편적인 토큰과 길이가 3글자 이하인 토큰을 제거한다(S903). 보편적인 토큰은 일반적인 키워드로 악성 스크립트의 특징을 나타내기 힘든 정보를 의미한다. 상기 보편적인 토큰이 TF-IDF를 통해 높은 값이 산출되어 시그니처에 포함되는 경우, 악성 스크립트 탐지 오류가 발생할 확률이 높으므로 미리 제거하는 것으로 이해될 수 있다.
다음으로, 시그니처 관리부(170)는 남은 토큰을 이용하여 TF-IDF 값을 계산한다(S904). 상기 TF-IDF는 당해 기술 분야에서 널리 알려진 알고리즘이므로 이에 대한 설명은 생략한다. 다음으로, 시그니처 관리부(170)는 다른 토큰을 부분 문자열로 포함하는 경우, 부분 문자열로 포함되는 토큰을 제거하여 중복되는 토큰을 제거한다(S904). 예들 들어, 'time'과 'settime'이란 토큰이 있을 경우, 'time'은 'settime'의 부분 문자열이므로 'time'을 제거한다.
다음으로, 시그니처 관리부(170)는 기 설정된 시그니처의 핵심 토큰을 수집한다. 상기 핵심 토큰은 악성 스크립트의 특징을 잘 반영하고 있는 토큰들로써 기 설정될 수 있고, 정제 단계에서 제거되지 않도록 미리 처리하는 것으로 이해될 수 있다(S906). 또한, 상기 정제 단계는 시그니처의 길이를 감소시켜 보다 효율적으로 시그니처 기반의 악성 스크립트 분석을 수행하기 위한 목적으로 수행되는 것으로 이해될 수 있다.
TF-IDF를 이용한 정제가 설정되어있는 경우, 시그니처 관리부(170)는 예를 들어 가장 높은 TF-IDF 값의 10% 미만 값을 가진 토큰을 제거한다(S907, S908). 여기서, 확률 값(10%)은 구현 방식에 따라 달라질 수 있다.
시그니처 관리부(170)는 정제 단계(S908)를 수행하고 제거되지 않은 토큰들을 묶어 결합 시그니처로 생성할 수 있고, 상기 결합 시그니처의 형태를 변환하여 YARA 시그니처를 생성하고(S909), 상기 YARA 시그니처의 형태를 변환하여 IDS 시그니처를 생성할 수 있다(S910).
시그니처 관리부(170)는 생성된 시그니처를 DB화된 저장 장치 등의 별도에 저장소에 저장하고, 저장된 시그니처는 분석부(150)에 제공되어 악성 스크립트 탐지에 이용될 수 있다.
지금까지 도 5 내지 도 13을 참조하여 설명된 본 발명의 개념은 컴퓨터가 읽을 수 있는 매체 상에 컴퓨터가 읽을 수 있는 코드로 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체는, 예를 들어 이동형 기록 매체(CD, DVD, 블루레이 디스크, USB 저장 장치, 이동식 하드 디스크)이거나, 고정식 기록 매체(ROM, RAM, 컴퓨터 구비 형 하드 디스크)일 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체에 기록된 상기 컴퓨터 프로그램은 인터넷 등의 네트워크를 통하여 다른 컴퓨팅 장치에 전송되어 상기 다른 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 다른 컴퓨팅 장치에서 사용될 수 있다.
도면에서 동작들이 특정한 순서로 도시되어 있지만, 반드시 동작들이 도시된 특정한 순서로 또는 순차적 순서로 실행되어야만 하거나 또는 모든 도시 된 동작들이 실행되어야만 원하는 결과를 얻을 수 있는 것으로 이해되어서는 안 된다. 특정 상황에서는, 멀티태스킹 및 병렬 처리가 유리할 수도 있다. 더욱이, 위에 설명한 실시예들에서 다양한 구성들의 분리는 그러한 분리가 반드시 필요한 것으로 이해되어서는 안 되고, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 다수의 소프트웨어 제품으로 패키지 될 수 있음을 이해하여야 한다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.

Claims (14)

  1. 클라이언트 단말이 웹 서버로 제1 HTML 콘텐츠를 요청하는 HTML 요청 메시지를 수신하고, 상기 웹 서버로부터 상기 제1 HTML 콘텐츠가 포함된 HTML 응답 메시지를 수신하며, 상기 클라이언트 단말로 상기 제1 HTML 콘텐츠에서 내부 스크립트 콘텐츠가 제거된 제2 HTML 콘텐츠를 전송하는 프록시부;
    상기 HTML 요청 메시지를 수신함에 따라 상기 클라이언트 단말에 대한 세션을 생성하고, 상기 제1 HTML 콘텐츠에서 상기 내부 스크립트 콘텐츠를 추출하며, 상기 내부 스크립트 콘텐츠가 추출된 부분에 임의의 외부 스크립트 경로를 삽입하여 상기 제2 HTML 콘텐츠를 생성하는 콘텐츠 처리부; 및
    상기 내부 스크립트 콘텐츠에 대하여 시그니처 기반으로 악성 스크립트를 탐지하고, 상기 내부 스크립트 콘텐츠에서 탐지된 악성 스크립트를 제거하는 사후 처리를 수행하는 분석부를 포함하되,
    상기 시그니처는 복수의 토큰을 포함하고,
    상기 분석부는,
    상기 내부 스크립트 콘텐츠의 전체 코드 영역 대하여, 상기 복수의 토큰 각각이 발견된 위치를 탐지하고, 상기 복수의 토큰 각각에 대한 처음 발견 위치를 제1 위치 그룹으로 그룹핑하며, 상기 복수의 토큰 각각에 대한 마지막 발견 위치를 제2 위치 그룹으로 그룹핑하고, 상기 제1 위치 그룹 및 상기 제2 위치 그룹의 비교 결과에 기초하여 상기 전체 코드 영역 중에서 악성 스크립트에 대한 코드 영역을 결정하며, 상기 결정된 악성 스크립트에 대한 코드 영역를 제거하는 사후 처리를 수행하는 것을 특징으로 하는
    악성 스크립트 탐지 장치.
  2. 제1 항에 있어서,
    상기 콘텐츠 처리부로부터 상기 제2 HTML 콘텐츠를 수신하여 저장하고, 상기 클라이언트 단말의 HTML 요청 메시지에 대응되는 제2 HTML 콘텐츠를 상기 클라이언트 단말로 제공하는 캐시부를 더 포함하는,
    악성 스크립트 탐지 장치.
  3. 제2 항에 있어서,
    상기 캐시부는,
    상기 사후 처리가 수행된 안전한 스크립트 콘텐츠를 저장하고, 상기 클라이언트 단말이 외부 스크립트 콘텐츠를 요청하는 스크립트 요청 메시지에 대응되는 외부 스크립트 콘텐츠를 상기 클라이언트 단말로 제공하는,
    악성 스크립트 탐지 장치.
  4. 제1 항에 있어서,
    상기 콘텐츠 처리부는,
    상기 제1 HTML 콘텐츠에 외부 스크립트 경로가 포함된 경우, 상기 외부 스크립트 경로가 가리키는 외부 스크립트 콘텐츠를 수집하고,
    상기 분석부는,
    상기 수집된 외부 스크립트 콘텐츠에 대하여 시그니처 기반의 악성 스크립트 탐지를 수행하는,
    악성 스크립트 탐지 장치.
  5. 제1 항에 있어서,
    상기 프록시부는,
    상기 클라이언트 단말이 상기 제2 HTML 콘텐츠에 포함된 외부 스크립트 경로가 가리키는 외부 스크립트 콘텐츠를 요청하는 스크립트 요청 메시지를 수신함에 따라 상기 사후 처리가 수행된 안전한 외부 스크립트 콘텐츠를 송신하는,
    악성 스크립트 탐지 장치.
  6. 제5 항에 있어서,
    상기 콘텐츠 처리부는,
    상기 스크립트 요청 메시지가 수신된 경우, 상기 클라이언트 단말에 대하여 기 생성된 세션이 존재하는지 확인하고, 상기 기 생성된 세션이 존재하는 경우에 한하여 상기 외부 스크립트 콘텐츠가 존재하는지 조회하고, 상기 조회된 외부 스크립트 콘텐츠를 상기 프록시부로 전달하는,
    악성 스크립트 탐지 장치.
  7. 제1 항에 있어서,
    기 설정된 악성 스크립트를 입력받고, 상기 악성 스크립트 탐지에 이용되는 시그니처를 생성하는 시그니처 관리부를 더 포함하는,
    악성 스크립트 탐지 장치.
  8. 클라이언트 단말이 웹 서버로 제1 HTML 콘텐츠를 요청하는 HTML 요청 메시지를 수신하는 단계;
    상기 HTML 요청 메시지를 수신함에 따라, 상기 클라이언트 단말에 대한 세션을 생성하는 단계;
    상가 HTML 요청 메시지를 상기 웹 서버로 전송하고, 상기 웹 서버로부터 상기 제1 HTML 콘텐츠가 포함된 응답 메시지를 수신하는 단계;
    상기 제1 HTML 콘텐츠에서 내부 스크립트 콘텐츠를 추출하고, 상기 내부 스크립트 콘텐츠가 추출된 부분에 임의의 외부 스크립트 경로를 삽입하여 제2 HTML 콘텐츠를 생성하는 단계; 및
    상기 추출된 내부 스크립트 콘텐츠에 대하여 시그니처 기반으로 악성 스크립트 탐지를 수행하고, 상기 추출된 내부 스크립트 콘텐츠에서 탐지된 악성 스크립트를 제거하는 사후 처리를 수행하는 단계를 포함하되,
    상기 시그니처는 복수의 토큰을 포함하고,
    상기 사후 처리를 수행하는 단계는,
    상기 추출된 내부 스크립트 콘텐츠의 전체 코드 영역 대하여, 상기 복수의 토큰 각각이 발견된 위치를 탐지하는 단계;
    상기 복수의 토큰 각각에 대한 처음 발견 위치를 제1 위치 그룹으로 그룹핑하는 단계;
    상기 복수의 토큰 각각에 대한 마지막 발견 위치를 제2 위치 그룹으로 그룹핑하는 단계;
    상기 제1 위치 그룹 및 상기 제2 위치 그룹의 비교 결과에 기초하여 상기 전체 코드 영역 중에서 악성 스크립트에 대한 코드 영역을 결정하는 단계; 및
    상기 결정된 악성 스크립트에 대한 코드 영역을 제거하는 사후 처리를 수행하는 단계를 포함하는 것을 특징으로 하는,
    악성 스크립트 탐지 방법.
  9. 제8 항에 있어서,
    상기 클라이언트 단말의 HTML 요청 메시지에 대응되는 제2 HTML 콘텐츠가 캐시된 경우, 상기 캐시된 제2 HTML 콘텐츠를 상기 클라이언트 단말로 제공하는 단계를 더 포함하고,
    상기 세션을 생성하는 단계, 상기 응답 메시지를 수신하는 단계 및 상기 제2 HTML 콘텐츠를 생성하는 단계는, 상기 캐시된 제2 HTML 콘텐츠가 존재하지 않는 경우에 한하여 수행되는,
    악성 스크립트 탐지 방법.
  10. 삭제
  11. 제8 항에 있어서,
    상기 제1 HTML 콘텐츠에 외부 스크립트 경로가 포함된 경우, 상기 외부 스크립트 경로가 가리키는 외부 스크립트 콘텐츠를 수집하는 단계; 및
    상기 수집된 외부 스크립트 콘텐츠에 대하여 시그니처 기반의 악성 스크립트 탐지를 수행하는 단계를 더 포함하는,
    악성 스크립트 탐지 방법.
  12. 제8 항에 있어서,
    상기 클라이언트 단말로부터 상기 제2 HTML 콘텐츠에 포함된 외부 스크립트 경로가 가리키는 외부 스크립트 콘텐츠를 요청하는 스크립트 요청 메시지를 수신하는 단계; 및
    악성 스크립트 탐지 결과에 따라 상기 악성 스크립트를 제거하는 사후 처리가 수행된 안전한 외부 스크립트 콘텐츠를 상기 클라이언트 단말로 전송하는 단계를 더 포함하는,
    악성 스크립트 탐지 방법.
  13. 제12 항에 있어서,
    상기 클라이언트 단말에 대하여 기 생성된 세션이 존재하는지 확인하는 단계를 더 포함하고,
    상기 안전한 외부 스크립트 콘텐츠를 상기 클라이언트 단말로 전송하는 단계는,
    상기 기 생성된 세션이 존재하는 경우에 한하여 상기 안전한 외부 스크립트 콘텐츠를 상기 클라이언트 단말로 전송하는 단계를 포함하는,
    악성 스크립트 탐지 방법.
  14. 컴퓨팅 장치와 결합하여,
    클라이언트 단말이 웹 서버로 제1 HTML 콘텐츠를 요청하는 HTML 요청 메시지를 수신하는 단계;
    상기 HTML 요청 메시지를 수신함에 따라, 상기 클라이언트 단말에 대한 세션을 생성하는 단계;
    상가 HTML 요청 메시지를 상기 웹 서버로 전송하고, 상기 웹 서버로부터 상기 제1 HTML 콘텐츠가 포함된 응답 메시지를 수신하는 단계;
    상기 제1 HTML 콘텐츠에서 내부 스크립트 콘텐츠를 추출하고, 상기 내부 스크립트 콘텐츠가 추출된 부분에 임의의 외부 스크립트 경로를 삽입하여 제2 HTML 콘텐츠를 생성하는 단계; 및
    상기 추출된 내부 스크립트 콘텐츠에 대하여 시그니처 기반으로 악성 스크립트 탐지를 수행하고, 상기 추출된 내부 스크립트 콘텐츠에서 탐지된 악성 스크립트를 제거하는 사후 처리를 수행하는 단계를 실행시키되,
    상기 시그니처는 복수의 토큰을 포함하고,
    상기 사후 처리를 수행하는 단계는,
    상기 추출된 내부 스크립트 콘텐츠의 전체 코드 영역 대하여, 상기 복수의 토큰 각각이 발견된 위치를 탐지하는 단계;
    상기 복수의 토큰 각각에 대한 처음 발견 위치를 제1 위치 그룹으로 그룹핑하는 단계;
    상기 복수의 토큰 각각에 대한 마지막 발견 위치를 제2 위치 그룹으로 그룹핑하는 단계;
    상기 제1 위치 그룹 및 상기 제2 위치 그룹의 비교 결과에 기초하여 상기 전체 코드 영역 중에서 악성 스크립트에 대한 코드 영역을 결정하는 단계; 및
    상기 결정된 악성 스크립트에 대한 코드 영역을 제거하는 사후 처리를 수행하는 단계를 포함하는, 컴퓨터로 판독가능한 기록매체에 저장된,
    컴퓨터 프로그램.
KR1020160177481A 2016-12-23 2016-12-23 악성 스크립트 탐지 방법 및 장치 KR101917996B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160177481A KR101917996B1 (ko) 2016-12-23 2016-12-23 악성 스크립트 탐지 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160177481A KR101917996B1 (ko) 2016-12-23 2016-12-23 악성 스크립트 탐지 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20180073933A KR20180073933A (ko) 2018-07-03
KR101917996B1 true KR101917996B1 (ko) 2018-11-13

Family

ID=62918641

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160177481A KR101917996B1 (ko) 2016-12-23 2016-12-23 악성 스크립트 탐지 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101917996B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102093274B1 (ko) * 2019-05-28 2020-03-25 (주)지란지교시큐리티 콘텐트 스캐닝 에이전트, 콘텐트 스캐닝 방법 및 그 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능 기록매체
KR102338252B1 (ko) * 2020-02-18 2021-12-15 한국전자통신연구원 웹 악성코드 탐지를 위한 악성코드 분석 시스템 및 방법
WO2023229065A1 (ko) * 2022-05-26 2023-11-30 시큐레터 주식회사 리버싱 엔진과 cdr 엔진을 활용한 악성 비실행 파일 차단 방법 및 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101543237B1 (ko) * 2014-12-03 2015-08-11 한국인터넷진흥원 코드 패턴을 이용한 정적 분석과 api 흐름을 이용한 동적 분석을 통한 악성 스크립트 탐지 차단 장치, 시스템 및 방법
KR101543238B1 (ko) * 2015-01-21 2015-08-11 한국인터넷진흥원 실시간 악성 스크립트 탐지를 위한 웹 트래픽 수집 처리 장치, 시스템 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101543237B1 (ko) * 2014-12-03 2015-08-11 한국인터넷진흥원 코드 패턴을 이용한 정적 분석과 api 흐름을 이용한 동적 분석을 통한 악성 스크립트 탐지 차단 장치, 시스템 및 방법
KR101543238B1 (ko) * 2015-01-21 2015-08-11 한국인터넷진흥원 실시간 악성 스크립트 탐지를 위한 웹 트래픽 수집 처리 장치, 시스템 및 방법

Also Published As

Publication number Publication date
KR20180073933A (ko) 2018-07-03

Similar Documents

Publication Publication Date Title
US11924234B2 (en) Analyzing client application behavior to detect anomalies and prevent access
JP6371790B2 (ja) 変更されたウェブページを判定するためのシステム及び方法
EP3219068B1 (en) Method of identifying and counteracting internet attacks
US9544318B2 (en) HTML security gateway
US9648032B2 (en) System and method for blocking execution of scripts
EP2754081B1 (en) Dynamic cleaning for malware using cloud technology
US8161538B2 (en) Stateful application firewall
JP6400758B2 (ja) 不正リモート管理からのコンピュータを保護するためのシステム及び方法
JP2019021294A (ja) DDoS攻撃判定システムおよび方法
RU2584506C1 (ru) Система и способ защиты операций с электронными деньгами
US11785044B2 (en) System and method for detection of malicious interactions in a computer network
US20190222587A1 (en) System and method for detection of attacks in a computer network using deception elements
KR101917996B1 (ko) 악성 스크립트 탐지 방법 및 장치
JP6050162B2 (ja) 接続先情報抽出装置、接続先情報抽出方法、及び接続先情報抽出プログラム
JPWO2016121348A1 (ja) マルウェア対策装置、マルウェア対策システム、マルウェア対策方法、及び、マルウェア対策プログラム
KR102280845B1 (ko) 네트워크 내의 비정상 행위 탐지 방법 및 그 장치
EP3353983B1 (en) Method and system with a passive web application firewall
US9785775B1 (en) Malware management
US10757118B2 (en) Method of aiding the detection of infection of a terminal by malware
CN116566739A (zh) 一种安全检测系统、电子设备及存储介质
US8266704B1 (en) Method and apparatus for securing sensitive data from misappropriation by malicious software
JP6635029B2 (ja) 情報処理装置、情報処理システム及び通信履歴解析方法
RU2702081C2 (ru) Система и способ обнаружения модификации веб-ресурса
JP7168010B2 (ja) 行動計画推定装置、行動計画推定方法、及びプログラム
RU2757330C1 (ru) Способ выявления несогласованного использования ресурсов вычислительного устройства пользователя

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant