KR100850361B1 - 실행 가능한 코드 탐지 방법 및 장치 - Google Patents

실행 가능한 코드 탐지 방법 및 장치 Download PDF

Info

Publication number
KR100850361B1
KR100850361B1 KR1020070025033A KR20070025033A KR100850361B1 KR 100850361 B1 KR100850361 B1 KR 100850361B1 KR 1020070025033 A KR1020070025033 A KR 1020070025033A KR 20070025033 A KR20070025033 A KR 20070025033A KR 100850361 B1 KR100850361 B1 KR 100850361B1
Authority
KR
South Korea
Prior art keywords
pattern
instruction
executable code
network data
instructions
Prior art date
Application number
KR1020070025033A
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 KR1020070025033A priority Critical patent/KR100850361B1/ko
Priority to US12/044,393 priority patent/US8166545B2/en
Application granted granted Critical
Publication of KR100850361B1 publication Critical patent/KR100850361B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/18Protocol analysers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/22Arrangements for preventing the taking of data from a data transmission channel without authorisation
    • 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
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 실행 가능한 코드와 비실행 코드를 구분하기 위한 함수의 호출 메커니즘과 관련된 인스트럭션(instruction) 패턴 정보를 이용하여 네트워크 데이터내의 실행 가능한 코드의 존재 유무를 판단함으로써 추출된 시그니처의 신뢰도를 검증할 수 있는 실행 가능한 코드 탐지 방법 및 장치에 관한 것으로서, 공격으로 의심되는 네트워크 데이터를 역 어셈블하여 인스트럭션들을 추출한 후, 상기 추출된 인스트럭션들 각각을 함수 호출 메커니즘을 따르는 인스트럭션 패턴들과 비교하여, 실행 가능한 코드의 존재 여부를 판단한다.
보안, 실행 가능한 코드, 시그니처 검증, 함수 호출 메커니즘,

Description

