KR101874373B1 - 난독화 스크립트에 대한 악성 스크립트 탐지 방법 및 그 장치 - Google Patents

난독화 스크립트에 대한 악성 스크립트 탐지 방법 및 그 장치 Download PDF

Info

Publication number
KR101874373B1
KR101874373B1 KR1020160180351A KR20160180351A KR101874373B1 KR 101874373 B1 KR101874373 B1 KR 101874373B1 KR 1020160180351 A KR1020160180351 A KR 1020160180351A KR 20160180351 A KR20160180351 A KR 20160180351A KR 101874373 B1 KR101874373 B1 KR 101874373B1
Authority
KR
South Korea
Prior art keywords
obfuscation
string
script
modified
malicious
Prior art date
Application number
KR1020160180351A
Other languages
English (en)
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 KR1020160180351A priority Critical patent/KR101874373B1/ko
Application granted granted Critical
Publication of KR101874373B1 publication Critical patent/KR101874373B1/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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Document Processing Apparatus (AREA)

Abstract

본 발명의 일 실시예에 따른 난독화 해제를 통한 악성 스크립트 탐지 방법은 난독화 기법 별로 미리 지정된 키워드와 난독화 스크립트를 매칭하여, 난독화 기법을 분류하는 단계, 상기 분류된 난독화 기법에 따라, 상기 스크립트가 실행되지 않고 출력되도록 상기 스크립트를 수정하는 단계, 상기 수정된 스크립트를 출력하고, 난독화를 해제하여 평문 스크립트를 추출하는 단계; 및 추출된 평문 스크립트를 악성 스크립트 리스트와 비교함으로써, 상기 난독화 스크립트 내의 악성 스크립트를 탐지하는 단계를 포함하되, 상기 키워드는 상기 스크립트의 실행 함수를 포함할 수 있다.

Description

