KR20160099159A - 악성 코드를 탐지하기 위한 전자 시스템 및 방법 - Google Patents

악성 코드를 탐지하기 위한 전자 시스템 및 방법 Download PDF

Info

Publication number
KR20160099159A
KR20160099159A KR1020150020976A KR20150020976A KR20160099159A KR 20160099159 A KR20160099159 A KR 20160099159A KR 1020150020976 A KR1020150020976 A KR 1020150020976A KR 20150020976 A KR20150020976 A KR 20150020976A KR 20160099159 A KR20160099159 A KR 20160099159A
Authority
KR
South Korea
Prior art keywords
code
malicious
call
normal
application
Prior art date
Application number
KR1020150020976A
Other languages
English (en)
Other versions
KR102045772B1 (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 KR1020150020976A priority Critical patent/KR102045772B1/ko
Publication of KR20160099159A publication Critical patent/KR20160099159A/ko
Application granted granted Critical
Publication of KR102045772B1 publication Critical patent/KR102045772B1/ko

Links

Images

Classifications

    • 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
    • H04L63/1425Traffic logging, e.g. anomaly detection
    • 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
    • H04L63/1416Event 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)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 사용자 장치에서 발생하는 시스템 호출들 각각이 속하는 분류에 관한 분류 정보를 저장하는 분류 정보 스토리지, 각각이 정상 코드가 실행될 때 발생하는 시스템 호출들에 기초하여 생성된 하나 이상의 정상 호출 모델들 및 각각이 악성 코드가 실행될 때 발생하는 시스템 호출들에 기초하여 생성된 하나 이상의 악성 호출 모델들에 관한 정보를 저장하는 모델 정보 스토리지, 사용자 장치에서 실행된 어플리케이션에 의해 발생한 시스템 호출들을 포함하는 탐지 대상 호출 패턴의 데이터를 제공받는 데이터 수신기, 분류 정보를 참조하여 탐지 대상 호출 패턴에 포함되는 시스템 호출들에 관한 특성을 추출하는 어플리케이션 특성 추출기, 및 정상 호출 모델들 및 악성 호출 모델들 중 적어도 하나와 추출된 특성을 비교하여 어플리케이션의 실행 코드가 악성인지 여부를 탐지하는 코드 탐지기를 포함하는 전자 시스템을 제공한다. 본 발명에 따르면, 이미 알려진 악성 코드뿐만 아니라, 변종 악성 코드 또는 알려지지 않은 악성 코드가 탐지될 수 있다.

Description

악성 코드를 탐지하기 위한 전자 시스템 및 방법 {ELECTRONIC SYSTEM AND METHOD FOR DETECTING MALICIOUS CODE}
본 발명은 악성 코드(Malicious Code)의 탐지에 관한 것으로, 좀 더 구체적으로는 악성 코드를 탐지하기 위한 전자 시스템 및 방법에 관한 것이다.
악성 코드는 특정 목표 또는 불특정 목표들을 공격하기 위해 이용된다. 악성 코드에 의한 공격은, 예로서, 악성 코드에 감염된 파일을 실행(Execution)함으로써 시작된다. 전자 시스템의 사용자는 자신도 모르게 악성 코드에 감염된 파일을 실행하거나 악성 코드에 감염된 파일을 인터넷을 통해 다운로드 한다. 악성 코드는 개인 정보 유출, 시스템 파괴, 서비스 거부 등과 같은 다양한 문제를 일으킨다. 따라서, 악성 코드를 탐지하는 것은 근래 중요한 이슈로서 강조되고 있다.
악성 코드를 탐지하기 위해, 정적(Static) 분석 및 동적(Dynamic) 분석이 수행된다. 정적 분석은 악성 코드에 감염된 것으로 의심되는 파일의 코드를 역으로(Reversely) 분석하기 위해 이용된다. 정적 분석을 통해, 악성 코드에 감염된 것으로 의심되는 파일의 동작이 예측된다. 동적 분석은 악성 코드에 감염된 것으로 의심되는 파일을 실행시킴으로써 악성 코드에 감염된 것으로 의심되는 파일의 동작을 직접 확인하기 위해 이용된다.
정적 분석 및 동적 분석을 통해, 악성 코드에 감염된 것으로 의심되는 파일이 분석될 수 있고 악성 코드가 탐지될 수 있다. 정적 분석 및 동적 분석에 따르면, 이미 알려진 악성 코드가 정확히 탐지될 수 있다. 그러나, 변종(Mutant) 악성 코드 또는 알려지지 않은 악성 코드는 탐지되기 어렵다.
정적 분석 및 동적 분석을 보완하기 위해, 휴리스틱(Heuristic) 기법이 이용된다. 휴리스틱 기법은 알려진 악성 코드와 유사한 코드 패턴을 포함하는 변종 악성 코드 또는 알려지지 않은 악성 코드를 탐지하기 위해 이용된다. 예로서, 변종 악성 코드 또는 알려지지 않은 악성 코드를 탐지하기 위해, 이미 알려진 시나리오에 기초하여 프로세스의 행동이 감시될 수 있다. 그러나, 시나리오에 포함되지 않은 비정상 행동은 탐지되기 어렵다. 또한, 악성 코드에 감염된 것으로 의심되는 파일이 장시간 동안 실행된 경우, 의심 행위를 추적하는 것이 어렵다.
악성 코드는 다양한 경로(Route)를 통해 공격 목표에 은밀하게 침투하고, 장시간 동안 잠복한다. 게다가, 악성 코드의 공격 패턴은 점점 다양해지고 있고 진화하고 있다. 이런 이유 때문에, 악성 코드를 미리 탐지하고 악성 코드의 공격에 미리 대비하는 것은 어렵다. 따라서, 이미 알려진 악성 코드뿐만 아니라, 변종 악성 코드 또는 알려지지 않은 악성 코드를 정확히 탐지하기 위한 방법이 필요하다.
이미 알려진 악성 코드뿐만 아니라, 변종 악성 코드 또는 알려지지 않은 악성 코드를 탐지하기 위한 전자 시스템 및 방법이 제공된다. 본 발명의 실시 예에서, 전자 시스템은 악성 코드를 탐지하기 위해, 어플리케이션(Application)에 의해 발생한 시스템 호출(System Call)들에 관한 특성(Feature)을 추출하고 호출 모델(Call Model)을 생성할 수 있다. 특히, 본 발명의 실시 예에 따른 전자 시스템은 악성 코드가 실행될 때 발생하는 시스템 호출들에 기초하여 생성된 악성 호출 모델뿐만 아니라, 정상(Normal) 코드가 실행될 때 발생하는 시스템 호출들에 기초하여 생성된 정상 호출 모델을 참조할 수 있다.
본 발명의 일 실시 예에 따른 전자 시스템은 사용자 장치에서 발생하는 시스템 호출들 각각이 속하는 분류에 관한 분류 정보를 저장하도록 구성되는 분류 정보 스토리지; 각각이 사용자 장치에서 정상 코드가 실행될 때 발생하는 시스템 호출들에 기초하여 생성된 하나 이상의 정상 호출 모델들, 및 각각이 사용자 장치에서 악성 코드가 실행될 때 발생하는 시스템 호출들에 기초하여 생성된 하나 이상의 악성 호출 모델들에 관한 정보를 저장하도록 구성되는 모델 정보 스토리지; 사용자 장치에서 실행된 어플리케이션에 의해 발생한 시스템 호출들을 포함하는 탐지 대상 호출 패턴의 데이터를 제공받도록 구성되는 데이터 수신기; 제공받은 데이터 및 분류 정보를 참조하여 탐지 대상 호출 패턴에 포함되는 시스템 호출들에 관한 특성을 추출하도록 구성되는 어플리케이션 특성 추출기; 및 하나 이상의 정상 호출 모델들 및 하나 이상의 악성 호출 모델들 중 적어도 하나와 추출된 특성을 비교하여 어플리케이션의 실행 코드가 악성인지 여부를 탐지하도록 구성되는 코드 탐지기를 포함할 수 있다.
본 발명의 일 실시 예에서, 분류 정보는 프로세스, 쓰레드, 메모리, 파일, 레지스트리, 네트워크, 서비스, 및 기타 분류들 중 적어도 하나와 사용자 장치에서 발생하는 시스템 호출들 사이의 대응 관계에 관한 정보를 포함할 수 있다.
본 발명의 일 실시 예에 따른 전자 시스템은 탐지 대상 호출 패턴의 데이터가 제공되기 전에 미리 분류 정보를 참조하여 하나 이상의 정상 호출 모델들 및 하나 이상의 악성 호출 모델들을 생성하도록 구성되는 모델 생성기를 더 포함할 수 있다.
본 발명의 일 실시 예에서, 모델 생성기는 추출된 특성 및 코드 탐지기의 탐지 결과에 기초하여 하나 이상의 정상 호출 모델들 및 하나 이상의 악성 호출 모델들 중 적어도 하나를 갱신할 수 있다.
본 발명의 일 실시 예에서, 하나 이상의 정상 호출 모델들 각각은 정상 코드가 실행될 때 발생하는 시스템 호출들 각각의 분류, 및 정상 코드가 실행될 때 접근되는 메모리의 위치, 정상 코드가 실행될 때 접근되는 시스템 파일의 종류, 정상 코드가 실행될 때 접근되는 레지스트리의 종류, 정상 코드가 실행될 때 접근되는 네트워크의 특성, 및 정상 코드가 실행될 때 동작하는 서비스의 유형 중 적어도 하나에 기초하여 생성될 수 있다. 나아가, 하나 이상의 악성 호출 모델들 각각은 악성 코드가 실행될 때 발생하는 시스템 호출들 각각의 분류, 및 악성 코드가 실행될 때 접근되는 메모리의 위치, 악성 코드가 실행될 때 접근되는 시스템 파일의 종류, 악성 코드가 실행될 때 접근되는 레지스트리의 종류, 악성 코드가 실행될 때 접근되는 네트워크의 특성, 및 악성 코드가 실행될 때 동작하는 서비스의 유형 중 적어도 하나에 기초하여 생성될 수 있다.
본 발명의 일 실시 예에서, 어플리케이션 특성 추출기는 탐지 대상 호출 패턴에 포함되는 시스템 호출들이 속하는 분류들, 탐지 대상 호출 패턴에 포함되는 시스템 호출들의 발생 순서, 및 탐지 대상 호출 패턴에 포함되는 시스템 호출들 각각의 호출 횟수 중 적어도 하나를 추출할 수 있다.
본 발명의 다른 실시 예에 따른 전자 시스템은 각각이 어플리케이션을 실행하도록 구성되고, 어플리케이션이 실행될 때 발생하는 시스템 호출들을 후킹하도록 구성되는 이벤트 후커를 포함하고, 후킹된 시스템 호출들에 관한 이벤트 로그를 생성하도록 구성되는 복수의 컴퓨팅 장치; 복수의 컴퓨팅 장치에서 발생하는 시스템 호출들 각각이 속하는 분류에 관한 분류 정보를 저장하도록 구성되는 분류 정보 스토리지; 각각이 복수의 컴퓨팅 장치에서 정상 코드가 실행될 때 발생하는 시스템 호출들에 기초하여 생성된 하나 이상의 정상 호출 모델들, 및 각각이 복수의 컴퓨팅 장치에서 악성 코드가 실행될 때 발생하는 시스템 호출들에 기초하여 생성된 하나 이상의 악성 호출 모델들에 관한 정보를 저장하도록 구성되는 모델 정보 스토리지; 이벤트 로그 및 분류 정보를 참조하여 후킹된 시스템 호출들에 관한 특성을 추출하도록 구성되는 어플리케이션 특성 추출기; 및 하나 이상의 정상 호출 모델들 및 하나 이상의 악성 호출 모델들 중 적어도 하나와 추출된 특성을 비교하여 어플리케이션의 실행 코드가 악성 코드, 변종 악성 코드, 및 의심 코드 중 적어도 하나를 포함하는지 여부를 탐지하도록 구성되는 코드 탐지기를 포함할 수 있다.
본 발명의 다른 실시 예에서, 후킹된 시스템 호출들에 관한 특성은 후킹된 시스템 호출들이 속하는 분류들, 후킹된 시스템 호출들의 발생 순서, 및 후킹된 시스템 호출들 각각의 호출 횟수 중 적어도 하나를 포함할 수 있다.
본 발명의 다른 실시 예에 따른 전자 시스템은 코드 탐지기의 탐지 결과에 기초하여 어플리케이션의 실행 코드에 포함되는 악성 코드, 변종 악성 코드, 및 의심 코드 중 적어도 하나에 관한 정보를 데이터베이스에 저장하도록 구성되는 탐지 결과 처리기를 더 포함할 수 있다.
본 발명의 또 다른 실시 예에 따라 전자 시스템을 이용하여 악성 코드를 탐지하는 방법은: 컴퓨팅 장치에서 정상 코드가 실행될 때 발생하는 시스템 호출들에 관한 정상 호출 패턴 정보, 및 컴퓨팅 장치에서 악성 코드가 실행될 때 발생하는 시스템 호출들에 관한 악성 호출 패턴 정보를 수집하는 단계; 정상 호출 패턴 정보 및 악성 호출 패턴 정보에 각각 기초하여 하나 이상의 정상 호출 모델들 및 하나 이상의 악성 호출 모델들을 생성하는 단계; 하나 이상의 사용자 장치들에서 실행된 어플리케이션에 의해 발생한 시스템 호출들을 포함하는 탐지 대상 호출 패턴의 데이터를 제공받는 단계; 컴퓨팅 장치에서 발생하는 시스템 호출들 각각이 속하는 분류에 관한 분류 정보를 참조하여 탐지 대상 호출 패턴에 포함되는 시스템 호출들에 관한 특성을 추출하는 단계; 및 하나 이상의 정상 호출 모델들 및 하나 이상의 악성 호출 모델들 중 적어도 하나와 추출된 특성을 비교하여 어플리케이션의 실행 코드가 악성인지 여부를 탐지하는 단계를 포함할 수 있다.
본 발명의 또 다른 실시 예에서, 탐지하는 단계는: 하나 이상의 정상 호출 모델들 중 적어도 하나와 추출된 특성을 비교하는 단계; 및 하나 이상의 정상 호출 모델들 중에서 추출된 특성과 비교된 대상 정상 호출 모델과 추출된 특성 사이의 유사도가 제 1 기준 값 이상인 경우, 어플리케이션의 실행 코드가 정상임을 판별하는 단계를 포함할 수 있다.
본 발명의 또 다른 실시 예에 따른 방법은 대상 정상 호출 모델과 추출된 특성 사이의 유사도가 제 1 기준 값 이상이고 대상 정상 호출 모델과 추출된 특성 사이의 차이가 제 2 기준 값 이상인 경우, 추출된 특성을 참조하여 대상 정상 호출 모델을 갱신하는 단계를 더 포함할 수 있다.
본 발명의 또 다른 실시 예에서, 탐지하는 단계는: 하나 이상의 정상 호출 모델들 각각과 추출된 특성 사이의 유사도가 제 1 기준 값보다 작은 경우, 하나 이상의 악성 호출 모델들 중 적어도 하나와 추출된 특성을 비교하는 단계; 및 하나 이상의 악성 호출 모델들 중 적어도 하나와 추출된 특성 사이의 유사도가 제 3 기준 값 이상인 경우, 어플리케이션의 실행 코드가 악성 코드를 포함함을 판별하는 단계를 더 포함할 수 있다.
본 발명의 또 다른 실시 예에서, 탐지하는 단계는: 하나 이상의 악성 호출 모델들 중 적어도 하나와 추출된 특성 사이의 유사도가 제 3 기준 값보다 작고 제 4 기준 값 이상인 경우, 어플리케이션의 실행 코드가 변종 악성 코드를 포함함을 판별하는 단계를 더 포함할 수 있다.
본 발명의 또 다른 실시 예에서, 탐지하는 단계는: 하나 이상의 악성 호출 모델들 각각과 추출된 특성 사이의 유사도가 제 4 기준 값보다 작은 경우, 어플리케이션의 실행 코드를 의심 코드로서 관리하는 단계를 더 포함할 수 있다.
본 발명의 또 다른 실시 예에서, 관리하는 단계는: 하나 이상의 정상 호출 모델들 각각과 추출된 특성 사이의 유사도가 제 5 기준 값 이하인 경우, 어플리케이션의 실행 코드가 새로운 악성 코드를 포함함을 판별하는 단계; 및 추출된 특성을 참조하여 새로운 악성 코드에 대응하는 새로운 악성 호출 모델을 생성하는 단계를 포함할 수 있다.
본 발명의 또 다른 실시 예에서, 관리하는 단계는: 하나 이상의 정상 호출 모델들 중 적어도 하나와 추출된 특성 사이의 유사도가 제 5 기준 값보다 큰 경우, 어플리케이션의 실행 코드를 관심 코드로서 저장하는 단계; 및 관심 코드를 포함하는 다른 실행 코드가 탐지된 경우, 추출된 특성을 참조하여 관심 코드에 대응하는 새로운 악성 호출 모델을 생성하는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 따르면, 이미 알려진 악성 코드뿐만 아니라, 변종 악성 코드 또는 알려지지 않은 악성 코드가 탐지될 수 있다. 나아가, 탐지 결과와 유사한 공격 패턴에 관한 히스토리(History)가 있는 경우, 탐지 결과는 공격 경로 및 근원지를 찾기 위해 이용될 수 있다. 따라서, 새로운 유형의 공격이 대비될 수 있다. 뿐만 아니라, 본 발명의 실시 예에 따르면, 호출 모델에 기초하여 어플리케이션이 효율적으로 분류될 수 있다.
도 1은 본 발명의 실시 예에 따른 전자 시스템을 보여주는 블록도이다.
도 2는 도 1의 전자 시스템에 포함되는 컴퓨팅 장치를 보여주는 블록도이다.
도 3은 도 2의 컴퓨팅 장치에서 발생하는 시스템 호출들이 속하는 분류들의 예시를 보여주는 표이다.
도 4는 도 1의 전자 시스템에 포함되는 악성 코드 탐지 시스템 및 도 2의 컴퓨팅 장치에 포함되는 이벤트 후커(Event Hooker)를 보여주는 블록도이다.
도 5는 도 4의 악성 코드 탐지 시스템을 이용하여 악성 코드를 탐지하는 과정을 설명하기 위한 개념도이다.
도 6은 도 1의 전자 시스템에 포함되는 악성 코드 탐지 시스템을 보여주는 블록도이다.
도 7은 도 1의 전자 시스템에 포함되는 악성 코드 탐지 시스템을 보여주는 블록도이다.
도 8a 및 도 8b는 본 발명의 실시 예에 따른 악성 코드 탐지 시스템의 동작을 설명하는 흐름도이다.
도 9는 도 8b의 악성 코드를 탐지하는 단계를 더 자세히 설명하는 흐름도이다.
도 10은 도 9의 의심 코드를 관리하는 단계를 더 자세히 설명하는 흐름도이다.
전술한 특성 및 이하 상세한 설명은 모두 본 발명의 설명 및 이해를 돕기 위한 예시적인 사항이다. 즉, 본 발명은 이와 같은 실시 예에 한정되지 않고 다른 형태로 구체화될 수 있다. 다음 실시 형태들은 단지 본 발명을 완전히 개시하기 위한 예시이며, 본 발명이 속하는 기술 분야의 통상의 기술자들에게 본 발명을 전달하기 위한 설명이다. 따라서, 본 발명의 구성 요소들을 구현하기 위한 방법이 여럿 있는 경우에는, 이들 방법 중 특정한 것 또는 이와 동일성 있는 것 가운데 어떠한 것으로든 본 발명의 구현이 가능함을 분명히 할 필요가 있다.
본 명세서에서 어떤 구성이 특정 요소들을 포함한다는 언급이 있는 경우, 또는 어떤 과정이 특정 단계들을 포함한다는 언급이 있는 경우는, 그 외 다른 요소 또는 다른 단계들이 더 포함될 수 있음을 의미한다. 즉, 본 명세서에서 사용되는 용어들은 특정 실시 형태를 설명하기 위한 것일 뿐이고, 본 발명의 개념을 한정하기 위한 것이 아니다. 나아가, 발명의 이해를 돕기 위해 설명한 예시들은 그것의 상보적인 실시 예도 포함한다.
본 명세서에서 사용되는 용어들은 본 발명이 속하는 기술 분야의 통상의 기술자들이 일반적으로 이해하는 의미를 갖는다. 보편적으로 사용되는 용어들은 본 명세서의 맥락에 따라 일관적인 의미로 해석되어야 한다. 또한, 본 명세서에서 사용되는 용어들은, 그 의미가 명확히 정의된 경우가 아니라면, 지나치게 이상적이거나 형식적인 의미로 해석되지 않아야 한다. 이하 첨부된 도면을 통하여 본 발명의 실시 예가 설명된다.
도 1은 본 발명의 실시 예에 따른 전자 시스템을 보여주는 블록도이다. 전자 시스템(1000)은 악성 코드(Malicious Code) 탐지 시스템(100), 하나 이상의 컴퓨팅 장치들(210, 220, 230), 유선 네트워크(310), 및 무선 네트워크(320)를 포함할 수 있다.
예로서, 악성 코드 탐지 시스템(100)은 서버(Server) 시스템의 형태로 구현될 수 있다. 이를 위해, 악성 코드 탐지 시스템(100)은 하나 이상의 컴퓨팅 장치들을 포함할 수 있다. 예로서, 악성 코드 탐지 시스템(100)에 포함되는 컴퓨팅 장치는 범용 컴퓨터, 워크스테이션(Workstation) 등과 같은 전자 장치일 수 있다. 예로서, 악성 코드 탐지 시스템(100)에 포함되는 컴퓨팅 장치는 하나 이상의 프로세서들을 포함할 수 있다.
악성 코드 탐지 시스템(100)은 하나 이상의 프로세서들의 동작에 따라 고유의 기능을 수행할 수 있다. 악성 코드 탐지 시스템(100)은 컴퓨팅 장치들(210, 220, 230)을 공격하는 악성 코드를 탐지할 수 있다. 악성 코드 탐지 시스템(100)의 구성 및 동작은 도 4 내지 도 10에 대한 참조와 함께 설명된다.
예로서, 컴퓨팅 장치들(210, 220, 230) 각각은 사용자 장치일 수 있다. 예로서, 컴퓨팅 장치들(210, 220, 230) 각각은 개인용 컴퓨터, 노트북, 스마트폰, 태블릿, 웨어러블(Wearable) 장치 등과 같은 전자 장치일 수 있으나, 본 발명은 이 예에 의해 제한되지 않는다. 컴퓨팅 장치들(210, 220, 230) 각각은 하나 이상의 프로세서들을 포함할 수 있다. 예로서, 컴퓨팅 장치들(210, 220, 230) 각각은 범용 프로세서, 워크스테이션 프로세서, 어플리케이션(Application) 프로세서 등과 같은 프로세서를 포함할 수 있다.
컴퓨팅 장치들(210, 220, 230)은 프로세서의 동작에 따라 고유의 기능을 수행할 수 있다. 예로서, 컴퓨팅 장치들(210, 220, 230)은 어플리케이션을 실행하고, 사용자에게 서비스를 제공할 수 있다. 몇몇 경우, 컴퓨팅 장치들(210, 220, 230)에 의해 실행되는 어플리케이션의 실행 코드(Execution Code)는 악성 코드를 포함할 수 있다. 또는, 컴퓨팅 장치들(210, 220, 230)에 의해 실행되는 어플리케이션의 실행 코드는 변종(Mutant) 악성 코드 또는 알려지지 않은 악성 코드를 포함할 수 있다. 본 발명의 실시 예에 따른 전자 시스템(1000)은 어플리케이션의 실행 코드에 포함되는 악성 코드, 변종 악성 코드, 또는 알려지지 않은 악성 코드를 탐지할 수 있다.
컴퓨팅 장치들(210, 220, 230)은 단독으로 고유의 기능을 수행할 수 있다. 또는, 컴퓨팅 장치들(210, 220, 230)은 네트워크를 통해 다른 컴퓨팅 장치와 통신함으로써 고유의 기능을 수행할 수 있다. 예로서, 컴퓨팅 장치들(210, 220, 230)은 유선 네트워크(310) 및 무선 네트워크(320) 중 적어도 하나를 통해 다른 컴퓨팅 장치와 통신할 수 있다.
예로서, 유선 네트워크(310)는 USB(Universal Serial Bus), PCIe(Peripheral Component Interconnect Express), SATA(Serial Advanced Technology Attachment) 등과 같은 인터페이스 규약을 지원하거나, TCP/IP(Transmission Control Protocol/Internet Protocol) 등과 같은 통신 규약을 지원할 수 있다. 예로서, 무선 네트워크(320)는 LTE(Long Term Evolution), WiMax(Worldwide Interoperability for Microwave Access), GSM(Global System for Mobile communication), CDMA(Code Division Multiple Access), Bluetooth, NFC(Near Field Communication), WiFi(Wireless Fidelity), RFID(Radio Frequency Identification) 등과 같은 통신 규약을 지원할 수 있다. 그러나, 위 예들은 본 발명의 이해를 돕기 위한 것이고, 본 발명을 제한하기 위한 것은 아니다.
컴퓨팅 장치들(210, 220, 230)은 유선 네트워크(310) 및 무선 네트워크(320) 중 적어도 하나를 통해 악성 코드 탐지 시스템(100)과 통신할 수 있다. 컴퓨팅 장치들(210, 220, 230)은 유선 네트워크(310) 및 무선 네트워크(320) 중 적어도 하나를 통해 악성 코드 탐지 시스템(100)으로 데이터를 전송할 수 있다. 컴퓨팅 장치(210)의 구성 및 동작은 도 2에 대한 참조와 함께 설명된다.
도 1에서, 전자 시스템(1000)이 세 개의 컴퓨팅 장치들(210, 220, 230)을 포함하는 것으로 도시되었다. 그러나, 컴퓨팅 장치들(210, 220, 230)의 개수는 도 1에 의해 제한되지 않는다. 전자 시스템(1000)은 한 개, 두 개, 또는 네 개 이상의 컴퓨팅 장치들을 포함할 수 있다. 전자 시스템(1000)에 포함되는 컴퓨팅 장치들의 개수는 다양하게 변경 또는 수정될 수 있다.
도 2는 도 1의 전자 시스템에 포함되는 컴퓨팅 장치를 보여주는 블록도이다. 예로서, 도 2는 도 1의 컴퓨팅 장치(210)를 보여준다. 도 1의 전자 시스템(1000)에 포함되는 다른 컴퓨팅 장치들(220, 230) 각각은 컴퓨팅 장치(210)와 유사하게 구성되고 유사하게 동작할 수 있다. 따라서, 도 1의 전자 시스템(1000)에 포함되는 다른 컴퓨팅 장치들(220, 230)에 관한 중복되는 설명들은 설명의 편의를 위해 생략된다.
예로서, 컴퓨팅 장치(210)는 프로세서(211), 메모리(213), 스토리지(Storage; 215), 이벤트 후커(Event Hooker; 217), 및 버스(Bus; 219)를 포함할 수 있다. 그러나, 도 2에 나타낸 컴퓨팅 장치(210)의 구성은 본 발명의 이해를 돕기 위한 예시일 뿐이다. 컴퓨팅 장치(210)는 도 2에 나타내지 않은 다른 구성 요소들(예컨대, 통신 모듈, 유저 인터페이스(User Interface) 등)을 더 포함할 수 있다. 또는, 컴퓨팅 장치(210)는 도 2에 나타낸 구성 요소들 중 하나 이상을 포함하지 않을 수 있다. 본 발명은 도 2에 나타낸 구성에 의해 제한되지 않는다.
프로세서(211)는 컴퓨팅 장치(210)에서 수행되는 연산들을 처리할 수 있다. 예로서, 프로세서(211)는 하나 이상의 프로세서 코어들을 포함할 수 있다. 예로서, 프로세서(211)는 범용 프로세서, 워크스테이션 프로세서, 또는 어플리케이션 프로세서일 수 있다.
메모리(213)는 프로세서(211)에 의해 처리된 또는 처리될 데이터를 임시로 저장할 수 있다. 예로서, 메모리(213)는 SRAM(Static Random Access Memory), DRAM(Dynamic RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리, 또는 플래시(Flash) 메모리, PRAM(Phase-change RAM), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM) 등과 같은 불휘발성 메모리를 포함할 수 있다.
스토리지(215)는 전원 공급과 관계없이 데이터를 저장할 수 있다. 예로서, 스토리지(215)는 운영체제(Operating System)를 구동하기 위해 이용되는 파일들, 어플리케이션의 실행 파일들, 및 사용자 데이터를 저장할 수 있다. 예로서, 스토리지(215)는 HDD(Hard Disk Drive), SSD(Solid State Drive), SD(Secure Digital) 카드 등과 같이 불휘발성 메모리를 포함하는 장치일 수 있다.
컴퓨팅 장치(210)는 어플리케이션을 실행할 수 있다. 예로서, 어플리케이션의 실행 파일들은 스토리지(215)에 저장될 수 있다. 어플리케이션의 실행 요청이 컴퓨팅 장치(210)의 사용자로부터 제공된 경우, 프로세서(211)는 어플리케이션을 실행하기 위해 필요한 데이터를 스토리지(215)로부터 메모리(213)로 로드할 수 있다. 프로세서(211)는 메모리(213)에 로드된 데이터를 이용하여 어플리케이션의 실행에 필요한 연산들을 처리할 수 있다.
컴퓨팅 장치(210)에서 어플리케이션이 실행될 때, 다양한 유형의 시스템 호출들이 발생할 수 있고 시스템 호출들은 운영체제에 의해 처리될 수 있다. 이에 따라, 어플리케이션은 컴퓨팅 장치(210)의 자원(Resource)들을 이용하여 컴퓨팅 장치(210)의 사용자에게 서비스를 제공할 수 있다. 컴퓨팅 장치(210)에서 발생하는 시스템 호출들은 도 3에 대한 참조와 함께 설명된다.
이벤트 후커(217)는 어플리케이션이 실행될 때 발생하는 시스템 호출들을 후킹(Hooking)할 수 있다. 후킹은 함수 호출(Function Call), 시스템 메시지, 또는 이벤트를 가로채는 행위를 의미한다. 이벤트 후커(217)의 동작에 따라, 컴퓨팅 장치(210)에서 어플리케이션이 실행될 때 발생하는 시스템 호출들이 파악될 수 있다.
실시 예로서, 컴퓨팅 장치(210)는 이벤트 후커(217)에 의해 후킹된 시스템 호출들에 관한 이벤트 로그(Event Log)를 생성할 수 있다. 즉, 컴퓨팅 장치(210)는 어플리케이션이 실행될 때 발생한 시스템 호출들에 관한 데이터를 생성할 수 있다. 실시 예로서, 이벤트 로그는 메모리(213) 또는 스토리지(215)에 저장될 수 있다. 저장된 이벤트 로그는 도 1의 유선 네트워크(310) 또는 무선 네트워크(320)를 통해 도 1의 악성 코드 탐지 시스템(100)으로 전송될 수 있다. 악성 코드 탐지 시스템(100)은 이벤트 로그를 참조하여 어플리케이션의 실행 코드가 악성인지 여부를 탐지할 수 있다. 악성 코드의 탐지는 도 4 내지 도 10에 대한 참조와 함께 설명된다.
예로서, 저장된 이벤트 로그는 주기적으로(예컨대, 매 1분마다) 악성 코드 탐지 시스템(100)으로 전송될 수 있다. 또는, 저장된 이벤트 로그는 특정 조건이 충족될 때(예컨대, 전송 요청이 발생한 때) 악성 코드 탐지 시스템(100)으로 전송될 수 있다. 그러나, 본 발명은 위 실시 예 및 예시들에 의해 제한되지 않는다. 다른 예로서, 이벤트 후커(217)에 의해 후킹된 시스템 호출들에 관한 데이터는 실시간으로 악성 코드 탐지 시스템(100)으로 전송될 수 있다. 본 발명의 실시 예는 필요에 따라 다양하게 변경 또는 수정될 수 있다.
버스(219)는 컴퓨팅 장치(210)의 구성 요소들 사이에서 통신 경로를 제공할 수 있다. 예로서, 프로세서(211), 메모리(213), 스토리지(215), 및 이벤트 후커(217)는 버스(219)를 통해 서로 데이터를 교환할 수 있다. 버스(219)는 컴퓨팅 장치(210)에서 이용되는 다양한 유형의 통신 포맷을 지원하도록 구성될 수 있다.
도 3은 도 2의 컴퓨팅 장치에서 발생하는 시스템 호출들이 속하는 분류들의 예시를 보여주는 표이다.
실시 예로서, 어플리케이션이 실행될 때 발생하는 시스템 호출들 각각은 프로세스, 쓰레드(Thread), 메모리, 파일, 레지스트리(Registry), 네트워크, 서비스, 및 기타(Others) 분류(Classification)들 중 하나와 관련될 수 있다. 예로서, "CreateProcess" 시스템 호출은 프로세스 분류에 속할 수 있고, "ReadFile" 시스템 호출은 파일 분류에 속할 수 있다. 예로서, 어플리케이션이 실행될 때 "ReadFile" 시스템 호출이 발생하는 경우, 시스템 파일에 관한 처리(예컨대, 읽기 동작)가 수행될 수 있다. 예로서, 윈도우즈(Windows) 운영체제의 "NtOpenThread" API 함수 호출은 쓰레드 분류의 "OpenThread" 시스템 호출에 대응할 수 있다.
어플리케이션이 실행될 때, 사용자에게 서비스를 제공하기 위해 하나 이상의 시스템 호출들이 발생할 수 있다. 도 2에 나타낸 이벤트 후커(217)는 어플리케이션이 실행될 때 발생하는 시스템 호출들을 후킹할 수 있다. 따라서, 이벤트 후커(217)의 동작에 따라, 어플리케이션이 실행될 때 발생하는 시스템 호출들이 파악될 수 있다.
그런데, 어플리케이션의 정상 실행 코드가 실행될 때 발생하는 시스템 호출들은 악성 코드가 실행될 때 발생하는 시스템 호출들과 다를 수 있다. 예로서, 어플리케이션이 악성 코드에 감염되면, 정상 실행 코드가 실행될 때 발생하는 시스템 호출들과는 다른 시스템 호출들이 발생할 수 있다. 따라서, 특정 어플리케이션이 실행될 때 발생하는 시스템 호출들을 검사함으로써, 그 특정 어플리케이션의 실행 코드가 악성인지 여부가 탐지될 수 있다. 악성 코드의 탐지는 도 4 내지 도 10에 대한 참조와 함께 설명된다.
다만, 도 3은 본 발명의 이해를 돕기 위한 예시이다. 도 3은 시스템 호출들 각각이 속하는 분류로서 프로세스, 쓰레드, 메모리, 파일, 레지스트리, 네트워크, 서비스, 및 기타 분류들을 보여주고 있다. 그러나, 시스템 호출들이 속하는 분류들은 필요에 따라 다양하게 변경 또는 수정될 수 있다. 예로서, 도 2의 컴퓨팅 장치(210)에서 이용되는 운영체제의 종류에 따라, 시스템 호출들이 속하는 분류들이 변경 또는 수정될 수 있다.
나아가, 각각의 분류에 속하는 시스템 호출들의 유형 및 개수 역시 다양하게 변경 또는 수정될 수 있다. 도 3에서, 시스템 호출들에 각각 할당된 번호들은 설명의 편의를 위해 제공된 것이다.
예로서, 시스템 호출들이 속하는 분류들은 도 3에 나타낸 것보다 세부적으로 또는 개략적으로 설계될 수 있다. 즉, 시스템 호출들이 속하는 분류들의 개수는 8개를 초과하거나 8개 미만일 수 있다. 예로서, 시스템 호출들이 속하는 분류들은 고유하게 선택될 수 있다. 또는, 시스템 호출들이 속하는 분류들은 환경에 따라 동적으로 변하도록 설계될 수 있다. 본 발명의 실시 예는 필요에 따라 다양하게 변경 또는 수정될 수 있다.
도 4는 도 1의 전자 시스템에 포함되는 악성 코드 탐지 시스템 및 도 2의 컴퓨팅 장치에 포함되는 이벤트 후커를 보여주는 블록도이다. 실시 예로서, 악성 코드 탐지 시스템(100)은 분류 정보 스토리지(110), 데이터 수신기(120), 어플리케이션 특성(Feature) 추출기(130), 모델 정보 스토리지(140), 및 코드 탐지기(150)를 포함할 수 있다.
분류 정보 스토리지(110)는 분류 정보를 저장할 수 있다. 분류 정보는 컴퓨팅 장치(예컨대, 사용자 장치)에서 발생하는 시스템 호출들이 속하는 분류들에 관한 정보이다. 예로서, 분류 정보 스토리지(110)는 도 3에 나타낸 표에 대응하는 분류 정보를 저장할 수 있다. 즉, 분류 정보 스토리지(110)는 프로세스, 쓰레드, 메모리, 파일, 레지스트리, 네트워크, 서비스, 및 기타 분류들 중 적어도 하나와 컴퓨팅 장치에서 발생하는 시스템 호출들 사이의 대응 관계에 관한 정보를 저장할 수 있다.
도 2 및 도 3에 대한 참조와 함께 설명된 것과 같이, 이벤트 후커(217)는 컴퓨팅 장치에서 어플리케이션이 실행될 때 발생하는 시스템 호출들을 후킹할 수 있다. 이벤트 후커(217)의 동작에 따라, 후킹된 시스템 호출들에 관한 이벤트 로그가 생성될 수 있다. 어플리케이션의 실행 코드가 악성인지 여부를 탐지하기 위해, 이벤트 로그가 참조될 수 있다. 어플리케이션의 실행에 의해 발생한 일련의 시스템 호출들은 "탐지 대상 호출 패턴"에 포함되는 것으로 취급될 수 있다.
데이터 수신기(120)는 탐지 대상 호출 패턴의 데이터를 제공받을 수 있다. 탐지 대상 호출 패턴의 데이터는 이벤트 로그에 기초하여 생성될 수 있다. 즉, 데이터 수신기(120)는 어플리케이션이 실행될 때 이벤트 후커(217)에 의해 후킹된 시스템 호출들에 관한 데이터를 제공받을 수 있다. 예로서, 데이터 수신기(120)는 도 1의 유선 네트워크(310) 또는 무선 네트워크(320)를 통해 탐지 대상 호출 패턴의 데이터를 제공받을 수 있다.
어플리케이션 특성 추출기(130)는 탐지 대상 호출 패턴에 포함되는 시스템 호출들에 관한 특성을 추출할 수 있다. 즉, 어플리케이션 특성 추출기(130)는 어플리케이션이 실행될 때 이벤트 후커(217)에 의해 후킹된 시스템 호출들에 관한 특성을 추출할 수 있다. 어플리케이션 특성 추출기(130)는 특성을 추출하기 위해, 데이터 수신기(120)를 통해 제공받은 데이터 및 분류 정보 스토리지(110)에 저장된 분류 정보를 참조할 수 있다.
도 3을 함께 참조하여, 어플리케이션 특성 추출기(130)에 의해 추출된 특성이 설명된다. 설명의 편의를 위해, N번째 시스템 호출이 T번 발생하는 경우를 "(N/T)"로 표시하기로 한다. 예로서, 도 3의 "ReadProcessMemory" 시스템 호출이 5번 발생하는 경우는 "(15/5)"로 표시될 수 있다.
예로서, 대상 어플리케이션이 실행될 때, "ExitThread" 시스템 호출이 1번 발생하고 "TerminateThread" 시스템 호출이 1번 발생할 수 있다. 이벤트 후커(217)의 동작에 따라, "ExitThread" 시스템 호출이 1번 발생하고 "TerminateThread" 시스템 호출이 1번 발생했음을 알리는 정보를 포함하는 이벤트 로그가 생성될 수 있다. 악성 코드 탐지 시스템(100)은 이벤트 로그에 기초하여 생성된 탐지 대상 호출 패턴의 데이터를 제공받을 수 있다. 어플리케이션 특성 추출기(130)는 제공받은 데이터 및 분류 정보를 참조하여 "(10/1)(11/1)"의 특성을 추출할 수 있다.
위에서 언급된 것과 같이, 예로서, 어플리케이션 특성 추출기(130)는 탐지 대상 호출 패턴에 포함되는 시스템 호출들(즉, 이벤트 후커(217)에 의해 후킹된 시스템 호출들)이 속하는 분류들, 탐지 대상 호출 패턴에 포함되는 시스템 호출들의 발생 순서, 및 탐지 대상 호출 패턴에 포함되는 시스템 호출들 각각의 호출 횟수 중 적어도 하나를 추출할 수 있다. 각 어플리케이션은 서비스를 제공하기 위해 고유한 시스템 호출 패턴을 발생시킬 수 있다. 이에 따라, 어플리케이션 특성 추출기(130)에 의해 추출된 특성은 어플리케이션의 종류를 식별하기 위해 또는 어플리케이션의 실행 코드가 악성인지 여부를 탐지하기 위해 이용될 수 있다.
모델 정보 스토리지(140)는 하나 이상의 정상 호출 모델들 및 하나 이상의 악성 호출 모델들에 관한 정보를 저장할 수 있다. 정상 호출 모델들 각각은 컴퓨팅 장치(예컨대, 사용자 장치)에서 정상 코드가 실행될 때 발생하는 시스템 호출들에 기초하여 생성될 수 있다. 예로서, 악성 코드에 감염되지 않은 어플리케이션의 실행에 의해 발생하는 시스템 호출들에 기초하여 정상 호출 모델이 생성될 수 있다. 반면, 악성 호출 모델들 각각은 컴퓨팅 장치에서 악성 코드가 실행될 때 발생하는 시스템 호출들에 기초하여 생성될 수 있다.
실시 예로서, 이벤트 후커(217)가 동작하기 전에, 악성 코드에 감염되지 않은 제 1 어플리케이션이 미리 실행될 수 있다. 제 1 어플리케이션의 실행에 의해 "(10/1)(11/1)"의 특성에 대응하는 시스템 호출들이 발생한 경우, "(10/1)(11/1)"의 특성에 기초하여 제 1 어플리케이션에 대응하는 정상 호출 모델이 생성될 수 있다. 악성 코드에 감염되지 않은 제 1 어플리케이션에 대응하는 정상 호출 모델은 악성 코드에 감염되지 않은 제 2 어플리케이션에 대응하는 정상 호출 모델과 다를 수 있다. 따라서, 정상 호출 모델들에 기초하여, 제 1 어플리케이션이 제 2 어플리케이션과 구별될 수 있다.
유사하게, 이벤트 후커(217)가 동작하기 전에, 제 1 악성 코드가 미리 실행될 수 있다. 제 1 악성 코드의 실행에 따라 "(10/1)(31/1)"의 특성에 대응하는 시스템 호출들이 발생한 경우, "(10/1)(31/1)"의 특성에 기초하여 제 1 악성 코드에 대응하는 악성 호출 모델이 생성될 수 있다. 제 1 악성 코드에 대응하는 악성 호출 모델은 제 2 악성 코드에 대응하는 악성 호출 모델과 다를 수 있다. 나아가, 악성 호출 모델은 정상 호출 모델과 다를 수 있다. 따라서, 정상 호출 모델들 및 악성 호출 모델들에 기초하여, 악성 코드가 탐지될 수 있다.
위 예에서, "이벤트 후커(217)가 동작하기 전"은 악성 코드 검출 시스템(100)의 학습 과정(Learning Proces)을 의미할 수 있다. 악성 코드 검출 시스템(100)은 이벤트 후커(217)의 동작에 따라 악성 코드를 검출하기 전에, 학습 과정을 통해 정상 호출 모델들 및 악성 호출 모델들을 미리 학습할 수 있다. 악성 코드 검출 시스템(100)의 학습 과정은 도 8a에 대한 참조와 함께 더 설명된다.
정상 호출 모델 또는 악성 호출 모델에 대응하는 특성은 시스템 호출이 속하는 분류, 시스템 호출들의 발생 순서, 시스템 호출의 호출 횟수 등과 같은 정보를 나타낼 수 있다. 따라서, 정상 호출 모델 또는 악성 호출 모델에 대응하는 특성에 기초하여, 어플리케이션 또는 악성 코드의 특성이 식별될 수 있다. 이하, "(10/1)(11/1)", "(10/1)(31/1)"과 같은 고유한 특성을 "특성 체인(Feature Chain)"으로 부르기로 한다.
위에서, 정상 호출 모델 또는 악성 호출 모델이 시스템 호출들의 특성에 기초하여 생성되는 것으로 설명되었다. 그러나, 정상 호출 모델 또는 악성 호출 모델은 단순히 시스템 호출들의 특성 그 자체뿐만 아니라, 시스템 호출에 의해 접근되는 메모리의 위치, 시스템 호출에 의해 접근되는 시스템 파일의 종류, 시스템 호출에 의해 접근되는 레지스트리의 종류, 시스템 호출에 의해 접근되는 네트워크의 특성, 시스템 호출에 의해 동작하는 서비스의 유형, 시스템 호출들의 특성을 해석함으로써 부여된 의미 등과 같은 다른 요인을 더 참조하여 생성될 수 있다. 위 예는 본 발명의 이해를 돕고 설명의 편의를 위해 제공된 것이고, 본 발명을 제한하기 위한 것은 아니다.
코드 탐지기(150)는 어플리케이션 특성 추출기(130)에 의해 추출된 특성 및 모델 정보 스토리지(140)에 저장된 정상 호출 모델들 및 악성 호출 모델들을 참조할 수 있다. 예로서, 코드 탐지기(150)는 정상 호출 모델들 및 악성 호출 모델들 중 적어도 하나와 추출된 특성을 비교할 수 있다.
코드 탐지기(150)는 비교 결과에 기초하여 어플리케이션의 실행 코드가 악성인지 여부를 탐지할 수 있다. 예로서, 코드 탐지기(150)는 비교 결과에 기초하여 어플리케이션의 실행 코드가 악성 코드, 변종 악성 코드, 및 의심(Suspicious) 코드 중 적어도 하나를 포함하는지 여부를 탐지할 수 있다. 코드 탐지기(150)는 탐지 결과(DR)를 생성할 수 있다.
예로서, 추출된 특성이 악성 코드에 감염되지 않은 제 1 어플리케이션에 대응하는 정상 호출 모델과 동일하거나 유사한 경우, 어플리케이션의 실행 코드는 정상인 것으로 판별될 수 있다. 반면, 추출된 특성이 제 1 악성 코드에 대응하는 악성 호출 모델과 동일하거나 유사한 경우, 어플리케이션의 실행 코드는 악성인 것으로 판별될 수 있다. 악성 코드의 탐지는 도 8b 내지 도 10에 대한 참조와 함께 더 자세히 설명된다.
도 5는 도 4의 악성 코드 탐지 시스템을 이용하여 악성 코드를 탐지하는 과정을 설명하기 위한 개념도이다. 도 5에는, 도 4의 악성 코드 탐지 시스템(100)에 포함되는 어플리케이션 특성 추출기(130), 모델 정보 스토리지(140), 및 코드 탐지기(150)만이 나타나 있다. 그러나, 도 5에 나타낸 구성은 설명의 편의를 위한 것이고, 본 발명을 제한하기 위한 것은 아니다. 위에서 언급된 것과 같이, 악성 코드 탐지 시스템(100)은 도 5에 나타내지 않은 다른 구성 요소들을 더 포함할 수 있다.
어플리케이션 특성 추출기(130)는 탐지 대상 호출 패턴의 데이터를 제공받을 수 있다. 탐지 대상 호출 패턴의 데이터는 컴퓨팅 장치(예컨대, 사용자 장치)에서 대상 어플리케이션이 실행될 때 발생하는 시스템 호출들에 관한 이벤트 로그에 기초하여 생성될 수 있다. 어플리케이션 특성 추출기(130)는 대상 어플리케이션의 실행 코드가 악성인지 여부를 탐지하기 위해 그 대상 어플리케이션에 의해 발생한 탐지 대상 호출 패턴의 데이터를 제공받을 수 있다.
어플리케이션 특성 추출기(130)는 도 4의 분류 정보 스토리지(110)에 저장된 분류 정보(예컨대, 도 3의 표에 대응하는 정보)를 참조하여 탐지 대상 호출 패턴에 포함되는 시스템 호출들(즉, 대상 어플리케이션이 실행될 때 발생하고 도 2의 이벤트 후커(217)에 의해 후킹된 시스템 호출들)에 관한 특성을 추출할 수 있다. 예로서, 어플리케이션 특성 추출기(130)는 "(10/1)(11/1)(31/1)(29/1)(31/1)(15/5)"의 특성을 추출할 수 있다. 이 추출된 특성은 10번째 시스템 호출이 1번 발생하고, 11번째 시스템 호출이 1번 발생하고, 31번째 시스템 호출이 1번 발생하고, 29번째 시스템 호출이 1번 발생하고, 31번째 시스템 호출이 다시 1번 발생하고, 15번째 시스템 호출이 5번 발생하였음을 의미할 수 있다.
코드 탐지기(150)는 모델 정보 스토리지(140)에 저장된 정상 호출 모델들 및 악성 호출 모델들 중 적어도 하나와 어플리케이션 특성 추출기(130)에 의해 추출된 특성을 비교할 수 있다. 예로서, 코드 탐지기(150)는 모델 정보 스토리지(140)에 저장된 특성 체인 "(10/1)(11/1)(31/1)(29/1)(30/1)(31/1)(15/5)(18/1)"과 어플리케이션 특성 추출기(130)에 의해 추출된 "(10/1)(11/1)(31/1)(29/1)(31/1)(15/5)"의 특성을 비교할 수 있다.
본 발명의 실시 예에서, 유사도 판별을 위한 기준 값이 설정될 수 있다. 예로서, 기준 값이 80%인 경우, 저장된 특성 체인과 추출된 특성 사이의 유사도가 80% 이상인지 여부가 판별될 수 있다. 유사도가 80% 이상인 경우, 추출된 특성이 저장된 특성 체인과 유사한 것으로 판별될 수 있다.
코드 탐지기(150)는 비교 결과에 기초하여 대상 어플리케이션의 실행 코드가 악성인지 여부를 탐지할 수 있다. 추출된 특성과 비교된 특성 체인이 정상 호출 모델에 대응하는 경우, 대상 어플리케이션의 실행 코드는 정상인 것으로 판별될 수 있다. 반면, 추출된 특성과 비교된 특성 체인이 악성 호출 모델에 대응하는 경우, 대상 어플리케이션의 실행 코드는 악성인 것으로 판별될 수 있다. 코드 탐지기(150)는 판별 결과에 대응하는 탐지 결과(DR)를 생성할 수 있다.
유사도 판별을 위한 기준 값은 필요에 따라 다양하게 선택될 수 있다. 몇몇 실시 예에서, 여러 개의 기준 값이 이용될 수 있다. 본 발명의 실시 예에 따른 비교 및 판단의 처리들은 도 8b 내지 도 10에 대한 참조와 함께 더 자세히 설명된다.
도 6은 도 1의 전자 시스템에 포함되는 악성 코드 탐지 시스템을 보여주는 블록도이다. 실시 예로서, 도 1의 전자 시스템(1000)에 포함되는 악성 코드 탐지 시스템(100)은 도 6의 악성 코드 탐지 시스템(100a)을 포함할 수 있다. 실시 예로서, 악성 코드 탐지 시스템(100a)은 분류 정보 스토리지(110), 데이터 수신기(120), 어플리케이션 특성 추출기(130), 모델 정보 스토리지(140), 코드 탐지기(150), 및 모델 생성기(160)를 포함할 수 있다.
어플리케이션 특성 추출기(130)는 컴퓨팅 장치(예컨대, 사용자 장치)에서 어플리케이션이 실행될 때 발생한 시스템 호출들의 특성을 추출할 수 있다. 이를 위해, 어플리케이션 특성 추출기(130)는 분류 정보 스토리지(110)에 저장된 분류 정보 및 데이터 수신기(120)를 통해 제공받은 탐지 대상 호출 패턴의 데이터(DAT)를 참조할 수 있다.
코드 탐지기(150)는 컴퓨팅 장치에서 실행된 어플리케이션의 실행 코드가 악성인지 여부를 탐지할 수 있다. 이를 위해, 코드 탐지기(150)는 어플리케이션 특성 추출기(130)에 의해 추출된 특성 및 모델 정보 스토리지(140)에 저장된 특성 체인들을 참조할 수 있다.
도 6의 분류 정보 스토리지(110), 데이터 수신기(120), 어플리케이션 특성 추출기(130), 모델 정보 스토리지(140), 및 코드 탐지기(150)의 구성들 및 기능들은 각각 도 4의 분류 정보 스토리지(110), 데이터 수신기(120), 어플리케이션 특성 추출기(130), 모델 정보 스토리지(140), 및 코드 탐지기(150)의 구성들 및 기능들을 포함할 수 있다. 분류 정보 스토리지(110), 데이터 수신기(120), 어플리케이션 특성 추출기(130), 모델 정보 스토리지(140), 및 코드 탐지기(150)에 관한 중복되는 설명들은 설명의 편의를 위해 이하 생략된다.
실시 예로서, 탐지 대상 호출 패턴의 데이터(DAT)가 제공되기 전에, 컴퓨팅 장치(예컨대, 사용자 장치)는 정상 코드 및 악성 코드를 미리 실행할 수 있다. 모델 생성기(160)는 미리 실행된 정상 코드 및 악성 코드에 의해 발생한 시스템 호출들에 관한 정보를 수집할 수 있다. 모델 생성기(160)는 분류 정보 스토리지(110)에 저장된 분류 정보 및 미리 수집된 정보에 기초하여 하나 이상의 정상 호출 모델들 및 하나 이상의 악성 호출 모델들을 생성할 수 있다. 모델 생성기(160)에 의해 미리 생성된 정상 호출 모델들 및 악성 호출 모델들은 탐지 대상 호출 패턴을 발생시킨 어플리케이션의 실행 코드가 악성인지 여부를 탐지하기 위해 이용될 수 있다.
위 실시 예에서, "탐지 대상 호출 패턴의 데이터(DAT)가 제공되기 전"은 악성 코드 검출 시스템(100a)의 학습 과정을 의미할 수 있다. 악성 코드 검출 시스템(100)은 탐지 대상 호출 패턴의 데이터(DAT)를 검사하기 전에, 학습 과정을 통해 정상 호출 모델들 및 악성 호출 모델들을 미리 학습할 수 있다. 악성 코드 검출 시스템(100a)의 학습 과정은 도 8a에 대한 참조와 함께 더 설명된다.
실시 예로서, 모델 생성기(160)는 정상 호출 모델들 및 악성 호출 모델들을 갱신할 수 있다. 예로서, 어플리케이션의 버전이 갱신되는 경우, 그 어플리케이션의 실행 코드가 변경되고 그 어플리케이션에 의해 발생하는 시스템 호출들의 특성이 변경될 수 있다. 이 경우, 그 어플리케이션에 대응하는 정상 호출 모델은 갱신될 필요가 있다. 모델 생성기(160)는 어플리케이션 특성 추출기(130)에 의해 추출된 특성 및 코드 탐지기(150)의 탐지 결과(DR)에 기초하여 정상 호출 모델들 및 악성 호출 모델들 중 적어도 하나를 갱신할 수 있다.
위에서 언급된 것과 같이, 악성 코드 검출 시스템(100a)은 학습 과정을 통해 정상 호출 모델들 및 악성 호출 모델들을 미리 학습할 수 있다. 나아가, 악성 코드 검출 시스템(100a)은 학습된 정상 호출 모델들 및 학습된 악성 호출 모델들을 갱신할 수 있다. 즉, 악성 코드 검출 시스템(100a)은 탐지 결과(DR)에 기초하여 반복적인 학습을 수행할 수 있다. 반복되는 학습을 통해, 가장 적절한 특성 체인을 갖는 정상 호출 모델 또는 악성 호출 모델이 생성될 수 있다.
위에서 언급된 것과 같이, 정상 호출 모델들 각각은 정상 코드가 실행될 때 발생하는 시스템 호출들의 특성에 기초하여 생성될 수 있다. 예로서, 정상 호출 모델은 시스템 호출들이 속하는 분류들, 시스템 호출들의 발생 순서, 시스템 호출들 각각의 호출 횟수 중 적어도 하나에 기초하여 생성될 수 있다. 나아가, 정상 호출 모델은 정상 코드가 실행될 때 접근되는 메모리의 위치, 정상 코드가 실행될 때 접근되는 시스템 파일의 종류, 정상 코드가 실행될 때 접근되는 레지스트리의 종류, 정상 코드가 실행될 때 접근되는 네트워크의 특성, 및 정상 코드가 실행될 때 동작하는 서비스의 유형 중 적어도 하나에 기초하여 생성될 수 있다.
그리고, 악성 호출 모델들 각각은 악성 코드가 실행될 때 발생하는 시스템 호출들의 특성에 기초하여 생성될 수 있다. 예로서, 악성 호출 모델은 시스템 호출들이 속하는 분류들, 시스템 호출들의 발생 순서, 시스템 호출들 각각의 호출 횟수 중 적어도 하나에 기초하여 생성될 수 있다. 나아가, 악성 호출 모델은 악성 코드가 실행될 때 접근되는 메모리의 위치, 악성 코드가 실행될 때 접근되는 시스템 파일의 종류, 악성 코드가 실행될 때 접근되는 레지스트리의 종류, 악성 코드가 실행될 때 접근되는 네트워크의 특성, 및 악성 코드가 실행될 때 동작하는 서비스의 유형 중 적어도 하나에 기초하여 생성될 수 있다.
다만, 위에서 언급된 예시들 및 실시 예들은 본 발명의 이해를 돕기 위해 제공된 것이다. 본 발명은 위에서 언급된 예시들 및 실시 예들에 의해 제한되지 않는다. 본 발명은 필요에 따라 다양한 형태로 구현될 수 있다.
도 7은 도 1의 전자 시스템에 포함되는 악성 코드 탐지 시스템을 보여주는 블록도이다. 실시 예로서, 도 1의 전자 시스템(1000)에 포함되는 악성 코드 탐지 시스템(100)은 도 7의 악성 코드 탐지 시스템(100b)을 포함할 수 있다. 실시 예로서, 악성 코드 탐지 시스템(100b)은 분류 정보 스토리지(110), 데이터 수신기(120), 어플리케이션 특성 추출기(130), 모델 정보 스토리지(140), 코드 탐지기(150), 탐지 결과 처리기(170), 및 데이터베이스(175)를 포함할 수 있다.
어플리케이션 특성 추출기(130)는 컴퓨팅 장치(예컨대, 사용자 장치)에서 어플리케이션이 실행될 때 발생한 시스템 호출들의 특성을 추출할 수 있다. 이를 위해, 어플리케이션 특성 추출기(130)는 분류 정보 스토리지(110)에 저장된 분류 정보 및 데이터 수신기(120)를 통해 제공받은 탐지 대상 호출 패턴의 데이터(DAT)를 참조할 수 있다.
코드 탐지기(150)는 컴퓨팅 장치에서 실행된 어플리케이션의 실행 코드가 악성인지 여부를 탐지할 수 있다. 이를 위해, 코드 탐지기(150)는 어플리케이션 특성 추출기(130)에 의해 추출된 특성 및 모델 정보 스토리지(140)에 저장된 특성 체인들을 참조할 수 있다.
도 7의 분류 정보 스토리지(110), 데이터 수신기(120), 어플리케이션 특성 추출기(130), 모델 정보 스토리지(140), 및 코드 탐지기(150)의 구성들 및 기능들은 각각 도 4의 분류 정보 스토리지(110), 데이터 수신기(120), 어플리케이션 특성 추출기(130), 모델 정보 스토리지(140), 및 코드 탐지기(150)의 구성들 및 기능들을 포함할 수 있다. 분류 정보 스토리지(110), 데이터 수신기(120), 어플리케이션 특성 추출기(130), 모델 정보 스토리지(140), 및 코드 탐지기(150)에 관한 중복되는 설명들은 설명의 편의를 위해 이하 생략된다.
실시 예로서, 탐지 결과 처리기(170)는 코드 탐지기(150)의 탐지 결과를 제공받을 수 있다. 탐지 결과 처리기(170)는 탐지 결과에 대응하는 정보를 데이터베이스(175)에 저장할 수 있다. 특히, 탐지 결과 처리기(170)는 컴퓨팅 장치(예컨대, 사용자 장치)에서 실행된 어플리케이션의 실행 코드에 포함되는 악성 코드, 변종 악성 코드, 및 의심 코드 중 적어도 하나에 관한 정보를 데이터베이스(175)에 저장할 수 있다.
예로서, 데이터베이스(175)는 악성 코드의 특성 체인, 악성 코드를 포함하는 어플리케이션의 종류, 악성 코드에 의해 실행되는 연산들 등과 같은 다양한 정보를 저장할 수 있다. 데이터베이스(175)에 저장된 정보는 악성 코드를 탐지하고 악성 코드의 공격에 대비하기 위해 이용될 수 있다. 예로서, 데이터베이스(175)에 저장된 정보에 기초하여, 전자 시스템(1000)은 동작 정책을 관리할 수 있고, 악성 코드의 공격을 방어하기 위한 방어 절차를 수행할 수 있다.
도 8a 및 도 8b는 본 발명의 실시 예에 따른 악성 코드 탐지 시스템의 동작을 설명하는 흐름도이다. 예로서, 본 발명의 실시 예에 따른 악성 코드 탐지 시스템은 도 8a에 설명된 방법에 따라 정상 호출 모델들 및 악성 호출 모델들에 관한 학습을 수행할 수 있다. 나아가, 본 발명의 실시 예에 따른 악성 코드 탐지 시스템은 도 8b에 설명된 방법에 따라 악성 코드를 탐지할 수 있다. 본 발명의 이해를 돕기 위해, 도 8a 및 도 8b가 함께 참조된다.
S1100 단계에서, 정상 호출 패턴 정보 및 악성 호출 패턴 정보가 수집될 수 있다. 정상 호출 패턴 정보는 컴퓨팅 장치(예컨대, 사용자 장치)에서 정상 코드가 실행될 때 발생하는 시스템 호출들에 관한 정보이다. 악성 호출 패턴 정보는 컴퓨팅 장치에서 악성 코드가 실행될 때 발생하는 시스템 호출들에 관한 정보이다. 예로서, 도 6의 모델 생성기(160)는 정상 호출 패턴 정보 및 악성 호출 패턴 정보를 미리 수집할 수 있다. 예로서, 도 6의 모델 생성기(160)는 정보를 수집하기 위해 도 2의 이벤트 후커(217)를 동작시킬 수 있으나, 본 발명은 이 예에 의해 제한되지 않는다.
S1200 단계에서, 하나 이상의 정상 호출 모델들 및 하나 이상의 악성 호출 모델들이 생성될 수 있다. 정상 호출 모델들은 S1100 단계에서 수집된 정상 호출 패턴 정보에 기초하여 생성될 수 있다. 정상 호출 모델은 악성 코드에 감염되지 않은 어플리케이션의 특성 체인을 포함할 수 있다. 악성 호출 모델들은 S1100 단계에서 수집된 악성 호출 패턴 정보에 기초하여 생성될 수 있다. 악성 호출 모델은 악성 코드의 특성 체인을 포함할 수 있다. 예로서, 도 6의 모델 생성기(160)는 S1100 단계에서 수집된 정보에 기초하여 정상 호출 모델들 및 악성 호출 모델들을 미리 생성할 수 있다.
본 발명의 실시 예에 따른 악성 코드 탐지 시스템은 S1100 및 S1200 단계들을 통해 학습을 수행할 수 있다. S1100 및 S1200 단계들은 반복적으로 수행될 수 있다. 이로써, 본 발명의 실시 예에 따른 악성 코드 탐지 시스템은 하나 이상의 정상 호출 모델들 및 하나 이상의 악성 호출 모델들을 생성 및 수집할 수 있다. 본 발명의 실시 예에 따른 악성 코드 탐지 시스템은 학습 결과에 기초하여 도 8b에 설명된 방법에 따라 악성 코드를 탐지할 수 있다.
S1300 단계에서, 탐지 대상 호출 패턴의 데이터가 제공될 수 있다. 위에서 언급된 것과 같이, 탐지 대상 호출 패턴은 하나 이상의 사용자 장치들에서 실행된 어플리케이션에 의해 발생한 시스템 호출들을 포함할 수 있다. 예로서, 어플리케이션에 의해 발생한 시스템 호출들은 도 2의 이벤트 후커(217)에 의해 후킹될 수 있다. 예로서, 도 4의 어플리케이션 특성 추출기(130)는 도 4의 데이터 수신기(120)를 통해 탐지 대상 호출 패턴의 데이터를 제공받을 수 있다. 탐지 대상 호출 패턴은 어플리케이션의 실행 코드가 악성인지 여부를 탐지하기 위해 참조될 수 있다.
S1400 단계에서, 탐지 대상 호출 패턴에 포함되는 시스템 호출들에 관한 특성이 추출될 수 있다. 예로서, 도 4의 어플리케이션 특성 추출기(130)는 분류 정보를 참조하여 탐지 대상 호출 패턴에 포함되는 시스템 호출들에 관한 특성을 추출할 수 있다. 위에서 언급된 것과 같이, 분류 정보는 컴퓨팅 장치에서 발생하는 시스템 호출들 각각이 속하는 분류에 관한 정보이다.
S1500 단계에서, 어플리케이션의 실행 코드가 악성인지 여부가 탐지될 수 있다. 예로서, 도 4의 코드 탐지기(150)는 S1200 단계에서 생성된 정상 호출 모델들 및 악성 호출 모델들 중 적어도 하나와 S1400 단계에서 추출된 특성을 비교할 수 있다. 코드 탐지기(150)는 비교 결과에 기초하여 어플리케이션의 실행 코드가 악성인지 여부를 탐지할 수 있다. S1500 단계는 도 9에 대한 참조와 함께 더 자세히 설명된다.
도 9는 도 8b의 악성 코드를 탐지하는 단계를 더 자세히 설명하는 흐름도이다. 실시 예로서, 도 8b의 S1500 단계는 도 9의 S1510 내지 S1580 단계들을 포함할 수 있다. 예로서, S1500 단계는 도 4의 코드 탐지기(150)에 의해 처리될 수 있다.
S1510 단계에서, 도 8b의 S1400 단계에서 추출된 특성은 도 8a의 S1200 단계에서 생성된 하나 이상의 정상 호출 모델들 중 적어도 하나와 비교될 수 있다. 예로서, 코드 탐지기(150)는 어플리케이션의 실행 코드가 정상인지 여부를 판별하기 위해 정상 호출 모델들 중 적어도 하나와 도 4의 어플리케이션 특성 추출기(130)에 의해 추출된 특성을 비교할 수 있다.
S1520 단계에서, 추출된 특성과 정상 호출 모델들 사이의 유사도가 판별될 수 있다. 예로서, 정상 호출 모델들 중에서 추출된 특성과 비교된 대상 정상 호출 모델과 추출된 특성 사이의 유사도가 제 1 기준 값 이상인 경우, 유사도가 높은 것으로 판별될 수 있다. 유사도가 높은 것으로 판별된 경우, S1530 단계가 수행될 수 있다. 반면, 유사도가 제 1 기준 값보다 작은 경우, 유사도가 낮은 것으로 판별될 수 있다. 유사도가 낮은 것으로 판별된 경우, S1540 단계가 수행될 수 있다.
S1530 단계에서, 어플리케이션의 실행 코드가 정상인 것으로 판별될 수 있다. 추출된 특성과 대상 정상 호출 모델 사이의 유사도가 제 1 기준 값 이상인 경우, 코드 탐지기(150)는 어플리케이션의 실행 코드가 정상인 것으로 판별할 수 있다.
실시 예로서, 어플리케이션의 실행 코드가 정상인 경우, S1535 단계가 수행될 수 있다. S1535 단계에서, 대상 정상 호출 모델이 갱신될 수 있다. 예로서, 어플리케이션의 버전이 갱신되는 경우, 어플리케이션의 실행 코드가 변경되고 어플리케이션에 의해 발생하는 시스템 호출들의 특성이 변경될 수 있다. 이 경우, 어플리케이션에 대응하는 정상 호출 모델(즉, 대상 정상 호출 모델)이 갱신될 필요가 있다. 예로서, 추출된 특성과 대상 정상 호출 모델 사이의 차이가 제 2 기준 값 이상인 경우, 도 6의 모델 생성기(160)는 추출된 특성을 참조하여 대상 정상 호출 모델을 갱신할 수 있다. 반복되는 학습을 통해, 가장 적절한 특성 체인을 갖는 대상 정상 호출 모델이 생성될 수 있다.
S1540 단계에서, 추출된 특성은 도 8a의 S1200 단계에서 생성된 하나 이상의 악성 호출 모델들 중 적어도 하나와 비교될 수 있다. 예로서, 코드 탐지기(150)는 어플리케이션의 실행 코드가 악성인지 여부를 판별하기 위해 악성 호출 모델들 중 적어도 하나와 추출된 특성을 비교할 수 있다.
S1550 단계에서, 추출된 특성과 악성 호출 모델들 사이의 유사도가 판별될 수 있다. 예로서, 악성 호출 모델들 중 적어도 하나와 추출된 특성 사이의 유사도가 제 3 기준 값 이상인 경우, 유사도가 높은 것으로 판별될 수 있다. 유사도가 높은 것으로 판별된 경우, S1560 단계가 수행될 수 있다. 나아가, 유사도가 제 3 기준 값보다 작고 제 4 기준 값 이상인 경우, 유사도가 중상(Mid-high)인 것으로 판별될 수 있다. 유사도가 중상인 것으로 판별된 경우, S1570 단계가 수행될 수 있다. 반면, 유사도가 제 4 기준 값보다 작은 경우, 유사도가 낮은 것으로 판별될 수 있다. 유사도가 낮은 것으로 판별된 경우, S1580 단계가 수행될 수 있다.
S1560 단계에서, 어플리케이션의 실행 코드가 악성 코드를 포함하는 것으로 판별될 수 있다. 악성 호출 모델들 중 적어도 하나와 추출된 특성 사이의 유사도가 제 3 기준 값 이상인 경우, 코드 탐지기(150)는 어플리케이션의 실행 코드가 악성 코드를 포함함을 판별할 수 있다.
S1570 단계에서, 어플리케이션의 실행 코드가 변종 악성 코드를 포함하는 것으로 판별될 수 있다. 악성 호출 모델들 중 적어도 하나와 추출된 특성 사이의 유사도가 제 3 기준 값보다 작고 제 4 기준 값 이상인 경우, 코드 탐지기(150)는 어플리케이션의 실행 코드가 변종 악성 코드를 포함함을 판별할 수 있다.
S1580 단계에서, 어플리케이션의 실행 코드가 의심 코드를 포함하는 것으로 판별될 수 있다. 악성 호출 모델들 각각과 추출된 특성 사이의 유사도가 제 4 기준 값보다 작은 경우, 어플리케이션의 실행 코드는 의심 코드로서 관리될 수 있다. S1580 단계는 도 10에 대한 참조와 함께 더 자세히 설명된다.
실시 예로서, 도 7의 데이터베이스(175)는 악성 코드의 특성 체인, 악성 코드를 포함하는 어플리케이션의 종류, 악성 코드에 의해 실행되는 연산들 등과 같은 다양한 정보를 저장할 수 있다. 나아가, 데이터베이스(175)는 탐지된 악성 코드가 알려진 악성 코드인지, 변종 악성 코드인지, 또는 의심 코드인지 여부에 관한 태그(Tag) 정보를 더 저장할 수 있다. 데이터베이스(175)에 저장된 정보는 악성 코드를 탐지하고 악성 코드의 공격에 대비하기 위해 이용될 수 있다.
도 10은 도 9의 의심 코드를 관리하는 단계를 더 자세히 설명하는 흐름도이다. 실시 예로서, 도 9의 S1580 단계는 도 10의 S1581 내지 S1585 단계들을 포함할 수 있다. 예로서, S1580 단계는 도 4의 코드 탐지기(150)에 의해 처리될 수 있다.
도 9에 대한 참조와 함께 설명된 것과 같이, 악성 호출 모델들 각각과 추출된 특성 사이의 유사도가 제 4 기준 값보다 작은 경우, S1580 단계에서 어플리케이션의 실행 코드가 의심 코드로서 관리될 수 있다. 즉, 추출된 특성과 정상 호출 모델 사이의 유사도가 낮고 추출된 특성과 악성 호출 모델 사이의 유사도도 낮은 경우, 어플리케이션의 실행 코드는 의심 코드로서 관리될 수 있다.
S1581 단계에서, 추출된 특성과 정상 호출 모델들 사이의 유사도가 한 번 더 판별될 수 있다. S1581 단계는 도 9의 S1520 단계와 별개로 다시 수행될 수 있다. 또는, S1581 단계는 S1520 단계에서 얻어진 결과를 참조함으로써 수행될 수 있다.
예로서, 정상 호출 모델들 각각과 추출된 특성 사이의 유사도가 제 5 기준 값 이하인 경우, 유사도가 매우 낮은 것으로 판별될 수 있다. 유사도가 매우 낮은 것으로 판별된 경우, S1583 단계가 수행될 수 있다. 반면, 유사도가 제 5 기준 값보다 큰 경우, 유사도가 매우 낮지는 않은 것으로 판별될 수 있다. 유사도가 매우 낮지 않은 것으로 판별된 경우, S1585 단계가 수행될 수 있다.
S1583 단계에서, 새로운 악성 호출 모델이 생성될 수 있다. 추출된 특성과 악성 호출 모델 사이의 유사도가 낮음에도, 추출된 특성과 정상 호출 모델 사이의 유사도가 매우 낮은 경우, 어플리케이션의 실행 코드는 아직 알려지지 않은 새로운 악성 코드를 포함할 수 있다. 따라서, 정상 호출 모델들 각각과 추출된 특성 사이의 유사도가 제 5 기준 값 이하인 경우, 코드 탐지기(150)는 어플리케이션의 실행 코드가 새로운 악성 코드를 포함함을 판별할 수 있다. 나아가, 추출된 특성을 참조하여, 새로운 악성 코드의 특성 체인이 정의될 수 있다. 새로 정의된 특성 체인은 새로운 악성 호출 모델로서 도 4의 모델 정보 스토리지(140)에 저장될 수 있다.
S1585 단계에서, 어플리케이션의 실행 코드가 관심(Interest) 코드로서 저장될 수 있다. 추출된 특성과 악성 호출 모델 사이의 유사도가 낮고 추출된 특성과 정상 호출 모델 사이의 유사도가 매우 낮지는 않은 경우, 어플리케이션의 실행 코드가 악성인지 여부는 확신하기 어렵다. 따라서, 정상 호출 모델들 중 적어도 하나와 추출된 특성 사이의 유사도가 제 5 기준 값보다 큰 경우, 어플리케이션의 실행 코드는 관심 코드로서 저장될 수 있다. 예로서, 도 7의 데이터베이스(175)는 관심 코드를 저장할 수 있다.
저장된 관심 코드는 악성 코드를 탐지하고 악성 코드의 공격에 대비하기 위해 이용될 수 있다. 예로서, 저장된 관심 코드를 포함하는 다른 실행 코드가 탐지된 경우, 그 저장된 관심 코드는 악성일 수 있다. 따라서, 저장된 관심 코드를 포함하는 다른 실행 코드가 탐지된 경우, 그 저장된 관심 코드에 대응하는 새로운 악성 호출 모델이 생성될 수 있다. 새로운 악성 호출 모델은 추출된 특성에 기초하여 새로운 악성 코드의 특성 체인을 정의함으로써 생성될 수 있다.
각각의 개념도에 나타낸 구성은 단지 개념적인 관점에서 이해되어야 한다. 본 발명의 이해를 돕기 위해, 개념도에 나타낸 구성 요소 각각의 형태, 구조, 크기 등은 과장 또는 축소되어 표현되었다. 실제로 구현되는 구성은 각각의 개념도에 나타낸 것과 다른 물리적 형상을 가질 수 있다. 각각의 개념도는 구성 요소의 물리적 형상을 제한하기 위한 것이 아니다.
각각의 블록도에 나타낸 장치 구성은 발명의 이해를 돕기 위한 것이다. 각각의 블록은 기능에 따라 더 작은 단위의 블록들로 형성될 수 있다. 또는, 복수의 블록들은 기능에 따라 더 큰 단위의 블록을 형성할 수 있다. 즉, 본 발명의 기술 사상은 블록도에 도시된 구성에 의해 한정되지 않는다.
이상에서 본 발명에 대한 실시 예를 중심으로 본 발명이 설명되었다. 다만, 본 발명이 속하는 기술 분야의 특성상, 본 발명이 이루고자 하는 목적은 본 발명의 요지를 포함하면서도 위 실시 예들과 다른 형태로 달성될 수 있다. 따라서, 위 실시 예들은 한정적인 것이 아니라 설명적인 측면에서 이해되어야 한다. 즉, 본 발명의 요지를 포함하면서 본 발명과 같은 목적을 달성할 수 있는 기술 사상은 본 발명의 기술 사상에 포함되는 것으로 해석되어야 한다.
따라서, 본 발명의 본질적인 특성을 벗어나지 않는 범위 내에서 수정 또는 변형된 기술 사상은 본 발명이 청구하는 보호 범위에 포함되는 것이다. 또한, 본 발명의 보호 범위는 위 실시 예들로 한정되는 것이 아니다.
100, 100a, 100b : 악성 코드 탐지 시스템
110 : 분류 정보 스토리지 120 : 데이터 수신기
130 : 어플리케이션 특성 추출기 140 : 모델 정보 스토리지
150 : 코드 탐지기 160 : 모델 생성기
170 : 탐지 결과 처리기 175 : 데이터베이스
210, 220, 230 : 컴퓨팅 장치 211 : 프로세서
213 : 메모리 215 : 스토리지
217 : 이벤트 후커 219 : 버스
310 : 유선 네트워크 320 : 무선 네트워크
1000 : 전자 시스템

Claims (17)

  1. 사용자 장치에서 발생하는 시스템 호출들 각각이 속하는 분류에 관한 분류 정보를 저장하도록 구성되는 분류 정보 스토리지;
    각각이 상기 사용자 장치에서 정상 코드가 실행될 때 발생하는 시스템 호출들에 기초하여 생성된 하나 이상의 정상 호출 모델들, 및 각각이 상기 사용자 장치에서 악성 코드가 실행될 때 발생하는 시스템 호출들에 기초하여 생성된 하나 이상의 악성 호출 모델들에 관한 정보를 저장하도록 구성되는 모델 정보 스토리지;
    상기 사용자 장치에서 실행된 어플리케이션에 의해 발생한 시스템 호출들을 포함하는 탐지 대상 호출 패턴의 데이터를 제공받도록 구성되는 데이터 수신기;
    상기 제공받은 데이터 및 상기 분류 정보를 참조하여 상기 탐지 대상 호출 패턴에 포함되는 시스템 호출들에 관한 특성을 추출하도록 구성되는 어플리케이션 특성 추출기; 및
    상기 하나 이상의 정상 호출 모델들 및 상기 하나 이상의 악성 호출 모델들 중 적어도 하나와 상기 추출된 특성을 비교하여 상기 어플리케이션의 실행 코드가 악성인지 여부를 탐지하도록 구성되는 코드 탐지기를 포함하는 전자 시스템.
  2. 제 1 항에 있어서,
    상기 분류 정보는 프로세스, 쓰레드, 메모리, 파일, 레지스트리, 네트워크, 서비스, 및 기타 분류들 중 적어도 하나와 상기 사용자 장치에서 발생하는 시스템 호출들 사이의 대응 관계에 관한 정보를 포함하는 전자 시스템.
  3. 제 1 항에 있어서,
    상기 탐지 대상 호출 패턴의 데이터가 제공되기 전에 미리 상기 분류 정보를 참조하여 상기 하나 이상의 정상 호출 모델들 및 상기 하나 이상의 악성 호출 모델들을 생성하도록 구성되는 모델 생성기를 더 포함하는 전자 시스템.
  4. 제 3 항에 있어서,
    상기 모델 생성기는 상기 추출된 특성 및 상기 코드 탐지기의 탐지 결과에 기초하여 상기 하나 이상의 정상 호출 모델들 및 상기 하나 이상의 악성 호출 모델들 중 적어도 하나를 갱신하도록 더 구성되는 전자 시스템.
  5. 제 1 항에 있어서,
    상기 하나 이상의 정상 호출 모델들 각각은 상기 정상 코드가 실행될 때 발생하는 시스템 호출들 각각의 분류, 및 상기 정상 코드가 실행될 때 접근되는 메모리의 위치, 상기 정상 코드가 실행될 때 접근되는 시스템 파일의 종류, 상기 정상 코드가 실행될 때 접근되는 레지스트리의 종류, 상기 정상 코드가 실행될 때 접근되는 네트워크의 특성, 및 상기 정상 코드가 실행될 때 동작하는 서비스의 유형 중 적어도 하나에 기초하여 생성되고,
    상기 하나 이상의 악성 호출 모델들 각각은 상기 악성 코드가 실행될 때 발생하는 시스템 호출들 각각의 분류, 및 상기 악성 코드가 실행될 때 접근되는 메모리의 위치, 상기 악성 코드가 실행될 때 접근되는 시스템 파일의 종류, 상기 악성 코드가 실행될 때 접근되는 레지스트리의 종류, 상기 악성 코드가 실행될 때 접근되는 네트워크의 특성, 및 상기 악성 코드가 실행될 때 동작하는 서비스의 유형 중 적어도 하나에 기초하여 생성되는 전자 시스템.
  6. 제 1 항에 있어서,
    상기 어플리케이션 특성 추출기는 상기 탐지 대상 호출 패턴에 포함되는 시스템 호출들이 속하는 분류들, 상기 탐지 대상 호출 패턴에 포함되는 시스템 호출들의 발생 순서, 및 상기 탐지 대상 호출 패턴에 포함되는 시스템 호출들 각각의 호출 횟수 중 적어도 하나를 추출하도록 구성되는 전자 시스템.
  7. 각각이 어플리케이션을 실행하도록 구성되고, 상기 어플리케이션이 실행될 때 발생하는 시스템 호출들을 후킹하도록 구성되는 이벤트 후커를 포함하고, 상기 후킹된 시스템 호출들에 관한 이벤트 로그를 생성하도록 구성되는 복수의 컴퓨팅 장치;
    상기 복수의 컴퓨팅 장치에서 발생하는 시스템 호출들 각각이 속하는 분류에 관한 분류 정보를 저장하도록 구성되는 분류 정보 스토리지;
    각각이 상기 복수의 컴퓨팅 장치에서 정상 코드가 실행될 때 발생하는 시스템 호출들에 기초하여 생성된 하나 이상의 정상 호출 모델들, 및 각각이 상기 복수의 컴퓨팅 장치에서 악성 코드가 실행될 때 발생하는 시스템 호출들에 기초하여 생성된 하나 이상의 악성 호출 모델들에 관한 정보를 저장하도록 구성되는 모델 정보 스토리지;
    상기 이벤트 로그 및 상기 분류 정보를 참조하여 상기 후킹된 시스템 호출들에 관한 특성을 추출하도록 구성되는 어플리케이션 특성 추출기; 및
    상기 하나 이상의 정상 호출 모델들 및 상기 하나 이상의 악성 호출 모델들 중 적어도 하나와 상기 추출된 특성을 비교하여 상기 어플리케이션의 실행 코드가 악성 코드, 변종 악성 코드, 및 의심 코드 중 적어도 하나를 포함하는지 여부를 탐지하도록 구성되는 코드 탐지기를 포함하는 전자 시스템.
  8. 제 7 항에 있어서,
    상기 후킹된 시스템 호출들에 관한 특성은 상기 후킹된 시스템 호출들이 속하는 분류들, 상기 후킹된 시스템 호출들의 발생 순서, 및 상기 후킹된 시스템 호출들 각각의 호출 횟수 중 적어도 하나를 포함하는 전자 시스템.
  9. 제 7 항에 있어서,
    상기 코드 탐지기의 탐지 결과에 기초하여 상기 어플리케이션의 실행 코드에 포함되는 상기 악성 코드, 상기 변종 악성 코드, 및 상기 의심 코드 중 적어도 하나에 관한 정보를 데이터베이스에 저장하도록 구성되는 탐지 결과 처리기를 더 포함하는 전자 시스템.
  10. 전자 시스템을 이용하여 악성 코드를 탐지하는 방법에 있어서,
    컴퓨팅 장치에서 정상 코드가 실행될 때 발생하는 시스템 호출들에 관한 정상 호출 패턴 정보, 및 상기 컴퓨팅 장치에서 악성 코드가 실행될 때 발생하는 시스템 호출들에 관한 악성 호출 패턴 정보를 수집하는 단계;
    상기 정상 호출 패턴 정보 및 상기 악성 호출 패턴 정보에 각각 기초하여 하나 이상의 정상 호출 모델들 및 하나 이상의 악성 호출 모델들을 생성하는 단계;
    하나 이상의 사용자 장치들에서 실행된 어플리케이션에 의해 발생한 시스템 호출들을 포함하는 탐지 대상 호출 패턴의 데이터를 제공받는 단계;
    상기 컴퓨팅 장치에서 발생하는 시스템 호출들 각각이 속하는 분류에 관한 분류 정보를 참조하여 상기 탐지 대상 호출 패턴에 포함되는 시스템 호출들에 관한 특성을 추출하는 단계; 및
    상기 하나 이상의 정상 호출 모델들 및 상기 하나 이상의 악성 호출 모델들 중 적어도 하나와 상기 추출된 특성을 비교하여 상기 어플리케이션의 실행 코드가 악성인지 여부를 탐지하는 단계를 포함하는 방법.
  11. 제 10 항에 있어서,
    상기 탐지하는 단계는:
    상기 하나 이상의 정상 호출 모델들 중 적어도 하나와 상기 추출된 특성을 비교하는 단계; 및
    상기 하나 이상의 정상 호출 모델들 중에서 상기 추출된 특성과 비교된 대상 정상 호출 모델과 상기 추출된 특성 사이의 유사도가 제 1 기준 값 이상인 경우, 상기 어플리케이션의 실행 코드가 정상임을 판별하는 단계를 포함하는 방법.
  12. 제 11 항에 있어서,
    상기 대상 정상 호출 모델과 상기 추출된 특성 사이의 유사도가 상기 제 1 기준 값 이상이고 상기 대상 정상 호출 모델과 상기 추출된 특성 사이의 차이가 제 2 기준 값 이상인 경우, 상기 추출된 특성을 참조하여 상기 대상 정상 호출 모델을 갱신하는 단계를 더 포함하는 방법.
  13. 제 11 항에 있어서,
    상기 탐지하는 단계는:
    상기 하나 이상의 정상 호출 모델들 각각과 상기 추출된 특성 사이의 유사도가 상기 제 1 기준 값보다 작은 경우, 상기 하나 이상의 악성 호출 모델들 중 적어도 하나와 상기 추출된 특성을 비교하는 단계; 및
    상기 하나 이상의 악성 호출 모델들 중 적어도 하나와 상기 추출된 특성 사이의 유사도가 제 3 기준 값 이상인 경우, 상기 어플리케이션의 실행 코드가 악성 코드를 포함함을 판별하는 단계를 더 포함하는 방법.
  14. 제 13 항에 있어서,
    상기 탐지하는 단계는:
    상기 하나 이상의 악성 호출 모델들 중 적어도 하나와 상기 추출된 특성 사이의 유사도가 상기 제 3 기준 값보다 작고 제 4 기준 값 이상인 경우, 상기 어플리케이션의 실행 코드가 변종 악성 코드를 포함함을 판별하는 단계를 더 포함하는 방법.
  15. 제 14 항에 있어서,
    상기 탐지하는 단계는:
    상기 하나 이상의 악성 호출 모델들 각각과 상기 추출된 특성 사이의 유사도가 상기 제 4 기준 값보다 작은 경우, 상기 어플리케이션의 실행 코드를 의심 코드로서 관리하는 단계를 더 포함하는 방법.
  16. 제 15 항에 있어서,
    상기 관리하는 단계는:
    상기 하나 이상의 정상 호출 모델들 각각과 상기 추출된 특성 사이의 유사도가 제 5 기준 값 이하인 경우, 상기 어플리케이션의 실행 코드가 새로운 악성 코드를 포함함을 판별하는 단계; 및
    상기 추출된 특성을 참조하여 상기 새로운 악성 코드에 대응하는 새로운 악성 호출 모델을 생성하는 단계를 포함하는 방법.
  17. 제 16 항에 있어서,
    상기 관리하는 단계는:
    상기 하나 이상의 정상 호출 모델들 중 적어도 하나와 상기 추출된 특성 사이의 유사도가 상기 제 5 기준 값보다 큰 경우, 상기 어플리케이션의 실행 코드를 관심 코드로서 저장하는 단계; 및
    상기 관심 코드를 포함하는 다른 실행 코드가 탐지된 경우, 상기 추출된 특성을 참조하여 상기 관심 코드에 대응하는 새로운 악성 호출 모델을 생성하는 단계를 더 포함하는 방법.
KR1020150020976A 2015-02-11 2015-02-11 악성 코드를 탐지하기 위한 전자 시스템 및 방법 KR102045772B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150020976A KR102045772B1 (ko) 2015-02-11 2015-02-11 악성 코드를 탐지하기 위한 전자 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150020976A KR102045772B1 (ko) 2015-02-11 2015-02-11 악성 코드를 탐지하기 위한 전자 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20160099159A true KR20160099159A (ko) 2016-08-22
KR102045772B1 KR102045772B1 (ko) 2019-11-19

Family

ID=56854694

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150020976A KR102045772B1 (ko) 2015-02-11 2015-02-11 악성 코드를 탐지하기 위한 전자 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR102045772B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109002710A (zh) * 2017-06-07 2018-12-14 中国移动通信有限公司研究院 一种检测方法、装置及计算机可读存储介质
WO2019004503A1 (ko) * 2017-06-29 2019-01-03 라인 가부시키가이샤 어플리케이션의 취약점을 탐지하는 방법 및 시스템

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11853421B2 (en) 2020-02-25 2023-12-26 Agency For Defense Development Method and apparatus for analyzing malicious code
KR102344496B1 (ko) 2020-02-28 2021-12-28 국방과학연구소 악성코드의 기능을 분석하는 방법 및 장치
KR102211846B1 (ko) 2020-07-21 2021-02-03 국방과학연구소 랜섬웨어 탐지 시스템 및 그의 동작 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090005933A (ko) * 2007-07-10 2009-01-14 삼성전자주식회사 악성 프로그램을 검사하기 위하여 컴퓨터 프로그램의행동을 모델링하는 방법 및 장치
KR20100085280A (ko) * 2009-01-20 2010-07-29 한남대학교 산학협력단 악성 프로세스 차단 및 실행방지 시스템
KR20120073018A (ko) * 2010-12-24 2012-07-04 한국인터넷진흥원 악성 코드 탐지를 위한 시스템 및 방법
KR20140055762A (ko) * 2012-11-01 2014-05-09 주식회사 윈스 네트워크 세션 행위 패턴 모델링 탐지방법 및 모델링탐지시스템

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090005933A (ko) * 2007-07-10 2009-01-14 삼성전자주식회사 악성 프로그램을 검사하기 위하여 컴퓨터 프로그램의행동을 모델링하는 방법 및 장치
KR20100085280A (ko) * 2009-01-20 2010-07-29 한남대학교 산학협력단 악성 프로세스 차단 및 실행방지 시스템
KR20120073018A (ko) * 2010-12-24 2012-07-04 한국인터넷진흥원 악성 코드 탐지를 위한 시스템 및 방법
KR20140055762A (ko) * 2012-11-01 2014-05-09 주식회사 윈스 네트워크 세션 행위 패턴 모델링 탐지방법 및 모델링탐지시스템

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109002710A (zh) * 2017-06-07 2018-12-14 中国移动通信有限公司研究院 一种检测方法、装置及计算机可读存储介质
CN109002710B (zh) * 2017-06-07 2021-06-22 中国移动通信有限公司研究院 一种检测方法、装置及计算机可读存储介质
WO2019004503A1 (ko) * 2017-06-29 2019-01-03 라인 가부시키가이샤 어플리케이션의 취약점을 탐지하는 방법 및 시스템

Also Published As

Publication number Publication date
KR102045772B1 (ko) 2019-11-19

Similar Documents

Publication Publication Date Title
US9842208B2 (en) Method, apparatus and system for detecting malicious process behavior
US10430586B1 (en) Methods of identifying heap spray attacks using memory anomaly detection
US9158915B1 (en) Systems and methods for analyzing zero-day attacks
US8782791B2 (en) Computer virus detection systems and methods
US10003606B2 (en) Systems and methods for detecting security threats
US20140053267A1 (en) Method for identifying malicious executables
US10216934B2 (en) Inferential exploit attempt detection
KR102045772B1 (ko) 악성 코드를 탐지하기 위한 전자 시스템 및 방법
JP2019079492A (ja) コンボリューションのポピュラリティに基づいて異常なイベントを検出するシステムおよび方法
CN110188538B (zh) 采用沙箱集群检测数据的方法及装置
US20180375884A1 (en) Detecting user behavior activities of interest in a network
US20120151036A1 (en) Identifying stray assets in a computing enviroment and responsively taking resolution actions
KR20160099160A (ko) 명령어 집합의 행위 패턴을 엔-그램 방식으로 모델링하는 방법, 그 방법으로 동작하는 컴퓨팅 장치, 및 그 방법을 컴퓨팅 장치에서 실행하도록 구성되는 기록 매체에 저장된 프로그램
US10735457B2 (en) Intrusion investigation
US9456001B2 (en) Attack notification
CN114297630A (zh) 恶意数据的检测方法、装置、存储介质及处理器
US9646157B1 (en) Systems and methods for identifying repackaged files
US9787699B2 (en) Malware detection
JP2020004127A (ja) コンピュータ資産管理システムおよびコンピュータ資産管理方法
US11763004B1 (en) System and method for bootkit detection
CN109472138B (zh) 一种检测snort规则冲突的方法、装置和存储介质
US20230259617A1 (en) Topology-based event suppression
CN112395600B (zh) 恶意行为的去误报方法、装置及设备
US20240220619A1 (en) Systems and methods for selecting client backup files for maliciousness analysis
CN114021134A (zh) 基于关联程序追踪的程序处理方法及装置、存储介质

Legal Events

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