실행 가능한 코드 탐지 방법 및 장치{Method and Apparatus for detecting executable code}
도 1은 공격 시그니처 추출시의 임계값을 기준으로 한 오탐지와 미탐지 관계를 나타낸 그래프,
도 2는 본 발명에 의한 실행 가능한 코드 탐지 방법을 개략적으로 나타낸 흐름도,
도 3은 본 발명에 의한 실행 가능한 코드 탐지 방법에 있어서, 인스트럭션 문자열을 만드는 상세 과정을 나타낸 흐름도,
도 4는 본 발명에 의한 실행 가능한 코드 탐지 방법에 있어서, 인스트럭션 문자열을 만들기 위한 패킷 관리 과정의 상세 흐름도,
도 5는 도 4에 보인 패킷 관리 과정의 예시도,
도 6은 본 발명에 의한 실행 가능한 코드 탐지 방법에 있어서, 인스트럭션 문자열을 만들기 위한 패킷 재조합 과정의 상세 흐름도,
도 7은 도 6에 보인 패킷 재조합 과정의 예시도,
도 8은 본 발명에 의한 실행 가능한 코드 탐지 방법에 있어서, 비교 단계의 상세 흐름도,
도 9는 함수 호출 메커니즘에 따른 인스트럭션 패턴 예를 나타낸 도면,
도 10은 함수 호출 메커니즘을 설명하기 위한 도면,
도 11은 본 발명에 의한 실행 가능한 코드 탐지 방법에 있어서, 패턴 일치를 판단하는 과정의 예시도,
도 12는 본 발명에 의한 실행 가능한 코드 탐지 방법에 있어서, 최대 인스트럭션 간격, 상위 임계값 및 하위 임계값 설정을 위한 시뮬레이션 결과를 도시한 그래프,
도 13은 본 발명에 의한 실행 가능한 코드 탐지 방법에 있어서, 실행 가능한 코드의 존재 여부 판단 및 신뢰도 계산 과정의 상세 흐름도, 그리고
도 14는 본 발명에 의한 실행 가능한 코드 탐지 장치를 나타낸 기능 블록도이다.
본 발명은 네트워크 보안 기술에 관한 것으로서, 특히 시그니처 검증을 위해 네트워크 데이터 속에 공격 가능한 실행 가능한 코드의 존재 여부를 탐지할 수 있는 방법 및 장치에 관한 것이다.
네트워크의 보안 분야에 있어서, 공격으로 의심되는 네트워크 데이터를 차단하기 위해 필요한 공격 시그니처(signature)를 자동화된 방법으로 추 출(extraction)할 때, 추출이 시작되는 임계값(threshold)을 낮추게 되면 다량의 오탐지(false positive)가 발생되며, 반대로 추출 임계값을 높이게 되면 다량의 미탐지(false negative)가 발생한다.
공격을 차단해야 하는 보안 시스템 입장에서는, 적어도 미탐지는 발생되지 않아야 하기 때문에, 공격 탐지 또는 공격 방지 수단들은 기본적으로 공격 시그니처 추출을 위한 임계값을 낮추는 방향으로 개발이 되어야 하는데, 이 경우 다량의 오탐지 발생을 피할 수 없게 된다.
이러한 다량의 오탐지 발생을 낮추기 위해서는, 추출된 시그니처와 시그니처 생성에 관련된 의심스러운 네트워크 데이터들을 대상으로 추가적으로 검증(verification)하는 과정을 거칠 필요가 있다. 도 1은 이러한 검증 과정에 의한 결과를 보여주는 것으로서, 검증 과정을 거치게 되면 신뢰할 만한 시그니처를 선별할 수 있음을 알 수 있다.
일반적인 네트워크 서비스에서는 실행 가능한 코드의 전송이 거의 발생되지 않는다. 따라서 네트워크 데이터 속에 실행 가능한 코드(executable code) 부분이 들어있다면 이것은 공격 코드가 전송됨을 의미한다.
상기 검증 과정에서는 이와 같이 실행 가능한 코드의 존재 유무를 판단함으로써 공격으로 의심되는 네트워크 데이터를 차단하기 위해 추출된 시그니처를 검증하여, 그 신뢰도(reliability)를 높일 수 있다.
그러나 이러한 검증을 수행하기 위해서는, 의심스러운(suspicious) 네트워크 데이터 속에서 중앙처리장치에서 실행 가능한 코드의 존재 여부를 탐지할 수 있어 야 하는데, 아직까지 이에 관련된 기술이 제시되어 있지 않다.
본 발명은 상기와 같은 문제점을 해결하기 위한 것으로서, 그 목적은, 실행 가능한 코드와 비실행 코드(non-executable code)를 구분하기 위한 함수의 호출 메커니즘(calling mechanism of function)과 관련된 인스트럭션(instruction) 패턴 정보를 이용하여 네트워크 데이터내의 실행 가능한 코드의 존재 유무를 판단함으로써 추출된 시그니처의 신뢰도를 검증할 수 있는 실행 가능한 코드 탐지 방법 및 장치를 제공하는 것이다.
상기와 같은 본 발명의 목적을 달성하기 위하여, 본 발명은, 네트워크 데이터를 입력받는 단계; 상기 입력된 네트워크 데이터를 역 어셈블하여 인스트럭션들을 만드는 단계; 상기 만들어진 인스트럭션들이 함수 호출 메커니즘을 따르는 인스트럭션 패턴들과 일치하는지 비교하는 단계; 및 상기 비교 결과에 따라서 상기 네트워크 데이터 속에 실행 가능한 코드가 존재하는지 여부를 판단하는 단계를 포함하는 실행 가능한 코드 탐지 방법을 제공한다.
또한, 본 발명은 상기 목적을 달성하기 위한 다른 수단으로서, 함수 호출 메커니즘을 따르는 인스트럭션 패턴들의 정보를 저장하는 인스트럭션 패턴 저장부; 실행 가능한 코드 존재 여부 탐지 대상인 네트워크 데이터를 역 어셈블하여 인스트럭션 문자열을 추출하는 패킷 가공부; 상기 패킷 가공부에서 추출된 인스트럭션들에 대해 상기 저장된 인스트럭션 패턴 중에서 일치하는 패턴이 있는지 비교하는 비교부; 및 상기 비교부의 비교결과에 따라서 실행 가능한 코드의 존재 여부를 판단하는 판단부를 포함하는 실행 가능한 코드 탐지 장치를 제공한다.
이하 첨부된 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있는 바람직한 실시 예를 상세히 설명한다. 다만, 본 발명의 바람직한 실시 예에 대한 동작 원리를 상세하게 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다.
또한, 도면 전체에 걸쳐 유사한 기능 및 작용을 하는 부분에 대해서는 동일한 도면 부호를 사용한다.
덧붙여, 명세서 전체에서, 어떤 부분이 다른 부분과 '연결'되어 있다고 할 때, 이는 '직접적으로 연결'되어 있는 경우뿐만 아니라, 그 중간에 다른 소자를 사이에 두고 '전기적으로 연결'되어 있는 경우도 포함한다. 또한 어떤 구성 요소를 '포함'한다는 것은, 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라, 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
또한, '모듈'이란 용어는 특정한 기능이나 동작을 처리하는 하나의 단위를 의미하며, 이는 하드웨어 또는 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
도 2는 본 발명의 바람직한 실시 예에 따른 네트워크 데이터 상의 실행 가능한 코드 탐지 방법을 개략적으로 나타낸 흐름도이다.
도 2를 참조하면, 본 발명에 의한 실행 가능한 코드 탐지 방법은, 단계S100에서, 공격으로 의심되는 데이터(수집된 네트워크 트래픽 또는 파일임)가 입력되면, 단계S200에서, 상기 입력된 데이터를 역 어셈블하여 인스트럭션들을 만들어내고, 그 다음 단계S300에서, 만들어진 인스트럭션들을 사전에 실행 가능한 코드의 존재를 판단하기 위해 설정된 함수 호출 메커니즘과 관련된 인스트럭션 패턴들과 비교하여 입력된 데이터의 패턴 일치 횟수를 카운트한다. 이어서 단계S400에서, 상기 카운트된 패턴 일치 횟수를 이용하여 상기 공격으로 의심되는 데이터 상의 실행 가능한 코드의 존재 유무를 판단하고, 그 판단 결과에 대한 신뢰도를 산출하여 제공한다(S400).
이때, 상기 실행 가능한 코드가 존재하며, 그 판단에 대한 신뢰도가 높은 경우, 해당 데이터를 공격 데이터로 판단할 수 있다.
도 3은 상기 단계S200에서 인스트럭션을 만들어내는 과정을 더 구체적으로 나타낸 것으로서, 상기 단계S200에서는 공격 데이터에 대한 관리 과정(S210), 재조합 과정(S220) 및 역 어셈블 과정(S230)을 수행한다.
도 4는 상기 패킷 관리 과정(S210)의 상세 절차를 보인 것이고, 도 5는 그에 의한 패킷 관리 상태를 예시한 것으로서, 도 4 및 도 5를 참조하여 상기 패킷 관리 과정(S210)에 대해서 설명한다.
도 4를 참조하면, 상기 공격으로 의심되는 네트워크 데이터에 대해서, 한 패킷씩 수집하며(S211), 상기 수집된 패킷이 새로운 시그니처에 해당하는 지를 판단하고(S212), 상기 판단 결과, 새로운 시그니처에 해당하면, 이를 시그니처 테이블에 등록한(S213) 후에 다음 패킷을 수집하며, 새로운 시그니처가 아니면, 상기 수집된 패킷을 기존에 등록된 시그니처 리스트에 저장한다(S214). 이상에서 설명한 과정(S211~S214)을 네트워크 데이터의 모든 패킷에 대하여 수행함으로써, 공격으로 의심되는 네트워크 데이터를 추출된 시그니처 별로 순서대로 저장할 수 있다. 즉, 여러 종류의 공격이 동시에 발생될 경우에 대비하여, 패킷들을 공격 종류별로 시간순으로 정렬할 수 있게 된다.
도 5에서, 왼쪽은 공격으로 의심되는 네트워크 데이터를 나타내며, 오른쪽은 상기 과정(S210)에 의해서 정렬된 패킷을 나타낸 것으로서, 도시된 바와 같이, 입력된 네트워크 데이터의 패킷들이 상기 과정(S210)에 의해서 공격들을 구분할 수 있는 정보(즉, 시그니처)를 기준으로 받은 시간 순으로 정리된다.
도 6은 도 2의 패킷 재조합 과정(S220)을 상세하게 나타낸 흐름도이다.
일반적으로 송신측에서 전송된, 공격으로 의심되는 데이터는 하드웨어에 의해 실시간으로 전수 조사되는 것이기 때문에, out-of-sequence, 단편화 및/또는 패킷 손실이 발생된 상태일 수 있다. 상기 패킷 재조합 과정(S220)은 이러한 패킷들을 역 어셈블 가능한 상태로 만들기 위한 과정이다. 여기서 역 어셈블이 가능한 상태란, 프로토콜 헤더를 제외하고 공격이 탑재될 수 있는 페이로드만을 순서대로 연결한 데이터를 의미한다.
도 6을 참조하면, 상기 패킷 재조합 과정(S220)에서는, 상기 단계(S210)에서 시그니처 별로 저장된 패킷의 IP 헤더를 파싱한 후 단편화를 제거한다(S221). 그리고, 상기 패킷이 TCP 패킷인 경우(S222)에는, 패킷 재조합을 더 수행한다(S223). 그후 상기 패킷들에서 프로토콜 헤더를 모두 제거한 후에 페이로드 부분만을 순서대로 연결한다(S224).
상기 페이로드만이 연결된 형태의 데이터는 다음의 역 어셈블 과정(S230)으로 전달된다.
도 7은 상기 패킷 재조합 과정(S220)의 예시도로서, 송신측에서 도 7의 (a)와 같은 데이터가 순차적으로 송신된다고 할 때, 본 발명에 의한 공격 탐지 또는 공격 방지 시스템에서는 (b)와 같은 네트워크 데이터가 수신될 수 있다. 즉, 상기 (a)와 (b)를 참조하면, 공격 탐지를 위해 수신된 네트워크 데이터는 , 전송 중에 패킷 5가 손실되어 수신되지 않았으며, 패킷 1은 단편화 상태이며, 패킷 순서가 변경되어 있다.
따라서 상기 (b)와 같은 네트워크 데이터가 공격으로 의심되는 데이터로 입력되면, 상기 패킷 재조합 과정(S220)에서는, 상기 단편화된 패킷 1을 하나로 합쳐 패킷의 단편화를 제거하고, 더하여, 각 패킷이 TCP 패킷이면 해당 패킷을 재조합한 후에, 각 패킷의 프로토콜 헤더를 제거하고, 페이로드만을 순서대로 연결하여, (c)와 같은 형태로 재조합한다.
즉, 상기 (c)를 살펴보면, 해당 네트워크 데이터의 각 패킷의 페이로드가 순서대로 배치되어 있음을 알 수 있다.
상기와 같이 패킷 재조합이 수행된 데이터는 단계S230에서 역 어셈블 알고리즘에 의해서, 역 어셈블되며, 그 결과 인스트럭션 문자열로 저장된다. 이때 역 어셈블 알고리즘은 아키텍처별, OS별로 그 종류가 다양하며, 일반적으로 널리 알려져 있다.
상기 단계(S230)에서 만들어진 인스트럭션 문자열은 단계(S300)에서 사전에 설정된 함수 호출 메커니즘을 따르는 인스트럭션 패턴과 비교되어 그 일치 횟수가 카운트된다. 상기 단계(S300)는 상기 순서대로 연결된 페이로드를 역 어셈블하여 인스트럭션들로 만들어낸 문자열들이 함수 호출 메커니즘을 따르는 인스트럭션 패턴들과 얼마나 일치하는 지를 확인하기 위한 것이다.
도 8은 상기 단계(S300)의 처리 과정을 상세히 나타낸 것으로서, 이를 참조하면, 상기 공격으로 의심되는 네트워크 데이터로부터 만들어진 인스트럭션 문자열이 입력되면, 단계(S310)에서 상기 인스트럭션 문자열 중에서 하나의 인스트럭션을 읽어와, 사전에 설정된 함수 호출 메커니즘을 따르는 인스트럭션 패턴과 비교하여 일치여부를 판단한다(S320). 이때, 일치하는 패턴이 있으면, 단계S330에서 일치하는 패턴을 확인하여, 단계S330~S350에서 상기 패턴이, ec, pc, pm인 경우에는 후방향 패턴 일치 카운트를 수행하고, 상기 패턴이 ec, pc, pm이 아닌 경우에는 전방향 패턴 일치 카운트를 수행한다(S330).
상기 단계들(S310~S350)을 상기 공격이 의심되는 네트워크 데이터로부터 만들어진 인스트럭션 문자열의 모든 인스트럭션에 대해서 수행하면, 다음 단계S400을 진행한다.
상기 함수 호출 메커니즘을 따르는 인스트럭션 패턴들에 대해서 이하에서 간단히 설명한다.
도 9는 실행 가능한 코드에 존재하는 함수 호출 메커니즘을 따른 패턴들을 보여주는 것으로서, 왼쪽은 프로그래머가 작성한 소스코드를 나타내며, 오른쪽은 상기 소스코드를 컴파일하였을 때 나타나는 실행 가능한 코드를 나타낸 것으로서, 상기 실행 가능한 코드에는 특정 인스트럭션 패턴들(81~83)이 나타난다.
이와 같이, 실행 가능한 코드에 특정 인스트럭션들의 패턴들이 나타나는 이유는, 실행 가능한 코드내의 함수들은 서로 호출되면서 본래의 기능을 수행하게 되고, 정상적으로 함수를 수행하기 위해서는 함수 호출 메커니즘을 나타내기 때문이다.
도 10은 상기 함수 호출 메커니즘을 예시한 것으로서, 이를 참조하여 함수 호출 메커니즘에 대해서 설명하면 다음과 같다.
함수 호출 메커니즘에 따르면, 우선 함수 호출에 필요한 인수(argument) Arg를 스택(stack) ESP에 집어넣고, 코드의 현재 수행 위치를 가리키는 프로그램 카운터(program counter) EIP를 스택 ESP에 넣으면서, 프로그램 카운터가 호출된 함수의 코드가 있는 부분으로 점프를 하게 된다. 상기와 같이 호출된 함수는 호출한 함수의 지역 변수가 시작되는 위치가 저장된 베이스 레지스터(base register) EBP 값을 저장하고, 호출된 함수의 지역 변수의 시작 위치로 베이스 레지스터 EBP 값을 변경한다. 그리고 상기 호출된 함수의 수행을 마치고 리턴을 하게 되면, 스택 ESP와, 베이스 레지스터 EBP를 호출되기 직전의 상태로 되돌린다.
이러한 함수 호출 메커니즘에서는 특정한 인스트럭션 패턴이 존재하며, 상기 도 9에서 실행 가능한 코드의 탐지를 위해 사용할 인스트럭션들의 조합은 표 1과 같다.
패턴 의미 패턴 기호 패턴 1 패턴 2 패턴 3
함수 호출 ec esp 관련 인스트럭션들 call 관련 인스트럭션들
pc push call 관련 인스트럭션들
함수 시작 pm push ebp mov ebp,esp
함수 리턴 mpr mov esp,ebp pop ebp ret 관련 인스트럭션들
pr pop ebp ret 관련 인스트럭션들
lr leave ret 관련 인스트럭션들
표 1에서 패턴 의미별로 여러 개의 패턴 기호가 존재하는 이유는 각 운영체제별 혹은 컴파일러별로 의미는 같지만 생성하는 인스트럭션 패턴들의 형태가 다르기 때문이다. 표 1에서 esp 관련 인스트럭션들의 의미는 call 전에 스택 연산이 있다면 호출할 함수의 인수를 넘겨주는 연산으로 간주한다는 것을 의미한다. call 관련 인스트럭션들은 call, callf 가 있고, ret 관련 인스트럭션들은 ret, retn, retf 가 있다.
상기 표 1과 같은 인스트럭션 패턴을 기준으로 공격으로 의심되는 네트워크 데이터에서 변환된 인스트럭션들을 비교하는데, 이때, 상기 패턴 1,2 혹은 패턴 1,2,3 모두가 일치할 경우에 일치 카운트값이 증가하게 된다. 이때 패턴 일치 카운트는 각 패턴 기호별로 측정되고, 전방향(forward) 및 후방향(backward) 두 가지로 측정된다. 이는 패턴 기준이 패턴별로 다르기 때문으로서, 상기 표 1에 있어서, 함수 호출 및 함수 시작을 의미하는 패턴에 대해서는 패턴 2를 기준으로 탐지하고, 함수 리턴을 의미하는 패턴에 대해서는 패턴 1을 기준으로 패턴일치를 처리하기 때문이다. 상기 전방향 패턴 일치 카운트는 앞으로 나올 인스트럭션들을 탐지하는 걸 의미하고, 후방향 패턴 일치 카운트는 지나온 인스트럭션들을 탐지하는 걸 의미한다. 예를 들면, ec 패턴인 경우, 입력된 데이터에서 call 관련 인스트럭션이 탐지되면 그 앞쪽 인스트럭션들 중 esp 관련 인스트럭션들이 존재하는지를 탐지하여, 존재하는 경우 패턴 일치 카운트를 증가시킨다. 반대로, mpr 패턴인 경우, 입력된 데이터에서 mov esp, ebp가 탐지되면 그 뒤쪽 인스트럭션들 중 pop ebp와 ret 관련 인스트럭션들이 존재하는 지를 탐지하여, 존재하면 해당 패턴과 일치하는 것으로 판단하여 패턴 일치 카운트를 증가시킨다.
상기 표 1에서, 패턴 일치를 위한 기준 인스트럭션으로서, call 관련 인스트럭션들, mov ebp, esp, pop ebp, leave 와 같은 인스트럭션들이 선정된 이유는, 실행 가능한 코드 내에서 위의 인스트럭션들이 흔히 나타나지 않기 때문이다.
특히, 상기 패턴과 일치하는 지를 비교할 때, 단순히 표 1과 같은 함수 호출 메커니즘에 따른 인스트럭션 패턴의 패턴 1,2,3이 연속으로 일치하는 지를 탐지하지는 않는다. 왜냐하면, 실제로 실행 가능한 코드들은 함수의 호출 메커니즘을 따르되 컴파일러의 특성에 따라 인스트럭션들 패턴들의 조합이 연속적으로 일치하지는 않기 때문이다. 결국 패턴 일치 탐지는 최대로 허용 가능한 인스트럭션 간격 내에서 패턴이 일치하는지를 판단하는 것이 바람직하다. 만약 패턴 일치를 시작한 후, 허용 가능한 간격을 넘어서면 일치 실패로 판단한다. 도 11은 이를 설명하기 위한 그림이다. 도 11을 참조하면, 역 어셈블된 인스트럭션들에서 특정 인스트럭션 패턴의 패턴1과 패턴2가 검출되더라도, 상기 검출된 패턴1과 패턴2 간의 간격이 사전에 설정된 허용 가능한 간격이내이어야 패턴이 일치하는 것으로 판단하고, 상기 패턴1과 패턴2의 간격이 허용가능한 간격을 넘어서는 경우에는 패턴이 일치하지 않는 것으로 판단한다.
다음으로, 도 13은 본 발명의 단계 S400에서 상술한 패턴 일치 카운트 결과를 이용하여 공격으로 의심되는 네트워크 데이터에 실행 가능한 코드가 존재하는 지를 판단하는 과정과, 그 결과에 대한 신뢰도를 계산하는 과정을 나타낸 것이다.
더하여, 본 발명에 있어서, 실행 가능한 코드 탐지 및 그 결과에 대한 신뢰도를 확인하기 위해서, 기 설정된 함수 호출 메커니즘에 따르는 인스트럭션 패턴별로, 최대 인스트럭션 간격(Instruction Gap), 상위 확률값(Upper Threshold), 하위 확률값(Lower Threshold)이 설정된다.
패턴 기호 최대 인스트럭션 간격 상위 확률값 하위 확률값
ec Iec UTec LTec
pc Ipc UTpc LTpc
pm Ipm UTpm LTpm
mpr Impr UTmpr LTmpr
pr Ipr UTpr LTpr
lr Ilr UTlr LTlr
표 2는 상기 표 1에 예시한 각 패턴별로 실행 가능한 코드 탐지 및 신뢰도 계산을 위해 설정된 최대 인스트럭션 간격(Instruction Gap), 상위 확률값(Upper Threshold), 하위 확률값(Lower Threshold)을 예시한 것이다.
상기에서 하위 확률값(LT)는 비실행 코드인 경우 최대 인스트럭션 간격 내에서 함수 호출 메커니즘을 만족하는 인스트럭션 패턴이 일치될 확률이고, 상위 확률값(UT)은 실행 가능한 코드인 경우 최대 인스트럭션 간격 내에서 패턴이 일치될 확률이다. 따라서 검증이 되어야 할 네트워크 데이터를 역 어셈블한 후 만들어진 인스트럭션들과 상기 인스트럭션 패턴이 일치될 확률(P)이 하위 확률값(LT)이하이면 비실행 코드라고 말할 수 있으며, 하위 확률값(LT)이상 상위 확률값(UT)이하이면 실행 가능한 코드가 포함될 수 있는 것으로서 그 신뢰도에 따라서 판단할 수 있으며, 상위 확률값(UT) 이상이면 실행 가능한 코드라고 판단할 수 있다.
도 12는 상기 표 1에 보인 인스트럭션 패턴 중에서 pm에 대한, 최대 인스트럭션 간격(I)과, 상위 확률값(UT)와, 하위 확률값(LT)의 선정을 위한 시뮬레이션 결과를 도시한 것으로서, pm이라는 인스트럭션 패턴에 대해서, 각 파일의 종류별로 3000개씩의 샘플을 시뮬레이션한 결과이다. 상기 그래프를 보면, 실행 가능한 코드인 리눅스와, 윈도우 실행 파일들은 2개의 인스트럭션 간격 만에 98% 이상의 높은 패턴 일치 확률을 나타냄을 알 수 있다.
다시 도 13를 참조하여 상기 단계(S400)의 상세 과정을 설명한다.
앞서 설명한 단계(S300)의 수행이 완료되면, 상기 공격이 의심되는 네트워크 데이터에 대하여, 사전에 설정된 인스트럭션 패턴별로 패턴 일치를 시도한 횟수와 성공한 횟수가 카운트되어 제공된다.
이에 도 12의 단계(S410)에서, 앞서 단계(S300)에서의 패턴 비교 횟수 대비 패턴 일치 성공 횟수의 비율 값 P를 구하고, 단계(S420)에서, 상기 구해진 모든 비율 값 P가 미리 설정되어 있는 해당 인스트럭션 패턴의 하위 확률 값(LT)을 초과하는 지를 확인한다.
단계(S420)에서, 모든 하위 확률 값(LT)을 넘는다면, 일단 해당 네트워크 데이터가 실행 가능한 코드를 포함하고 있다고 판단하여, 신뢰도 값을 확인하는 과정을 수행하고, 상기 단계(S420)에서 모든 하위 확률값(LT)를 초과하지 못하면, 실행 가능한 코드를 포함하고 있지 않은 것으로 판단한다. 상기에서 상기 비율값 P가 상위 확률값(UT)에 가까워질 수 록 신뢰도 값은 증가한다.
따라서 상기 단계(S420)에서 실행 가능한 코드를 포함하고 있는 것으로 판단한 경우, 단계S430에서 상기 계산된 모든 비율값 P를 하위 확률값(LT)을 0%로 상위 확률값(UT)을 100% 라고 간주하는 영역 내에서의 상대적 위치에 따른 새로운 비율 값 R로 변환한다.
그리고 상기 변환된 비율값 R에 비례하여, 상기 판단 결과에 대한 신뢰도를 계산하는데, 이때, 단계(S440)에서 각 인스트럭션 패턴별로 그 중요도에 따라 가중치(W)를 부여하고, 이를 상기 변환된 비율값 R에 적용한 후, 단계(S450)에서 상기 변환된 비율값 R의 평균을 구하여, 최종적으로 상기 판단 결과에 대한 신뢰도 값(Ravg)을 계산한다.
그리고 상기 입력된 공격이 의심되는 네트워크 데이터에 대해서, 실행 가능한 코드가 존재한다는 결과와, 그 존재 결과에 대하여 상기 계산된 신뢰도 값을 함께 출력한다.
상술한 단계들(S410~S450)에 의한, 실행 가능한 코드라고 판단한 결과에 대한 신뢰도 값(Ravg)을 계산하는 과정을 수식으로 표현하면 아래의 수학식 1과 같다.
Figure 112007020587182-pat00001
상기 수학식 1에서, i는 i번째 인스트럭션 패턴을 나타내고, P는 패턴 일치 비교 횟수에 대한 패턴 일치 성공 횟수의 비율이고, R은 상기 P의 변환값이고, MAX_PTN_NUM은 탐지하고자 하는 패턴의 총 개수를 나타낸다.
상기 수학식 1에 나타난 바와 같이, 실행 가능한 코드의 탐지 결과에 대한 신뢰도는 상위 임계값에 얼마나 가까운 값인가를 나타내도록 계산된다.
도 14는 본 발명에 의한 실행 가능한 코드 탐지 장치를 도시한 기능 블록도로서, 본 발명에 의한 장치는, 인스트럭션 패턴 저장부(10)와, 입력부(20)와, 패킷 가공부(30)와, 비교부(40)와, 판단부(50)와, 출력부(60)를 포함한다.
인스트럭션 패턴 저장부(10)는 실행 가능한 코드 탐지를 위한 패턴 정보를 저장하는 수단으로서, 함수 호출 메커니즘을 따르는 인스트럭션 패턴들의 정보를 저장하여 둔다. 이때, 상기 인스트럭션 패턴 정보는, 표 1에 도시된 바와 같이, 함수 호출 메커니즘을 따르는 패턴 조합의 식별 정보, 패턴 일치를 시도하기 위한 기 준이 되는 인스트럭션 정보, 성공 횟수를 카운트하기 위해 일치하여야 하는 세부 인스트럭션 정보를 포함한다.
더하여, 상기 인스트럭션 패턴 저장부(10)는 표 2와 같이 각 인스트럭션 패턴별로, 패턴 일치 비교를 위한 기준 정보들, 즉, 상기 세부 인스트럭션들을 만족시키는데 허용되는 최대 인스트럭션 간격, 실행 가능한 코드인 경우 최대 인스트럭션 간격내에서 패턴이 일치될 확률인 상위 확률값, 비실행 코드인 경우 최대 인스트럭션 간격내에서 패턴이 일치될 확률인 하위 확률값을 포함한다.
입력부(20)는 시그니처 검증을 위한 공격으로 의심되는 네트워크 데이터를 입력받는다.
패킷 가공부(30)는 상기 입력부(20)에서 입력받은 네트워크 데이터를 역 어셈블하여 그 네트워크 데이터에 포함되는 인스트럭션 문자열들을 추출하는 수단으로서, 도 3 내지 도 7에 보인 바와 같이, 상기 입력된 네트워크 데이터를 한 패킷씩 수집하여, 시그니처 별로 순서대로 정렬하고, 단편화 제거 및/또는 패킷 재조합을 수행한 후, 프로토콜 헤더를 제거하여 페이로드만을 순서대로 연결하고, 상기 연결된 페이로드들을 역 어셈블하여 인스트럭션 문자열을 출력한다.
비교부(40)는 상기 패킷 가공부(30)에서 출력된 인스트럭션 문자열을 상기 인스트럭션 패턴 저장부(10)에 저장된 패턴들과 일치하는 지를 비교 판단한다. 이때, 상기 비교부(40)는 앞서 도 8을 참조한 설명에서와 같이, 상기 추출된 인스트럭션 문자열에서 인스트럭션들을 하나씩 읽어 들여, 상기 저장부(10)에 저장된 인스트럭션 패턴들의 각 기준 패턴과 일치하는 지를 비교하고, 일치하는 경우, 그 전 방향 또는 후방향 비교를 통한 최대 인스트럭션 간격 내에서 세부 인스트럭션이 존재하는 지를 확인한다. 상기 비교부(40)는 상기 비교 결과를, 각 패턴별 패턴 일치 비교 횟수(즉, 기준 인스트럭션이 일치하는 횟수)와, 각 패턴별 패턴 일치 성공 횟수(즉, 세부 인스트럭션까지 일치하는 횟수)로서 출력한다.
판단부(50)는 상기 비교부(40)의 출력값을 이용하여, 상기 입력부(20)로 입력된 공격이 의심되는 네트워크 데이터에 실행 가능한 코드가 존재하는지 여부를 판단하고, 더하여 실행 가능한 코드가 존재한다고 판단되는 경우 그 판단에 대한 신뢰도를 계산한다. 더 구체적으로, 상기 판단부(50)는 도 13 및 수학식 1에 나타낸 바와 같이, 각 패턴 별로, 그 시도 횟수에 대한 성공 횟수의 비율을 구한 후, 모든 비율값이 해당 패턴의 하위 확률값보다 크지 않으면 실행 가능한 코드가 존재하지 않는다고 판단하고, 하나의 비율값이라도 해당 패턴의 하위 확률값보다 크면, 상기 비율값들을 상위 확률값에 가까운 정도를 나타내는 상대 비율값으로 변환한 후, 그 평균값을 신뢰도 값으로 출력한다. 즉, 신뢰도 값이 클수록 실행 가능한 코드가 존재한다는 결과에 대한 신뢰도가 높은 것이다.
출력부(60)는 상기 판단부(50)의 판단 결과, 즉, 실행 가능한 코드의 존재 여부 및 실행 가능한 코드가 존재하는 경우의 그 신뢰도를 출력한다.
이상에서 설명한 바와 같이, 본 발명에 의한 방법에 따르면, 네트워크 데이터에 실행 가능한 코드, 즉 공격 코드가 포함되어 있는 지를 정확하게 판단할 수 있으며, 이를 이용하여 추출된 시그니처에 대한 검증을 용이하게 수행할 수 있다.
이상에서 설명한 본 발명은 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경할 수 있다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 당업자에게 있어 명백할 것이다.
상술한 바에 의하면, 본 발명은 컴퓨터 및 네트워크를 통해 전송되는 임의의 데이터 속에, 중앙 처리 장치에서 실행 가능한 코드가 존재하는지 여부를 판단할 수 있으며, 이를 통해 추출된 시그니처 혹은 시그니처 생성에 관련된 데이터를 검증할 수 있어 신뢰성 있는 시그니처 추출을 가능하게 할 수 있고, 그 결과 공격 가능성이 있는 패킷들의 탐지 및 방지에 대한 신뢰도를 향상시킬 수 있다.

Claims (24)

  1. 네트워크 데이터를 입력받는 단계;
    상기 입력된 네트워크 데이터를 역 어셈블하여 인스트럭션들을 만드는 단계;
    상기 만들어진 인스트럭션들이 함수 호출 메커니즘을 따르는 인스트럭션 패턴들과 일치하는지 비교하는 단계; 및
    상기 비교 결과에 따라서 상기 네트워크 데이터 속에 실행 가능한 코드가 존재하는 지 여부를 판단하는 단계를 포함하는 실행 가능한 코드 탐지 방법.
  2. 제1항에 있어서,
    상기 입력된 네트워크 데이터를 역 어셈블하기 전에, 상기 네트워크 데이터를 역 어셈블 가능하도록 가공하는 단계를 더 포함하는 실행 가능한 코드 탐지 방법.
  3. 제2항에 있어서, 상기 네트워크 데이터를 역 어셈블 가능하도록 가공하는 단계는
    상기 네트워크 데이터들의 패킷들을 시그니처 별로 순서대로 저장하는 과정과,
    상기 순서대로 저장된 패킷들에서 단편화를 제거하는 과정과,
    상기 패킷들에서 프로토콜 헤더를 제거하고 페이로드만을 순서대로 연결하는 과정을 포함하는 것을 특징으로 하는 실행 가능한 코드 탐지 방법.
  4. 제3항에 있어서, 상기 네트워크 데이터를 역 어셈블 가능하도록 가공하는 단계는,
    상기 단편화를 제거한 후, 해당 패킷이 TCP 패킷인 경우 패킷을 재조합하는 과정을 더 포함하는 것을 특징으로 하는 실행 가능한 코드 탐지 방법.
  5. 제1항에 있어서, 상기 네트워크 데이터가 입력되기 전에,
    함수 호출 메커니즘을 따르는 인스트럭션 패턴들을 설정하여, 그 인스트럭션 패턴 정보를 저장하는 단계를 더 포함하는 것을 특징으로 하는 실행 가능한 코드 탐지 방법.
  6. 제5항에 있어서, 상기 인스트럭션 패턴 정보는,
    함수 호출 메커니즘을 따르는 패턴 조합의 식별 정보, 패턴 일치를 시도하기 위한 기준 인스트럭션 정보, 성공 횟수를 카운트하기 위해 일치하여야 하는 세부 인스트럭션 정보를 포함하는 것을 특징으로 하는 실행 가능한 코드 탐지 방법.
  7. 제6항에 있어서, 상기 인스트럭션 패턴 정보는,
    상기 인스트럭션 패턴별로, 상기 세부 인스트럭션들을 만족시키는데 허용되는 최대 인스트럭션 간격, 실행 가능한 코드인 경우 최대 인스트럭션 간격 내에서 패턴이 일치될 확률인 상위 확률값, 비실행 코드인 경우 최대 인스트럭션 간격 내에서 패턴이 일치될 확률인 하위 확률값을 포함하는 것을 특징으로 하는 실행 가능한 코드 탐지 방법.
  8. 제7항에 있어서, 상기 만들어진 인스트럭션들 각각이 함수 호출 메커니즘을 따르는 인스트럭션 패턴들과 일치하는지 비교하는 단계는,
    상기 만들어진 인스트럭션 각각에 대하여, 상기 인스트럭션 패턴들의 기준 인스트럭션과 일치하는 지를 판단하는 과정과,
    상기에서 기준 인스트럭션과 일치하면 해당 패턴에 대한 패턴 일치 비교 횟수를 카운트하고, 해당 인스트럭션 패턴의 세부 인스트럭션과 일치하는 지를 판단하는 과정과,
    상기에서 세부 인스트럭션과 일치하면, 해당 패턴에 대한 패턴 일치 성공 횟수를 카운트하는 과정을 포함하는 것을 특징으로 하는 실행 가능한 코드 탐지 방법.
  9. 제8항에 있어서, 상기 실행 가능한 코드가 존재하는지 여부를 판단하는 단계는,
    상기 패턴 일치 비교 횟수에 대한 패턴 일치 성공 횟수의 비율을 패턴별로 구하는 과정과,
    상기 구해진 모든 비율값이 해당 인스트럭션 패턴의 하위 확률값 보다 크면 상기 네트워크 데이터에 실행 가능한 코드가 존재하는 것으로 판단하고, 그 반대인 경우, 실행 가능한 코드가 존재하지 않는 것으로 판단하는 과정을 포함하는 것을 특징으로 하는 실행 가능한 코드 탐지 방법.
  10. 제9항에 있어서,
    실행 가능한 코드가 존재하는 것으로 판단되는 경우, 해당 판단에 대한 신뢰도를 계산하는 단계를 더 포함하는 것을 특징으로 하는 실행 가능한 코드 탐지 방법.
  11. 제10항에 있어서, 상기 신뢰도를 계산하는 단계는
    상기 패턴별 패턴 일치 비교 횟수에 대한 패턴 일치 성공 횟수의 비율들을 상위 확률값에 근접한 정도를 나타내는 상대 비율값으로 변환하는 과정과,
    상기 변환된 상대 비율값의 평균을 구하고, 상기 평균값을 신뢰도로 출력하는 과정을 포함하는 것을 특징으로 하는 실행 가능한 코드 탐지 방법.
  12. 제11항에 있어서, 상기 신뢰도를 계산하는 단계는
    상기 변환된 상대 비율값의 평균을 구하기 전에, 각 패턴별 상대 비율값에 가중치를 부여하는 과정을 더 포함하는 것을 특징으로 하는 실행 가능한 코드 탐지 방법.
  13. 제11항에 있어서, 상기 상대 비율값으로 변환하는 과정은,
    상기 하위 확률값을 0%로 상위 확률값을 100%로 하는 범위에서, 상기 비율값이 위치하는 지점의 값을 계산하는 과정임을 특징으로 하는 실행 가능한 코드 탐지 방법.
  14. 함수 호출 메커니즘을 따르는 인스트럭션 패턴들의 정보를 저장하는 인스트럭션 패턴 저장부;
    실행 가능한 코드 존재 여부 탐지 대상인 네트워크 데이터를 역 어셈블하여 인스트럭션 문자열을 추출하는 패킷 가공부;
    상기 패킷 가공부에서 추출된 인스트럭션들에 대해 상기 저장된 인스트럭션 패턴중에서 일치하는 패턴이 있는지 비교하는 비교부; 및
    상기 비교부의 비교결과에 따라서 실행 가능한 코드의 존재 여부를 판단하는 판단부를 포함하는 실행 가능한 코드 탐지 장치.
  15. 제14항에 있어서,
    상기 인스트럭션 패턴들의 정보는, 함수 호출 메커니즘을 따르는 패턴 조합의 식별 정보, 패턴 일치를 시도하기 위한 기준이 되는 기준 인스트럭션 정보, 성공 횟수를 카운트하기 위해 일치하여야 하는 세부 인스트럭션 정보를 포함하는 것을 특징으로 하는 실행 가능한 코드 탐지 장치.
  16. 제15항에 있어서,
    상기 인스트럭션 패턴들의 정보는, 상기 세부 인스트럭션들을 만족시키는데 허용되는 최대 인스트럭션 간격, 실행 가능한 코드인 경우 최대 인스트럭션 간격내에서 패턴이 일치될 확률인 상위 확률값, 비실행 코드인 경우 최대 인스트럭션 간격내에서 패턴이 일치될 확률인 하위 확률값을 포함하는 것을 특징으로 하는 실행 가능한 코드 탐지 장치.
  17. 제14항에 있어서, 상기 패킷 가공부는
    상기 네트워크 데이터를 역 어셈블하기 전에, 상기 네트워크 데이터를 시그니처 별로 순서대로 정렬, 단편화 제거, 패킷 재조합 중에서 하나 이상을 수행한 후, 프로토콜 헤더를 제거하고 페이로드만을 연결하여 연속된 데이터를 만드는 기능을 더 수행하는 것을 특징으로 하는 실행 가능한 코드 탐지 장치.
  18. 제16항에 있어서, 상기 비교부는
    상기 추출된 인스트럭션별로 상기 저장된 인스트럭션 패턴 정보의 각 기준 패턴과 일치하는 지를 비교하고, 일치하는 경우, 그 전방향 또는 후방향 비교를 통한 최대 인스트럭션 간격 내에서 세부 인스트럭션이 존재하는 지를 확인하여, 세부 인스트럭션이 존재하면 패턴이 일치하는 것으로 판단하는 것을 특징으로 하는 실행 가능한 코드 탐지 장치.
  19. 제18항에 있어서, 상기 비교부는
    상기 기준 패턴과 일치할 경우, 각 패턴별로 패턴 일치 비교 횟수를 카운트하고, 세부 인스트럭션이 존재하는 경우 패턴 일치 성공 횟수를 카운트하는 기능을 더 수행하는 것을 특징으로 하는 실행 가능한 코드 탐지 장치.
  20. 제19항에 있어서, 상기 판단부는
    패턴별 패턴 일치 비교 횟수에 대한 패턴 일치 성공 횟수의 비율을 구하고, 상기 구해진 모든 비율이 해당 인스트럭션 패턴의 하위 확률값보다 크면, 상기 네트워크 데이터 속에 실행 가능한 코드가 존재하는 것으로 판단하고, 그렇지 않으면 실행 가능한 코드가 존재하지 않는 것으로 판단하는 것을 특징으로 하는 실행 가능한 코드 탐지 장치.
  21. 제20항에 있어서, 상기 판단부는
    실행 가능한 코드가 존재하는 것으로 판단된 경우, 상기 판단에 대한 신뢰도를 계산하는 것을 특징으로 하는 실행 가능한 코드 탐지 장치.
  22. 제21항에 있어서, 상기 판단부는
    상기 패턴별 패턴 일치 비교 횟수에 대한 성공 횟수의 비율을 상기 상위 확률값에 근접한 정도를 나타내는 상대 비율값으로 변환하고, 상기 변환된 상대 비율값의 평균을 구하여 신뢰도 값으로 산출하는 것을 특징으로 하는 실행 가능한 코드 탐지 장치.
  23. 제22항에 있어서, 상기 판단부는
    상기 변환된 상대 비율값의 평균을 구하기 전에, 각 패턴별 상대 비율값에 가중치를 부여하는 것을 특징으로 하는 실행 가능한 코드 탐지 장치.
  24. 제22항에 있어서,
    상기 판단부에서 구해진 실행 가능한 코드의 존재 여부 및 실행 가능한 코드가 존재하는 경우의 해당 판단에 대한 신뢰도값을 출력하는 출력부를 더 포함하는 것을 특징으로 하는 실행 가능한 코드 탐지 장치.