난독화 스크립트에 대한 악성 스크립트 탐지 방법 및 그 장치{A METHOD AND APPARATUS FOR DETECTING MALICIOUS SCRIPTS OF OBFUSCATED SCRIPTS}
본 발명은 난독화 스크립트에 대한 악성 스크립트 탐지 방법 및 그 장치 에 관한 것이다. 보다 자세하게는, 난독화 기법을 분류하고, 분류된 난독화 기법에 기초하여 난독화를 해제하고, 악성 스크립트를 탐지할 수 있는 난독화 스크립트에 대한 악성 스크립트 탐지 방법 및 그 장치에 관한 것이다.
웹 프로그래밍에 사용되는 언어 중 자바 스크립트는 클라이언트 측에서 사용되는 언어로 사용되기 때문에 소스가 공개된다는 단점을 가지고 있다. 이러한 단점을 보완하기 위한 방법 중 하나로, 난독화가 이용된다.
난독화란 프로그래밍 언어로 작성된 코드를 읽기 어렵게 만드는 작업이다. 본래 작성된 코드에 사용된 아이디어나 알고리즘 등을 숨기는 것이 목적이었으나, 근래에는 해커들 사이에 공격 코드와 보안 제품 진단 회피를 위한 우회 용도로 많이 사용되고 있다.
특히 웹 사이트의 자바 스크립트에 악성 코드를 삽입하고, 이를 난독화 함으로써 숨기는 악성 공격이 증가하고 있는데, 이러한 악성 공격에 대응할 수 있도록 난독화 해제 기술의 제공이 요구된다.
KR 10-2016-0114903 A "코드 난독화 방법 및 이를 지원하는 전자 장치"
본 발명이 해결하고자 하는 기술적 과제는, 각각의 스크립트가 서로 다른 난독화 기법으로 난독화 된 경우, 이를 구분하여 각 기법에 대응되는 난독화 해제를 수행하는 난독화 스크립트에 대한 악성 스크립트 탐지 방법 및 그 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는, 난독화를 해제하는 과정에서 악성 스크립트가 실행되지 않도록 할 수 있는 난독화 스크립트에 대한 악성 스크립트 탐지 방법 및 그 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 난독화 해제를 통한 악성 스크립트 탐지 방법은 난독화 기법 별로 미리 지정된 키워드와 난독화 스크립트를 매칭하여, 난독화 기법을 분류하는 단계, 상기 분류된 난독화 기법에 따라, 상기 스크립트가 실행되지 않고 출력되도록 상기 스크립트를 수정하는 단계, 상기 수정된 스크립트를 출력하고, 난독화를 해제하여 평문 스크립트를 추출하는 단계; 및 추출된 평문 스크립트를 악성 스크립트 리스트와 비교함으로써, 상기 난독화 스크립트 내의 악성 스크립트를 탐지하는 단계를 포함하되, 상기 키워드는 상기 스크립트의 실행 함수를 포함할 수 있다.
상기 기술적 과제를 해결하기 위한 본 발명의 다른 실시예에 따른 악성 스크립트 탐지 장치는, 하나 이상의 프로세서, 상기 프로세서에 의하여 수행되는 컴퓨터 프로그램을 로드하는 메모리 및 맵핑 테이블을 저장하는 스토리지를 포함하되, 상기 컴퓨터 프로그램은, 난독화 기법 별로 미리 지정된 키워드와 난독화 스크립트를 매칭하여, 난독화 기법을 분류하는 오퍼레이션, 상기 분류된 난독화 기법에 따라, 상기 스크립트가 실행되지 않고 출력되도록 상기 스크립트를 수정하는 오퍼레이션, 상기 수정된 스크립트를 출력하고, 난독화를 해제하여 평문 스크립트를 추출하는 오퍼레이션 및 추출된 평문 스크립트를 악성 스크립트 리스트와 비교함으로써, 상기 난독화 스크립트 내의 악성 스크립트를 탐지하는 오퍼레이션을 포함하되, 상기 키워드는 상기 스크립트의 실행 함수를 포함할 수 있다.
본 발명의 몇몇 실시예들에 따르면, 각각의 스크립트가 서로 다른 방법으로 난독화 된 경우에도, 악성 스크립트 탐지 장치가 이를 구분하여 난독화를 해제할 수 있는 효과를 달성할 수 있다.
본 발명의 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해 될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 난독화 스크립트에 대한 악성 스크립트 탐지 시스템에 관한 구성도이다.
도 2는 본 발명의 일 실시예에 따른 악성 스크립트 탐지 장치의 하드웨어 구성도이다.
도 3은 본 발명의 또 다른 실시예에 따른 난독화 해제 방법의 순서도를 표시한 도면이다.
도 4는 본 발명의 몇몇 실시예에서 참조되는, 맵핑 테이블의 예시를 도시한다.
도 5는 본 발명의 또 다른 실시예에 따른, 악성 스크립트 판단 방법의 순서도이다.
도 6은 본 발명의 또 다른 실시예에 따른, 악성 스크립트 탐지 장치의 블록도이다.
도 7은 본 발명의 몇몇 실시예에서 참조되는, 자바 스크립트의 예시 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 게시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 게시가 완전하도록 하고, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
명세서에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는 (comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
이하, 본 발명에 대하여 첨부된 도면에 따라 보다 상세히 설명한다.
도 1은 본 발명의 일 실시예에 따른 난독화 해제 시스템에 관한 구성도이다.
난독화 해제 시스템은 웹 서버(50)와 악성 스크립트 탐지 장치(100)를 포함할 수 있다. 악성 스크립트 탐지 장치(100)와 웹 서버(500)는 네트워크를 통해 통신이 가능하다. 악성 스크립트 탐지 장치(100)는 웹 서버(50)로부터 패킷을 수신할 수 있고, 패킷은 스크립트를 포함할 수 있다.
스크립트는 예를 들어 자바 스크립트일 수 있다. 이하 발명의 상세한 설명에서 자바 스크립트인 경우를 예로 들어 설명하나 이제 한정되는 것은 아니고 악성 스크립트 탐지 장치(100)는 웹 사이트를 구현할 수 있는 프로그래밍 언어에 적용될 수 있다.
악성 스크립트 탐지 장치(100)는 스크립트가 난독화 되어있는 경우, 난독화를 해제하여 평문 스크립트를 추출할 수 있다. 추출된 평문 스크립트는 악성 스크립트를 감지하는데 이용될 수 있다.
난독화 방법은 다양하게 존재하는데, 악성 스크립트 탐지 장치(100)는 수신된 스크립트를 사용하는데 이용된 난독화 기법을 분류할 수 있다. 난독화 기법의 종류를 소개하면 다음과 같다.
난독화 기법에는 Dean Edwards Packer 방법, Base62 부호화 방법, Base10 부호화 방법, Hexdecimal Obfuscation 방법, Dehydrating a string 방법, jjencode 방법, Dec encode 방법, JSO encode 방법, Base64 encode 방법 등이 존재한다.
Dean Edwards Packer 방법은 딘 에드워드에 의해 만들어진 자바스크립트 압축기로 정식 명칭은 /packer/ 이다. Dean Edwards Packer 방법이 사용되면, Base64 부호화를 기반으로 난독화가 이루어 지며, 해당 기법이 적용된 코드는 ‘eval(function(p,a,c,k,e,r)’로 시작된다. p,a,c,k,e,r 는 변수명이므로 변경 가능하다.
eval()함수는 자바 스크립트 코드를 계산하고 실행시켜주는 함수이다. 이를 이용하여 자바 스크립트 소스 코드를 동적으로 실행시켜 난독화된 소스를 해석하는 용도로 악성 스크립트에서 필수적으로 사용되는 함수이다. 또한 숫자형태의 문자열로도 표기가 가능하여 eval()함수의 매개변수에 숫자형태로 난독화된 표기를 할 수 있다.
Base62 부호화 방법은 딘 에드워드 /packer/와 유사한 방법으로, 해당 방법이 사용되면, Base62 부호화를 기반으로 난독화가 이루어 지며, 해당 기법이 적용된 코드는 ‘eval(function(p,a,c,k,e,d)’로 시작된다.
Base10 부호화 방법은 딘 에드워드 /packer/와 유사한 방법으로, 해당 방법이 사용되면, Base10 부호화를 기반으로 난독화가 이루어지며, 해당 기법이 적용된 코드는 ‘eval(function(p,a,c,k,e,d)’로 시작된다.
Hexdecimal Obfuscation 방법은 16진수를 이용하여 만드는 부호화 방법이다. 16진수 표현을 위해 퍼센트(%) 구분자 사용하고, 부호화 해제를 위해 unescape() 전역 함수 사용한다. 웹 브라우저에서는 16진수 표현을 위해 \x 구분자 사용한다.
escape()함수는 ISO Latin-1 문자 셋을 ASCII 형태로 반환하는 함수이다. unescape()함수는 반대로 ASCII 형태를 ISO Latin-1 문자 셋으로 반환하는 함수이다.
Dehydrating a string 방법은 2008년 Blackhat에서 공개된 방법으로, 스페이스와 탭으로 구성되며, 공백은 1, 탭은 0인 2진수 형태로 구현된다. 해당 방법이 사용되면 공백과 탭을 문자열로 치환하는 해제 알고리즘 사용할 수 있다. 예를들어, Math.pow() 함수로 공백과 탭에 따라 지수연산을 수행하고, 연산 결과를 String.fromCharCode() 함수로 문자열 치환할 수 있다.
jjencode 방법은 2009년 JUI(Javascript User Interface)에서 공개된 방법으로, 기호만을 사용해 자바스크립트 코드와 동등하게 동작하는 코드 생성하는 방법이다. 알파벳 및 숫자 사용을 금지하며 "!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~)" 32종 문자만 사용한다. 따라서 자바스크립트 내장 문자열*을 +“”연산을 통해 강제로 문자열 타입으로 치환하는 기법 사용할 수 있다. 이때, 내장 문자열(Builtin Strings)은 잘못된 연산의 결과가 문자 형태로 출력되는 것을 의미할 수 있다.
Dec encode 방법은 10진수를 이용하여 만드는 부호화 방법이다. 10진수 표현을 위해 콤마(,) 구분자 사용하며, 부호화 해제를 위해서는 fromCharCode() 전역 함수 사용할 수 있다.
JSO encode 방법은 딘 에드워드의 /packer/를 응용한 난독화 방법이다. 변수명, 함수명 등을 의미없는 이름으로 대체하고, 변수명, 함수명 등에 사용된 문자열을 배열로 표현한다. 예를 들어, 변수명을 대체할 때 attack_IP 를 ygaa와 같은 의미 없는 이름으로 대체할 수 있다. 해당 기법이 적용된 코드는 ‘eval(function(x)’로 시작하게 된다.
Base64 encode 방법 64진수를 이용하여 만드는 부호화 기법이다. 64개의 문자(A~Z, a~z, 0~9, +, /)를 사용하며, 부호화 해제를 위해 64개 문자를 대조할 키가 사용될 수 있다. 대부분의 대조키는 첫 번째 변수에 저장되며, A~/ 까지 64개의 문자를 저장할 수 있다.
악성 스크립트 탐지 장치(100)는 이와 같은 다양한 난독화 기법을 분류할 수 있고, 각각의 난독화 기법에 대응되는 난독화 해제 방법을 사용하여 난독화를 해제할 수 있다. 악성 스크립트 탐지 장치(100)는 평문 스크립트를 대상으로, 악성 스크립트를 추출할 수 있다.
이하, 도 2를 참조하여 악성 스크립트 탐지 장치의 동작 및 구성에 대하여 설명한다. 도 2는 본 발명의 일 실시예에 따른 악성 스크립트 탐지 장치의 하드웨어 구성도이다.
도 2를 참조하면 악성 스크립트 감지 장치(100)는 하나 이상의 프로세서(110), 메모리(120), 스토리지(140) 및 인터페이스(130)을 포함할 수 있다. 프로세서(110), 메모리(120), 스토리지(140) 및 인터페이스(130)는 시스템 버스를 통하여 데이터를 송수신한다.
프로세서(110)는 메모리(120)에 로드 된 난독화 해제 소프트웨어(141)를 실행하고, 메모리(120)는 상기 난독화 해제 소프트웨어(141)를 스토리지(160)에서 로드(load) 한다. 상기 난독화 해제 소프트웨어(141)는, 난독화 기법 분류 오퍼레이션(121), 난독화 해제 오퍼레이션(123) 및 악성 스크립트 추출 오퍼레이션(125)을 포함할 수 있다.
악성 스크립트 감지 장치(100)는 네트워크 인터페이스(130)를 통해 외부 웹 서버로부터 네트워크 패킷을 수신할 수 있고, 수신된 패킷은 자바 스크립트를 포함할 수 있다.
난독화 기법 분류 오퍼레이션(121)은 수신된 패킷에서 자바 스크립트를 추출하고, 추출된 자바 스크립트가 난독화 되어 있는 경우, 어떠한 난독화 기법으로 난독화 되어있는지를 판단하여, 난독화 기법을 분류할 수 있다.
난독화 해제 오퍼레이션(123)은 난독화 기법 분류 오퍼레이션(121)으로부터, 분류 결과를 수신 받아, 난독화 해제 방법을 결정할 수 있다. 난독화 해제 오퍼레이션(123)은 결정된 해제 방법에 따라 난독화를 해제하여 평문 스크립트를 추출할 수 있다.
난독화 해제 오퍼레이션(123)은 난독화 기법에 따라 미리 지정되어 저장된 난독화 해제 방법을 참조하여, 난독화 해제를 수행할 수 있다. 난독화 해제 정보는 스토리지(140)의 해제 정보(142)에 저장될 수 있다. 해제 정보(142)는 난독화 기법 마다 지정된, 키워드, 수정 문자열 및 삽입 문자열을 포함할 수 있다.
악성 스크립트 추출 오퍼레이션(125)은 추출된 평문 스크립트가 악성 스크립트인지 여부를 판단할 수 있다. 도시되지는 않았으나, 미리 저장된 악성 스크립트 리스트가 악성 스크립트 DB에 저장될 수 있고, 악성 스크립트 탐지 장치(100)의 스토리지(140)에 악성 스크립트 DB가 저장될 수 있다.
악성 스크립트 추출 오퍼레이션(125)은 추출된 평문 스크립트와 악성 스크립트 DB와의 패턴 매칭을 통해, 악성 스크립트인지 여부를 판단할 수 있다.
도 2의 각 구성 요소는 소프트웨어(Software) 또는, FPGA(Field Programmable Gate Array)나 ASIC(Application-Specific Integrated Circuit)과 같은 하드웨어(Hardware)를 의미할 수 있다. 그렇지만, 상기 구성 요소들은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니며, 어드레싱(Addressing)할 수 있는 저장 매체에 있도록 구성될 수도 있고, 하나 또는 그 이상의 프로세서들을 실행시키도록 구성될 수도 있다. 상기 구성 요소들 안에서 제공되는 기능은 더 세분화된 구성 요소에 의하여 구현될 수 있으며, 복수의 구성 요소들을 합하여 특정한 기능을 수행하는 하나의 구성 요소로 구현될 수도 있다.
도 3은 본 발명의 또 다른 실시예에 따른 난독화 해제 방법의 순서도를 표시한 도면이다.
악성 스크립트 탐지 장치는 외부 서버로부터 난독화 된 스크립트를 수신할 수 있다(S100). 악성 스크립트 탐지 장치는 난독화 된 스크립트를 수신하면, 해당 스크립트를 파싱하고(S200), 난독화 기법을 분류할 수 있고(S300), 분류된 난독화 기법에 따라 난독화를 해제하여, 평문 스크립트를 추출할 수 있다(S400).
단계(S300)에서, 악성 스크립트 탐지 장치는 미리 저장된 키워드와 상기 난독화된 스크립트를 매칭함으로써, 난독화 기법을 분류할 수 있다. 미리 저장된 키워드란, 각각의 분류 기법을 구분할 수 있는 키워드를 가리킨다. 악성 스크립트 탐지 장치는 각각의 분류 기법에 따라 맵핑된 키워드를 미리 저장할 수 있고, 수신된 난독화 스크립트와 키워드 매칭을 수행하여, 난독화 기법을 분류할 수 있다.
단계(S400)에서, 악성 스크립트 탐지 장치는 미리 저장된 키워드에 포함되는 문자열 중, 수정 문자열을 결정할 수 있고, 결정된 수정 문자열을 이용하여, 상기 스크립트를 수정할 수 있다. 구체적으로, 악성 스크립트 탐지 장치는 수정 문자열에 대응되는 삽입 문자열을 결정하고, 상기 스크립트가 실행되지 않도록, 상기 수정 문자열을 삽입 문자열로 대체할 수 있다.
삽입 문자열은 xmp 태그를 포함할 수 있다. xmp 태그는 <xmp></xmp> 태그 안의 문자열을 브라우져에 그대로 출력한다. 즉, xmp 태그 사이에 기재된 자바 스크립트는 자바 스크립트 코드로 인식되지 않으며, 코드 자체가 출력되게 된다.
악성 스크립트 탐지 장치는 난독화 기법을 분류할 수 있는 키워드의 문자열 중, 일부 문자열을 수정하여 난독화를 해제할 수 있다. 즉, 키워드의 문자열 중 일부 문자열을 수정 문자열로 미리 지정할 수 있고, 지정된 수정 문자열을 대체할 삽입 문자열을 미리 지정할 수 있다. 따라서, 키워드, 수정 문자열 및 삽입 문자열은 각각의 난독화 기법에 따라 다르게 지정될 수 있고, 하나의 난독화 기법에 대하여 정해진 키워드, 수정 문자열 및 삽입 문자열은 테이블의 형태로 저장될 수 있다. 상기 테이블에 대하여 도 4를 통해 설명한다.
삽입 문자열에 xmp 태그를 포함시킴으로써, 수신된 스크립트가 악성 스크립트 코드이고, 난독화 된 상태로 수신된 경우라도, 미리 실행을 차단하고 코드 자체가 출력되도록 할 수 있다.
도 4는 본 발명의 몇몇 실시예에서 참조되는, 맵핑 테이블의 예시를 도시한다.
맵핑 테이블은 기법 이름, 키워드, 수정 문자열 및 삽입 문자열을 포함할 수 있다. 기법 이름은 난독화 기법을 가리키며, 키워드는 난독화 기법을 구분할 수 있는 키워드를 가리킨다. 수정 문자열은 키워드 중 삽입 문자열로 대체될 문자열을 가리킨다.
대부분의 삽입 문자열은 document.write("<xmp>"을 포함하는데, document.write 함수는 자바 스크립트 출력 함수로서, 괄호 안의 내용을 HTML로 출력하는 함수이다. <xmp> 태그를 삽입함으로써, 키워드 뒤에 기재되어 있는 난독화 된 스크립트가 그대로 출력되게 된다. 이에 따라, 난독화 된 스크립트가 악성 스크립트라 하더라도, 실행되지 않고 출력될 수 있다.
표를 참조하면, 난독화 기법에 따라 키워드, 수정 문자열 및 삽입 문자열이 미리 지정되어 저장될 수 있다.
상술한 난독화 기법에 대응하여 설명하면, an Edwards Packer 방법이 packer encode, Base62 부호화 방법이 packed encode, Base10 부호화 방법이 base 10 encode, Hexdecimal Obfuscation 방법이 Hex encode, Dehydrating a string 방법이 dehydrating a string, jjencode 방법이 jjencode, Dec encode 방법이 Dec encode, JSO encode 방법이 JSO encode, Base64 encode 방법이 base 64 encode로 기재되어 있다.
난독화 방법에 따라 키워드와 수정 문자열 및 삽입 문자열이 동일한 경우도 존재한다. packer encode, packed encode, base 10 encode의 경우가 그렇다. 예를 들어, packer encode 방법에 따라 난독화 된 스크립트에서 eval(function 키워드가 발견되면, 이중 수정 문자열인 eval( 을 삽입 문자열로 대체할 수 있다. 키워드인 eval(function이 document.write("<xmp>"Function 으로 수정되어, 수정된 스크립트가 생성될 수 있다.
예를 들어, Base 64 encode의 경우 대조키가 ABCDEGH? 로 시작되므로, 이를 키워드로 지정할 수 있고, 상기 키워드 앞에 삽입 문자열을 삽입함으로써, 난독화된 코드를 택스트 출력할 수 있다. 수정된 키워드는 document.write("<xmp>"); var 변수명 = ABCED?. 의 형태가 된다.
예를 들어, dehydrating a string의 경우, 'r.push(String.fromCharCode'를 키워드로 지정할 수 있고, 수정 문자열은 'String.fromCharCode(tmp))'이고, 수정 문자열을 삽입 문자열인 'document.write(String.fromCharCode(tmp)))'로 대체하면, 스크립트의 키워드 부분은 r.push(document.write(String.fromCharCode(tmp)))로 수정될 수 있다.
악성 스크립트 탐지 장치는 출력된 텍스트를 이용하여 난독화를 해제하고, 평문 스크립트를 추출할 수 있다.
도 5는 본 발명의 또 다른 실시예에 따른, 악성 스크립트 판단 방법의 순서도이다.
악성 스크립트 탐지 장치는 평문 스크립트를 추출하고(S500), 추출된 스크립트가 악성 스크립트 인지 여부를 판단할 수 있고(S510), 그에 따른 후처리를 수행할 수 있다(S520). 악성 스크립트 탐지 장치는 악성 스크립트 탐지 및 차단 기능을 수행할 수 있다.
단계(S510)에서, 악성 스크립트 탐지 장치는 추출된 스크립트와 미리 저장된 악성 스크립트에 대한 정보를 포함하는 악성 스크립트 DB의 악성 스크립트 정보와의 패턴 매칭을 수행할 수 있다.
단계(S520)에서, 악성 스크립트 탐지 장치는 패턴 매칭을 수행한 결과 매칭에 성공한 경우, 해당 스크립트를 악성 스크립트로 판단할 수 있다. 추출된 스크립트가 악성인 경우, 해당 스크립트에 대한 정보를 저장할 수 있다. 또한 악성 스크립트가 실행되는 것을 방지하기 위하여, 우회를 수행할 수 있다.
단계(S520)에서, 패턴 매칭을 수행한 결과 매칭에 실패한 경우, 악성 스크립트 탐지 장치는 해당 스크립트를 악성 스크립트가 아닌, 정상 스크립트로 판단할 수 있다. 분석 모듈은 악성이 아닌 경우, 별도의 처리 없이 추출된 스크립트기 실행되도록 하면 된다.
도 6은 본 발명의 또 다른 실시예에 따른, 악성 스크립트 탐지 장치의 블록도이다.
악성 스크립트 탐지 장치(100)는 통신부(200), 난독화 해제부(220), 악성 스크립트 추출부(240), 저장부(260)를 포함할 수 있다.
악성 스크립트 탐지 장치(100)는 통신부(200)를 통해 외부 서버 또는 외부 클라이언트와 통신할 수 있다. 악성 스크립트 탐지 장치(100)는 통신부(200)를 통하여, 외부 서버 또는 클라이언트로부터 난독화 해제 요청을 수신할 수 있다.
난독화 해제부(220)는 수신된 난독화 해제 요청에 포함된, 난독화 된 스크립트의 난독화 기법을 분류할 수 있고, 분류된 난독화 기법에 따라 저장부(260)에 저장된 맵핑 테이블을 참조하여, 난독화 해제 방법을 결정할 수 있다.
난독화 해제부(220)는 스크립트를 파싱하면서, 맵핑 테이블에 저장된 키워드를 발견하면, 해당 키워드가 속하는 난독화 기법으로 분류하여 파악할 수 있다. 난독화 기법을 분류하면, 분류된 난독화 기법에 대응되는 수정 문자열 및 삽입 문자열을 맵핑 테이블을 통해 결정할 수 있다.
난독화 해제부(220)는 스크립트이 키워드 문자열 중 수정 문자열 부분을 삽입 문자열로 대체하여, 스크립트가 실행되지 않고 출력되도록 할 수 있고, 출력된 스크립트에 대하여 난독화 해제를 수행할 수 있다.
악성 스크립트 추출부(240)는 난독화 해제가 수행되어 평문 스크립트가 추출되면, 평문 스크립트와 저장부(260)에 저장된 악성 스크립트 DB를 비교하여, 평문 스크립트가 악성 스크립트인지 여부를 판단할 수 있다. 악성 스크립트 인지 여부에 따라 후처리를 수행할 수 있다.
도 7은 본 발명의 몇몇 실시예에서 참조되는, 자바 스크립트의 예시 도면이다.
도시된 스크립트에 document.write("<xmp>")가 추가되었다. 아래의 스크립트 부분이 텍스트의 형태로 웹 브라우져에 모두 출력되게 된다.
지금까지 설명된 본 발명의 실시예에 따른 방법들은 컴퓨터가 읽을 수 있는 코드로 구현된 컴퓨터프로그램의 실행에 의하여 수행될 수 있다. 상기 컴퓨터프로그램은 인터넷 등의 네트워크를 통하여 제1 컴퓨팅 장치로부터 제2 컴퓨팅 장치에 전송되어 상기 제2 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 제2 컴퓨팅 장치에서 사용될 수 있다. 상기 제1 컴퓨팅 장치 및 상기 제2 컴퓨팅 장치는, 서버 장치, 클라우드 서비스를 위한 서버 풀에 속한 물리 서버, 데스크탑 피씨와 같은 고정식 컴퓨팅 장치를 모두 포함한다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.

Claims (13)

  1. 수정 문자열 및 각 수정 문자열에 대응되는 대체 문자열을 테이블 형태로 저장하는 단계;
    난독화 기법 별로 미리 지정된 키워드와 난독화 스크립트를 매칭하여, 난독화 기법을 분류하는 단계;
    상기 분류된 난독화 기법에 따라, 상기 난독화 스크립트가 실행되지 않고 출력되도록 상기 난독화 스크립트를 수정하는 단계;
    상기 수정된 스크립트를 출력하고, 난독화를 해제하여 평문 스크립트를 추출하는 단계; 및
    추출된 평문 스크립트와 악성 스크립트 DB의 패턴을 매칭하여 상기 난독화 스크립트 내의 악성 스크립트를 탐지하는 단계를 포함하되,
    매칭된 키워드는 상기 난독화 스크립트의 실행 함수를 포함하고,
    상기 난독화 스크립트를 수정하는 단계는,
    상기 테이블에 저장된 수정 문자열 중에서 상기 매칭된 키워드에 포함되는 문자열이 있는지를 검색하여, 검색 성공시 검색된 수정 문자열을 수정할 문자열로 결정하는 단계;
    상기 수정할 문자열에 대응되는 대체 문자열 중 하나를 상기 수정할 문자열을 대체할 문자열로 결정하는 단계; 및
    상기 수정할 문자열을 상기 대체할 문자열로 대체하는 단계를 포함하는,
    난독화 해제를 통한 악성 스크립트 탐지 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 대체할 문자열은 상기 스크립트가 실행되지 않고 출력될 수 있도록 하기 위한, html의 xmp 태그를 포함하는,
    난독화 해제를 통한 악성 스크립트 탐지 방법.
  4. 제1항에 있어서,
    상기 분류된 난독화 기법이 packer encode, packed encode 또는 base10 encode인 경우,
    상기 키워드는 'eval(fuction'이고, 상기 수정할 문자열은 'eval(' 이고, 상기 대체할 문자열은 'document.write("<xmp>"'인,
    난독화 해제를 통한 악성 스크립트 탐지 방법.
  5. 제1항에 있어서,
    상기 분류된 난독화 기법이 Dec encode 또는 JSO encode인 경우,
    상기 키워드는 'eval((function'이고, 상기 수정할 문자열은 'eval(' 이고, 상기 대체할 문자열은 'document.write("<xmp>"' 인,
    난독화 해제를 통한 악성 스크립트 탐지 방법.
  6. 제1항에 있어서,
    상기 분류된 난독화 기법이 Hex encode인 경우,
    상기 키워드는 'eval('\'이고, 상기 수정할 문자열은 'eval(' 이고, 상기 대체할 문자열은 'document.write("<xmp>"' 인,
    난독화 해제를 통한 악성 스크립트 탐지 방법.
  7. 제1항에 있어서,
    상기 분류된 난독화 기법이 jj encode인 경우,
    상기 키워드는 '$$($$'이고, 상기 수정할 문자열은 '$$(' 이고, 상기 대체할 문자열은 'document.write(' 인,
    난독화 해제를 통한 악성 스크립트 탐지 방법.
  8. 제1항에 있어서,
    상기 분류된 난독화 기법이 base64 encode인 경우,
    상기 키워드는 'ABCDEFG'이고, 상기 수정할 문자열은 상기 키워드 앞의 공백 문자이고, 상기 대체할 문자열은 'document.write("<xmp>"); var' 인,
    난독화 해제를 통한 악성 스크립트 탐지 방법.
  9. 제1항에 있어서,
    상기 분류된 난독화 기법이 dehydrating a string인 경우,
    상기 키워드는 'r.push(String.fromCharCode'이고, 상기 수정할 문자열은 'String.fromCharCode(tmp))' 이고, 상기 대체할 문자열은 'document.write(String.fromCharCode(tmp)))'인,
    난독화 해제를 통한 악성 스크립트 탐지 방법.
  10. 제1항에 있어서,
    상기 난독화를 해제하여, 평문 스크립트를 추출하는 단계는,
    상기 수정된 스크립트의, 상기 대체할 문자열 이후의 문자열을 모두 출력하는 단계; 및
    상기 출력된 문자열을 이용하여 난독화를 해제하는 단계를 포함하는,
    난독화 해제를 통한 악성 스크립트 탐지 방법.
  11. 삭제
  12. 하나 이상의 프로세서;
    상기 프로세서에 의하여 수행되는 컴퓨터 프로그램을 로드하는 메모리; 및
    맵핑 테이블을 저장하는 스토리지를 포함하되,
    상기 컴퓨터 프로그램은,
    수정 문자열 및 각 수정 문자열에 대응되는 대체 문자열을 테이블 형태로 저장하는 오퍼레이션;
    난독화 기법 별로 미리 지정된 키워드와 난독화 스크립트를 매칭하여, 난독화 기법을 분류하는 오퍼레이션;
    상기 분류된 난독화 기법에 따라, 상기 난독화 스크립트가 실행되지 않고 출력되도록 상기 난독화 스크립트를 수정하는 오퍼레이션;
    상기 수정된 스크립트를 출력하고, 난독화를 해제하여 평문 스크립트를 추출하는 오퍼레이션; 및
    추출된 평문 스크립트와 악성 스크립트 DB의 패턴을 매칭하여 상기 난독화 스크립트 내의 악성 스크립트를 탐지하는 오퍼레이션을 포함하되,
    매칭된 키워드는 상기 난독화 스크립트의 실행 함수를 포함하고,
    상기 난독화 스크립트를 수정하는 오퍼레이션은,
    상기 테이블에 저장된 수정 문자열 중에서 상기 매칭된 키워드에 포함되는 문자열이 있는지를 검색하여, 검색 성공시 검색된 수정 문자열을 수정할 문자열로 결정하는 오퍼레이션;
    상기 수정할 문자열에 대응되는 대체 문자열 중 하나를 상기 수정할 문자열을 대체할 문자열로 결정하는 오퍼레이션; 및
    상기 수정할 문자열을 상기 대체할 문자열로 대체하는 오퍼레이션을 포함하는,
    난독화 해제를 통한 악성 스크립트 탐지 장치.
  13. 컴퓨터를 이용하여 제1항, 및 제3항 내지 제10항 중 어느 한 항의 방법을 실행시키기 위하여 저장매체에 저장된 컴퓨터 프로그램.
KR1020160180351A 2016-12-27 2016-12-27 난독화 스크립트에 대한 악성 스크립트 탐지 방법 및 그 장치 KR101874373B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160180351A KR101874373B1 (ko) 2016-12-27 2016-12-27 난독화 스크립트에 대한 악성 스크립트 탐지 방법 및 그 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160180351A KR101874373B1 (ko) 2016-12-27 2016-12-27 난독화 스크립트에 대한 악성 스크립트 탐지 방법 및 그 장치

Publications (1)

Publication Number Publication Date
KR101874373B1 true KR101874373B1 (ko) 2018-07-04

Family

ID=62912895

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160180351A KR101874373B1 (ko) 2016-12-27 2016-12-27 난독화 스크립트에 대한 악성 스크립트 탐지 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR101874373B1 (ko)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10860719B1 (en) * 2020-03-06 2020-12-08 Cyberark Software Ltd. Detecting and protecting against security vulnerabilities in dynamic linkers and scripts
CN112380422A (zh) * 2020-09-04 2021-02-19 上海智芝全智能科技有限公司 一种基于关键词热度的金融新闻推荐装置
CN115225294A (zh) * 2021-04-16 2022-10-21 深信服科技股份有限公司 一种混淆脚本收集方法、装置、设备及介质
KR20230020217A (ko) 2021-08-03 2023-02-10 주식회사 엔피코어 난독화 기법이 적용되어 있는 자바스크립트의 탐지방법 및 장치
CN116305131A (zh) * 2023-05-20 2023-06-23 北京长亭科技有限公司 脚本静态去混淆方法及系统
KR20230172760A (ko) 2022-06-16 2023-12-26 악성코드검거단(주) 난독화된 악성 스크립트 방지 장치 및 방법
KR20240003169A (ko) 2022-06-30 2024-01-08 악성코드검거단(주) Db를 활용한 난독화된 악성 스크립트 탐지 장치 및 방법
KR20240009267A (ko) 2022-07-13 2024-01-22 악성코드검거단(주) 난독화된 탐지회피형 악성 스크립트 탐지 장치 및 방법
KR20240020883A (ko) 2022-08-09 2024-02-16 악성코드검거단(주) 유한상태기계를 활용한 악성 스크립트 방지 장치 및 방법

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10860719B1 (en) * 2020-03-06 2020-12-08 Cyberark Software Ltd. Detecting and protecting against security vulnerabilities in dynamic linkers and scripts
CN112380422A (zh) * 2020-09-04 2021-02-19 上海智芝全智能科技有限公司 一种基于关键词热度的金融新闻推荐装置
CN115225294A (zh) * 2021-04-16 2022-10-21 深信服科技股份有限公司 一种混淆脚本收集方法、装置、设备及介质
KR20230020217A (ko) 2021-08-03 2023-02-10 주식회사 엔피코어 난독화 기법이 적용되어 있는 자바스크립트의 탐지방법 및 장치
KR20230172760A (ko) 2022-06-16 2023-12-26 악성코드검거단(주) 난독화된 악성 스크립트 방지 장치 및 방법
KR20240003169A (ko) 2022-06-30 2024-01-08 악성코드검거단(주) Db를 활용한 난독화된 악성 스크립트 탐지 장치 및 방법
KR20240009267A (ko) 2022-07-13 2024-01-22 악성코드검거단(주) 난독화된 탐지회피형 악성 스크립트 탐지 장치 및 방법
KR20240020883A (ko) 2022-08-09 2024-02-16 악성코드검거단(주) 유한상태기계를 활용한 악성 스크립트 방지 장치 및 방법
CN116305131A (zh) * 2023-05-20 2023-06-23 北京长亭科技有限公司 脚本静态去混淆方法及系统
CN116305131B (zh) * 2023-05-20 2023-08-11 北京长亭科技有限公司 脚本静态去混淆方法及系统

Similar Documents

Publication Publication Date Title
KR101874373B1 (ko) 난독화 스크립트에 대한 악성 스크립트 탐지 방법 및 그 장치
KR101083311B1 (ko) 악성 스크립트 분석 시스템 및 그를 이용한 악성 스크립트 분석 방법
Gupta et al. Enhancing the browser-side context-aware sanitization of suspicious HTML5 code for halting the DOM-based XSS vulnerabilities in cloud
CN109922052B (zh) 一种结合多重特征的恶意url检测方法
RU2610254C2 (ru) Система и способ определения измененных веб-страниц
US10140451B2 (en) Detection of malicious scripting language code in a network environment
US20190132355A1 (en) Malicious script detection
CN103748853B (zh) 用于对数据通信网络中的协议消息进行分类的方法和系统
US20160065613A1 (en) System and method for detecting malicious code based on web
US20040205411A1 (en) Method of detecting malicious scripts using code insertion technique
CN111835777B (zh) 一种异常流量检测方法、装置、设备及介质
KR20180081053A (ko) 도메인 생성 알고리즘(dga) 멀웨어 탐지를 위한 시스템 및 방법들
CN107463844B (zh) Web木马检测方法及系统
US20210136032A1 (en) Method and apparatus for generating summary of url for url clustering
JPWO2019013266A1 (ja) 判定装置、判定方法、および、判定プログラム
US8484232B2 (en) Method, computer arrangement, computer program and computer program product for checking for the presence of control statements in a data value
CN113067792A (zh) 一种xss攻击识别方法、装置、设备及介质
JP2012088803A (ja) 悪性ウェブコード判別システム、悪性ウェブコード判別方法および悪性ウェブコード判別用プログラム
CN112817877B (zh) 异常脚本检测方法、装置、计算机设备和存储介质
US11321453B2 (en) Method and system for detecting and classifying malware based on families
CN113688240B (zh) 威胁要素提取方法、装置、设备及存储介质
CN111159111A (zh) 一种信息处理方法、设备、系统和计算机可读存储介质
CN109218284B (zh) Xss漏洞检测方法及装置、计算机设备及可读介质
US10515219B2 (en) Determining terms for security test
CN114741692A (zh) 一种后门流量识别的方法、系统、设备及可读存储介质

Legal Events

Date Code Title Description
AMND Amendment
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant