KR20130002365A - 메타 패턴을 이용한 웹쉘 탐지 장치 - Google Patents
메타 패턴을 이용한 웹쉘 탐지 장치 Download PDFInfo
- Publication number
- KR20130002365A KR20130002365A KR1020110061014A KR20110061014A KR20130002365A KR 20130002365 A KR20130002365 A KR 20130002365A KR 1020110061014 A KR1020110061014 A KR 1020110061014A KR 20110061014 A KR20110061014 A KR 20110061014A KR 20130002365 A KR20130002365 A KR 20130002365A
- Authority
- KR
- South Korea
- Prior art keywords
- web
- pattern
- meta
- state
- accept
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명은 정규 표현 규칙으로 정의한 웹쉘 패턴을 해석하여 비결정유한오토마타를 생성하는 비결정유한오토마타 생성부, 비결정유한오토마타로 최적화된 결정유한오토마타를 생성하는 결정유한오토마타 생성부 및 최적화된 결정유한오토마타로부터 메타 패턴을 생성하는 메타 패턴 생성부를 포함하는 것을 특징으로 한다.
Description
본 발명은 웹쉘 탐지 장치에 관한 것으로서, 더욱 상세하게는 메타 패턴을 이용하여 웹 파일에서 웹쉘 패턴을 탐지하는 메타 패턴을 이용한 웹쉘 탐지 장치에 관한 것이다.
일반적으로 웹 서비스에는 게시판이나 자료실에 파일을 첨부할 수 있는 기능이 포함된다. 이때 txt, jpg, doc와 같은 데이터 파일 종류 이외에 웹쉘(Webshell)을 업로드하여 웹 서버(WebServer)를 해킹하는 사고가 빈번히 발생하고 있다.
웹쉘(Webshell)이란 공격자(Hacker)가 원격에서 대상 웹 서버(WebServer)에 명령을 수행할 수 있도록 작성한 웹 스크립트 파일이다. 공격자는 웹쉘을 대상 서버에 업로드 또는 수정한 후 웹을 통해 명령어를 수행하므로 네트워크 방화벽의 영향을 받지 않고 서버를 제어할 수 있다.
웹쉘 프로그램은 인터넷을 통해 쉽게 구할 수 있고, 홈페이지의 업로드 취약점 확인 방법도 간단하기 때문에 해커들에 의해 쉽게 사용된다.
최근 국내에서 발생하고 있는 웹 서버 피해 시스템들 중 대부분에 웹쉘이 탐지되고 있다.
상기한 기술구성은 본 발명의 이해를 돕기 위한 배경기술로서, 본 발명이 속하는 기술분야에서 널리 알려진 종래기술을 의미하는 것은 아니다.
종래에는 웹쉘을 탐지하기 위해, 웹쉘 문자열을 검사하고, 파일 확장자를 수시로 변경하며 탐지하여야 하는 데, 이 경우, 많은 비용과 시간, 노력이 필요하다.
뿐만 아니라, 최근에 발견되는 웹쉘은 패스워드 기능이 설정되어 해당 웹쉘을 업로드한 공격자만이 접근할 수 있어 웹쉘을 탐지하는 사용자에게 큰 부담이 되고 있다.
게다가, 웹쉘 자체에는 악성 코드가 포함되지 않고, 자체적으로 동작하지 않으며, 공격자가 원격지에서 통신망을 통해 웹쉘을 이용하여 웹 서버를 제어하기 때문에 기존의 바이러스 유무를 판단하는 바이러스 탐지 시스템으로는 탐지가 어려웠다.
본 발명은 전술한 문제점을 개선하기 위해 창안된 것으로서, 웹쉘 패턴을 메타 패턴으로 변환한 후, 웹쉘 검색 서버에 제공하여 웹쉘 검색 서버에서 메타 패턴을 통해 웹 파일에 포함된 웹쉘을 탐지할 수 있도록 한 메타 패턴을 이용한 웹쉘 탐지 장치를 제공하는데 그 목적이 있다.
본 발명의 일 측면에 따른 메타 패턴을 이용한 웹쉘 탐지 장치는 정규 표현 규칙으로 정의한 웹쉘 패턴을 해석하여 비결정유한오토마타를 생성하는 비결정유한오토마타 생성부; 상기 비결정유한오토마타로 최적화된 결정유한오토마타를 생성하는 결정유한오토마타 생성부; 및 상기 최적화된 결정유한오토마타로부터 메타 패턴을 생성하는 메타 패턴 생성부를 포함하는 것을 특징으로 한다.
본 발명의 상기 정규 표현 규칙에서, x 는 문자 x를, "x"는 x에 오퍼레이터(operator)가 와도 단순히 x임을, ₩x는 x에 오퍼레이터(operator)가 와도 단순히 x임을, [xy]는 문자열 xy를, [x-z]는 x에서 z까지(x,y,z)를, [^x]는 x 이외의 아무 문자를, .는 뉴 라인(New line)이 아닌 아무 문자, ^x는 줄의 제일 처음에 오는 x, <y>x는 시작 조건이 y인 x를, x$는 줄의 제일 끝에 오는 x를, x?는 선택적으로 오는 x를, x*는 널(Null)을 포함하는 x의 인스턴스(instance)를, x+는 널(Null)이 아닌 x의 인스턴스(instance)를 x|y는 x 또는 y를, (x)는 x를, x/y는 뒤에 y를 수반하는 x를, {xx}는 정의 부분에 기초하여 xx가 번역을, x{m,n}는 m에서 n 사이의 수 만큼 x가 발생하는 것을 의미하는 것을 특징으로 한다.
본 발명의 상기 메타 패턴은 심볼 테이블, 상태 테이블 및 억셉트 테이블을 포함하는 것을 특징으로 한다.
본 발명의 상기 심볼 테이블은 상기 최적화된 결정유한오토마타에서 입력 문자의 값을 그룹핑한 것을 특징으로 한다.
본 발명의 상기 심볼 테이블은 상기 최적화된 결정유한오토마타에서 상기 입력 문자의 값을 '1'에서부터 순차적으로 정의하고 나머지 값들은 '0'으로 정의하여 그룹핑되는 것을 특징으로 한다.
본 발명의 상기 상태 테이블은 현재 상태에서 심볼 인덱스값에 따라 천이되는 다음 상태를 나타내어져, 상기 심볼 테이블의 심볼 인덱스값의 수와 상기 최적화된 결정유한오토마타의 상태의 수에 따라 표현되는 것을 특징으로 한다.
본 발명의 상기 억셉트 테이블은 상기 최적화된 정규 표현 규칙을 만족하는 상태에 해당하는 열의 값에 억셉트 정보를 표현하여 상기 문자가 웹쉘 패턴에 매칭되는 지를 나타내는 것을 특징으로 한다.
본 발명의 다른 측면에 따른 메타 패턴을 이용한 웹쉘 탐지 장치는 정규 표현 규칙으로 정의한 웹쉘 패턴을 해석하여 생성된 메타 패턴을 저장하는 메타 패턴 저장부; 및 상기 메타 패턴 저장부에 저장된 상기 메타 패턴을 이용하여 웹 파일에서 상기 웹쉘 패턴을 검색하는 웹쉘 검색부를 포함하는 것을 특징으로 한다.
본 발명의 상기 웹쉘 검색부는 상기 웹 파일에서 입력 문자를 읽어들여 상기 입력 문자를 통해 심볼 테이블에서 심볼 인덱스값을 구하고, 상기 심볼 인덱스값을 이용하여 상태 테이블에서 다음 상태의 값을 구하여 상기 다음 상태의 값이 널 상태가 아니면, 상기 다음 상태의 값을 이용하여 억셉트 테이블에서 억셉트 값을 구한 후, 상기 억셉트 값이 상기 웹쉘 패턴과 일치하는 지를 검사하는 것을 특징으로 한다.
본 발명에서, 웹 서버 또는 상기 웹 서버를 관리하는 관리 서버에서 상기 웹 파일을 검색하여 상기 웹쉘 검색부로 입력하는 웹 파일 검색부를 더 포함하는 것을 특징으로 한다.
본 발명의 상기 심볼 테이블은 상기 최적화된 결정유한오토마타에서 입력 문자의 값을 그룹핑한 것을 특징으로 한다.
본 발명의 상기 심볼 테이블은 상기 최적화된 결정유한오토마타에서 상기 입력 문자의 값을 '1'에서부터 순차적으로 정의하고 나머지 값들은 '0'으로 정의하여 그룹핑되는 것을 특징으로 한다.
본 발명의 상기 상태 테이블은 현재 상태에서 심볼 인덱스값에 따라 천이되는 다음 상태를 나타내어져, 상기 심볼 테이블의 심볼 인덱스값의 수와 상기 최적화된 결정유한오토마타의 상태의 수에 따라 표현되는 것을 특징으로 한다.
본 발명의 상기 억셉트 테이블은 상기 최적화된 정규 표현 규칙을 만족하는 상태에 해당하는 열의 값에 억셉트 정보를 표현하여 상기 문자가 웹쉘 패턴에 매칭되는 지를 나타내는 것을 특징으로 한다.
본 발명은 웹 서버에서 미리 가공된 메타 패턴을 이용하여 웹쉘을 탐지하므로, 웹쉘 패턴을 가공하는데 소모되는 시간과 비용 및 노력을 절감할 수 있다.
또한, 본 발명은 메타 패턴으로 웹쉘을 탐지하므로, 웹쉘 탐지 회피를 위한 웹쉘 변형 등에도 대처할 수 있다.
도 1 은 본 발명의 일 실시예에 따른 메타 패턴을 이용한 웹쉘 탐지 장치의 블럭 구성도이다.
도 2 는 본 발명의 일 실시예에 따른 메타 패턴을 이용한 웹쉘 탐지 장치의 동작 과정을 도시한 순서도이다.
도 3 은 본 발명의 일 실시예에 따른 정규표현식으로부터 변환된 비결정유한오토마타의 그래프이다.
도 4 는 도 3 의 비결정유한오토마타로부터 변환된 결정유한오토마타의 그래프이다.
도 5 는 도 4 의 결정유한오토마타로부터 변환된 최적화된 결정유한오토마타의 그래프이다.
도 6 은 본 발명의 일 실시예에 따른 메타 패턴을 이용한 웹쉘 패턴을 탐지 방법의 순서도이다.
도 2 는 본 발명의 일 실시예에 따른 메타 패턴을 이용한 웹쉘 탐지 장치의 동작 과정을 도시한 순서도이다.
도 3 은 본 발명의 일 실시예에 따른 정규표현식으로부터 변환된 비결정유한오토마타의 그래프이다.
도 4 는 도 3 의 비결정유한오토마타로부터 변환된 결정유한오토마타의 그래프이다.
도 5 는 도 4 의 결정유한오토마타로부터 변환된 최적화된 결정유한오토마타의 그래프이다.
도 6 은 본 발명의 일 실시예에 따른 메타 패턴을 이용한 웹쉘 패턴을 탐지 방법의 순서도이다.
이하에서는 본 발명의 일 실시예에 따른 메타 패턴을 이용한 웹쉘 탐지 장치를 첨부된 도면들을 참조하여 상세하게 설명한다. 이러한 과정에서 도면에 도시된 선들의 두께나 구성요소의 크기 등은 설명의 명료성과 편의상 과장되게 도시되어 있을 수 있다. 또한 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로써, 이는 사용자, 운용자의 의도 또는 관례에 따라 달라질 수 있다. 그러므로 이러한 용어들에 대한 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야할 것이다.
도 1 은 본 발명의 일 실시예에 따른 메타 패턴을 이용한 웹쉘 탐지 장치의 블럭 구성도이다.
본 발명의 일 실시예에 따른 메타 패턴을 이용한 웹쉘 탐지 장치는 메타 패턴 생성서버(10)와 웹쉘 검색 서버(20)를 포함한다.
메타 패턴 생성서버(10)는 정규 표현식(Regular Expression)으로 정의되어 있는 웹쉘 패턴을 이용하여 메타 패턴을 생성한다.
메타 패턴 생성서버(10)는 정규 표현식 저장부(11), 비결정유한오토마타 생성부(12)와, 결정유한오토마타 생성부(13), 메타 패턴 생성부(14) 및 메타 패턴 관리부(15)를 포함한다.
정규 표현식 저장부(11)는 정규 표현 규칙에 따라 정의되는 다양한 정규 표현식을 저장한다. 이러한, 웹쉘 패턴은 정규 표현식으로 정의되는 바, 웰쉘은 cmd₩.exe 와 같이 정의될 수 있다.
아울러, 이러한 웹쉘은 웹 파일에 정의되는 바, 이를 하기와 같이 웹 파일에 포함될 수 있다.
<%
Function CmdShell()
If Request("SP")<>"" Then Session("ShellPath") = Request("SP")
ShellPath=Session("ShellPath")
if ShellPath="" Then ShellPath = " cmd . exe "
if Request("wscript")="yes" then
checked=" checked"
else
checked=""
end if
여기서, "cmd.exe" 가 웹쉘이다.
비결정유한오토마타 생성부(12)는 정규 표현식으로 정의되어 있는 웹쉘 패턴을 이용하여 비결정유한오토마타(Non-deterministric Finite state Automata;NFA)를 생성한다.
정규 표현 규칙은 아래의 표 1 과 같다.
문자 | 의미 |
x | 문자 x |
"x" | x에 오퍼레이터(operator)가 와도 단순히 x |
₩x | x에 오퍼레이터(operator)가 와도 단순히 x |
[xy] | 문자열 xy |
[x-z] | x에서 z까지(x,y,z) |
[^x] | x 이외의 아무 문자 |
. | New line이 아닌 아무 문자 |
^x | 줄의 제일 처음에 오는 x |
<y>x | 시작 조건이 y인 x |
x$ | 줄의 제일 끝에 오는 x |
x? | 선택적으로 오는 x |
x* | 널(Null)을 포함하는 x의 인스턴스(instance) |
x+ | 널(Null)이 아닌 x의 인스턴스(instance) |
x|y | x 또는 y |
(x) | x |
x/y | 뒤에 y를 수반하는 x |
{xx} | 정의 부분에 기초하여 xx가 번역 |
x{m,n} | m에서 n 사이의 수 만큼 x가 발생 |
비결정유한오토마타 생성부(12)는 상기한 바와 같이, 정규 표현식으로 정의되어 있는 웹쉘 패턴을 다수 개의 상태를 가진 상태도로 표현하게 된다.
결정유한오토마타 생성부(13)는 비결정유한오토마타 생성부(12)에 의해 생성된 비결정유한오토마타를 이용하여 결정유한오토마타(Deterministric Finite state Automata;DFA)를 생성한다.
이후, 생성된 결정유한오토마타를 최적화된 결정유한오토마타(Optimized-DFA)로 변환한다.
메타 패턴 생성부(14)는 최적화된 결정유한오토마타를 이용하여 메타 패턴을 생성한다.
메타 패턴은 심볼 테이블(Symbol Table)과 상태 테이블(State Table) 및 억셉트 테이블(Accept Table)을 포함한다.
여기서, 심볼 테이블은 입력 문자를 심볼 인덱스(Symbol index)로 그룹핑(Grouping) 및 변환하여 메타 패턴의 크기를 감소시키기 위한 테이블이다.
이러한 심볼 테이블에서, 열의 크기는 전체 입력 문자의 개수와 동일하고, 열의 인덱스값은 입력 문자의 문자값(아스키 코드값)이다. 이러한 심볼 테이블은 행의 크기는 1이고, 행의 값은 입력 문자의 심볼 인덱스값이 된다.
상태 테이블은 현재 상태(Current state)에서 심볼 인덱스값에 따라 다음 상태(Next state)로 천이하기 위한 테이블이다. 이러한 상태 테이블은 열의 크기는 심볼 인덱스의 개수만큼 가지며, 행의 크기는 상태의 개수만큼 가진다. 이러한 상태 테이블에서 현재 상태는 현재 진행중인 상태이며, 다음 상태는 현재 상태 행에서 심볼 인덱스열에 해당하는 값을 의미한다. 아울러, 상태 테이블의 셀(Cell)값은 다음 상태의 값을 의미하는데, 심볼 인덱스의 값에 해당하는 다음상태의 값이 없는 경우 널 상태 값(Null State)을 가진다.
억셉트 테이블은 상태가 웹쉘 패턴에 매칭되었는 지를 나타내는 테이블이다. 이러한 억셉트 테이블에서 행의 크기는 상태의 개수와 동일하고, 값은 웹쉘 패턴이 매칭되었을 경우 억셉트(Accept) 값을 가지고, 매칭되지 않을 경우 낫 억셉트(Not Accept) 값을 가진다. 억셉트 테이블의 억셉트 값은 웹쉘 패턴임을 나타내는 패턴 식별자 또는 패턴 정보의 식별 정보로 표시된다.
메타 패턴 관리부(15)는 메타 패턴 생성부(14)에서 생성된 메타 패턴을 저장하고, 웹서버 또는 웹서버를 관리하는 관리 서버(30)에 구비된 웹쉘 검색 서버(20)로 전송한다.
이에 따라, 웹쉘 검색 서버(20)는 상기한 바와 같이, 웹 서버 또는 웹 서버를 관리하는 관리 서버(30)에 마련되어 웹 서버 또는 웹 서버를 관리하는 관리 서버(30)에 저장되어 있는 웹 파일에서 웹쉘을 검색한다.
웹 파일 검색부(22)는 웹 서버 또는 웹 서버 관리 서버(30)의 웹 파일 저장부(31)에서 웹 파일을 검색한다.
메타 패턴 저장부(23)는 메타 패턴 생성서버(10)에서 생성된 메타 패턴을 저장한다.
웹쉘 검색부(21)는 메타 패턴 저장부(23)에 저장되어 있는 메타 패턴을 이용하여 웹 파일 검색부(22)에 의해 검색된 웹 파일에서 웹쉘을 검색한다.
검색 결과 저장부(24)는 웹쉘 검색부(21)에서 검색된 검색 결과를 저장한다. 이러한 검색 결과에는 검색된 웹쉘 패턴과 웹쉘이 검색된 웹 파일명, 웹 파일내 검색 위치, 검색 시간 등이 포함될 수 있을 것이다.
이하, 본 발명의 일 실시예에 따른 메타 패턴을 이용한 웹쉘 탐지 장치의 동작 과정을 도 2 내지 도 6 을 참조하여 상세하게 설명한다.
도 2 는 본 발명의 일 실시예에 따른 메타 패턴을 이용한 웹쉘 탐지 장치의 동작 과정을 도시한 순서도이고, 도 3 은 본 발명의 일 실시예에 따른 정규표현식으로부터 변환된 비결정유한오토마타의 그래프이며, 도 4 는 도 3 의 비결정유한오토마타로부터 변환된 결정유한오토마타의 그래프이며, 도 5 는 도 4 의 결정유한오토마타로부터 변환된 최적화된 결정유한오토마타의 그래프이며, 도 6 은 본 발명의 일 실시예에 따른 메타 패턴을 이용한 웹쉘 패턴 탐지 방법의 순서도이다.
참고로, 본 실시예에서는 임의의 정규 표현식을 예시로 하여 설명한다.
이하, 정규 표현식 ₩.run₩ *₩( 을 예시로 하여 설명한다.
먼저 메타 패턴 생성서버(10)는 정규 표현식 ₩.run₩ *₩( 을 해석(S10)하여 다양한 문자열을 얻을 수 있다.
이러한 ₩.run₩ *₩( 에서, 입력 문자는 ".", "r", "u", "n", ""(공백), "("로 이루어지고, ".run(", ".run (", "run (" 등으로 나타내어진다. 여기서, "run"과 "(" 사이에 공백(space)가 없거나 하나 이상 나타내어질 수 있다.
다음으로, 정규 표현식 ₩.run₩ *₩( 으로부터 비결정유한오토마타를 생성한다(S10,S20).
여기서, 상기한 정규 표현식 ₩.run₩ *₩( 은 도 3 에 도시된 바와 같이, 총 11개의 상태를 가진 상태도(state diagram)으로 표현된다.
최종 '10' 상태에까지 진행되어야 정규 표현식 ₩.run₩ *₩( 을 만족하게 된다. 만약, 상태도에 표시된 문자 이외의 다른 문자가 입력되면, 해당 문자열은 정규 표현식 ₩.run₩ *₩( 을 만족하지 않는 문자열에 해당한다.
도 3 을 참조하면, 일 예로 현재 상태 '0'에서, ε 에 따라, 다음 상태 '1'이 되는데, 이러한 과정은 나머지 각 상태 마다 입력되는 문자에 따라 다음 상태로 변환되게 된다.
이러한 도 3 의 비결정유한오토마타의 테이블은 하기의 표 2 와 같다.
상태 | ε | . | r | u | n | space | ( | Accept |
0 | 1 | -- | -- | -- | -- | -- | -- | Not Accept |
1 | -- | 2 | -- | -- | -- | -- | -- | Not Accept |
2 | -- | -- | 3 | -- | -- | -- | -- | Not Accept |
3 | -- | -- | -- | 4 | -- | -- | -- | Not Accept |
4 | -- | -- | -- | -- | 7 | -- | -- | Not Accept |
5 | -- | -- | -- | -- | -- | 6 | -- | Not Accept |
6 | 5,8 | -- | -- | -- | -- | -- | -- | Not Accept |
7 | 5,8 | -- | -- | -- | -- | -- | -- | Not Accept |
8 | -- | -- | -- | -- | -- | 9 | Not Accept | |
9 | 10 | -- | -- | -- | -- | -- | -- | Not Accept |
10 | -- | -- | -- | -- | -- | -- | -- | Accept |
이러한 비결정유한오토마타가 생성되면, 다음으로 비결정유한오토마타를 이용하여 결정유한오토마타를 생성한다(S30).
결정유한오토마타는 도 4 에 도시된 바와 같다.
여기서, 비결정유한오토마타는 총 11 개의 상태를 가지는 바, 이를 결정유한오토마타로 생성할 경우 7개의 상태를 가진 상태도로 표현된다.
이러한 비결정유한오토마타의 테이블은 하기의 표 3 과 같다.
상태 | . | r | u | n | space | ( | Accept |
0 | 1 | -- | -- | -- | -- | -- | Not Accept |
1 | -- | 2 | -- | -- | -- | -- | Not Accept |
2 | -- | -- | 3 | -- | -- | -- | Not Accept |
3 | -- | -- | -- | 4 | -- | -- | Not Accept |
4 | -- | -- | -- | -- | 5 | 6 | Not Accept |
5 | -- | -- | -- | -- | 5 | 6 | Not Accept |
6 | -- | -- | -- | -- | -- | -- | Accept |
이와 같이, 비결정유한오토마타를 생성한 다음에는, 이를 이용하여 최적화된 비결정유한오토마타를 생성한다(S40)
여기서, 결정유한오토마타는 총 7 개의 상태를 가지는 바, 이를 최적화된 결정유한오토마타로 생성할 경우, 도 5 에 도시된 바와 같이, 6개의 상태를 가진 상태도로 표현된다.
이러한 최적화된 비결정유한오토마타의 테이블은 하기의 표 4 와 같다.
상태 | . | r | u | n | space | ( | Acecept |
0 | 1 | -- | -- | -- | -- | -- | Not Accept |
1 | -- | 2 | -- | -- | -- | -- | Not Accept |
2 | -- | -- | 3 | -- | -- | -- | Not Accept |
3 | -- | -- | -- | 4 | -- | -- | Not Accept |
4 | -- | -- | -- | -- | 4 | 5 | Not Accept |
5 | -- | -- | -- | -- | -- | -- | Accept |
이와 같이, 최적화된 비결정유한오토마타가 생성되면, 다음으로 이를 이용하여 메타 패턴을 생성한다(S50).
메타 패턴은 심볼 테이블과 상태 테이블 및 억셉트 테이블을 포함한다.
여기서, 심볼 테이블은 최적화된 결정유한오토마타에서 입력 문자의 값을 '1'에서부터 순차적으로 정의하고 나머지 값들은 '0'으로 정의한다.
즉, 입력 문자 "."는 '1'을 가지며, 입력 문자 "r"은 '2'를 가지며, 입력 문자 "u"는 '3'을 가지며, 입력 문자 "n"은 '4'를 가지며, 입력 문자 " "(공백)은 '5'를 가지며, 입력 문자 "("는 '6'을 가지며, 나머지 입력 문자는 '0'을 가진다.
이 경우, 총 256개의 문자값을 가지는 입력값을 그룹핑하여 7가지로 축소할 수 있다.
이러한 표현된 심볼 테이블은 표 5 와 같다.
입력문자 | a | b | c | d | e | f | g | h | i | j |
값 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
입력문자 | k | l | m | n | o | p | q | r | s | t |
값 | 0 | 0 | 0 | 4 | 0 | 0 | 0 | 2 | 0 | 0 |
입력문자 | u | v | w | x | y | z | space | . | ! | ( |
값 | 3 | 0 | 0 | 0 | 0 | 0 | 5 | 1 | 0 | 6 |
이러한 심볼 테이블을 이용하여 상태 테이블을 생성한다.
상태 테이블의 열의 크기는 심볼 테이블의 입력값의 수와 동일하므로, 상태 테이블의 열은 '0'에서부터 '6'까지의 값을 가지게 된다.
또한, 상태 테이블의 행의 크기는 최적화된 결정유한오토마타 그래프의 상태의 수와 동일하므로, 상태 테이블의 행은 7개의 값을 가진다.
따라서, 상태 테이블은 6X7의 행렬의 형태로 정의된다.
이러한 상태 테이블은 하기의 표 6 과 같다.
상태 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
0 | NS | 1 | NS | NS | NS | NS | NS |
1 | NS | NS | 2 | NS | NS | NS | NS |
2 | NS | NS | NS | 3 | NS | NS | NS |
3 | NS | NS | NS | NS | 4 | NS | NS |
4 | NS | NS | NS | NS | NS | 4 | 5 |
5 | NS | NS | NS | NS | NS | NS | NS |
즉, '0' 상태는 입력값 '.'이 나오는 경우 '1' 상태로 천이되기 때문에 입력 값 '.'에 해당하는 심볼 테이블의 값인 '1'을 '0'행의 '1'열 위치에 '1'상태로 이동하는 정보를 저장하고 나머지는 NS를 저장한다.
'1' 상태는 입력값 'r'이 나오는 경우 '2' 상태로 천이되기 때문에 입력 값 'r'에 해당하는 심볼 테이블의 값인 '2'를 '1'행의 '2'열 위치에 '2'상태로 이동하는 정보를 저장하고 나머지는 NS를 저장한다.
'2' 상태는 입력값 'u'가 나오는 경우 '3' 상태로 천이되기 때문에 입력 값 'u'에 해당하는 심볼 테이블의 값인 '3'을 '2'행의 '3'열 위치에 '3'상태로 이동하는 정보를 저장하고 나머지는 NS를 저장한다.
'3' 상태는 입력값 'n'이 나오는 경우 '4' 상태로 천이되기 때문에 입력 값 'n'에 해당하는 심볼 테이블의 값인 '4'를 '3'행의 '4'열 위치에 '4'상태로 이동하는 정보를 저장하고 나머지는 NS를 저장한다.
'4' 상태는 입력값 ''(공백)이 나오는 경우 '4'상태로로 천이되기 때문에 입력 값 ''(공백)에 해당하는 심볼 테이블의 값인 '5'를 '4'행의 '5'열 위치에 '4'상태로 이동하는 정보를 저장하고, 입력값이 '('이 나오는 경우 '5'상태로 천이되기 때문에 입력 값 '('에 해당하는 심볼 테이블의 값인 '6'을 '4'행의 '6'열 위치에 '5'상태로 이동하는 정보를 저장하고 나머지는 NS를 저장한다.
'5' 상태는 입력값에 의해서 천이되는 상태가 없으므로 모두 NS를 저장한다.
여기서, NS(Null State)는 입력 값에 따라 진행할 다음 상태가 없음을 의미한다.
억셉트 테이블은 최적화된 결정유한오토마타에서 정규 표현식을 만족하는 상태가 '5'상태이므로 해당 상태에 해당하는 열의 값에 억셉트정보를 저장한다.
이러한 억셉트 테이블은 하기의 표 7 과 같다.
상태 | Accept |
0 | Not Accept |
1 | Not Accept |
2 | Not Accept |
3 | Not Accept |
4 | Not Accept |
5 | Accept |
이와 같이, 메타 패턴 생성서버(10)는 상기한 과정을 거쳐 메타 패턴을 생성한 후에는, 웹쉘 검색 서버(20)에 메타 패턴을 전송한다(S60).
여기서, 웹쉘 검색 서버(20)는 웹 파일을 저장하거나 관리하는 웹 서버 또는 웹 서버 관리 서버(30) 등에 마련된다.
또한, 메타 패턴의 전송 방식은 유무선 통신망을 통해 전송하거나, 별도의 외부 메모리 등을 통해 오프라인으로 배포하는 것을 모두 포함한다.
웹쉘 검색 서버(20)는 메타 패턴 생성서버(10)로부터 메타 패턴이 전송되면, 웹 서버 또는 웹 서버를 관리하는 관리 서버(30)에 저장되어 있는 웹 파일을 검색한다(S70).
이후, 검색된 웹 파일에서 메타 패턴을 이용하여 웹쉘을 검색하고, 검색 결과를 생성(S80)한다.
이하, 웹쉘 검색 서버(20)가 웹 파일에서 웹쉘을 검색하고, 검색 결과를 생성하는 과정을 도 6 을 참조하여 상세하게 설명한다.
먼저, 상태를 초기화(S802)한 후, 웹쉘을 검색하고자 하는 웹 파일로부터 1개의 문자를 읽어들인다(S804).
웹 파일에 읽어들인 입력 문자가 해당 웹 파일의 끝을 나타내는 지를 검사(S806)하고, 확인 결과, 입력 문자가 웹 파일의 끝을 나타내면 종료하고, 아니면, 읽어 들인 입력 문자를 이용하여 심볼 테이블에서 심볼 인덱스값을 구한다(S808).
입력 문자를 이용하여 심볼 테이블에서 심볼 인덱스값을 구하면, 이 심볼 인덱스값을 이용하여 상태 테이블에서 다음 상태의 값을 구한다(S810).
이때, 다음 상태의 값이 널 상태(Null State)인지를 검사(S812)하고, 검사 결과 다음 상태의 값이 널 상태이면, 초기화한 후 상기한 과정을 다시 수행한다.
반면에, 다음 상태의 값이 널 상태가 아니면, 다음 상태의 값을 이용하여 억셉트 테이블에서 억셉트 값을 구한다(S814).
이 경우 억셉트 값을 이용하여 웹쉘 패턴과 일치하는 지를 검사(S816)하고, 패턴과 일치하지 않으면, 현재 상태를 다음 상태로 변환(S820)한 후, 웹 파일에서 다음 문자 1개를 읽어들여 상기한 과정을 반복한다.
반면에, 웹쉘 패턴과 일치하면, 검색된 웹쉘 패턴 정보를 저장(S818)하고, 최종적으로 검색 결과를 생성하여 출력한다.
본 발명은 도면에 도시된 실시예를 참고로 하여 설명되었으나, 이는 예시적인 것에 불과하며 당해 기술이 속하는 기술분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 아래의 특허청구범위에 의하여 정해져야할 것이다.
10: 메타 패턴 생성서버 11: 정규 표현 규칙 저장부
12: 비결정유한오토마타 생성부 13: 결정유한오토마타 생성부
14: 메타 패턴 생성부 15: 메타 패턴 관리부
20: 웹쉘 검색 서버 21: 웹쉘 검색부
22: 웹 파일 검색부 23: 메타 패턴 저장부
24: 검색 결과 저장부 30: 웹 서버/웹 서버 관리 서버
31: 웹 파일 저장부
12: 비결정유한오토마타 생성부 13: 결정유한오토마타 생성부
14: 메타 패턴 생성부 15: 메타 패턴 관리부
20: 웹쉘 검색 서버 21: 웹쉘 검색부
22: 웹 파일 검색부 23: 메타 패턴 저장부
24: 검색 결과 저장부 30: 웹 서버/웹 서버 관리 서버
31: 웹 파일 저장부
Claims (14)
- 정규 표현 규칙으로 정의한 웹쉘 패턴을 해석하여 비결정유한오토마타를 생성하는 비결정유한오토마타 생성부;
상기 비결정유한오토마타로 최적화된 결정유한오토마타를 생성하는 결정유한오토마타 생성부; 및
상기 최적화된 결정유한오토마타로부터 메타 패턴을 생성하는 메타 패턴 생성부를 포함하는 메타 패턴을 이용한 웹쉘 탐지 장치. - 제 1 항에 있어서, 상기 정규 표현 규칙에서,
x 는 문자 x를, "x"는 x에 오퍼레이터(operator)가 와도 단순히 x임을, ₩x는 x에 오퍼레이터(operator)가 와도 단순히 x임을, [xy]는 문자열 xy를, [x-z]는 x에서 z까지(x,y,z)를, [^x]는 x 이외의 아무 문자를, .는 뉴 라인(New line)이 아닌 아무 문자, ^x는 줄의 제일 처음에 오는 x, <y>x는 시작 조건이 y인 x를, x$는 줄의 제일 끝에 오는 x를, x?는 선택적으로 오는 x를, x*는 널(Null)을 포함하는 x의 인스턴스(instance)를, x+는 널(Null)이 아닌 x의 인스턴스(instance)를 x|y는 x 또는 y를, (x)는 x를, x/y는 뒤에 y를 수반하는 x를, {xx}는 정의 부분에 기초하여 xx가 번역을, x{m,n}는 m에서 n 사이의 수 만큼 x가 발생하는 것을 의미하는 것을 특징으로 하는 메타 패턴을 이용한 웹쉘 탐지 장치. - 제 1 항에 있어서, 상기 메타 패턴은 심볼 테이블, 상태 테이블 및 억셉트 테이블을 포함하는 것을 특징으로 하는 메타 패턴을 이용한 웹쉘 탐지 장치.
- 제 3 항에 있어서, 상기 심볼 테이블은 상기 최적화된 결정유한오토마타에서 입력 문자의 값을 그룹핑한 것을 특징으로 하는 메타 패턴을 이용한 웹쉘 탐지 장치.
- 제 4 항에 있어서, 상기 심볼 테이블은 상기 최적화된 결정유한오토마타에서 상기 입력 문자의 값을 '1'에서부터 순차적으로 정의하고 나머지 값들은 '0'으로 정의하여 그룹핑되는 것을 특징으로 하는 메타 패턴을 이용한 웹쉘 탐지 장치.
- 제 3 항에 있어서, 상기 상태 테이블은 현재 상태에서 심볼 인덱스값에 따라 천이되는 다음 상태를 나타내어져, 상기 심볼 테이블의 심볼 인덱스값의 수와 상기 최적화된 결정유한오토마타의 상태의 수에 따라 표현되는 것을 특징으로 하는 메타 패턴을 이용한 웹쉘 탐지 장치.
- 제 3 항에 있어서, 상기 억셉트 테이블은 상기 최적화된 정규 표현 규칙을 만족하는 상태에 해당하는 열의 값에 억셉트 정보를 표현하여 상기 문자가 웹쉘 패턴에 매칭되는 지를 나타내는 것을 특징으로 하는 메타 패턴을 이용한 웹쉘 탐지 장치.
- 정규 표현 규칙으로 정의한 웹쉘 패턴을 해석하여 생성된 메타 패턴을 저장하는 메타 패턴 저장부; 및
상기 메타 패턴 저장부에 저장된 상기 메타 패턴을 이용하여 웹 파일에서 상기 웹쉘 패턴을 검색하는 웹쉘 검색부를 포함하는 메타 패턴을 이용한 웹쉘 탐지 장치. - 제 8 항에 있어서, 상기 웹쉘 검색부는
상기 웹 파일에서 입력 문자를 읽어들여 상기 입력 문자를 통해 심볼 테이블에서 심볼 인덱스값을 구하고, 상기 심볼 인덱스값을 이용하여 상태 테이블에서 다음 상태의 값을 구하여 상기 다음 상태의 값이 널 상태가 아니면, 상기 다음 상태의 값을 이용하여 억셉트 테이블에서 억셉트 값을 구한 후, 상기 억셉트 값이 상기 웹쉘 패턴과 일치하는 지를 검사하는 것을 특징으로 하는 메타 패턴을 이용한 웹쉘 탐지 장치. - 제 8 항에 있어서, 웹 서버 또는 상기 웹 서버를 관리하는 관리 서버에서 상기 웹 파일을 검색하여 상기 웹쉘 검색부로 입력하는 웹 파일 검색부를 더 포함하는 것을 특징으로 하는 메타 패턴을 이용한 웹쉘 탐지 장치.
- 제 8 항에 있어서, 상기 심볼 테이블은 상기 최적화된 결정유한오토마타에서 입력 문자의 값을 그룹핑한 것을 특징으로 하는 메타 패턴을 이용한 웹쉘 탐지 장치.
- 제 11 항에 있어서, 상기 심볼 테이블은 상기 최적화된 결정유한오토마타에서 상기 입력 문자의 값을 '1'에서부터 순차적으로 정의하고 나머지 값들은 '0'으로 정의하여 그룹핑되는 것을 특징으로 하는 메타 패턴을 이용한 웹쉘 탐지 장치.
- 제 8 항에 있어서, 상기 상태 테이블은 현재 상태에서 심볼 인덱스값에 따라 천이되는 다음 상태를 나타내어져, 상기 심볼 테이블의 심볼 인덱스값의 수와 상기 최적화된 결정유한오토마타의 상태의 수에 따라 표현되는 것을 특징으로 하는 메타 패턴을 이용한 웹쉘 탐지 장치.
- 제 8 항에 있어서, 상기 억셉트 테이블은 상기 최적화된 정규 표현 규칙을 만족하는 상태에 해당하는 열의 값에 억셉트 정보를 표현하여 상기 문자가 웹쉘 패턴에 매칭되는 지를 나타내는 것을 특징으로 하는 메타 패턴을 이용한 웹쉘 탐지 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110061014A KR101244945B1 (ko) | 2011-06-23 | 2011-06-23 | 메타 패턴을 이용한 웹쉘 탐지 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110061014A KR101244945B1 (ko) | 2011-06-23 | 2011-06-23 | 메타 패턴을 이용한 웹쉘 탐지 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130002365A true KR20130002365A (ko) | 2013-01-08 |
KR101244945B1 KR101244945B1 (ko) | 2013-04-05 |
Family
ID=47834999
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110061014A KR101244945B1 (ko) | 2011-06-23 | 2011-06-23 | 메타 패턴을 이용한 웹쉘 탐지 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101244945B1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9405652B2 (en) | 2013-10-31 | 2016-08-02 | Red Hat, Inc. | Regular expression support in instrumentation languages using kernel-mode executable code |
CN112506885A (zh) * | 2020-12-10 | 2021-03-16 | 浙江工业大学 | 一种基于系统审计日志与打分机制的webshell实时检测方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105100065B (zh) * | 2015-06-26 | 2018-03-16 | 北京奇安信科技有限公司 | 基于云的webshell攻击检测方法、装置及网关 |
CN105069355B (zh) * | 2015-08-26 | 2018-09-11 | 厦门市美亚柏科信息股份有限公司 | webshell变形的静态检测方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101068931B1 (ko) * | 2009-03-05 | 2011-09-29 | 김동규 | 패턴 탐지 기반의 웹쉘 관제 시스템 및 그 방법 |
-
2011
- 2011-06-23 KR KR1020110061014A patent/KR101244945B1/ko active IP Right Grant
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9405652B2 (en) | 2013-10-31 | 2016-08-02 | Red Hat, Inc. | Regular expression support in instrumentation languages using kernel-mode executable code |
CN112506885A (zh) * | 2020-12-10 | 2021-03-16 | 浙江工业大学 | 一种基于系统审计日志与打分机制的webshell实时检测方法 |
Also Published As
Publication number | Publication date |
---|---|
KR101244945B1 (ko) | 2013-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10956572B2 (en) | Domain-specific hardwired web browser machine | |
US9990583B2 (en) | Match engine for detection of multi-pattern rules | |
US9529662B1 (en) | Dynamic rule-based automatic crash dump analyzer | |
CN104598815B (zh) | 恶意广告程序的识别方法、装置及客户端 | |
CN108089974A (zh) | 利用定义的输入格式来测试应用 | |
CN109829287A (zh) | Api接口权限访问方法、设备、存储介质及装置 | |
US11140153B2 (en) | Techniques for identification of location of relevant fields in a credential-seeking web page | |
CN105160252A (zh) | 一种结构化查询语言注入攻击的检测方法及装置 | |
US11055399B2 (en) | Data recovery through reversal of hash values using probabilistic data structures | |
RU2652451C2 (ru) | Способы обнаружения аномальных элементов веб-страниц | |
KR101244945B1 (ko) | 메타 패턴을 이용한 웹쉘 탐지 장치 | |
CN105164691A (zh) | 利用计算机网络为测试计算机软件应用优化测试数据有效载荷的选择 | |
US10754748B2 (en) | System and method for constructing extensible event log with javascript object notation (JSON) encoded payload data | |
US9298694B2 (en) | Generating a regular expression for entity extraction | |
US9984065B2 (en) | Optimizing generation of a regular expression | |
CN104375935A (zh) | Sql注入攻击的测试方法和装置 | |
CN105718463A (zh) | 关键字模糊匹配方法及装置 | |
US9398041B2 (en) | Identifying stored vulnerabilities in a web service | |
KR102583399B1 (ko) | PDF에서 Link의 무해화를 위한 방법 및 장치 | |
US10515219B2 (en) | Determining terms for security test | |
CN111488287B (zh) | 注入漏洞测试用例的生成方法、装置、介质及电子设备 | |
US20200356343A1 (en) | Multipattern regular expression search systems and methods therefor | |
KR102134711B1 (ko) | 스마트 컨트랙트의 룰 관리 방법 및 장치 | |
CN117056934A (zh) | Sql注入漏洞定位检测方法、装置、电子设备及存储介质 | |
CN116561059A (zh) | 网络靶场的数据文件操作方法、系统、设备及存储介质 |
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 | ||
FPAY | Annual fee payment |
Payment date: 20160106 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20170216 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20180309 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20190225 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20200225 Year of fee payment: 8 |