KR1020070025033A 2007-03-14 2007-03-14 실행 가능한 코드 탐지 방법 및 장치 KR100850361B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070025033A KR100850361B1 (ko) 2007-03-14 2007-03-14 실행 가능한 코드 탐지 방법 및 장치
US12/044,393 US8166545B2 (en) 2007-03-14 2008-03-07 Method and apparatus for detecting executable code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070025033A KR100850361B1 (ko) 2007-03-14 2007-03-14 실행 가능한 코드 탐지 방법 및 장치

Publications (1)

Publication Number Publication Date
KR100850361B1 true KR100850361B1 (ko) 2008-08-04

Family

ID=39881171

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070025033A KR100850361B1 (ko) 2007-03-14 2007-03-14 실행 가능한 코드 탐지 방법 및 장치

Country Status (2)

Country Link
US (1) US8166545B2 (ko)
KR (1) KR100850361B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8627478B2 (en) 2012-05-11 2014-01-07 Ahnlab, Inc. Method and apparatus for inspecting non-portable executable files
US8646076B1 (en) 2012-09-11 2014-02-04 Ahnlab, Inc. Method and apparatus for detecting malicious shell codes using debugging events

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090260061A1 (en) * 2008-04-14 2009-10-15 Lynch Thomas W Symbiotic network digital document layering and/or steganography method, article and apparatus
US8875285B2 (en) * 2010-03-24 2014-10-28 Microsoft Corporation Executable code validation in a web browser
KR20130039175A (ko) * 2011-10-11 2013-04-19 한국전자통신연구원 내부자 위협 탐지 장치 및 방법
WO2015030741A1 (en) * 2013-08-28 2015-03-05 Hewlett-Packard Development Company, L.P. Distributed pattern discovery

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030212913A1 (en) * 2002-05-08 2003-11-13 David Vella System and method for detecting a potentially malicious executable file
KR20040008375A (ko) * 2002-07-18 2004-01-31 광주과학기술원 비정상행위 공통 특징을 이용한 침입탐지방법 및 기록매체
KR20040034862A (ko) * 2002-10-17 2004-04-29 한국전자통신연구원 액티브 코드 기반의 실시간 역추적 시스템 및 그 구현 방법
US20040133796A1 (en) 2003-01-03 2004-07-08 Aladdin Knowledge Systems Ltd. Method for emulating an executable code in order to detect maliciousness
KR20060063610A (ko) * 2004-12-07 2006-06-12 한국전자통신연구원 패킷 재조합을 이용한 패턴 매칭 방법 및 그 장치

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100516304B1 (ko) 2003-05-16 2005-09-26 주식회사 안철수연구소 프로세스메모리의 악성코드 검출기 및 그 방법
US7966658B2 (en) * 2004-04-08 2011-06-21 The Regents Of The University Of California Detecting public network attacks using signatures and fast content analysis
US7757287B2 (en) * 2004-04-19 2010-07-13 Computer Associates Think, Inc. Systems and methods for computer security
US7519998B2 (en) * 2004-07-28 2009-04-14 Los Alamos National Security, Llc Detection of malicious computer executables
WO2007001439A2 (en) * 2004-11-04 2007-01-04 Telcordia Technologies, Inc. Detecting exploit code in network flows
KR100922579B1 (ko) * 2006-11-30 2009-10-21 한국전자통신연구원 네트워크 공격 탐지 장치 및 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030212913A1 (en) * 2002-05-08 2003-11-13 David Vella System and method for detecting a potentially malicious executable file
KR20040008375A (ko) * 2002-07-18 2004-01-31 광주과학기술원 비정상행위 공통 특징을 이용한 침입탐지방법 및 기록매체
KR20040034862A (ko) * 2002-10-17 2004-04-29 한국전자통신연구원 액티브 코드 기반의 실시간 역추적 시스템 및 그 구현 방법
US20040133796A1 (en) 2003-01-03 2004-07-08 Aladdin Knowledge Systems Ltd. Method for emulating an executable code in order to detect maliciousness
KR20060063610A (ko) * 2004-12-07 2006-06-12 한국전자통신연구원 패킷 재조합을 이용한 패턴 매칭 방법 및 그 장치

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8627478B2 (en) 2012-05-11 2014-01-07 Ahnlab, Inc. Method and apparatus for inspecting non-portable executable files
US8646076B1 (en) 2012-09-11 2014-02-04 Ahnlab, Inc. Method and apparatus for detecting malicious shell codes using debugging events

Also Published As

Publication number Publication date
US8166545B2 (en) 2012-04-24
US20090025083A1 (en) 2009-01-22

Similar Documents

Publication Publication Date Title
KR100850361B1 (ko) 실행 가능한 코드 탐지 방법 및 장치
CN107222491B (zh) 一种基于工业控制网络变种攻击的入侵检测规则创建方法
KR101860395B1 (ko) 비표준 프로토콜에 대한 화이트리스트 기반의 산업제어시스템 이상행위 탐지 방법 및 탐지 장치
EP2924943B1 (en) Virus detection method and device
KR101827197B1 (ko) 로그 분석 시스템
CN109711171A (zh) 软件漏洞的定位方法及装置、系统、存储介质、电子装置
KR100859664B1 (ko) 전자메일의 바이러스 감염여부 판정방법
EP2278516A1 (en) Detection and minimization of false positives in anti-malware processing
US10484408B2 (en) Malicious communication pattern extraction apparatus, malicious communication pattern extraction method, and malicious communication pattern extraction program
US20080291912A1 (en) System and method for detecting file
CN107209834B (zh) 恶意通信模式提取装置及其系统和方法、记录介质
KR101378115B1 (ko) Pcre 기반 패턴 매칭 기법을 이용한 네트워크 침입 탐지 장치 및 방법
CN111404768A (zh) 一种dpi识别的实现方法及设备
KR100994746B1 (ko) 패턴 매칭부를 이용한 유해 트래픽 탐지 방법 및 시스템
CN107153584A (zh) 异常检测方法及装置
CN105407096A (zh) 基于流管理的报文数据检测方法
EP2189920B1 (en) Malware signature builder and detection for executable code
CN101719906B (zh) 一种基于蠕虫传播行为的蠕虫检测方法
CN112995235B (zh) 一种对DDoS攻击进行检测的方法、装置及电子设备
CN109474567B (zh) Ddos攻击溯源方法、装置、存储介质及电子设备
KR101488271B1 (ko) Ids 오탐 검출 장치 및 방법
JP4309102B2 (ja) 不正コマンド・データ検知方式、不正コマンド・データ検知方法および不正コマンド・データ検知プログラム
KR20070077517A (ko) 프로파일 기반 웹 애플리케이션 침입탐지시스템 및 그 방법
CN111416812B (zh) 一种恶意脚本检测方法、设备及存储介质
CN115333848A (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: 20120710

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee