KR20240019739A - 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 - Google Patents

사이버 위협 정보 처리 장치, 사이버 위협 정보 처리방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 Download PDF

Info

Publication number
KR20240019739A
KR20240019739A KR1020230101427A KR20230101427A KR20240019739A KR 20240019739 A KR20240019739 A KR 20240019739A KR 1020230101427 A KR1020230101427 A KR 1020230101427A KR 20230101427 A KR20230101427 A KR 20230101427A KR 20240019739 A KR20240019739 A KR 20240019739A
Authority
KR
South Korea
Prior art keywords
information
file
data
analysis
cyber threat
Prior art date
Application number
KR1020230101427A
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 주식회사 샌즈랩
Publication of KR20240019739A publication Critical patent/KR20240019739A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Virology (AREA)
  • Biomedical Technology (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Computer And Data Communications (AREA)

Abstract

개시하는 실시 예들은 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체에 관한 것이다. 개시하는 실시 예는, 입력된 파일로부터 사이버 위협 정보와 관련된 데이터를 분석하는 분석 프로파일링(profiling) 기반하여 상기 파일의 특징 정보를 추출하는 단계; 상기 추출한 특징 정보를 인공 지능 모델을 이용해 상기 파일에 관련된 사이버 위협 정보를 얻는 단계; 및 사이버 위협 정보 공유 모델을 기반으로 상기 파일이 통신하는 네트워크 통신 정보, 네트워크의 메타 정보, 또는 네트워크 프로토콜 정보 중 적어도 하나를 포함하는 사이버 위협 정보를 제공하는 단계;를 포함하는 사이버 위협 정보 처리 방법을 제공한다.

Description

사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체{APPARATUS FOR PROCESSING CYBER THREAT INFORMATION, METHOD FOR PROCESSING CYBER THREAT INFORMATION, AND MEDIUM FOR STORING A PROGRAM PROCESSING CYBER THREAT INFORMATION}
개시하는 실시 예들은 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체에 관한 것이다.
신종 또는 변종 등의 악성코드를 중심으로 점차 고도화되고 있는 사이버 보안 위협의 피해가 커지고 있다. 이러한 피해를 조금이라도 줄이고 조기에 대응하기 위해서 다차원의 패턴 구성 및 각종 복합 분석 등을 통해서 대응 기술에 대한 고도화를 병행해 나가고 있다. 그러나, 최근의 사이버 공격은 제어 범위 내에 적절하게 대응되기 보다는 오히려 나날이 위협이 증가하고 있는 추세이다. 이러한 사이버 공격은 기존 ICT (Information and Communication Technology) 기반 시설을 넘어서 우리 삶에 직접적으로 영향을 끼치는 금융, 교통, 환경, 건강 등에 까지 위협을 가하고 있다.
현존하는 대부분의 사이버 보안 위협을 탐지하고 대응하는 기반 기술 중에 하나는 사이버 공격 또는 악성 코드에 대한 패턴을 데이터베이스를 사전에 생성하고 데이터 흐름이 필요한 곳에 적절한 모니터링 기술을 활용한다. 기존의 기술은 모니터링된 패턴과 일치하는 데이터 흐름 또는 코드가 탐지되면 위협을 식별하여 대응하는 방식을 바탕으로 발전되어 왔다. 이와 같은 종래의 기술은 사전에 확보된 패턴과 일치하면 빠르고 정확하게 탐지할 수 있다는 장점이 있지만, 패턴이 확보되지 않거나 우회하는 신종, 변종 위협의 경우 탐지 자체가 불가능하거나 분석하는데 매우 시간이 오래 소요되는 문제점이 있었다.
종래의 기술은 인공지능 분석을 활용하더라도 악성코드 자체를 탐지하고 분석하는 기술을 고도화하는 방법에 초점이 맞춰져 있다. 그러나 근본적으로 사이버 보안 위협을 대응하기 위한 원천적인 기술은 존재하지 않아 이러한 방법만으로 신종 악성코드나 그 악성코드의 변종에 대응하기 힘들며 한계가 있다는 문제점이 있다.
예를 들면 이미 발견된 악성 코드 자체를 탐지하고 분석하는 기술만으로는 그 탐지나 분석 시스템을 속이기 위한 디코이(decoy) 정보나 가짜 정보에 대응하지 못하고 혼선이 발생하는 문제점이 있다.
학습할 데이터가 충분히 있는 대량 생산의 악성코드의 경우는 그 특징 정보를 충분히 확보할 수 있기 때문에 악성 여부 및 악성코드 종류를 구분할 수 있다. 그러나, 상대적으로 수량이 작게 만들어져 정교하게 공격하는 APT (Advanced Persistent Threat) 공격의 경우는 학습 데이터와 일치하지 않는 경우가 많고 타겟팅(targeting)된 공격이 대다수를 이루고 있기 때문에 기존 기술은 고도화하더라도 한계점이 존재한다.
또한 종래에는 악성 코드, 공격 코드 또는 사이버 위협에 대한 설명을 하는 방법과 표현 기법이 분석가의 입장이나 분석 시각에 따라 달랐다. 예를 들면 악성 코드와 공격 행위를 기술하는 방식은 전세계적으로 표준이 되지 않아 같은 사건, 같은 악성코드를 탐지하여도 해당 분야의 전문가의 설명이 달라 혼동이 되는 문제점이 있었다. 심지어 악성코드 탐지 명 또한 통일이 되지 않아 같은 악성 파일임에도 불구하고 어떤 공격이 정확하게 수행되었는지 식별되지 못하거나 다르게 정리되었다. 따라서 식별된 공격 기법을 정규화되고 표준화된 방식으로 설명하지 못하는 문제점이 있었다.
종래의 악성 코드 탐지 및 분석 방법은 악성코드 자체의 탐지를 중시하여 매우 유사한 악성 행위를 수행하는 악성 코드의 경우 생성하는 공격자가 다른 경우 공격자들을 식별하지 못하는 문제점이 있었다.
위와 같은 문제점들과 연결되어 종래의 방식은 이러한 개별적인 케이스 집중된 탐지 방법에 의해 추후 가까운 미래에 어떤 사이버 위협 공격이 있을지 예측하기 어려운 문제점이 있었다.
이하에서 개시하는 실시 예의 목적은, 인공 지능으로 학습된 데이터와 정확하게 일치하지 않는 악성 코드라도 탐지하고 대응할 수 있고 악성 코드의 변종에 대응할 수 있는 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체를 제공하는 것이다.
실시 예의 다른 목적은 악성 코드의 변종이라도 매우 빠른 시간 내에 악성 코드, 공격 기법, 공격자와 공격 예측 방법을 식별할 수 있는 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체를 제공하는 것이다.
실시 예의 다른 목적은 악성코드 탐지 명 등이 통일되지 않거나 사이버 공격 기법이 정확하게 기술되지 못하는 악성 코드의 정보를 정규화되고 표준화된 방식으로 제공할 수 있는 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체를 제공하는 것이다.
실시 예의 다른 목적은 매우 유사한 악성 행위를 수행하는 악성 코드를 생성하는 다른 공격자들을 식별하고 미래에 어떤 사이버 위협 공격이 있을지 예측이 가능한 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체를 제공하는 것이다.
실시 예의 다른 목적은, 실행된 파일의 수행 결과는 동일하지만 수행 과정에 차이에 따라 발생하는 공격 기법 또는 공격 그룹의 차이가 실질적으로 다른 공격 기법이거나 또는 다른 공격 그룹에 의해 행해지는 것인지를 더욱 명확하게 탐지하고 인지할 수 있는 구체적인 예들을 제공하는 것이다.
실시 예의 다른 목적은, 실행 파일이 아닌 비실행 파일인 경우라도 이에 포함된 여러 가지 파일 타입들에 대한 사이버 위협 정보, 공격 기법 및 공격 그룹을 식별할 수 있는 구체적인 예들을 제공하는 것이다.
실시 예의 다른 목적은, 웹페이지(web page)를 모니터링하고 악성 행위나 정보를 포함하는 웹페이지를 식별하고 웹페이지의 구성하는 구성요소가 악성 행위나 정보를 포함하는지 식별할 수 있는 예들을 제공하는 것이다.
실시 예의 다른 목적은, 웹페이지에 포함된 사이버 위협 정보, 공격 기법 및 공격 그룹을 식별할 수 있는 구체적인 예들을 제공하는 것이다.
실시 예의 다른 목적은, 사용자가 사이버 위협 정보를 정보 공유 모델로부터 쉽게 이해하고 잘 대응할 수 있는 실시예들을 제공하는 것이다.
개시하는 실시 예는, 입력된 파일로부터 사이버 위협 정보와 관련된 데이터를 분석하는 분석 프로파일링(profiling) 기반하여 상기 파일의 특징 정보를 추출하는 단계; 상기 추출한 특징 정보를 인공 지능 모델을 이용해 상기 파일에 관련된 사이버 위협 정보를 얻는 단계; 및 사이버 위협 정보 공유 모델을 기반으로 상기 파일이 통신하는 네트워크 통신 정보, 네트워크의 메타 정보, 또는 네트워크 프로토콜 정보 중 적어도 하나를 포함하는 사이버 위협 정보를 제공하는 단계;를 포함하는 사이버 위협 정보 처리 방법을 제공한다.
상기 사이버 위협 정보 공유 모델은, 상기 파일에 관련된 맬웨어를 분석한 분석 방법 또는 상기 분석 프로파일링에 대한 정보를 제공할 수 있다.
상기 사이버 위협 정보 공유 모델은, 상기 파일과 관련된 관측 데이터 중 적어도 하나의 네트워크 정보와 상기 네트워크 정보를 각각 기술하는 노트(note) 정보를 하나의 번들에 포함시켜 제공할 수 있다.
다른 관점에서 일 실시 예는, 데이터를 저장하는 데이터베이스; 및 프로세서;를 포함하고, 상기 프로세서는, 입력된 파일로부터 사이버 위협 정보와 관련된 데이터를 분석하는 분석 프로파일링(profiling) 기반하여 상기 파일의 특징 정보를 추출하고; 상기 추출한 특징 정보를 인공 지능 모델을 이용해 상기 파일에 관련된 사이버 위협 정보를 얻고; 및 사이버 위협 정보 공유 모델을 기반으로 상기 파일이 통신하는 네트워크 통신 정보, 네트워크의 메타 정보, 또는 네트워크 프로토콜 정보 중 적어도 하나를 포함하는 사이버 위협 정보를 제공하는; 것을 포함하는 연산들을 수행하는 사이버 위협 정보 처리 장치를 제공한다.
다른 관점에서 일 실시 예는, 입력된 파일로부터 사이버 위협 정보와 관련된 데이터를 분석하는 분석 프로파일링(profiling) 기반하여 상기 파일의 특징 정보를 추출하고; 상기 추출한 특징 정보를 인공 지능 모델을 이용해 상기 파일에 관련된 사이버 위협 정보를 얻고; 및 사이버 위협 정보 공유 모델을 기반으로 상기 파일이 통신하는 네트워크 통신 정보, 네트워크의 메타 정보, 또는 네트워크 프로토콜 정보 중 적어도 하나를 포함하는 사이버 위협 정보를 제공하는; 것을 포함하는 명령어들을 수행하는, 컴퓨터로 실행 가능한 프로그램을 저장하는 저장매체를 제공한다.
이하에서 개시하는 실시예에 따르면 머신 러닝으로 학습된 데이터와 정확하게 일치하지 않는 악성 코드라도 탐지하고 대응할 수 있고 악성 코드의 변종에 대응할 수 있다.
실시예에 따르면 악성 코드의 변종이라도 매우 빠른 시간 내에 악성 코드, 공격 기법 및 공격자를 식별할 수 있고 나아가 추후의 특정 공격자의 공격 기법을 예측할 수 있다.
실시예에 따르면 이러한 악성 코드 여부, 공격 기법, 공격 식별자 및 공격자를 기반으로 사이버 공격 구현 방식을 정확히 식별하고 이를 표준화된 모델로 제공할 수 있다. 실시예에 따르면 악성코드 탐지 명 등이 통일되지 않거나 사이버 공격 기법이 정확하게 기술되지 못하는 악성 코드의 정보를 정규화되고 표준화된 방식으로 제공할 수 있다.
또한 기존에 알려지지 않은 악성 코드를 생성 가능성과 이를 개발할 수 있는 공격자들을 예측하고 미래에 어떤 사이버 위협 공격이 있을지 예측 가능한 수단을 제공할 수 있다.
실시예에 따르면, 실행된 파일의 수행 결과는 동일하더라도 수행 과정에 차이에 따라 발생하는 다른 공격 기법이거나 또는 다른 공격 그룹을 더욱 명확하게 탐지하고 인지할 수 있다.
실시예에 따르면, 실행 파일이 아닌 비실행 파일인 경우라도 이에 포함된 여러 가지 파일 타입들에 대한 사이버 위협 정보, 공격 기법 및 공격 그룹을 식별할 수 있다.
실시예에 따르면, 웹페이지(web page)를 모니터링하고 악성 행위나 정보를 포함하는 웹페이지를 식별할 수 있고 나아가 웹페이지에 포함된 사이버 위협 정보, 공격 기법 및 공격 그룹을 식별할 수 있다.
실시예에 따르면, 예시한 사이버 위협 정보 공유 모델에 기반하여 사용자는 해당 파일과 관련된 사이버 위협 정보를 더욱 잘 이해하고 대처할 수 있다.
도 1은 사이버 위협 정보 처리 방법의 일 실시 예를 예시한 도면
도 2는 사이버 위협 정보 처리 장치의 일 실시 예를 개시한 도면
도 3는 사이버 위협 정보 처리 장치의 일 실시 예를 개시한 도면
도 4는 개시하는 실시 예에 따라 실행파일의 정적 분석을 수행하는 일 예를 나타낸 도면
도 5는 개시하는 실시 예에 따라 실행파일의 동적 분석을 수행하는 일 예를 나타낸 도면
도 6는 심층 분석의 일 예로서 악성 코드를 디스어셈블링하여 악성 행위가 포함된 파일임을 판단하는 예를 개시한 도면
도 7은 개시하는 실시 예에 따라 사이버 위협 정보를 처리하는 흐름을 예시한 도면
도 8은 개시하는 실시 예에 따라 OP-CODE 및 ASM-CODE를 정규화된 코드로 변환한 값을 예시한 도면
도 9는 개시하는 실시 예에 따라 OP-CODE 및 ASM-CODE의 벡터화된 값을 예시한 도면
도 10은 개시하는 실시 예에 따라 코드의 블록 단위를 해쉬 값으로 변환하는 예를 개시한 도면
도 11은 개시하는 실시 예에 따른 앙상블 머신 러닝 모델의 일 예를 나타낸 도면
도 12는 개시하는 실시 예에 따라 머신 러닝으로 데이터를 학습하고 분류하는 흐름을 예시한 도면
도 13은 개시하는 실시 예에 따라 학습 데이터로 공격 식별자와 공격자를 식별하여 라벨링을 수행한 예를 나타낸 도면
도 14는 실시 예에 따라 공격 식별자를 식별한 결과를 나타낸 도면
도 15는 개시하는 실시 예에 따라 바이너리 코드에서 추출된 코드들로 공격 기법을 매칭하는 일 예를 나타낸 도면
도 16은 개시하는 실시 예에 따라 OP-CODE를 포함하는 코드 세트와 공격 기법을 매칭하는 일 예를 나타낸 도면
도 17은 함수 단위의 공격 기법 및 공격 그룹 식별을 수행하는 예를 설명하기 위한 도면
도 18는 함수가 분리될 경우의 공격 기법 및 공격 그룹 식별을 수행하는 예를 설명하기 위한 도면
도 19는 실시 예에 따라 사이버 위협에 관련된 특징 정보를 얻는 예를 개시한 도면
도 20-은 실시 예에 따라 브랜치 인스트럭션(branch instruction) 계열을 이용하여 제어흐름을 얻는 과정을 예시한 도면
도 21은 제 2 예에 따라 예시한 인스트럭션 결합 원칙에 따라 제어블럭의 인스트럭션들을 결합하여 인스트럭션 시퀀스를 생성하는 경우를 예시한 도면
도 22는 제어블럭 내의 인스터력션들을 이용하여 특징 정보를 포함하는 인스트럭션 시퀀스들을 생성하는 다른 예를 설명하기 위한 도면
도 23은 제어블럭 내의 인스터력션들을 이용하여 특징 정보를 포함하는 인스트럭션 시퀀스들을 생성하는 또 다른 예를 설명하기 위한 도면
도 24는 제어블럭 내의 인스터력션들을 이용하여 특징 정보를 포함하는 인스트럭션 시퀀스들을 생성하는 또 다른 예를 설명하기 위한 도면
도 25는 위의 설명한 예들에 따라 인스트럭션 시퀀스를 생성하는 예를 개시한 도면
도 26은 개시한 사이버 위협 정보 처리 장치의 다른 일 실시 예를 예시한 도면
도 27은 개시한 사이버 위협 정보 처리 방법의 다른 일 실시 예를 예시한 도면
도 28은 비실행형 파일 구조와 그 비실행형 파일의 리더 프로그램을 개념적으로 나타낸 도면
도 29는 비실행형 파일의 사이버 위협 정보를 얻을 수 있는 실시 예의 블록도를 개시한 도면
도 30은 파일의 사이버 위협 정보를 얻을 수 있는 예시도 중 파일분석부에 포함되어 파일의 제1 타입의 분석을 실시하는 예를 개시한 도면
도 31은 파일의 사이버 위협 정보를 얻을 수 있는 예시도 중 파일분석부에 포함되어 파일의 제2 타입의 분석을 수행하는 예를 개시한 도면
도 32는 실시 예에 따른 파일에 대한 제2 타입의 분석에 의해 비실행형 파일의 동적 수행에 의해 추출되는 대상과 추출된 정보를 예시한 도면
도 33은 파일의 사이버 위협 정보를 얻을 수 있는 예시도 중 파일분석부에 포함되어 파일에 대한 제3 타입의 분석을 실시하는 예를 개시한 도면
도 34는 실시 예에 따라 제3 분석부가 마일드 동적 분석을 수행할 경우 API 후킹 리스트 정보를 예시한 도면
도 35는 비실행형 파일의 사이버 위협 정보를 얻을 수 있는 실시 예 중 특징처리부를 설명하기 위한 도면
도 36은 개시한 실시 예에 따라 비실행형파일에서 추출된 특징 정보의 중요도를 비교한 예시도
도 37은 개시한 실시 예에 따라 공격기법분류부의 분류 모델을 설명하기 위한 예시도
도 38은 개시한 예에 따라 비실행형파일에 대해 여러 분석 기법을 선택적 결합하여 식별한 공격기법을 예시한 도면
도 39는 개시한 실시 예에 따라 공격그룹분류부의 분류 모델을 설명하기 위한 예시도
도 40은 위에서 설명한 비실행형파일의 리더 프로그램 실행과 시스템콜을 예시한 도면
도 41은 실시 예에 따라 프로그램 코드상 시스템콜을 후킹하는 예를 설명하기 위한 도면
도 42는 실시 예에 따라 동적 분석을 통해 사이버 위협 정보를 추적할 수 있는 예를 개시한 도면
도 43은 개시한 사이버 위협 정보 처리 장치의 다른 일 실시 예를 예시한 도면
도 44는 개시한 사이버 위협 정보 처리 방법의 다른 일 실시 예를 예시한 도면
도 45는 실시 예에서 웹 페이지를 정보를 입력받거나 수집하고 이를 기반으로 악성 정보를 식별하는 예를 개시한 도면
도 46은 실시 예에 따른 웹수집부(Web Crawler)의 동작을 예시한 도면
도 47은 개시한 실시 예의 뎁스 정보에 따라 웹페이지 데이터를 저장하고 관리하는 예를 개시한 도면
도 48은 실시 예에 따라 복수의 단계들 또는 레이어들의 분석에 따라 웹페이지 데이터의 악성 여부를 판단하는 예를 개시한 도면
도 49는 실시 예에 따라 웹페이지 데이터를 분석하고 탐지한 정보를 제공하는 개념을 예시한 도면
도 50은 위에서 개시한 실시 예가 컴퓨터 상에서 동작하는 일 예를 개시한 도면
도 51은 웹페이지에 포함된 사이버 위협 정보를 처리하는 방법의 일 실시 예를 개시한 도면
도 52는 사이버 위협 정보를 처리하는 방법의 일 실시 예를 개시한 도면
도 53은 실시 예에 따른 사이버 위협 정보를 처리하는 방법으로서 HTML 데이터의 태그에 기반한 구조 정보를 예시한 도면
도 54는 실시 예에 따른 사이버 위협 정보를 처리하는 방법으로서 HTML 데이터의 태그에 기반한 구조 정보로부터 사이버 보안 위협에 관련한 특징 정보를 얻는 예를 개시한 도면
도 55는 위에서 예시한 HTML 문서 중에서 HTML 문법을 제외하고 사이버 위협 정보가 포함될 수 있는 부분을 실시 예에 처리하여 변환하는 과정을 예시한 도면
도 56은 실시 예에 따른 사이버 위협 정보 처리 방법의 일 예를 개념적으로 도시한 도면
도 57은 실시 예에 따라 웹페이지의 태그에 포함된 사이버 위협 정보 처리 장치의 일 예를 개시한 도면
도 58은 개시한 실시 예에 따라 분석한 사이버 위협 정보를 사이버 위협 정보 공유 모델로 제공하는 방법의 일 예를 나타낸 도면
도 59는 개시한 실시 예에 따라 분석한 사이버 위협 정보를, 사이버 위협 정보 공유 모델을 이용하여 제공하는 예를 예시한 도면
도 60은 개시한 실시 예에 따라 분석한 사이버 위협 정보를 사이버 위협 정보 공유 모델로 기술한 간단한 예를 나타낸 도면
도 61은 개시한 실시 예에 따라 분석한 사이버 위협 정보 중 파일 속성 또는 분석 정보를 사이버 위협 정보 공유 모델 기반으로 예시한 도면
도 62는 개시한 실시 예에 따라 분석한 사이버 위협 정보 중 데이터에 대한 악성 탐지 정보를 사이버 위협 정보 공유 모델 기반으로 예시한 도면
도 63은 개시한 실시 예에 따라 분석한 사이버 위협 정보 중 데이터의 공격 분석 또는 취약점 정보를 사이버 위협 정보 공유 모델 기반으로 예시한 도면
도 64는 개시한 실시 예에 따라 분석한 사이버 위협 정보 중 네트워크 통신 정보를 사이버 위협 정보 공유 모델 기반으로 예시한 도면
도 65는 개시한 실시 예에 따른 사이버 위협 정보 공유 모델 기반으로 분석한 사이버 위협 정보 중 네트워크 분석 정보를 제공하는 예를 개시한 도면
도 66은 개시한 실시 예에 따라 분석한 사이버 위협 정보를 사이버 위협 정보 공유 모델 기반으로 표시한 예를 나타낸 도면
도 67은 개시한 실시 예에 따라 분석한 사이버 위협 정보를 사이버 위협 정보 공유 모델 기반으로 제공하는 사이버 위협 정보 처리 장치의 일 예를 나타낸 도면
도 68은 개시한 실시 예에 따라 분석한 사이버 위협 정보를 사이버 위협 정보 공유 모델 기반으로 제공하는 일 예를 나타낸 도면
이하에서는 첨부한 도면을 참조하여 실시 예를 예시하여 상세히 기술하도록 한다. 실시 예에서 프레임워크, 모듈, 응용 프로그램 인터페이스 등은 물리 장치 결합된 장치로 구현할 수도 있고 소프트웨어로 구현할 수도 있다.
실시 예가 소프트웨어로 구현될 경우 저장매체에 저장되고 컴퓨터 등에 설치되어 프로세서에 의해 실행될 수 있다.
사이버 위협 정보 처리 장치 및 사이버 위협 정보 처리 방법의 실시 예들을 상세히 개시하면 다음과 같다.
도 1은 사이버 위협 정보 처리 방법의 일 실시 예를 예시한 도면이다. 사이버 위협 정보 처리 방법의 일 실시 예를 설명하면 다음과 같다.
사이버 위협 정보 처리 장치로 입력된 파일의 전처리를 수행한다(S1000).
파일의 전처리를 통해 파일을 식별할 수 있는 식별 정보를 얻을 수 있다. 파일의 전처리 수행의 일 예는 다음과 같다.
수신한 파일로부터 파일의 출처 정보, 파일을 얻은 수집 정보, 파일의 사용자 정보 등을 포함한 여러 가지 메타 정보를 얻을 수 있다. 예를 들어 파일이 URL (uniform resource locator)을 포함하거나 또는 전자메일에 포함된 경우 파일에 대한 수집 정보를 얻을 수 있다. 사용자 정보는 파일의 생성, 업로드 또는 최종 저장한 사용자 정보 등을 포함할 수 있다. 전처리 과정에서 파일의 메타 정보로서 IP(internet protocol) 정보, 이에 기반한 국가 정보, API(Application Programming Interface) key 정보, 예를 들면 분석을 의뢰한 사용자의 API 정보 등을 얻을 수 있다.
전처리 과정에서 파일의 해쉬(Hash) 값을 추출할 수도 있다. 해쉬 값이 이미 사이버 위협 정보 처리 장치에 알려진 것이라면 이를 기반으로 파일의 종류나 위험 정도를 식별할 수 있다.
만약 이미 알려진 파일이 아니라면 기 저장된 정보 또는 필요한 경우 외부의 레퍼런스 웹 사이트(reference website)에 해쉬 값과 파일 정보를 조회하여 파일 종류 식별을 위한 분석 정보를 얻을 수 있다. 예를 들어 외부의 레퍼런스 웹 사이트로서 한국인터넷진흥원에서 운영하는 C-TAS(Cyber Threats Analysis System), CTA(Cyber Threat Alliance)의 운영시스템, VitusTotal 등의 사이트로부터 파일 종류에 따른 정보를 얻을 수 있다.
예를 들면, 파일의 MD5 (Message-Digest algorithm 5), SHA1 (Secure Hash Algorithm 1), SHA 256 등의 해쉬 함수의 해쉬 값을 이용하여 해당 사이트에서 파일을 검색할 수 있다. 그리고 검색 결과를 이용해 상기 파일을 식별할 수 있다.
파일을 분석을 수행하는 일 예로서, 입력된 파일이 모바일 네트워크를 통해 전송될 경우 네트워크 트래픽을 통해 전송되는 패킷은 네트워크 전송 패킷의 재조합 기술 등을 사용하여 입력된 파일이 모바일 악성 의심 코드인 경우 이를 저장할 수 있다. 패킷의 재조합 기술은 수집된 네트워크 트래픽에서 하나의 실행 코드에 해당하는 일련의 패킷들을 재 조합하며, 재 조합된 패킷들에 의해 전송되는 파일이 모바일 악성 의심 코드인 경우 이 파일이 저장된다.
만약 이 단계에서 전송 파일 내에 모바일 악성 의심 코드 추출이 되지 않은 경우 파일 내에 다운로드 URL에 직접 접속하여 모바일 악성 의심 코드를 다운로드하여 저장할 수도 있다.
상기 입력된 파일과 관련된 악성 행위(malicious activity) 분석 정보를 생성한다(S2000).
입력된 파일과 관련된 악성 행위의 분석 정보는 파일 자체에 대한 정보를 분석하는 정적 분석 정보나 입력된 파일로부터 얻은 정보를 실행하여 악성 행위 여부를 판별할 수 있는 동적 분석 정보를 포함할 수 있다.
이 단계의 분석 정보는 입력된 파일과 관련된 실행 파일로부터 가공된 정보를 이용하거나 파일과 관련된 메모리 분석을 수행하는 심층 분석 정보를 포함할 수 있다.
심층 분석은 악성 행위를 정확하게 식별할 수 있도록 인공 지능 분석을 포함할 수 있다.
이 단계의 분석 정보는 또한 파일과 관련하여 이미 저장된 분석 정보나 또는 생성된 분석 정보를 서로 연관시켜 공격 행위나 공격자에 대한 연관 관계를 추정할 수 있는 연관관계 분석 정보를 포함할 수 있다.
이 단계에서 다수의 분석 정보는 전체 분석 결과로 제공되기 위해 취합될 수 있다.
예를 들어 하나의 파일에 대한 정적 분석 정보, 동적 분석 정보, 심층 분석 정보, 연관관계 분석 정보 등은 정확한 공격 기법과 공격자 식별을 위해 통합 분석될 수 있다. 통합 분석은 분석 정보 사이의 중복된 부분을 제거하고 분석 정보 간 공통의 정보는 정확도를 높이는데 사용될 수 있다.
예를 들어 여러 분석과 경로를 통해 수집된 사이버 위협 침해 정보(indicator of compromise, IoC)들은 정보들 사이에 노멀라이징(normalizing)하거나 인리치먼트(enrichment) 수행을 통해 표준화 작업을 수행할 수 있다.
분석 정보의 획득하는 실시 예에서 반드시 위의 기술된 모든 분석 정보를 순서에 따라 산출할 필요는 없다. 예를 들어 정적 분석 정보 획득과 동적 분석 정보 획득은 어느 하나만 진행될 수도 있으며 정적 분석 정보 보다 동적 분석 정보를 먼저 수행할 수도 있다.
심층 분석 정보는 반드시 정적 분석 또는 동적 분석을 수행한 후 진행될 필요가 없으며, 연관 관계 분석도 심층 분석 정보 없이 수행될 수도 있다.
따라서 위 분석 정보를 획득하는 처리 순서는 변경될 수도 있으며 선택적으로 이루어질 수도 있다. 또한 위에 기술한 분석 정보의 획득 과정과 예측 정보의 생성 과정은 파일로부터 획득한 정보에 기초하여 병렬적으로 수행될 수 있다. 예를 들면 동적 분석이 수행이 완료되지 않더라도 연관관계 분석 정보를 생성할 수도 있다. 마찬가지로 동적 분석 수행이나 심층 분석 수행이 동시에 진행될 수 있다.
이러한 경우 위에서 예시한 전처리 과정(S1000)은 파일의 정보를 얻거나 식별하기 위한 것이므로 정적 분석, 동적 분석, 심층 분석 또는 연관 분석이 개별적이나 병렬적으로 수행될 경우 각 분석 단계에 일부로서 각각 수행될 수 있다.
이 단계에 대한 상세한 실시 예는 아래에서 후술한다.
상기 입력된 파일과 관련된 악성 행위의 예측 정보를 생성할 수 있다(S3000).
분석 정확도를 높이기 위해 위의 분석된 여러 가지 정보의 데이터 세트를 이용하여 악성 행위의 발생 여부, 공격 기법, 공격자 그룹 등에 대한 예측 정보를 생성할 수 있다.
예측 정보의 생성은 이미 분석된 데이터 세트에 대한 인공지능 분석을 통해 수행될 수 있다. 예측 정보의 생성은 필수적인 단계가 아니며 인공지능 분석을 위해 적절하게 분석된 데이터 세트가 마련되어 조건이 만족될 경우 추후 악성 공격 행위에 대한 예측 정보를 생성할 수 있다.
실시 예는 여러 가지 분석 정보들을 기반으로 인공 지능 기반의 머신 러닝을 수행한다. 실시 예는 분석된 정보에 대한 데이터 세트를 기반으로 예측 정보를 생성할 수 있다. 예를 들면 인공 지능으로 학습된 데이터를 바탕으로 추가적인 분석 정보를 생성하고 다시 생성된 분석 정보는 다시 새로운 학습 데이터로서 인공 지능의 입력 데이터로 이용될 수 있다.
여기서 예측 정보는 악성 코드 제작자 정보, 악성 코드 공격 방법 정보, 악성 코드 공격 그룹 예측, 악성 코드 유사도 예측 정보, 및 악성 코드 확산도 예측 정보 등을 포함할 수 있다.
생성된 예측 정보는 악성 코드 자체의 위험도를 예측한 제 1 예측 정보와 악성 코드의 공격자, 공격 그룹, 유사도, 확산도 등을 예측한 제 2 예측 정보 등을 포함할 수 있다.
이러한 제 1 예측 정보와 제 2 예측 정보를 포함하는 예측 분석 정보는 서버나 데이터 베이스에 저장될 수 있다.
이에 대한 상세한 실시 예는 이하에서 후술한다.
상기의 분석 정보 또는 예측 정보에 대한 후처리 후 상기 입력된 파일과 관련된 사이버 위협 정보를 제공한다(S4000).
실시 예는 분석 정보 또는 예측 정보에 기초하여 악성 코드 종류 및 악성 코드의 위험도를 결정한다. 그리고 실시 예는 악성 코드에 대한 프로파일링 정보를 생성한다. 따라서 파일 분석을 통해 파일에 대한 자체 분석을 수행한 결과나 추가 및 예측 분석을 수행한 결과를 저장할 수 있다. 생성되는 프로파일링 정보는 악성 코드에 대한 공격 기법이나 공격자에 대한 라벨링을 포함한다.
사이버 위협 정보는 위의 전처리가 수행된 정보, 생성되거나 식별된 분석 정보, 생성된 예측 정보 또는 이 정보들의 취합 정보나 이 정보들을 기반으로 결정된 정보를 포함할 수 있다.
제공되는 사이버 위협 정보에는 입력된 파일과 관련하여 데이터 베이스에 저장된 분석 정보를 이용하거나 위에서 분석되거나 예측된 정보가 포함될 수 있다.
실시 예에 따르면 사용자가 입력된 파일에 대한 악성 행위뿐만 아니라 이미 저장된 파일이나 악성 행위에 대해 사이버 위협 정보를 조회할 경우 이에 대한 정보를 제공할 수 있다.
이러한 통합 분석 정보는 해당 파일에 대응하여 서버나 데이터 베이스에 표준화된 포맷으로 저장될 수 있다. 이러한 통합 분석 정보는 표준화된 포맷으로 저장되어 사이버 위협 정보를 검색 또는 조회에 사용될 수 있다.
사용자의 사이버 위협 정보의 조회에 대항 추가적인 예시는 이하에서 상세히 후술한다.
또한 본 발명의 실시 예에 따라 실시간의 사이버 위협 정보를 제공하는 다양한 사용자 제공 인터페이스의 예를 이하에서 개시한다.
도 2는 사이버 위협 정보 처리 장치의 일 실시 예를 개시한 도면이다. 이 도면의 실시 예는 사이버 위협 정보 처리 장치를 개념적으로 예시하는데 이 도면을 참조하여 사이버 위협 정보 처리 장치의 실시 예를 설명하면 다음과 같다.
개시하는 사이버 위협 정보 처리 장치는 물리장치(2000)인 데이터베이스 및 서버(2100) 및 데이터베이스(2200)와 상기 물리장치(2000) 상에서 구동되는 응용 프로그래밍 인터페이스 Application Programming Interface, API) 포함하는 플랫폼 (10000)을 포함한다. 이하에서 플랫폼(10000)은 사이버 위협 인텔리전스 플랫폼(cyber threat intelligence platform; CTIP) 또는 간략하게 인텔리전스 플랫폼(10000)으로 호칭한다.
서버(2100)는 중앙연산장치(central processing unit, CPU) 나 프로세서와 같은 연산장치를 포함하고 데이터베이스(2200)에 데이터를 저장하거나 읽을 수 있다.
서버(2100)는 입력되는 보안 관련 데이터를 연산 및 처리하며 파일을 실행하여 여러 가지 보안 이벤트를 발생시키고 관련된 데이터를 처리하도록 한다. 그리고 서버(2100)는 여러 가지 사이버 보안 관련 데이터의 입출력을 제어하고 인텔리전스 플랫폼(10000)에서 처리된 데이터를 데이터베이스(2200)에 저장할 수 있다.
서버(2100)는 데이터 입력을 위한 네트워크 장치나 네트워크의 보안 장치를 포함할 수 있다. 서버(2100)의 중앙처리장치, 프로세서 또는 연산장치는 이하의 도면에서 예시하는 프레임워크나 해당 프레임 워크 내의 모듈을 수행할 수 있다.
실시 예에 따른 인텔리전스 플랫폼(10000)은 사이버 위협 정보의 처리를 위한 응용 프로그래밍 인터페이스(API)를 제공한다. 예를 들어 인텔리전스 플랫폼(10000)은, 네트워크와 연결된 네트워크 보안 장치나 악성 행위를 스캔 및 감지하는 사이버 악성 행위 방지 프로그래밍 소프트웨어로부터 파일이나 데이터를 입력받을 수 있다.
예를 들어 실시 예에 따른 인텔리전스 플랫폼(10000)은 보안 이벤트를 제공하는 SIEM (Security Information and Event Management) API, 실행 환경에 대한 데이터를 제공하는 EDR (Environmental Data Retrieval) API, 네트워크 트래픽을 정의된 보안 정책에 따라 모니터하고 제어하는 파이어월(firewall) API 등의 기능을 제공할 수 있다. 또한 인텔리전스 플랫폼(10000)은 내부와 외부 네트워크 사이에 방화벽과 유사한 역할을 수행하는 IPS (Intrusion Prevention Systems )의 API의 역할도 제공할 수 있다.
실시 예에 따른 인텔리전스 플랫폼(10000)의 응용 프로그래밍 인터페이스(API)(1100)는 사이버 보안의 공격 행위를 수행하는 악성 코드를 포함하는 파일들을 여러 클라이언트 기기들 (1010, 1020, 1030) 로부터 수신할 수 있다.
실시 예에 따른 인텔리전스 플랫폼(10000)은 전처리부(미도시), 분석 프레임 워크(1210)와 예측 프레임 워크(1220) 및 AI 엔진 (1230) 및 후처리부(미도시)을 포함할 수 있다.
인텔리전스 플랫폼(10000)의 전처리부는 클라이언트 기기들(1010, 1020, 1030)로부터 수신된 여러 가지 파일들에 대한 사이버 위협 정보를 분석할 수 있도록 전처리를 수행한다.
예를 들면 전처리부는 수신된 파일을 처리하여 그 파일로부터 파일의 출처 정보, 파일을 얻은 수집 정보, 파일의 사용자 정보 등을 포함한 여러 가지 메타 정보를 얻을 수 있다. 예를 들어 파일이 URL (uniform resource locator)을 포함하거나 또는 전자메일에 포함된 경우 파일에 대한 수집 정보를 얻을 수 있다. 사용자 정보는 파일의 생성, 업로드 또는 최종 저장한 사용자 정보 등을 포함할 수 있다. 전처리 과정에서 파일의 메타 정보로서 IP(internet protocol) 정보, 이에 기반한 국가 정보, API(Application Programming Interface) key 정보 등을 얻을 수 있다.
인텔리전스 플랫폼(10000)의 전처리부(미도시)는 입력된 파일의 해쉬(Hash) 값을 추출할 수 있다. 해쉬 값이 이미 사이버 위협 정보 처리 장치에 알려진 것이라면 이를 기반으로 파일의 종류를 식별할 수 있다.
만약 이미 알려진 파일이 아니라면 운영하는 C-TAS(Cyber Threats Analysis System), CTA(Cyber Threat Alliance)의 운영시스템, VitusTotal 등의 사이버 위협 정보의 레퍼런스 인터넷 사이트에 해쉬 값과 파일 정보를 조회하여 파일 종류 식별을 위한 분석 정보를 얻을 수 있다.
설명한 바와 같이 입력된 파일의 해쉬 값은 MD5 (Message-Digest algorithm 5), SHA1 (Secure Hash Algorithm 1), SHA 256 등의 해쉬 함수의 해쉬 값이 될 수 있다.
프레임 워크(1210)는 입력된 파일로부터 악성 코드에 대한 분석 정보를 생성할 수 있다. 프레임 워크(1210)는 정적 분석, 동적 분석, 심층 분석, 연관관계 분석 등 사이버 위협 정보를 여러 가지 방식으로 분석할 수 있는 N개(N은 자연수) 모듈들(1211, 1213, 1215, …., 1219)을 예시적으로 도면에 표시하였다..
여기서는 이러한 여러 가지 모듈은 입력된 파일에 포함된 사이버 위협 정보에 대한 분석 및 예측을 수행한다.
프레임 워크(1210)에 포함되는 모듈들 중 정적 분석 모듈은 입력된 파일과 관련된 악성 행위의 분석 정보는 파일 자체에 대한 악성 코드 관련 정보를 분석할 수 있다.
동적분석 모듈은 입력된 파일로부터 얻은 여러 가지 정보들을 기반으로 여러 행위를 수행함으로써 악성 코드 관련 정보를 분석할 수 있다.
심층분석 모듈은 입력된 파일과 관련된 실행 가능한 파일을 가공한 정보를 이용하거나 실행 가능한 파일과 관련된 메모리 분석을 수행하여 악성 코드 관련 정보를 분석할 수 있다. 심층분석 모듈은 악성 행위를 정확하게 식별할 수 있도록 인공 지능 분석을 포함할 수 있다.
연관관계분석 모듈은 입력된 파일과 관련하여 이미 저장된 분석 정보들이나 또는 생성된 분석 정보들을 서로 연관시켜 공격 행위나 공격자에 대한 연관 관계를 추정할 수 있는 연관관계 분석 정보를 포함할 수 있다.
프레임 워크(1210)는 정적 분석 모듈, 동적분석 모듈, 심층분석 모듈 및 연관관계분석 모듈로부터 분석된 정보들을 악성 코드의 특성과 행위에 대한 분석 결과들을 서로 결합하고, 결합된 최종 정보를 사용자에게 제공할 수 있다.
예를 들어 프레임 워크(1210)는 하나의 파일에 대한 정적 분석 정보, 동적 분석 정보, 심층 분석 정보, 연관관계 분석 정보 등은 정확한 공격 기법과 공격자 식별을 위해 통합 분석할 수 있다. 프레임 워크(1210)는 분석 정보들 사이에 중복된 부분을 제거하고 분석 정보들 사이에 공통의 정보는 정확도를 높이는데 사용한다.
프레임 워크(1210)는 제공하는 정보를 표준화할 수 있는데, 예를 들면 여러 분석과 경로를 통해 수집된 사이버 위협 침해 정보(indicator of compromise, IoC)들을 노멀라이징(normalizing)하거나 인리치먼트(enrichment) 작업한다. 그리고 최종 표준화된 악성 코드 또는 악성 행위에 대한 분석 정보를 생성할 수 있다.
프레임 워크(1210)의 정적 분석 모듈, 동적분석 모듈, 심층분석 모듈 및 연관관계분석 모듈은 분석되는 데이터의 정확성을 높이기 위해 분석 대상 데이터에 인공지능 분석에 따른 머신 러닝이나 딥 러닝 기법을 수행할 수 있다.
AI 엔진(1230)은 분석 프레임 워크(1210)의 분석 정보 생성을 위해 인공지능 분석 알고리즘을 수행할 수 있다.
이러한 정보는 데이터 베이스(2200)에 저장될 수 있고 서버(2100)는 사용자나 클라이언트 요청에 따라 데이터 베이스(2200)에 저장된 악성 코드 또는 악성 행위에 대한 분석 정보를 사이버 위협 인텔리전스 정보로 제공할 수 있다.
한편, 프레임 워크(1210)는 분석 정확도를 높이기 위해 위의 분석된 여러 가지 정보의 데이터 세트를 이용하여 악성 행위의 발생 여부, 공격 기법, 공격자 그룹 등에 대한 예측 정보를 생성할 수 있다.
프레임 워크(1210)는 여러 분석 모듈들이 분석한 분석 정보에 대한 데이터 세트를 기반으로 AI 엔진(1230)을 이용하여 인공지능 분석 알고리즘을 수행하여 입력된 파일과 관련된 악성 행위에 대한 예측 정보를 생성할 수 있다.
AI 엔진(1230)은 분석 정보에 대한 데이터 세트에 대해 인공 지능 기반의 머신 러닝으로 학습하여 추가적인 분석 정보를 생성하고, 추가 생성된 분석 정보는 다시 새로운 학습 데이터로서 인공 지능의 입력 데이터로 이용될 수 있다.
프레임 워크(1210)는 가 생성하는 예측 정보는 악성 코드 제작자 정보, 악성 코드 공격 방법 정보, 악성 코드 공격 그룹 예측, 악성 코드 유사도 예측 정보, 및 악성 코드 확산도 예측 정보 등을 포함할 수 있다.
위와 같이 여러 가지 악성 코드나 공격 행위 등에 관련된 예측 정보를 생성한 프레임 워크(1210)는 생성한 예측 정보들을 데이터베이스(2200)에 저장할 수 있다. 그리고 사용자의 요청에 따라 또는 공격 징후에 따라 생성한 예측정보를 사용자에게 제공할 수 있다.
서버(2100)는 설명한 바와 같이 데이터 베이스(2200)에 저장된 분석 정보 또는 예측 정보에 대한 후처리 후 상기 입력된 파일과 관련된 사이버 위협 정보를 제공할 수 있다.
서버(2100)의 프로세서는 생성된 분석 정보 또는 예측 정보에 기초하여 악성 코드 종류 및 악성 코드의 위험도를 결정하는 작업을 수행한다.
서버(2100)의 프로세서는 악성 코드에 대한 프로파일링 정보를 생성할 수 있다. 데이터베이스(2200)는 파일 분석을 통해 파일에 대한 자체 분석을 수행한 결과나 추가 및 예측 분석을 수행한 결과를 저장할 수 있다.
서버(2100)에 의해 사용자에게 제공되는 사이버 위협 정보는, 기술된 전처리가 수행된 정보, 생성되거나 식별된 분석 정보, 생성된 예측 정보 또는 이 정보들의 취합 정보나 이 정보들을 기반으로 결정된 정보를 포함할 수 있다.
제공되는 사이버 위협 정보에는 입력된 파일과 관련하여 데이터 베이스에 저장된 분석 정보를 이용하거나 위에서 분석되거나 예측된 정보가 포함될 수 있다.
실시 예에 따르면 사용자가 입력된 파일에 대한 악성 행위뿐만 아니라 이미 저장된 파일이나 악성 행위에 대해 사이버 위협 정보를 조회할 경우 이에 대한 정보를 제공할 수 있다.
이러한 통합 분석 정보는 해당 파일에 대응하여 서버나 데이터 베이스에 표준화된 포맷으로 저장될 수 있다. 이러한 통합 분석 정보는 표준화된 포맷으로 저장되어 사이버 위협 정보를 검색 또는 조회하는데 사용될 수 있다.
실시 예는 입력된 파일을 분석하고 분석된 파일로부터 공격 행위를 식별할 수 있다. 실시 예는 파일의 악성 코드와 사이버 보안 전문가 집단들이 공통적으로 인정하는 공격 행위 세부 요소들을 매칭하도록 하여 그 파일 내의 공격행위를 식별할 수 있다.
그리고 실시 예는 파일 내에 포함된 사이버 위협 정보와 공격행위(TTP) 별 매칭 관계를 저장한 데이터베이스에 기반하여 공격행위(TTP)를 식별하도록 할 수 있다.
이러한 보안 전문가 집단의 공격 행위를 저장한 데이터 베이스의 일 예로서 MITRE ATT&CK 등의 정보를 저장한 데이터베이스를 예로 들 수 있다. MITRE ATT&CK은 실제 보안 공격 기법이나 행위에 대한 데이터 베이스의 하나로서, 특정 보안 공격 기법이나 행위들을 매트릭스 형식의 구성 요소들로 표시함으로써, 공격 기법과 행위들을 일정한 데이터 세트 형식으로 식별할 수 있도록 한다.
MITRE ATT&CK는 해커 또는 악성 코드의 공격 기법에 대한 내용을 공격의 단계 별로 분류하여 CVE 코드(Common Vulnerabilities and Exposures Code)의 매트릭스로 표현한다.
실시 예는 파일 내에 포함된 사이버 위협 정보를 분석하여 특정 공격 행위를 식별하되, 식별된 타입의 공격 행위가 전문가 단체들이 인정하는 실제 수행되는 공격 코드들에 매칭되도록 함으로써 공격 행위 식별이 전문적이면서 공통으로 인식되는 요소들로 표현되도록 할 수 있다.
이 예에서 서버(2100)와 인텔리전스 플랫폼(10000)은 실시 예를 설명하기 위한 편의상 다른 구성으로 설명하였으나, 인텔리전스 플랫폼(10000)은 서버(2100) 내의 적어도 하나의 프로세서들에 의해 수행될 수 있다.
한편 사이버 위협 정보 처리의 실시 예들 다양한 타입의 고성능 컴퓨팅 서버들이나 분산 클라우드 서버들의 일부에 하드웨어 또는 소프트웨어로 포함되어 그 서버들의 일부로 기능할 수 있다.
이러한 경우 사용자 클라이언트와 서버들의 통신뿐만 아니라, 개시하는 실시 예들에 따라 서버들의 통신 또는 서버와 소형 단말기, 차량 등의 기기 간 통신에서도 포함되는 데이터나 파일로부터 사이버 위협 정보를 처리하고 정보를 제공할 수 있다.
아래 개시하는 실시 예들은 소형화된 컴퓨팅 장치나 소프트웨어로 구현이 가능하므로 특정한 위치에 한정되지 않으며 심지어 인공위성 등 우주의 비행체에 포함될 수도 있다. 예를 들어, 인공위성이나 우주 비행체가 수신하는 데이터나 파일에 어떤 사이버 위협 정보가 있는지 아래 실시 예에 따라 처리하여 그 결과를 제공할 수 있다.
이하의 실시 예에서는 기기나 소프트웨어가 외부에서 수신되는 데이터, 파일, 정보를 수신하는 경우 그 수신된 데이터, 파일, 정보로부터 사이버 위협 정보를 처리하여 사용자에게 그 결과를 제공하는 예를 상세하게 개시한다.
도 3는 사이버 위협 정보 처리 장치의 일 실시 예를 개시한 도면이다.
여기서는 인텔리전스 플랫폼(10000)이 파일들을 수신 또는 수집하여 사이버 위협 정보를 분석하고 제공하는 예를 개시한다.
인텔리전스 플랫폼(10000)은 특정 사용자의 클라이언트(1010)로부터 실행파일을 입력받을 수 있다. 여기서 실행 파일로서, EXE나 ELF(Executable and Linkable Format), PE(Portable Executable), APK(Android Application Package) 등을 예시하였다.
인텔리전스 플랫폼(10000)은 특정 사용자의 클라이언트(1020)로부터 비실행파일을 입력받을 수도 있다. 여기서 비 실행 파일이란 직접 실행되는 실행파일을 제외한 문서파일, 스크립트파일, 이메일 등으로서 악성 코드나 실행파일들을 포함할 수 있는 임베딩 파일들을 총칭한다.
한편, 인텔리전스 플랫폼(10000)을 운영하는 서버(2100)는 자체적으로 인터넷 연결을 통해 외부의 웹사이트 등의 여러 가지 실행파일이나 비실행파일들을 직접 수집할 수도 있다.
인텔리전스 플랫폼(10000) 또는, 인텔리전스 플랫폼(10000)을 운영하는 서버(2100)는 사용자로부터 수신하거나 직접 수집한 파일들로부터 사이버 위협 정보를 분석하고 여러 사용자가 사이버 상의 공격들을 효율적으로 인지할 수 있도록 여러 가지 정보를 제공할 수 있다.
이하에서는 인텔리전스 플랫폼(10000) 또는 서버(2100) 등의 사이버 위협 정보 처리 장치의 실시 예가 실행파일을 분석하는 예들, 비실행파일을 분석하는 예들, 이를 기반으로 사용자에게 사이버 위협 정보를 제공하는 실시 예들을 순차적으로 개시한다.
이하에서는 인텔리전스 플랫폼(10000) 또는 서버(2100) 등의 사이버 위협 정보 처리 장치의 실시 예가 실행파일을 분석하는 예를 개시한다.
도 4는 개시하는 실시 예에 따라 실행파일의 정적 분석을 수행하는 일 예를 나타낸다. 도면을 참조하여 실시 예에 따른 정적 분석 방법의 일 예를 설명하며 다음과 같다.
설명한 바와 같이 정적 분석을 수행하기 이전에 전처리 단계나 정적 분석의 초기 단계에서 파일의 종류를 식별 수 있다. 이 도면은 파일의 종류로서 편의상 ELF, EXE, ARK 파일이 식별된 경우를 예시하지만 실시예의 적용은 이에 국한되지 않는다.
악성코드의 정적 분석 또는 탐지는 위와 같은 파일 자체가 가지고 있는 성격과 기존에 확인된 패턴 데이터베이스와 비교 하는 과정을 기반으로 동작할 수 있다.
정적 정보 추출기는 입력된 파일의 구조를 파싱하여 구조 정보를 얻을 수 있다.
파싱된 파일의 구조 상 패턴(pattern)은 데이터베이스(DB)(2200)에 이미 저장된 악성 코드의 패턴과 비교될 수 있다.
파싱된 파일의 구조 특징과 패턴은 상기 파싱된 파일의 메타 정보가 될 수 있다.
위에 개시된 예에서는 표시하지 않았으나 개시하는 실시예의 정적 분석에서도 머신 러닝 엔진이 사용될 수 있다. 데이터베이스(2200)는 이미 저장된 악성 코드의 학습된 특징들을 포함하는 데이터 세트를 저장할 수 있다.
AI 엔진은 위와 같이 파상된 파일로부터 얻은 메타 정보를 머신 러닝을 통해 학습하고, 데이터베이스(2200)에 이미 저장된 데이터 세트를 비교하여 악성코드 여부를 판단할 수 있다.
정적 분석을 통해 악성 코드로 분석된 파일은 파일의 구조적 특징은 악성 코드와 관련된 데이터 세트로 다시 저장될 수 있다.
도 5는 개시하는 실시 예에 따라 실행파일의 동적 분석을 수행하는 일 예를 나타낸다. 도면을 참조하여 실시 예에 따른 동적 분석 방법의 일 예를 설명하며 다음과 같다.
설명한 바와 같이 동적 분석을 수행하기 이전에 전처리 단계나 동적 분석의 초기 단계에서 파일의 종류를 식별 수 있다. 마찬가지로 이 예시에서 파일의 종류로서 편의상 ELF, EXE, ARK 파일이 식별된 경우를 예시한다.
전처리를 통해 동적 분석 대상이 되는 파일 종류를 식별할 수 있다. 식별된 파일은 각 파일의 종류와 타입에 따라 가상 환경에서 실행될 수 있다.
예를 들어 식별된 파일이 ELF 파일인 경우 대기 큐(Que)를 거쳐 리눅스 가상 환경(Virtual Machine, VM)의 운영체제에서 실행될 수 있다.
ELF 파일이 실행될 경우 발생하는 이벤트는 행위 로그(log)에 기록될 수 있다.
이와 같이 각각의 식별 파일의 종류 별로 윈도우, 리눅스, 모바일 운영체제 시스템을 가상으로 구축한 후 가상 시스템의 실행 이벤트를 기록한다.
그리고 데이터베이스(2200)에 이미 저장된 악성 코드의 실행 이벤트들과 기록한 실행 이벤트들을 비교할 수 있다. 위에서 예시하지 않았으나 동적 분석의 경우에도 머신 러닝을 통해 기록한 실행 이벤트들을 학습하고, 학습된 데이터가 이미 저장된 악성 코드의 실행 이벤트들과 유사한지 판단할 수 있다.
동적 분석의 경우 파일에 따라 가상 환경을 구축해야 하고 이에 따라 분석 및 탐지 시스템의 규모가 커질 수 있다.
도 6은 심층 분석의 일 예로서 악성 코드를 디스어셈블링하여 악성 행위가 포함된 파일임을 판단하는 예를 개시한다.
기술한 바와 같이 실행 가능한 파일을 디스어셈블링을 수행하면 어셈블리 언어 형식의 코드의 형식인 OP-CODE 와 ASM-CODE를 얻을 수 있다.
예를 들어 EXE 실행 파일 내에 특정 함수 A는 디스어셈블러(disassembler)를 거치면 OP-CODE를 포함하는 디스어셈블링된 코드 또는 디스어셈블드 코드(disassembled cocde)로 변환될 수 있다.
만약 EXE 실행 파일이 악성 행위를 유발하는 악성 코드인 경우, 이러한 행위를 유발하는 함수나 코드 부분을 디스어셈블링하면 악성 행위를 유발하는 디스어셈블드 코드 세트를 얻을 수 있다.
디스어셈블드 코드 세트는 상기 악성 행위 또는 악성 코드에 대응되는 OP-CODE 세트 또는 OP-CODE 와 ASM-CODE가 조합된 세트를 포함할 수 있다.
악성 행위가 동일하더라도 이를 수행하도록 하는 악성 코드의 알고리즘이나 실행 파일의 디스어셈블링 결과가 정확하게 같지 않기 때문에 인공 지능 기반의 유사도 분석을 통해 입력된 악성 코드가 특정 디스어셈블드 코드 세트와 대응되는지를 식별할 수 있다.
이렇게 특정 디스어셈블드 코드 세트와 대응되는 악성 행위를, MITRE ATT&CK와 같은 전문적이고 공용의 공격 방식 또는 공격 기법에 대응시켜 공격 기법 (TTP)를 식별하는데 사용할 수 있다.
또는 특정 디스어셈블드 코드 내 OP-CODE 세트 또는 OP-CODE 와 ASM-CODE가 조합된 세트를 MITRE ATT&CK에서 정의한 공격 기법 요소들과 대응시켜 공격 기법을 판단하는데 사용할 수 있다.
이 도면은 실행 파일, 해당 실행 파일의 디스어셈블드 코드 세트와 MITRE ATT&CK에서 공격 기법 요소들에 대응되는 공격 기법을 대응한 예를 나타낸다.
도 7은 개시하는 실시 예에 따라 사이버 위협 정보를 처리하는 흐름을 예시한 도면이다.
이 도면에서 식별된 파일이 ELF, EXE, ARK 의 실행 가능한 바이너리 파일인 경우를 예로 하여 설명한다. 이 단계의 처리 과정은 위에서 개시한 심층 분석과 관련된다.
먼저 제 1 단계로서 OP-CODE 코드를 포함하는 디스어셈블드 코드를 추출하는 과정의 일 상세한 예를 설명하면 다음과 같다.
소스 코드를 컴파일(complie)하면 실행 파일이 생성된다.
원시 소스 코드는 실행 가능한 각 운영체제(OS) 환경에서 컴파일러에 의해 기계의 처리에 적합한 형태의 새로운 데이터로 생성된다. 새롭게 구성된 바이너리 데이터는 사람이 읽기에는 적합하지 않은 형태로 되어 있어 실행 파일 형태로 만들어진 파일을 인간이 해석해서 그 내부 로직을 파악하는 것은 불가능하다.
그러나 보안 시스템의 취약점 분석과 다양한 목적을 위해서 그 역과정을 수행하여 기계어의 해석이나 분석을 수행하는데 설명한 바와 같이 디스어셈블 과정이라고 한다. 디스어셈블 과정은 특정 운영체제의 중앙처리장치(CPU)와 처리 비트 수(32비트, 64비트 등) 에 맞춰서 수행될 수 있다.
예시한 ELF, EXE, ARK 의 실행 파일을 각각 디스어셈블을 수행하면 디스어셈블된 어셈블리 코드를 획득할 수 있다.
디스어셈블된 코드는 OP-CODE 와 ASM-CODE가 조합된 코드를 포함할 수 있다.
실시 예는 디스어셈블 도구를 기반으로 실행 파일을 분석하여 실행 파일로부터 OP-CODE 와 ASM-CODE을 추출할 수 있다.
개시하는 실시 예는 추출된 OP-CODE 와 ASM-CODE을 그대로 이용하지 않고 각 함수 별로 재구성하여 OP-CODE 배열을 다시 구성한다. OP-CODE 배열을 재정리할 경우 원본 바이너리 데이터도 함께 포함하여 데이터의 해석을 충분히 수행할 수 있도록 데이터를 재구성할 수 있다. 이러한 재배열를 통해 OP-CODE 와 ASM-CODE의 새로운 조합은 공격 기법뿐만 아니라 공격자를 식별할 수 있는 기초 데이터를 제공한다.
제 2 단계로 어셈블리 데이터를 처리하는 과정(ASM)을 상세히 설명하면 다음과 같다.
어셈블리 데이터 처리 과정은 OP-CODE와 필요한 ASM-CODE 만을 분리한 후 인간 또는 컴퓨터가 읽기 좋은 형태로 재구성된 데이터를 기반으로 유사도를 분석하고 정보를 추출하는 과정이다.
이 단계에서 디스어셈블된 어셈블리 데이터는 일정한 데이터 형식으로 변환될 수 있다.
이러한 데이터 형식의 변환은 데이터 처리 속도를 높이고 데이터의 정확한 분석을 위해 아래 기술된 변환 방식들은 모두 적용될 필요없이 선택적으로 적용될 수 있다.
재배열된 OP-CODE 와 ASM-CODE의 조합의 어셈블리 데이터로부터 여러 가지 함수를 추출할 수 있다.
하나의 실행 파일을 디스어셈블하면 프로그램 크기에 따라 다르지만 평균적으로 약, 7,000~12,000개 정도 되는 함수를 포함할 수 있다. 이 함수들은 프로그래머가 필요에 따라 구현한 함수도 있으며 운영체제에서 기본적으로 제공하는 함수들도 있다.
실제 ASM-CODE를 분석하면 약 87%~91% 정도의 함수가 운영체제에서 기본적으로 제공하는 함수(OS supported)이고 프로그래머가 프로그램 로직을 위해서 실제 구현한 ASM-CODE는 약 10% 정도이다. 운영체제에서 제공한 함수는 함수 명과 함께 운영체제 설치 시에 기본적으로 설치되는 각종 DLL, SO 파일 등에 포함되는 함수들(Default function)이다. 이러한 운영체제 제공 함수들은 이미 분석하여 저장하여 분석 대상 데이터로부터 필터링할 수 있다. 이렇게 분석해야 할 코드만 분리하면 이후 처리 속도와 성능을 높일 수 있다.
실시 예는 프로그램의 기능적 분석을 정확하게 수행하기 위해서 OP-CODE를 함수 단위로 분리해서 처리할 수 있다. 실시 예는 모든 의미적 분석의 최소 단위를 어셈블리 코드에 포함된 함수를 기반하여 수행할 수 있다.
분석 성능과 처리 속도를 높이기 위해 실시 예는 의미가 정확하지 않은 연산자 수준의 함수들은 필터링하고 정보량이 임계 치 보다 작은 함수들 도 분석 대상에서 제거할 수 있다. 함수들의 필터링의 여부와 정도는 실시 예에 따라 다르게 설정할 수 있다.
실시 예는 함수에 따라 정리된 OP-CODE 로부터 디스어셈블러가 출력 시 제공하는 주석 데이터를 제거할 수 있다. 그리고 실시 예는 디스어셈블된 코드를 재배열할 수 있다.
예를 들면, 디스어셈블러가 출력하는 디스어셈블된 코드는 [ASM-CODE, OP-CODE, 파라미터]의 순서를 가질 수 있다.
실시 예는 어셈블리 데이터로부터 파라미터 데이터를 제거하고 위 순서의 디스어셈블된 코드를 [OP-CODE, ASM-CODE] 순서로 재정리 또는 재구성할 수 있다. 이렇게 재정된 디스어셈블된 코드는 정규화 또는 벡터화하여 처리하기 용이하다. 그리고 처리 속도를 현격하게 높일 수 있다.
특히 [OP-CODE, ASM-CODE] 의 조합을 가지는 디스어셈블된 코드 중 ASM-CODE 부분은 데이터의 길이가 달라 서로 비교하기 용이하지 않다. 따라서 해당 어셈블리 데이터의 고유성을 확인하기 위해서 데이터를 특정 크기의 데이터 포맷으로 정규화시킬 수 있다. 예를 들면 실시 예는 [OP-CODE, ASM-CODE] 조합의 디스어셈블된 코드의 고유성을 확인하기 위해서 데이터 부분을 정규화하기 용이한 특정 길이의 데이터 세트, 예를 들면 CRC(cyclic redundancy check) 데이터로 변환시킬 수 있다.
일 예로서 [OP-CODE, ASM-CODE] 조합의 디스어셈블된 코드에서 OP-CODE 부분은 제 1 길이의 CRC 데이터로, ASM-CODE 부분은 제 2 길이의 CRC 데이터로 각각 변환하는 것도 가능하다.
OP-CODE와 ASM-CODE 변환된 정규화 데이터는 각각 해당 변환 이전의 각각 코드의 고유성을 유지할 수 있도록 한다. 고유성을 가지고 변환된 정규화 데이터의 유사도 판단 속도를 빠르게 하기 위해 상기 정규화된 데이터를 벡터화(Vectorization)를 수행할 수 있다.
설명한 바와 같이 데이터 변환 과정으로서 정규화 또는 벡터화 과정은 데이터 처리 속도를 높이고 데이터의 정확한 분석을 선택적으로 적용될 수도 있다.
정규화 과정과 벡터화 과정의 상세한 예는 다시 아래에서 상세히 개시한다.
제 3단계로서 디스어셈블드 코드를 분석하는 데이터의 분석과정을 상세히 설명하면 다음과 같다.
이 과정에서도 데이터 처리 속도를 높이고 데이터의 정확한 분석을 위해 여러 가지 데이터 형식의 변환이 사용될 수 있는데, 아래 개시하는 기술된 변환 방식들은 모두 적용할 필요없이 그 중 일부를 선택적으로 적용할 수 있다.
이러한 변환된 데이터에 기초하여 변환된 디스어셈블드 코드 내의 함수 별 데이터 세트를 기반으로 악성 코드와 유사도를 분석하는 단계이다.
실시 예는 코드 간 유사도를 수행하기 위해 벡터화된 OP-CODE 와 ASM-CODE의 데이터 세트들을 바이트 데이터로 다시 변환할 수 있다.
재변환된 바이트 데이터를 기반으로 블록 단위의 해쉬 값을 추출하고 블록 단위의 고유 값을 기반으로 전체 데이터의 해쉬 값을 생성할 수 있다.
해쉬 값은 바이트 데이터의 부분인 블록 단위의 비교를 효율적으로 수행하기 위해서 각 블록 단위의 고유 값을 추출하도록 지정된 단위의 해쉬 값을 추출하여 비교할 수 있다.
이와 같이 지정된 단위의 해쉬 값을 추출하고 2개 이상의 데이터의 유사도를 비교하기 위해 퍼지 해쉬(Fuzzy Hashing) 기법이 사용될 수 있다. 예를 들면 실시 예는 퍼지 해쉬(Fuzzy Hashing) 중 CTPH(Context Triggered Piecewise Hashing) 방식을 사용하여 블록 단위로 추출된 해쉬 값과 기 저장된 악성 코드 중 일부 단위의 해쉬 값을 서로 비교하여 유사도를 판단할 수 있다.
정리하면 실시 예는 OP-CODE 및 ASM-CODE의 조합 코드가 특정 기능을 함수 단위로 구현한다는 사실에 기반하여, 각 특정 기능의 고유성을 확인하기 위해서 OP-CODE 와 ASM-CODE의 디스어셈블된 코드의 고유 값을 생성한다. 그리고 이 고유 값을 기반으로 디스어셈블된 코드의 OP-CODE와 ASM-CODE중 블록 단위의 고유 값을 추출하여 유사도 연산을 수행할 수 있다.
블록 단위의 해쉬 값을 추출 하는 상세한 예도 아래에서 도면을 참조하여 개시하도록 한다.
설명한 바와 같이 실시 예는 유사도 연산을 수행할 경우 블록 단위 해쉬 값을 이용할 수 있다.
추출된 블록 단위 해쉬 값은 String Data (Byte Data) 로 구성되어 있고 String Data (Byte Data)는 수치화 값들로 코드 간의 유사도를 비교할 수 있다. 만약 수십억 개의 디스어셈블된 코드 데이터 세트의 바이트 비교를 수행하면 하나의 유사도 결과를 얻는데 엄청난 시간을 소비할 수 있다.
따라서 실시 예는 String Data (Byte Data)는 수치화 값으로 변환할 수 있는데 이러한 수치화 값에 기반하면 인공지능 기술을 활용해 유사도 분석을 빠르게 수행할 수 있다.
실시 예는 추출된 블록 단위의 해쉬 값의 String Data (Byte Data) 를 N-gram 데이터 기반으로 벡터화시킬 수 있다. 이 도면의 실시 예는 연산 속도를 높이기 위해 블록 단위의 해쉬 값을 2-gram 데이터로 벡터화 수행하는 경우를 예시한다. 그런데 실시 예는 블록 단위의 해쉬 값을 반드시 2-gram 데이터로 변환할 필요는 없으며 3-gram, 4-gram,…N-gram의 데이터로 벡터화 변환하는 것도 가능하다. N-gram의 데이터에서 N이 증가할수록 데이터의 특성을 정확하게 반영할 수 있지만 데이터의 처리 시간의 속도가 증가한다.
기술한 바와 같이 데이터 처리 속도를 높이고 데이터의 정확한 분석을 위해 바이트 변환, 해쉬의 변환 및 아래의 N-gram 변환은 선택적으로 적용할 수 있다.
예시한 2-gram 변환 데이터는 최대 65,536 차원을 가진다. 학습 데이터의 차원이 높아질수록, 데이터의 분포가 희박해(sparse)지며, 이에 따라 분류 성능에 악영향을 끼칠 수 있다. 그리고 학습 데이터의 차원이 높아지면 데이터를 학습하기 위한 시간 복잡도와 공간 복잡도가 증가한다.
이러한 문제점을 해결하기 위해 실시 예는 다양한 텍스트 표현 기반의 여러 가지 자연어 처리 알고리즘으로 처리할 수 있다. 이 실시 예에서는 이러한 알고리즘으로 TF-IDF(Term Frequency-Inversed Document Frequency) 기법을 예로 하여 설명한다.
이 단계의 학습 데이터의 유사도를 처리하기 위한 일 예로서, 고차원 데이터 중에서 공격 식별자 또는 클래스(T-ID)를 판단할 경우 의미 있는 특징(패턴)을 선택하기 위해 TF-IDF(Term Frequency-Inversed Document Frequency) 기법을 사용할 수 있다. 일반적으로, TF-IDF 기법은 검색 엔진에서 유사도가 높은 문서를 찾기 위해 사용되는데 이를 계산하는 수학식들은 다음과 같다.
[수학식 1]
여기서 는 특정 문서 에서 특정 단어 의 빈도율을 의미하고 그 단어가 반복적으로 나올수록 높은 값을 갖는다.
[수학식 2]
는 특정 단어 를 포함하는 문서 의 비율의 역수 값으로, 단어가 여러 문서에서 흔하게 나타날수록 낮은 값을 갖는다.
[수학식 3]
를 곱한 값으로, 어떤 단어가 어떤 문서에 더 적합한지 수치화시킬 수 있다.
TF-IDF 방식은 수학식 1에 의한 단어의 빈도와 수학식 2에 의한 역문서빈도 (문서의 빈도에 특정한 역수)를 이용하여 수학식 3과 같이 문서 단어 행렬 내의 단어의 중요도에 따라 가중치를 반영하는 하는 방식이다.
실시 예에서 블록 단위의 코드 상의 단어의 특징 또는 패턴에 기반하여 해당 단어가 포함된 문서를 공격 식별자(T-ID)라고 추론할 수 있다. 따라서, 블록 단위의 코드로부터 추출된 패턴에 대해서 TF-IDF를 계산하면, 특정 공격 식별자(T-ID) 내에서 빈번하게 나타나는 패턴을 추출하거나 또는 특정 공격 식별자(T-ID)와 관련 없는 패턴을 가지는 코드를 제거할 수 있다.
예를 들어, 특정 패턴 A는 모든 공격 식별자(T-ID)들에서 발현되는 패턴이라고 했을 때, 특정 패턴 A에 대한 TF-IDF 값은 낮게 측정될 것이다. 그리고 이러한 패턴은 실제 공격 식별자(T-ID)를 구분하기 위해 불필요한 패턴임을 판단할 수 있다. TF-IDF와 같은 자연어의 유사도 판단을 위한 알고리즘은 머신 러닝 알고리즘의 학습을 통해 수행될 수도 있다.
실시 예는 이러한 불필요한 패턴을 제거하여 불필요한 연산을 줄이고 추론 시간을 단축시킬 수 있다.
상세하게 실시 예는 변환되어 블록 단위 코드의 데이터에 대해, 여러 가지 자연어 처리의 텍스트 표현에 기초한 유사도 알고리즘을 수행할 수 있다. 유사도 알고리즘을 통해 공격 식별자와 관련이 없는 패턴의 코드는 제거하여 아래 수행되는 알고리즘 수행과 머신 러닝에 따른 분류 과정의 수행을 크게 단축시킬 수 있다.
실시 예는 블록 단위의 코드 상의 특징 또는 패턴을 기반하여 공격 식별자의 패턴을 분류하기 위해 분류 모델링을 수행할 수 있다. 실시 예는 벡터화된 블록 단위의 코드 특징 또는 패턴이 알려진 공격 식별자의 패턴인지를 학습하고, 이를 정확한 공격 기법이나 구현방식으로 분류할 수 있다. 실시 예는 악성 코드와 유사한 코드 패턴이 있다고 판단된 코드에 대해 정확한 공격 구현 방식, 즉 공격 식별자와 공격자를 분류를 위해 여러 가지 앙상블 머신 러닝 모델들을 이용한다.
앙상블 머신 러닝 모델들은 준비된 데이터를 여러 개의 분류 노드들을 생성하고 각 분류 노드의 대한 노드의 예측을 결합하여 정확한 예측을 수행하는 기법이다. 위에서 설명한 바와 같이 블록 단위의 코드 상의 단어의 특징 또는 패턴이 어떤 공격 구현 방식인지, 즉 공격 식별자 또는 공격자인지 분류하는 앙상블 머신 러닝 모델들을 수행한다.
앙상블 머신 러닝 모델들을 적용 시에 과탐과 오탐을 방지하기 위해 준비된 데이터의 분류를 위한 임계 값을 설정할 수 있다. 설정된 탐지 임계 값 이상의 데이터들만 분류하고 설정된 탐지 임계 값에 도달하지 못하는 데이터는 분류 수행을 하지 않을 수 있다.
기술 바와 같이 데이터 처리 속도를 높이고 데이터의 정확한 분석을 위해 여러 가지 데이터 형식의 변환이 사용될 수 있다. 위에서 기술한 데이터 변환 방식을 앙상블 머신 러닝 모델들에 적용한 구체적인 실시 예는 이하에서 상세히 설명한다.
제 4단계로서 공격 기법(TTP)을 식별하여 라벨링을 부여하는 프로파일링 하는 과정을 설명하면 다음과 같다.
이미 분석된 공격 코드 또는 악성 코드에 기반하여 입력된 바이너리 데이터의 OP-CODE와 ASM-CODE를 포함하는 디스어셈블드 코드의 특징 추출을 통해 벡터화시키는 예를 위에서 기술하였다.
이렇게 벡터화된 데이터는 머신 러닝 모델링을 통해 학습된 후 특정 공격 기법으로 분류되고 분류된 코드들은 프로파일링 과정에서 상기 분류된 데이터의 라벨링이 수행된다.
라벨링은 크게 두 부분에 수행될 수 있는데 하나는 표준화된 모델에서 정의한 공격 식별자에 대한 고유 인덱스를 붙이는 것이고 다른 하나는 공격 코드를 작성한 사용자에 대한 정보를 기입하는 것이다.
라벨링은 표준화된 모델, 예를 들면 MITRE ATT&CK에서 반영된 공격 식별자(T-ID)에 따라 부여하도록 하여 추가적인 작업 없이 사용자에게 정확한 정보를 전달할 수 있도록 한다.
그리고 라벨링은 공격 식별자뿐만 아니라 해당 공격 식별자를 구현한 공격자를 구별할 수 있도록 부여된다. 따라서 공격 식별자뿐만 아니라 공격자와 그에 따른 구현 방식을 식별할 수 있도록 제공할 수 있다.
실시 예는 기존에 분류된 디스어셈블된 코드(OP-CODE, ASM-CODE, 또는 그 조합)의 데이터 세트를 학습한 데이터를 기반으로 고도화된 프로파일링이 가능한다. 실시 예는 위에서 개시한 정적 분석, 동적 분석, 또는 연관 분석의 데이터도 라벨링을 수행하는 참고 데이터로 활용할 수 있다. 따라서 기존에 분석되지 않은 데이터 세트라고 하더라도 정적, 동적, 및 연관 분석의 결과를 함께 고려하면 매우 빠르고 효율적으로 프로파일링 데이터를 확보할 수 있다.
위에서 3단계의 악성 코드와 유사한 패턴을 가지는 코드를 학습하고 학습된 데이터가 분류되는 과정과 4단계의 분류된 데이터의 프로파일링 과정은 머신 러닝에 알고리즘에 의해 함께 진행될 수 있다.
이에 대한 상세한 예는 아래에서 개시한다. 그리고 프로파일링된 데이터 세트의 실제 예도 아래에서 도면을 참고하여 예시하도록 한다.
도 8은 개시하는 실시 예의 데이터 변환의 일 예로서 디스어셈블드 코드의 OP-CODE 및 ASM-CODE를 정규화된 코드로 변환한 값을 예시한 도면이다.
설명한 바와 같이 실행 파일의 디스어셈블링을 수행하면 OP-CODE 및 ASM-CODE가 결합된 데이터가 출력된다.
실시 예는 디스어셈블링된 데이터로부터 함수 별로 출력되는 주석 데이터를 제거하고 처리가 용이하도록 OP-CODE, ASM-CODE, 및 대응 파라미터의 배치 순서를 변경할 수 있다.
재구성된 OP-CODE와 ASM-CODE를 정규화된 코드 데이터로 변경하는데, 이 도면의 예는 정규화된 코드 데이터로 CRC 데이터를 예시한다.
일 예로 OP-CODE는 CRC-16로 변환하고 ASM-CODE로 CRC-32로 변환할 수 있다.
예시한 표의 첫 번째 행에서 OP-CODE의 push함수를 0x45E9의 CRC-16 데이터로 변경하고, ASM-CODE의 55를 0xC9034AF6의 CRC-32 데이터로 변경한 것을 예시한다.
두 번째 행에서는 OP-CODE의 mov함수를 0x10E3의 CRC-16 데이터로 변경하고, ASM-CODE의 8B EC 를 0x3012FD2C의 CRC-32 데이터로 변경하였다. 세 번째 행에서는 OP-CODE의 lea함수를 0xAACE의 CRC-16 데이터로 변경하고, ASM-CODE의 8D 45 0C를 0x9214A6AA의 CRC-32 데이터로 변경하였다.
네 번째 행에서 OP-CODE의 push함수를 0x45E9의 CRC-16 데이터로 변경하고, ASM-CODE의 50를 0xB969BE79의 CRC-32 데이터로 변경한 것을 예시한다.
이 예와 다르게 CRC 데이터와 다른 다른 정규화 코드 데이터나 길이가 다른 코드 데이터를 사용할 수도 있다.
이렇게 디스어셈블링된 코드를 정규화된 코드로 변경하면 각 코드의 고유성을 확보하면서 이후의 연산, 유사도 산출 및 벡터화 수행을 용이하게 빠르게 수행할 수 있다.
도 9는 개시하는 실시 예의 데이터 변환의 일 예로서 디스어셈블드 코드의 OP-CODE 및 ASM-CODE의 벡터화된 값을 예시한 도면이다.
이 도면에서는 정규화된 OP-CODE 의 코드(위의 예에 따르면 CRC-16)와 정규화된 ASM-CODE (위의 예에 따르면 CRC-32)를 각각 벡터화시킨 결과를 예시한다.
정규화된 OP-CODE 의 코드를 벡터화한 값(OP-CODE Vector)와 정규화된 ASM-CODE의 코드를 벡터화한 값(ASM-CODE Vector)을 이 도면에 표 형식으로 나타내었다.
이 도면의 각 행의 OP-CODE Vector 값과 ASM-CODE Vector 값은 위에서 예시한 각 행의 OP-CODE의 정규화 값과 ASM- CODE의 정규화 값에 대응된다.
예를 들어, 이 도면의 표의 네 번째 행의 CRC 데이터 0x45E9와 0xB969BE79의 벡터화 값들은 각각 이 도면의 표의 네 번째 행의 17897와 185 105 121 44이 된다.
이렇게 정규화된 데이터에 대해 벡터화를 수행하면 디스어셈블링된 OP-CODE의 함수와 ASM-CODE가 각각 고유 특징을 포함하면서 벡터화 값으로 변화된다.
도 10은 개시하는 실시 예의 데이터 변환의 일 예로서 코드의 블록 단위를 해쉬 값으로 변환하는 예를 개시한 도면이다.
유사도 분석을 수행하기 위해서 벡터화된 각 OP-CODE 및 ASM-CODE 의 데이터 세트는 바이트 데이터 형태로 재변환이 수행된다. 재변환된 바이트 데이터는 블록 단위의 해쉬 값으로 변환될 수 있다. 그리고 다시 블록 단위의 해쉬 값들에 기반하여 전체 재변환된 바이트 데이터의 해쉬 값을 생성한다.
실시 예는 재변환된 해쉬 값을 산출하는데 MD5(Message-Digest algorithm 5), SHA1 (Secure Hash Algorithm 1), SHA 256이 등의 해쉬 값을 사용될 수도 있는데, 데이터 사이의 유사도 판단을 위한 퍼지 해쉬(Fuzzy Hash) 함수를 이용할 수 있다.
이 도면의 표에서 첫 번째 행은 데이터에 포함될 수 있는 사람이 가독할 수 있는 character를 나타낸다. 재변환된 바이트 데이터 중 블록 단위에 포함되는 값은 이와 같은 가독성의 character들을 포함할 수 있다.
각 character들은 두 번째 행의 아스키 값(ascii val)인 97, 98, 99, 100, …., 48, 49에 대응될 수 있다.
첫 번째 행의 character 값들을 포함하는 데이터를 세그먼트하여 아스키 값들의 합산이 가능한 블록으로 분리할 수 있다.
표의 세 번째 행은 4개의 character 를 가지는 블록 단위 내에서 각 character 값에 대응되는 아스키 값의 합산 값을 나타낸다.
첫 번째 블록의 경우 그 블록 내 character 에 대응되는 아스키 값(ascii val) 97, 98, 99, 100의 합(ascii sum)인 394의 값을 가질 수 있다.
그리고 마지막 행은 블록 단위의 아스키 값의 합이 Base 64의 표현으로 변환된 경우를 나타낸다. 문자(letter) K는 첫 번째 블록의 합산이 된다.
이러한 방식으로 해당 데이터에 대해 Kaq6KaU라는 시그니처를 얻을 수 있다.
이러한 시그니처를 기반으로 두 개의 블록 단위 데이터에 대한 유사도를 산출할 수 있다.
이 실시 예는 재변환된 바이트 데이터 중 코드에 포함된 블록 단위들에 대해 유사도 판단을 위한 퍼지 해쉬 함수로 해쉬 값을 산출하고, 산출된 해쉬 값들을 기반으로 유사도를 판단할 수 있다. 유사도 판단을 위한 퍼지 해쉬 함수로 CTPH(Context Triggered Piecewise Hashing)를 예시하였으나 데이터의 유사도를 산출할 수 있는 다른 퍼지 해쉬 함수를 사용하는 것도 가능하다.
도 11은 개시하는 실시 예에 따른 앙상블 머신 러닝 모델의 일 예를 나타낸 도면이다.
실시 예는 앙상블 머신 러닝 모델을 이용하여 악성 코드로 판단되는 파일의 공격 식별자(T-ID)를 정확하게 분류할 수 있다.
String Data (Byte Data)로 구성된 블록 단위를 해쉬 값은 N-gram 특징 정보 기반으로 수치화시킨 후 이것이 공격 식별자(T-ID) 또는 분류될 클래스인지를 판단하기 위해 TF-IDF 등의 기법으로 유사도를 계산할 수 있다.
불필요한 연산을 줄여 공격 기법 식별의 성능을 높이기 위해 실시 예는 위 해쉬 값 중 유사도를 기반으로 불필요한 패턴을 제거할 수 있다.
그리고 불필요한 패턴이 제거된 데이터를 앙상블 머신 러닝을 통해 모델링하여 공격 식별자를 분류할 수 있다.
앙상블 머신 러닝 모델의 여러 개의 분류 노드의 학습 결과들을 결합하기는 방식으로 보팅(Voting), 배깅(Bagging), 부스팅(Booting) 등의 방식이 있다 이러한 방식들을 적절히 조합한 앙상블 머신 러닝 모델은 학습 데이터의 분류 정확도를 높이는데 기여할 수 있다.
여기서는 일 예로서 배깅 방식의 랜덤 포레스트(Random Forest) 방식을 적용하는 경우를 예를 들어 공격 식별자를 보다 정확하게 분류하는 방법을 설명한다.
랜덤 포레스트(Random Forest) 방식은 많은 수의 디시전 트리(Decision Tree) 생성하여 단일 디시전 트리에 의한 분류 오류를 낮추고 일반화된 분류 결과를 얻는 방식이다. 실시 예는 준비된 데이터에 대해 적어도 하나 이상의 디시전 트리(Decision Tree)를 이용한 랜덤 포레스트(Random Forest) 학습 알고리즘을 적용할 수 있다. 여기서 준비된 데이터는 블록 단위의 퍼지 해쉬 값으로부터 불필요한 패턴이 제거된 데이터를 의미한다.
블록 단위 해쉬 값의 유사도 판단을 위해 적어도 하나 이상의 노드를 가진 디시전 트리(Decision Tree)모델을 수행한다. 디시전 트리(Decision Tree)의 정보 획득(information gain) 정도에 따라 1개 이상의 클래스(공격 식별자; T-ID)를 구분할 수 있는 특징 값(여기서는 블록 단위 해쉬 값을 기초로 한 분류 패턴의 발현 개수)에 대해 비교 조건을 최적화할 수 있다.
이를 위해 도면에서 예시한 바와 같은 디시전 트리(Decision Tree)를 생성할 수 있다.
이 도면에서 위 쪽의 사각형(2510, 2520, 2530, 2540)들은 인 터미널 노드로서 클래스를 구분하는 조건을 의미하고 아래 쪽의 사각형 부분(2610, 2620, 2630)은 터미널 노드로 분류되는 클래스를 의미한다.
예를 들어 랜덤 포레스트(Random Forest) 모델을 앙상블 머신 러닝 모델로 적용할 경우, 1개 이상의 디시전 트리(Decision Tree)를 이용하여 앙상블 기법을 사용하는 분류 모델이다. 랜덤 포레스트(Random Forest) 모델을 구성하는 디시전 트리(Decision Tree)의 입력 데이터의 특징을 다르게 하여 다양한 디시전 트리(Decision Tree)를 구성한다. 여러 개 생성된 디시전 트리(Decision Tree) 모델에 대해 분류를 수행하고 다수결 투표 기법을 사용하여 최종 분류 클래스를 결정한다. 각 노드의 테스트는 병렬적으로 진행될 수 있어 계산 효율이 높다.
클래스를 분류할 경우 과탐과 오탐을 방지하기 위해 임계값을 설정하고 하한 임계값 이하의 값은 버리고, 탐지 임계값 이상의 데이터 대상으로 분류를 수행할 수 있다.
도 12는 개시하는 실시 예에 따라 머신 러닝으로 데이터를 학습하고 분류하는 흐름을 예시한 도면이다.
입력 데이터의 프로파일링은 분류 단계(S2610)과 학습 단계(S2620)를 포함할 수 있다.
실시 예에서 학습 단계(S2620)는 (a) 해쉬 값 추출 과정, (b) N-gram 패턴 추출 과정, (c) 자연어 처리 분석 (TF-IDF 분석) 과정, (d) 패턴 선택 과정, (e) 모델 학습 과정 등을 포함할 수 있다.
그리고 실시 예에서 분류 단계(S2610)는, (a) 해쉬 값 추출 과정, (b) N-gram 패턴 추출 과정, (f) 패턴 선택 과정, (g) 벡터화에 의한 분류 과정 등을 포함할 수 있다.
실시 예에 따른 프로파일링 단계 중 분류 단계(S2620)를 먼저 설명하면 다음과 같다.
실행 파일 집합이나 처리된 파일로부터 입력 데이터를 수신한다.
데이터베이스에 저장된 실행 파일 집합들로부터 입력 데이터를 수신하거나 또는 위에서 예시한 처리 과정으로부터 전달되는 실행 파일이 포함된 입력 데이터를 수신한다. 입력 데이터는 OP-CODE 와 ASM-CODE 코드를 포함하는 디스어셈블된 코드를 변환시킨 데이터로 벡터화시킨 데이터일 수 있다.
입력 데이터인 디스어셈블된 코드로부터 퍼지 해쉬(Fuzzy Hash) 값을 추출(a)하고 특정 함수에 대한 N-gram 패턴 데이터를 추출한다(b). 이때 기존의 의미 패턴 집합 중 악성 코드와 유사하다고 판단한 패턴을 포함한 2-gram 의 패턴 데이터를 선택할 수 있다(f).
선택한 패턴의 N-gram 데이터를 벡터화 데이터로 변환하고 벡터화 데이터를 의미가 패턴이 결정된 함수로 분류할 수 있다(g).
실시 예에 따른 프로파일링 단계 중 학습 단계(S2610)는 다음과 같이 수행된다.
만약 입력된 데이터가 새로운 파일이라면 입력 데이터인 디스어셈블된 코드로부터 퍼지 해쉬(Fuzzy Hash) 값을 추출한다(a).
추출된 퍼지 해쉬(Fuzzy Hash) 값을 N-gram 데이터(이 예에서는 2-gram)로 벡터화시킨다(b).
추출된 특정 패턴에 대해 TF-IDF 와 같은 자연어 처리 분석을 수행한다(c)
기존의 공격 식별자(T-ID)와 관련된 패턴을 가지는 데이터 세트 중 유사도가 높은 데이터 세트를 선택하고 나머지는 필터링한다(d). 이때 기존의 의미 패턴 집합에 저장된 데이터 세트들과 비교하여 공격 식별자(T-ID)와 관련된 패턴을 가지는 데이터 세트의 일부 또는 전부의 특징을 포함한 샘플 데이터 세트들을 선택할 수 있다.
추출된 샘플 데이터 세트를 기반으로 벡터화한 N-gram 데이터를 학습시킬 수 있다(e).
N-gram 의 벡터화 데이터를 분류 모델에 입력하여 공격 식별자(T-ID) 별로 확률을 얻는다. 예를 들어 N-gram 구조의 벡터화 데이터가 특정 공격 식별자(T-ID) T1027일 확률이 A%이고, 공격 식별자 T1055일 확률이 (100-A)%인 확률 등의 확률을 얻을 수 있다.
분류 모델은 적어도 하나 이상의 디시전 트리를 포함하는 랜덤 포레스트 등의 앙상블 머신 러닝 모델을 이용할 수 있다.
여기서 분류 모델에 기반하여 벡터화한 N-gram 데이터가 어떤 공격 기법 또는 공격자인지 판단할 수 있다.
분류 모델(e)의 분류 결과 또는 기존의 저장된 패턴의 선택(f) 결과에 따라 입력 데이터를 분류하여 라벨링을 수행한다(g).
최종 라벨링이 수행된 결과는 다음의 도면을 참조하여 예시한다.
도 13은 개시하는 실시 예에 따라 입력 데이터를 학습하고 분류하여 공격 식별자와 공격자를 라벨링한 예를 나타낸 도면이다.
이 도면은 프로파일러의 결과로서 공격 식별자, 공격자 또는 공격 그룹, 어셈블리 코드에 대응되는 퍼지 해쉬 값, 그에 대응되는 N-gram(여기서는 2-gram 데이터로 기재)를 각각 표 형식으로 나타낸 도면이다.
실시 예에 따라 프로파일링이 완료되면 다음과 같은 공격 방법의 구현과 관련하여 분류된 데이터를 얻을 수 있다.
실시 예에 의한 프로파일링에 따라 공격 식별자(T-ID)와 공격자 또는 공격자 그룹(Attacker or Group)에 각각 라벨링될 수 있다.
여기서 공격 식별자(T-ID)는 설명한 바와 같이 표준화된 모델에 따를 수 있는데 이 예에서는 MITRE ATT&CK 에서 제공하는 공격 식별자(T-ID)를 부여한 결과를 예시한다.
위에서 기술한 바와 같이 식별된 공격자 또는 공격자 그룹(Attacker or Group)에도 라벨링이 추가될 수 있다. 이 도면은 공격자 또는 공격자 그룹(Attacker or Group)의 라벨링으로 공격자 TA504를 식별한 예를 나타낸다.
SHA-256 (size)는 각각의 공격 식별자(T-ID) 또는 공격자 그룹(Attacker or Group)에 대응되는 악성 코드의 퍼지 해쉬 값과 데이터 사이즈을 나타낸다. 설명한 바와 같이 이러한 악성 코드는 OP-CODE 와 ASM-CODE의 재배치와 조합에 대응될 수 있다.
그리고 N-gram으로 표시한 섹션의 값은 공격 식별자(T-ID) 또는 공격자 그룹과 악성 코드의 퍼지 해쉬 값에 대응되는 N-gram 패턴 데이터로서, 이 예에서는 2-gram 데이터의 일부로 표시하였다.
이 도면에서 예시한 바와 같이 악성 코드(OP-CODE 와 ASM-CODE)의 퍼지 해쉬 값과 N-gram 패턴 데이터에 대응되는 공격 식별자(T-ID) 또는 공격자 그룹이 라벨링되어 저장될 수 있다.
예시한 라벨링된 데이터는 앙상블 머신 러닝의 참조 데이터로 이용될 수 있고, 분류 모델의 참조 데이터로 이용될 수도 있다.
도 14는 실시 예에 따라 공격 식별자를 식별한 결과를 나타낸 도면이다.
이 도면은 유클리언 디스턴스 매트릭스(Euclidean Distance Matrix)를 예시하는데, 유클리언 디스턴스 매트릭스(Euclidean Distance Matrix)는 두 데이터 세트 사이의 유사도를 나타낼 수 있다.
이 도면에서 밝은 부분은 두 데이터 세트의 유사도가 낮은 것을 의미하고 어두운 부분은 두 데이터 세트의 유사도가 높은 것을 의미한다.
이 도면에서 T10XX는 공격 식별자(T-ID)를 의미하고 괄호 안에 character T, K, L은 각각 해당 공격 식별자(T-ID)에 따른 공격 기법을 작성한 공격자 그룹을 의미한다.
즉, 행과 열은 각각의 공격자 그룹들(T, K, L)이 생성한 공격 식별자(T-ID)들을 의미하며 행과 열은 동일한 의미를 가진다. 예를 들어 T1055(K)는 L 공격자 그룹이 생성한 T1055 공격을 의미하고, T1055(K)는 K 공격자 그룹이 생성한 동일한 공격 방법 T1055를 의미한다.
각각의 데이터 세트의 샘플들은 자신의 샘플을 포함하기 때문에 다른 샘플들과의 거리를 각각 계산하면 왼쪽 위에서 오른쪽 아래의 대각선 방향으로 동일성이 높은 분포를 나타낸다.
이 도면을 보면 동일한 공격 식별자(T-ID)의 경우 공격자 그룹이 다르더라도 유사한 특징을 나타내는 것을 확인할 수 있다. 예를 들어 T1027의 공격 식별자는 공격 그룹이 T 또는 K라고 하더라도 공격 기법이 유사하면 유사도가 높게 평가될 수 있다.
따라서, 위의 실시 예와 같이 추출한 데이터 세트를 기반으로 학습을 진행하면 동일한 공격자가 구현한 같은 공격 기법(T-ID)에 대한 특징은 명확하게 식별되고(가장 어두운 부분), 다른 공격자가 구현한 동일한 공격 기법(T-ID)은 유사도가 높은 것(중간 어두운 부분)을 확인할 수 있다.
따라서, 이와 같이 OP-CODE 와 ASM-CODE 의 조합에 기초한 샘플 데이터를 추출하여 적용해 공격 기법을 분류하면 공격자가 다른 경우라고 하더라도 특정의 공격 기법 또는 식별자(T-ID)를 확실하게 분류해 낼 수 있다. 반대로 OP-CODE 와 ASM-CODE 의 조합을 통해 악성 코드 내부에 구현된 특정 코드를 명확하게 식별할 수 있을 뿐만 아니라 공격자, 공격 식별자를 포함함 공격 구현 방식을 식별할 수 있다.
도 15는 개시하는 실시 예에 따라 바이너리 코드에서 추출된 코드들로 공격 기법을 매칭하는 일 예를 나타낸다. 여기에서는 공격 기법을 매칭하는 일 예로 표준화된 모델을 사용하는 예를 개시한다.
여기서 표준화된 모델로 MITRE ATT&CK Framework를 예시한다.
예를 들어 사이버 보안 상 “악성 행위” 라고 하는 것은 분석가에 따라 해석 방식이 다르고 각자가 가지고 있는 식견에 따라서 다르게 해석하는 경우가 많았다.
국제적으로 시스템 상에서 발생하는 “악성 행위”를 표준화 하고 모두가 같은 해석을 할 수 있도록 전문가들 사이에 많은 노력을 수행되고 있다. 미국 연방정부의 지원을 받으며 국가안보관련 업무를 수행하던 비영리 연구개발 단체인 MITRE(https://attack.mitre.org)에서 “악성 행위” 에 대한 정의를 연구하였고 그에 따라 ATT&CK Framework 이라는 것을 만들고 공표하였다. 이 프레임 워크는 사이버 위협 또는 악성코드에 대해 모두가 같은 “악성 행위”를 정의 할 수 있도록 정의하였다.
MITRE ATT&CK Framework (이하, MITRE ATT&CK)는 공격자들의 최신 공격 기술 정보를 정리한 것으로서 Adversarial Tactics, Techniques, and Common Knowledge의 약어이다. MITRE ATT&CK 은, 실제 사이버 공격 사례를 관찰한 후 공격자의 악의적 행위(Adversary behaviors)에 대해서 공격 방법(Tactics)과 기술(Techniques)을 분석하여 다양한 공격 그룹들의 공격 기법들에 대한 정보들을 분류하고 목록화한 표준적인 데이터이다.
MITRE ATT&CK 은 전통적인 사이버 킬체인의 개념과는 약간 관점을 달리하여 지능화된 공격의 탐지를 향상시키기 위해 위협적인 전술과 기술을 체계화(패턴화)한 것이다. 원래 ATT&CK는 MITRE에서 윈도우 운영체제를 사용하는 기업 환경에 사용되는 해킹 공격에 대해서 방법(Tactics), 기술(Techniques), 절차(Procedures) 등 TTP를 문서화하는 것으로 시작되었다. 그 이후 ATT&CK은 공격자로부터 발생한 일관된 공격 행동 패턴에 대한 분석을 기반으로 TTP 정보를 매핑하여 공격자의 행위를 식별해 줄 수 있는 프레임워크로 발전하였다.
개시하는 실시 예에서 언급하는 악성 행위는, MITRE ATT&CK 와 같은 표준화된 모델에 기반하여 악성 코드를 공격 기법에 매칭하여 표현할 수 있는데 표준화된 모델이 어떤 것이든 악성 코드를 요소 별로 식별하고 분류하여 공격 식별자에 매칭할 수 있다.
이 도면의 예 어떻게 악성 코드의 악성 행위와 MITRE ATT&CK 모델 기반으로 공격 기법이 매칭되는지를 개념적으로 나타낸다.
실행 파일 EXE는 파일 실행 시에 수행되는 여러 가지 함수들(Function A, B, C, D, E,…, N,…, Z)을 포함할 수 있다. 그 함수들 중 적어도 하나의 함수를 포함하는 함수 그룹은 하나의 공격 방법(tactic)을 수행할 수 있다.
이 도면의 예에서 함수 A, B, C는 공격 방법(tactic) A에 대응되고, 함수 D, B, F는 공격 방법(tactic) B에 대응되는 예를 개시한다. 유사하게 함수 Z, R, C는 공격 방법(tactic) C에 대응되고, 함수 K 및 F는 공격 방법(tactic) D에 대응된다.
실시 예는 각 공격 방법(tactic)에 대응되는 함수들의 집합과 특정 디스어셈블드 코드 의 부분을 대응시킬 수 있다. 데이터베이스는 이미 인공 지능으로 학습된 디스어셈블드 코드들에 대응될 수 있는 의 공격 방법(Tactics), 기술(Techniques), 절차(Procedures) (TTP)의 공격 식별자 (T-ID)를 저장하고 있다.
공격 방법(Tactics), 기술(Techniques), 절차(Procedures) (TTP)의 공격 식별자 (T-ID)는 표준화된 모델을 따르며 여기 도면의 예시는 사이버 위협 정보의 표준화된 모델로 MITRE ATT&CK 를 예시하였다.
따라서, 실시 예는 바이너리 파일에서 디스어셈블드 코드로부터 추출한 결과 데이터를 표준화된 공격 식별자로 매칭시킬 수 있다. 공격 식별자를 매칭하는 보다 구체적인 방식은 아래에서 개시한다.
도 16은 개시하는 실시 예에 따라 OP-CODE를 포함하는 코드 세트와 공격 기법을 매칭하는 일 예를 나타낸다.
대부분의 인공지능 엔진은 악성 코드의 다양한 특징 정보를 바탕으로 학습된 데이터 셋(data set)을 이용해 악성 코드를 판별한다. 그러면 악성 코드의 악성 여부는 판단이 되지만 이러한 방식은 악성 코드가 왜 악성 코드인지에 대한 설명을 하기 힘들었다. 그러나 예시한 바와 같이 표준화된 공격 방법(TTP)의 식별자로 대응시키면 해당 악성 코드가 어떤 위협 요소가 있는지 식별이 가능하다. 따라서, 실시 예는 보안 관리자에게 사이버 위협 정보를 정확하게 전달하도록 하고, 보안 관리자가 사이버 위협 정보를 체계적이고 장기적으로 관리할 수 있도록 할 수 있다.
실시 예는 디스어셈블드 코드를 기반으로 공격 방법(TTP)을 식별하기 위한 인공 지능 학습용 데이터 셋을 생성할 때 단순히 공격 방법(TTP)의 식별자 또는 라벨링 만을 구분할 뿐만 아니라 공격 방법(TTP)을 어떻게 구현했는지에 대한 특징을 중요한 요소로 반영할 수 있다.
동일한 공격 방법(TTP)을 구현하는 악성 코드라도 개발자에 따라 동일한 코드로 생성하는 것은 불가능하다. 즉, 공격 방법(TTP)의 기술은 인간 구술 언어 형태로 되어 있으나, 개발자에 따라 이를 구현 방식과 코드 작성 방법이 동일하지 않다.
이러한 코드 작성의 차이는 개발자의 역량이나 프로그램 로직을 구현하는 방식이나 습관에 따르는데 이러한 차이는 바이너리 코드 또는 이를 디스어셈블된 OP-CODE 와 ASM-CODE의 차이로 나타낸다.
그래서 단순히 결과적인 공격 방법(TTP)의 타입에 따라 공격 식별자를 부여하거나 대응시키면 악성 코드를 생성하는 공격자 또는 공격자 그룹까지 정확하게 식별하기 힘들다.
반대로 디스어셈블된 OP-CODE 와 ASM-CODE의 특성을 중요한 변수로 반영시켜서 모델링을 수행하면 특정 악성코드나 공격 도구를 개발한 개발자 혹은 자동으로 생성하는 도구 자체까지도 식별이 가능하다.
개시하는 실시 예는 디스어셈블된 OP-CODE 와 ASM-CODE 결합 코드의 고유한 특성에 따라 현대의 사이버 전에서 굉장히 중요한 위협 인텔리전스를 생성하도록 할 수 있다. 즉, 이러한 고유 특성에 기초하면 실시 예는 공격 코드 또는 악성 코드를 어떻게 동작을 하는지, 이것을 누가 어떤 의도로 개발했는지에 대한 내용을 함께 식별할 수 있다.
그리고 추후에 해당 공격자가 계속해서 공격하는 특징 정보를 바탕으로 취약한 시스템을 보완할 수 있고 사이버 보안 위협에 대한 능동적이고 선제적인 대응이 가능하도록 할 수 있다.
이러한 개념 상에서 실시 예는 단순히 OP-CODE 기반으로 공격 결과에 따른 공격 기법을 식별하는 방식과 성능에서 전혀 다른 결과를 제공한다.
실시 예는 공격 방법(TTP)를 구현하기 위해 사용된 코딩 기법을 정확하게 식별하여 분류하기 위해 디스어셈블된 OP-CODE 와 ASM-CODE을 조합된 특징에 기초한 디스어셈블드 코드의 데이터 세트를 생성할 수 있다. 이렇게 생성된 데이터 세트로부터 고유한 특성을 식별하도록 모델링하면 공격 방법(TTP)뿐만 아니라 개발자의 특징 정보, 즉 개발자 (또는 자동화된 제작 도구)가 누구인지까지 식별이 가능하다.
이 도면은 위에서 설명한 방식으로 모델링된 OP-CODE 데이터 세트를 공격 식별자에 매칭하는 예를 나타낸다.
이 예에서 제 1 OP-CODE 세트(OP-CODE set #1)는 공격 기법 식별자 T1011에 매칭되고, 제 2 OP-CODE 세트(OP-CODE set #2)는 공격 기법 식별자 T2013에 매칭됨을 나타낸다. 그리고 제 3 OP-CODE 세트(OP-CODE set #3)는 공격 기법 식별자 T1488에 매칭할 수 있고, 제 N번째 OP-CODE 세트(OP-CODE set #N)는 임의의 공격 기법 식별자 T1XXX에 매칭됨을 나타낸다. 표준화된 모델인 MITRE ATT&CK 은 공격 기법의 식별자를 요소 별로 매트릭스 형식으로 표현하지만, 실시 예는 공격 기법의 식별자 이외에 공격자 또는 공격 도구를 추가로 식별할 수 있다.
이 도면은 편의 상 OP-CODE 데이터 세트로 표시하였으나 OP-CODE 와 ASM-CODE을 포함하는 디스어셈블드 코드의 데이터 세트로 공격 기법을 식별하면 OP-CODE 데이터 세트만으로 공격 기법을 식별하는 것보다 더욱 세분화된 공격 기법을 식별할 수 있다.
실시 예에 따라 디스어셈블드 코드의 데이터 세트의 조합을 분석하면 공격 기법 식별자 뿐만 아니라 공격자 또는 공격 그룹의 식별할 수도 있다.
따라서, 실시 예는 기존의 기술보다 인텔리전스 정보 획득 차원에서 고도화된 기술을 제공할 수 있을 뿐만 아니라 종래의 보안 영역에서 해결하지 못한 문제를 해결할 수 있다.
위와 같이 복잡한 환경에서 정확한 인텔리전스 정보를 확보하기 위해 빠른 데이터처리와 알고리즘이 요구된다. 이하에서는 이와 관련된 추가적인 실시 예와 그에 따른 성능에 대해 개시하도록 한다.
따라서 개시한 실시예에 따르면 머신 러닝으로 학습된 데이터와 정확하게 일치하지 않는 악성 코드라도 탐지하고 대응할 수 있고 악성 코드의 변종에 대응할 수 있다.
실시예에 따르면 악성 코드의 변종이라도 매우 빠른 시간 내에 악성 코드, 공격 기법 및 공격자를 식별할 수 있고 나아가 추후의 특정 공격자의 공격 기법을 예측할 수 있다.
실시예에 따르면 이러한 악성 코드 여부, 공격 기법, 공격 식별자 및 공격자를 기반으로 사이버 공격 구현 방식을 정확히 식별하고 이를 표준화된 모델로 제공할 수 있다. 실시예에 따르면 악성코드 탐지 명 등이 통일되지 않거나 사이버 공격 기법이 정확하게 기술되지 못하는 악성 코드의 정보를 정규화되고 표준화된 방식으로 제공할 수 있다.
또한 기존에 알려지지 않은 악성 코드를 생성 가능성과 이를 개발할 수 있는 공격자들을 예측하고 미래에 어떤 사이버 위협 공격이 있을지 예측 가능한 수단을 제공할 수 있다.
이하에서는 위에서 개시한 사이버 위협 정보 처리 장치 및 그 방법에 대한 다른 실시 예를 개시한다.
위에서 개시한 사이버 위협 정보 처리는 함수 단위의 위협 정보의 특징에 대한 분석이 가능하였다. 그러나 동일한 결과를 행하는 프로그램이라고 하더라도 함수들을 포함하는 프로그램의 로직(logic)에 따라 또는 프로그램의 로직의 변화가 없더라도 함수들이 분리되는 등 다르게 활용되는 경우 공격기법이나 공격 그룹을 명확하게 식별하기 어려운 경우가 있다.
도 17은 함수 단위의 공격 기법 및 공격 그룹 식별을 수행하는 예를 설명하기 위한 도면이다.
이 예에서 실행파일(예, EXE)를 디스어셈블(disassemble)하고 그 실행파일에 포함된 함수들을 식별하였다고 가정한다. 여기서 식별된 함수들을 Function 1, Function 2, Function 3, Function 4로 예시한다.
식별된 함수들 중 Function 2은 함수 연산을 수행하는 인스트럭션(Instruction)들을 포함할 수 있다. 여기서 함수 Function 2에 포함되는 인스트럭션(Instruction)들을 Instruction 1, Instruction 2, Instruction 3, Instruction 4, Instruction 5, Instruction 6, 및 Instruction 7로 표시하였다.
그런데 프로그램 상에서 하나의 함수는 수행 시에 여러 개의 서브 함수에 따라 분리되어 수행되는 경우가 있다. 이 예에서 Function 2이 2개의 서브 함수로 분리되어 수행된다고 가정한다. 그러면 Function 2에 포함되는 2개의 서브 함수에 인스트럭션들로 분리될 수 있다.
여기서는 설명의 편의상 Function 2에 포함되는 1개의 서브 함수에 Instruction 1, Instruction 2, 및 Instruction 3이 포함되고, 다른 1개의 서브 함수에 Instruction 4, Instruction 5, Instruction 6, 및 Instruction 7는 경우를 예시하였다.
그러나 프로그램 상에서는 서브 함수들은 하나의 함수 Function 2에 포함되어 있을 수 있다.
함수 단위로 사이버 위협과 관련된 특징 정보를 추출하는 경우 Function 2에 대응되는 1개의 특징 정보(사이버 위협 특징 정보 A, 간단히 특징 정보 A로 표시)가 식별될 수 있다.
위에 개시된 함수 단위의 사이버 위협과 관련된 특징 정보를 위에서 기재한 실시 예에 따라 분석하면 공격 기법과 공격 그룹을 식별할 수 있다.
도 18는 함수가 분리될 경우의 공격 기법 및 공격 그룹 식별을 수행하는 예를 설명하기 위한 도면이다.
이 실시 예는 위에서 개시한 예와 동일한 결과를 나타내는 실시 예이나, 여기서는 함수들 중 하나의 함수가 명확하게 프로그램 상 서브 함수로 분리되는 경우를 예시한다.
즉, 실행 파일로부터 식별된 함수들 중 Function 2가 프로그램 상에서 Function 2-1 및 Function 2-2로 분리되는 경우를 예시한다. 여기서 Function 2가 Function 2-1 및 Function 2-2로 분리되는 경우라도 Function 2의 하나의 함수가 수행되는 경우와 프로그램 상 로직은 변화는 없다.
프로그램 상 로직은 동일하지만 Function 2가 단순히 2개의 함수들(Function 2-1 및 Function 2-2)로 분리되는 경우 각 함수에 대응되는 특징 정보들(특징 정보 B 및 특징 정보 C)이 달라지므로 특징 정보를 기반으로 한 공격기법과 공격그룹의 식별 결과는 달라질 수 있다.
따라서 이렇게 하나의 함수의 실행과 프로그램 상 동일한 로직을 실행하는 여러 함수를 기반으로 공격기법 또는 공격그룹을 식별하는 경우라도 이하의 실시 예에 따르면 이를 동일한 공격기법과 공격그룹으로 식별할 수 있다.
이하의 실시 예는 프로그램 내의 여러 함수들이 수행하는 인스트럭션들에 따른 제어흐름과 순서를 고려한 특징 정보를 기반으로 공격기법과 공격그룹을 식별하는 실시 예들을 개시한다.
프로그램의 함수들 내의 인스트럭션들의 흐름과 순서를 기반으로 특징 정보를 이용하면 프로그램 내에 함수들이 다르더라도 실질적으로 동일한 로직을 구현하면 특징 정보를 얻을 수 있다.
사이버 위협을 발생시키는 프로그램의 형식이 조금씩 변형되는 경우이거나 변종이라도 하더라도 이러한 특징 정보를 기반으로 공격기법과 공격그룹을 명확하게 식별할 수 있다.
이하에서 함수 내 인스트럭션들에 따른 제어흐름 프로파일링과 순서들을 식별하는 예를 개시한다.
도 19는 실시 예에 따라 사이버 위협에 관련된 특징 정보를 얻는 예를 개시한다.
여기서 EXE로 표시한 실행 함수를 디스어셈블(Disassemble)하여 여러 가지 함수들을 포함하는 제어블록(ControlBlock)들을 얻을 수 있다.
얻은 제어블록(ControlBlock)들 내에 인스트럭션들의 관계 상의 제어흐름을 얻은 후에, 그 제어흐름에 따른 제어블록의 순서를 확인하고 이를 기반으로 인스트럭션 시퀀스를 얻을 수 있다.
그리고 얻은 인스트럭션 시퀀스에 따라 사이버 위협 특징 정보를 식별할 수 있다.
제어블록 또는 이에 대응하는 코드블록을 얻는 상세한 실시 예들을 위에서 이미 개시하였다.
이 예에서 실행 함수(EXE)를 디스어셈블(Disassemble)하여 얻은 제어블록(ControlBlock)들은 ControlBlock1, ControlBlock2, ControlBlock3, … , ControlBlock6으로 표시한다.
여기서 제어블록(ControlBlock)들은 각각 ControlBlock1, ControlBlock2, ControlBlock3, … , ControlBlock6은 각 인스트럭션 세트(Instruction Set)에 대응될 수 있다. 위에서 설명한 것과 같이 위에서 설명한 인스트럭션 세트(Instruction Set)은 각각 다르지만 각 인스트럭션 세트 내의 수행 로직은 동일할 할 수도 있다.
따라서, 제어블록(ControlBlock)들이 동일한 로직을 수행하는지를 식별하기 위해 제어블록(ControlBlock)들에 대해 제어흐름을 분석한다.
예를 들어 여기서는 실시 예를 쉽게 설명하기 위해 프로그램 실행에 따른 코드블록들의 제어흐름을 분석한 그래프를 생성하여 설명한다.
예를 들어 제어블록(ControlBlock)1에 포함되는 인스트럭션 세트 중 실행 순서에 따른 인스트럭션을 C1, C2, C3, …, C6로 표시한다. 조금 더 이해를 쉽게 하기 위해 인스트럭션 세트 중 실행 순서에 따른 인스트럭션을 제어흐름 그래프(Control Flow Graph, CFG)로 표시하였다.
이 예에 나타난 인스트럭션들의 제어흐름 그래프내에 인스트럭션들의 순서를 얻을 수 있는데 여기서는 얻은 순서를 깊이 우선 탐색(Depth First Search, DFS) 방식으로 나타내었다. 깊이 우선 탐색(Depth First Search, DFS) 방식은 하나의 탐색 트리에 첨가 노드로 인스트럭션을 선택하고 이 노드에 적용 가능한 인스트럭션을 적용하고 탐색 트리에 다음 수준의 한 개의 자식 노드로서 인스트럭션을 첨가하는 식으로 반복하는 방식이다.
그러면 제어블록(ControlBlock)에 대응되는 인스트럭션세트 내의 인스트럭션 제어흐름에 따라 적용되는 인스트럭션 순서를 얻을 수 있다.
이 예에서 ControlBlock1에 대응되는 인스트럭션세트1에 포함되는 인스트럭션들의 제어흐름에 따른 순서는 (C1, C2, C4, C5, C3, C6)가 될 수 있다.
ControlBlock2에 대응되는 인스트럭션세트2에 포함되는 인스트럭션들의 제어흐름에 따른 순서는 (C2, C4, C5)가 될 수 있다.
ControlBlock3에 대응되는 인스트럭션세트3에 포함되는 인스트럭션들의 제어흐름에 따른 순서는 (C3, C6)가 될 수 있다
그리고 얻은 인스트럭션 순서에 따른 인스트럭션 시퀀스를 생성할 수 있는데, 이렇게 인스트럭션 시퀀스에 따라 사이버 위협에 대한 특징 정보를 구분할 수 있다.
여기서는 ControlBlock1에 대응되는 인스트럭션세트1를 제어흐름에 따른 순서에 따라 분류한 인스트럭션 시퀀스들이 6개이고, 각 6개의 인스트럭션 시퀀스들마다 하나의 특징 정보가 추출되는 예를 개시하였다.
이와 같이 하면 프로그램 내에 하나의 함수가 분리되거나 실질적으로 동일한 로직으로 수행되는 함수들로 변경되더라도 동일한 로직에 따른 사이버 위협 정보를 구분해 낼 수 있다.
이하에서는 여러 가지 함수들을 포함하는 제어블록(ControlBlock)들 내에 여러 가지 제어흐름들을 이용하여 인스트럭션 시퀀스들을 얻는 여러 가지 예들을 개시한다.
먼저 포함하는 제어블록(ControlBlock)들 내에 여러 가지 제어흐름을 얻는 예를 개시한다.
실행 파일로부터 디스어셈블을 수행하여 얻은 제어블록(ControlBlock)들을 얻는다.
제어블록(ControlBlock)들 내부에 인스트럭션들 중 제어블록 내 특정 블록이나 또는 해당 제어블록 밖의 제어블록을 레퍼런스하는 인스트럭션을 식별할 수 있다. 이렇게 코드 상에 분기하는 인스트럭션을 여기서는 브랜치 인스트럭션(branch instruction) 타입으로 호칭한다.
브랜치 인스트럭션(branch instruction) 타입의 예로서 Call 함수나 Jump 함수 등이 있을 수 있다. 이 함수들은 그 제어블록 내 특정 블록이나 또는 해당 제어블록 밖의 제어블록을 레퍼런스할 수 있다.
따라서, 이러한 브랜치 인스트럭션(branch instruction)에 따른 레퍼런스 주소를 식별하면 인스트럭션들의 제어흐름을 얻을 수 있다.
도 20은 실시 예에 따라 브랜치 인스트럭션(branch instruction) 계열을 이용하여 제어흐름을 얻는 과정을 예시한다.
디스어셈블된 제어블록(cblk1)을 추출하고 추출한 제어블록(cblk1) 내부에서 브랜치 인스트럭션 타입의 인스트럭션을 식별한다.
코드 상에 분기하는 브랜치 인스트럭션 타입의 인스트럭션 지칭하는 레퍼런스 주소 중 제어블록(cblk1)의 외부의 위치를 지칭하는 레퍼런스(아웃고잉 레퍼런스, outgoing-ref로 표시)를 확인한다.
이 도면의 왼쪽은 특정한 아웃고잉 레퍼런스 분석의 일 예를 설명하기 위한 예이다.
이 예에서는 아웃고잉 레퍼런스가 아닌 그 제어블록(cblk1)의 내부의 위치를 지칭하는 레퍼런스(Reference A)는 무시할 수도 있다. 즉, 레퍼런스 A는 제어블록(cblk1)의 내부를 가리키기 때문에 제어흐름 생성시 고려하지 않을 수 있다.
그리고 그 제어블록(cblk1)의 아웃고잉 레퍼런스가 다른 제어블록(cblk2)의 시작 주소 또는 시작 인스트럭션을 가리키는 경우(Reference B)와, 다른 제어블록(cblk3)의 내부 주소 또는 내부 인스트럭션을 가리키는 경우(Reference C)를 나누어 제어흐름을 생성할 수 있다.
이 예에서 레퍼런스 B는 대상 제어블록(cblk2)의 시작 주소 또는 인스트럭션을 가리키므로 대상 제어블록(cblk2)은 그대로 제어흐름 생성에 포함시킬 수 있다.
한편 레퍼런스 C는 대상 제어블록의 내부 중 인스트럭션 2(instr2)를 가리키므로 제어흐름 생성 시에 해당 제어블록(cblk3)의 인스트럭션 2(instr2)부터 마지막 인스트럭션까지 포함하는 새로운 제 3 제어블록(cblk3-2)를 제어흐름 생성에 포함시킬 수 있다.
이 도면의 오른쪽은 위에서 설명한 예시에 따라 특정 제어블록(cblk1)에 대한 제어흐름 생성한 예이다.
왼쪽의 아웃고잉 레퍼런스 분석에 따라 제어블록(cblk1)의 제어흐름을 분석한 결과 제어블록(cblk1)에 대한 제어흐름이 생성될 수 있다.
이와 같은 예에 따라 생성된 제어흐름은, 제 1 제어블록(cblk1)가 제 2 제어블록(cblk2)의 시작 주소 또는 인스트럭션을 지칭하는 경우 제 2 제어블록(cblk2)을 제어흐름 내의 버텍스(vertex)로 포함할 수 있다.
그리고 제 1 제어블록(cblk1)가 제 3 제어블록(cblk3)의 내부 또는 중간 위치나 인스트럭션을 가리키는 경우, 생성된 제어흐름은 가리키는 위치의 인스트럭션부터 제 3 제어블록(cblk3)을 분리하고, 가리키는 위치의 인스트럭션을 시작 인스트럭션으로 하는 새로운 제어블록(cblk3-2)을 버텍스(vertex)로 포함할 수 있다.
실시 예에 따르면, 특정 제어블록의 브랜치 인스트럭션이 아웃고잉 레퍼런스인 경우, 그 아웃고잉 레퍼런스가 지칭하는 위치나 인스트럭션에 따라 제어흐름을 생성할 수 있다.
특정 제어블록에 대해 생성된 제어흐름은 그 아웃고잉 레퍼런스가 제 2 제어블록의 시작 지점을 지칭하는 경우 제 2 제어블록을 버텍스(vertex)로 포함한다. 그리고 생성된 제어흐름은 상기 아웃고잉 레퍼런스가 제 3 제어블록의 중간 지점을 지칭하는 경우 그 지칭 지점의 인스트럭션을 시작 인스트럭션으로 하는 새로운 제어블록을 버텍스(vertex)로 포함한다.
이 도면의 예에서 제 1 제어블록(cblk1)의 레퍼선스 A는 제 1 제어블록(cblk1) 내부를 가리키기 레퍼런스이므로 무시하고, 제 1 제어블록(cblk1)의 레퍼런스 B는 제 2 제어블록(cblk2)의 시작 주소를 가리키므로 제 2 제어블록(cblk2)을 버텍스로 포함한다. 제 1 제어블록(cblk1)의 레퍼런스 C는 제 2 제어블록(cblk2)의 내부를 가리키므로 제 2 제어블록(cblk2)의 인스트럭션 2로부터 새로운 제어블록을 생성하여 버텍스로 포함할 수 있다.
이 도면의 예는 생성된 제어흐름을 제어흐름 그래프(Control Flow Graph, CFG)로 표시한 예인데, 하위 버텍스(vertex)들은 제어블록(cblk)의 시작 주소를 기준으로 버텍스들을 오름차순으로 그래프의 왼쪽으로 위치시킨 예를 나타낸다.
이하에서는 위와 같이 실행파일이 디스어셈블된 제어블록들의 레퍼런스 관계를 탐색하여 생성한 인스트럭션 시퀀스에 따라 상기 실행 파일의 사이버 위협 특징 정보를 얻는 예를 이하에서 개시한다.
레퍼런스 관계에 따라 생성되는 인스트럭션 시퀀스들은 사이버 위협 정보의 특징을 나타낼 수 있다.
위에서 개시한 제어흐름 생성은 깊이 우선 탐색(DFS) 방식을 이용하면 제어블럭의 인스트럭션들을 특정한 원칙에 따른 순서에 따라 병합하여 인스트럭션 시퀀스들을 생성할 수 있다.
이하에서는 사이버 위협 정보의 특징을 얻을 수 있는 인스트럭션 시퀀스들을 결합하는 방식을 예시한다.
인스트럭션 시퀀스들을 결합하는 제 1 예로서 제어블럭 내의 인스터력션들의 레퍼런스 관계에 따라 인스트럭션 시퀀스들을 생성할 경우 제어흐름의 의미가 있는 인스트럭션들을 깊이 우선 탐색하여 인스트럭션 시퀀스를 생성할 수 있다.
여기서 제어흐름의 의미를 가지는 인스트럭션들이란 제어블록 내에 호출되는 인스트럭션들 중 NOP(non-operation) 또는 RET(return) 계열의 함수 또는 JUMP 함수나 CALL 함수 등 브랜치 계열의 함수들을 제거하는 것을 의미한다.
이러한 계열의 함수들은 제어흐름의 그래프를 생성할 경우 그래프의 에지(EDGE)를 생성하는 뿐 실제 인스트럭션 시퀀스를 구성하지 않는다. 따라서 제어흐름의 그래프 내에 인스트럭션들을 깊이 우선 탐색으로 순서대로 결합할 경우 이러한 계열의 함수들은 인스트럭션 시퀀스를 생성하는데 기여하지 않는다.
제어블럭 내의 인스터력션들의 레퍼런스 관계에 따라 인스트럭션 시퀀스들을 생성하는 제 1 예는, 실제 인스트럭션 시퀀스에 포함될 수 있는 의미 있는 인스트럭션들을 결합하는 것으로서 브랜치 또는 단순히 레퍼런스 시키는 인스트럭션은 결합 시 포함시키지 않는다.
제어흐름 그래프에서 깊이 우선 탐색 방식으로 인스트럭션을 결합하므로 브랜치 계열의 인스트럭션 또는 단순히 레퍼런스 시키는 인스트럭션은 사용하지 않고 인스트럭션 시퀀스를 생성한다.
제어블럭 내의 인스터력션들의 레퍼런스 관계에 따라 인스트럭션 시퀀스들을 생성하는 제 2 예로서, 제어블록 내의 인스트럭션 중 CALL 계열의 함수에 의해서 제어블록이 호출될 경우 스택 프레임이 조정될 수 있다.
스택 프레임(Stack Frame)은 스택 영역에 함수를 구분하기 위해 생성되는 공간을 의미한다. 예를 들어 스택 프레임은 Parameters, Return Address, Local variables 등을 포함할 수 있는데 함수 호출 시 생성되고 함수가 종료되면서 소멸된다.
일반적으로 스택 프레임은 스택 시작점을 나타내는 스택 포인터(stack pointer, sp)와 스택 상의 특정 데이터를 가리키는 포인터인 베이스 포인터(base pointer, bp)를 포함하는데, 스택 프레임이 변경되는 경우 스택 포인터(sp)와 베이스 포인터(bp)가 변경될 수 있다.
이와 같은 스택 프레임 상의 포인터와 관련된 인스트럭션들은 제어흐름에서 로직의 잡음으로 역할하기 때문에 깊이 우선 탐색을 사용하는 등 인스트럭션 시퀀스들을 결합하는데 사용되지 않는다. 위에서 예시한 바와 같이 인스트럭션 시퀀스를 결합하는데 브랜치 계열의 인스트럭션을 사용하지 않는 것과 유사하게 스택 프레임과 관련된 인스트럭션도 사용하지 않은다.
도 21은 제 2 예에 따라 예시한 인스트럭션 결합 원칙에 따라 제어블럭의 인스트럭션들을 결합하여 인스트럭션 시퀀스를 생성하는 경우를 예시한다.
CALL 계열의 함수에 의해 제어블록이 호출될 경우 스택 프레임과 관련된 인스트럭션들은 제어흐름에 의한 로직과 관련이 없어서 인스트럭션들을 결합 시에 사용하지 않고 인스트럭션 시퀀스를 생성할 수 있다.
이 도면은 app1로 표시한 샘플 코드의 제어블럭과 app2로 표시한 샘플 코드의 제어블럭을 예시하였다. 샘플 코드 app1과 app2는 동일한 결과를 수행하는 코드이나 이 예에서 app1 샘플 코드는 동일한 코드를 반복하는 반면, app2 샘플코드는 동일한 코드를 반복하지 않지만 동일한 수행을 하도록 fool1이라는 함수가 fool2를 호출하도록 하였다.
app2 샘플 코드의 제어블록 예로 하여 설명하면 app2 샘플 코드의 제어블록 시작 전에 스택 프레임을 초기화할 수 있다. (0x100003eb0 ~ 0x100003eb4).
여기서 코드 상의 (pushq %rbp)는 베이스 포인터 저장하는 것을 의미하고, (movq %rsp, %rbp)는 베이스 포인터에 스택 포인터 저장함을 나타낸다.
그리고 코드 상의 (subq %16, %rsp)는 스택 포인터 위치를 스택 최상단으로 이동하는 것을 나타내는데, 스택은 최상단이 베이스보다 작은 주소를 가지게 된다.
app2 샘플 코드상의 제어블럭의 리턴 전에 스택 정리할 수 있다 (0x100003ef9 ~ 0x100003efd).
여기 코드 상의 (addq $16, %rsp)는 스택 포인터를 베이스(바닥)으로 이동시키는 것을 의미하는데 그 결과 스택의 값을 모두 없앤 효과를 발생한다.
그리고, 코드 상의 (popq %rbp)는 저장했던 이전 베이스 포인터를 다시 복원함을 나타낸다.
따라서, 그 이후에 app1을 호출하면 호출에 의해 그 이전의 스택 프레임에 관련된 인스트럭션들은 제어흐름과 관련이 없으므로, 호출에 의해 인스트럭션을 결합하여 인스트럭션 시퀀스 생성 시에 고려하지 않는다.
이와 같이 스택 프레임과 관련된 함수 분리에 의해 스택 프레임이 조정되는 경우, 즉 스택 프레임과 관련된 인스트럭션들은 제어흐름에 의한 로직과 관련이 없는 경우 인스트럭션 시퀀스를 생성하는데 고려하지 않고 인스트럭션 시퀀스를 생성을 생성한다.
제어블럭 내의 인스터력션들을 이용하여 특징 정보를 포함하는 인스트럭션 시퀀스들을 생성하는 다른 예를 개시한다.
제어블럭 내의 인스터력션들을 이용하여 특징 정보를 포함하는 인스트럭션 시퀀스들을 생성할 경우 제어흐름 분석에 따른 그래프의 에지 웨이트(edge weight)를 반영하여 인스트럭션 시퀀스들을 생성할 수 있다.
제어흐름 분석에 따른 그래프의 에지 웨이트(edge weight)를 반영한 그래프는 이하에서 도면에서 비교 예시한다.
도 22은 제어블럭 내의 인스터력션들을 이용하여 특징 정보를 포함하는 인스트럭션 시퀀스들을 생성하는 다른 예를 설명하기 위한 도면이다.
여기서 동일한 결과를 수행하는 샘플 코드 app1과 app3을 예시하였다
이 예에서는 왼쪽의 app1 샘플 코드가 나타내는 제어블럭은 동일 로직이나 변수만 다른 코드가 2회 반복되는 구조를 가지고 있다.
오른쪽의 app3 샘플 코드는 동일한 코드를 반복하지 않고 이를 함수로 변경한 후 2회 호출(NET보완-6-110)하는 경우를 예시한다.
이 도면의 두 샘플 코드의 결과는 동일하지만 app3 샘플 코드를 기반으로 인스트럭션 시퀀스를 생성할 경우 2회 호출되는 제어블록(0x100003ef0)의 인스트럭션은 제어흐름을 분석한 그래프에 2번 추가해서 인스트럭션 시퀀스를 생성할 수 있다.
이와 같이 제어블럭 내의 인스터력션들을 이용하여 인스트럭션 시퀀스들을 생성할 경우 반복해서 호출되는 인스트럭션은 제어흐름 그래프에서 에지 웨이트(edge weight)를 반영하여 인스트럭션 시퀀스를 생성할 수 있다. 따라서, 생성된 인스트럭션 시퀀스에서 다수 호출되는 인스트럭션이 웨이트(weight)로 반영될 수 있도록 할 수 있다.
제어흐름 분석에 따른 그래프의 에지 웨이트(edge weight)를 반영한 그래프는 이하에서 도면에서 비교 예시한다.
도 23는 제어블럭 내의 인스터력션들을 이용하여 특징 정보를 포함하는 인스트럭션 시퀀스들을 생성하는 또 다른 예를 설명하기 위한 도면이다.
제어블럭 내의 인스터력션들을 이용하여 특징 정보를 포함하는 인스트럭션 시퀀스들을 생성하는 제 4의 실시 예는 다음과 같다.
이 도면에서 예시한 샘플 코드 app1, app2, 및 app3는 위에서 설명한 바와 같다.
샘플 코드 app1는 동일한 코드가 반복 수행되는 코드이고, 샘플 코드 app2는 동일한 코드가 반복되지 않지만 동일한 수행을 하도록 fool1이라는 함수가 fool2를 호출하도록 한 코드이고, 샘플 코드 app3은 함수 fool2를 2회 호출하도록 한 코드이다.
동일한 로직을 수행하는 코드들을 기반으로 인스트럭션 시퀀스를 생성하는 경우라도 파일마다 오프셋이 모두 다르기 때문에 파일 내의 함수의 오퍼랜드(operand)에 따라 인스트럭션 시퀀스가 달라질 수 있다.
이 도면에서 예시하는 바와 같이 동일한 함수에 대해 함수의 연산자인 오퍼랜드(operand)가 모두 달라진다.
이 도면의 박스들 안에 값인 오퍼랜드 때문에 사이버 위협 정보의 특징을 나타낼 수 있는 인스트럭션 시퀀스가 영향을 받을 수 있다.
따라서, 제어블럭 내의 인스터력션들을 이용하여 특징 정보를 포함하는 인스트럭션 시퀀스들을 생성할 경우 함수의 오퍼랜드는 제거하고 오피코드(OP-code)만을 이용해 인스트럭션 시퀀스를 생성할 수도 있다.
도 24은 제어블럭 내의 인스터력션들을 이용하여 특징 정보를 포함하는 인스트럭션 시퀀스들을 생성하는 또 다른 예를 설명하기 위한 도면이다.
제어블럭 내의 인스터력션들을 이용하여 특징 정보를 포함하는 인스트럭션 시퀀스들을 생성하는 제 5의 실시 예로서 제어블럭 내에 인스트럭션을 기반으로 인스트럭션 시퀀스를 생성할 경우 단순히 파라미터를 전달하는 인스트럭션들은 로직 흐름에 잡음으로 동작할 수 있다.
이 도면의 예시한 샘플 코드의 제어블록에서 함수 0x100003ef0는 2번 호출되며 각각 파라미터를 전달하는 과정을 수행한다.
이렇게 단순히 파라미터 전달에만 관련하는 인스트럭션의 경우 제어흐름을 생성할 때 노이즈만 발생시키고 실제 특징 정보 또는 이에 대응되는 인스트럭션 시퀀스에는 의미 있는 기여를 하지 않으므로 제외한다.
이상에서 개시한 바와 같이 실행파일을 디스어셈블하여 어셈블리 코드를 생성할 때 제어블럭 내에 포함된 인스트럭션들을 기반으로 사이버 위협 정보의 특징 정보에 대응하는 인스트럭션 시퀀스를 생성하는 예들을 개시하였다.
위에 예시한 예들은 중복적으로 적용될 수 있기 때문에 위에 설명한 5가지의 예들을 적어도 하나 이상의 예에 따라 인스트럭션 시퀀스를 생성할 수 있다.
도 25은 위의 설명한 예들에 따라 인스트럭션 시퀀스를 생성하는 예를 개시한다.
제어블록 내의 인스트럭션들의 특성, 순서, 및 레퍼런스를 고려하여 결합하면 사이버 위협 정보 등의 특성 정보를 포함하는 인스트럭션 시퀀스를 생성할 수 있다.
이와 같이 인스트럭션 시퀀스를 생성할 경우 일 예는 제어블럭 내의 인스터력션들의 레퍼런스 관계에 따라 JUMP 함수나 CALL 함수 등 코드 상 분기하도록 하는 브랜치 계열의 함수를 제거하고 제어흐름에 따라 인스트럭션 시퀀스를 생성할 수 있다.
인스트럭션 시퀀스를 생성하는 다른 일 예는 스택 프레임과 관련된 함수 분리에 의해 스택 프레임이 조정되는 경우 제어흐름에 의한 로직과 관련이 없는 인스트럭션을 제거하고 인스트럭션 시퀀스를 생성할 수 있다.
인스트럭션 시퀀스를 생성하는 또 다른 일 예는 인스트럭션의 제어흐름 그래프에서 에지 웨이트(edge weight)를 반영하여 인스트럭션 시퀀스를 생성하는 것이다. 이를 이용해 생성된 인스트럭션 시퀀스에서 다수 호출되는 인스트럭션에 대해 제어흐름 분석의 그래프상 웨이트(weight)를 반영하여 인스트럭션 시퀀스를 생성할 수 있다.
인스트럭션 시퀀스를 생성하는 또 다른 일 예는 디스어셈블된 코드에서 오퍼랜드에 의해 오프셋이 달라지므로 함수의 오퍼랜드는 제거하고 오피코드(OP-code)만을 이용해 인스트럭션 시퀀스를 생성할 수 있다.
인스트럭션 시퀀스를 생성하는 또 다른 일 예는 단순히 파라미터 전달에만 관련하는 인스트럭션의 경우 인스트럭션 시퀀스에는 의미 있는 기여를 하지 않으므로 인스트럭션 시퀀스 생성 시에 이를 제외하고 인스트럭션 시퀀스를 생성할 수 있다.
이러한 예들을 적어도 하나 이상 적용하면 디스어셈블된 제어블록 내의 제어흐름을 기반으로 사이버 위협 정보의 특징 정보를 포함할 수 있는 인스트럭션 시퀀스를 생성할 수 있다.
위에서 예시한 샘플 코드 app1, app2, 및 app3에 포함되는 메인 코드(0000000100003f60 <_main>)를 기준으로 인스트럭션 시퀀스를 생성할 수 있다.
생성된 인스트럭션 시퀀스의 코드는 위에서 개시한 바와 같이 정규화 및 벡터화를 수행할 수 있다. 그리고 벡터화된 내용을 해쉬 코드로 변환할 수 있다. 변환된 해쉬 코드는 사이버 위협 정보의 유닉크(unique)한 특징 정보를 포함할 수 있다. 해쉬 코드에 포함된 사이버 위협 특징 정보는 위에서 개시한 인공 지능 기법을 이용하여 변환된 해쉬 코드를 공격 기법과 공격 그룹을 식별할 수 있다.
이 도면에서는 CFG에 대응된 행은, 샘플 코드 app1, app2, 및 app3에 대한 제어흐름 분석에 따른 그래프를 각각 나타낸 것이다.
이 예에서 샘플 코드 app1의 제어흐름 분석에 따른 그래프는 0:100003f60 -> 1:100003ed0으로 표현되고, 샘플 코드 app2의 제어흐름 분석에 따른 그래프는 0:100003f60 -> 1:100003f00 -> 2:100003ed0 로 표현된다.
그리고 샘플 코드 app3의 제어흐름 분석에 따른 그래프는 0:100003f60 -> 1:100003f40 -> 2:100003ef0 로 표현된다. 여기서, 1:100003f40 -> 2:100003ef0의 제어흐름에는 edge weight 2가 반영되었다.
각각의 제어흐름 분석에 따른 그래프는 위에서 예시한 5가지의 예 중 적어도 하나를 적용하여 생성한 것이다.
Instruction Sequence에 대응된 행은 샘플 코드 app1, app2, 및 app3에 대한 인스트럭션 시퀀스들을 각각 나타낸 것이다. 따라서, 샘플 코드 app1, app2, 및 app3가 완전히 동일하지 않더라도 동일한 결과를 수행하는 코드들이기 때문에 위에 예시한 방식들에 따른 인스트럭션 시퀀스들은 모두 동일하게 나타나는 것을 확인할 수 있다.
마지막 행인 Fuzzy Hash에 대응되는 행은 샘플 코드 app1, app2, 및 app3에 대한 인스트럭션 시퀀스들을 해쉬 코드로 변환한 것이다. 각 샘플 코드의 제어블럭의 해쉬 정보는 특징 정보가 될 수 있다.
이 예에서 알 수 있듯이 샘플 코드 app1, app2, 및 app3는 그 코드는 서로 조금씩 다르지만 사이버 위협 정보의 관점에서 동일한 의미를 가진다. 즉, 샘플 코드 app1, app2, 및 app3의 해쉬 코드들은 동일하며 그에 따른 코드의 특징 정보가 동일함을 알 수 있다.
도 26는 개시한 사이버 위협 정보 처리 장치의 다른 일 실시 예를 예시한 도면이다.
사이버 위협 정보 처리 장치의 다른 일 실시예는 프로세서를 포함하는 서버(2100), 데이터베이스(2200), 및 인텔리전스 플랫폼(10000)을 포함할 수 있다
데이터베이스(2200)는 이미 분류된 악성 코드 또는 악성 코드의 패턴 코드를 저장할 수 있다.
서버(2100)의 프로세서는 응용 프로그램 인터페이스(Application Programming Interface) (1100)로부터 수신된 실행 파일을 디스어셈블링하여 디스어셈블된 코드를 획득하는 제1 실행모듈(18101)의 수행할 수 있다.
그리고 서버(2100)의 프로세서는 상기 디스어셈블된 코드 내 인스트럭션들의 관계에 따른 제어흐름에 기반하여 인스트럭션 시퀀스를 생성을 수행하도록 하는 제 2 실행모듈(18503)을 수행할 수 있다.
제2 실행모듈(18103)의 수행 과정의 예는 도 19 내지 도 25에 예시하였다.
그리고 서버(2100)의 프로세서는 상기 생성한 인스트럭션 시퀀스를 사이버 위협 정보와 관련된 특징 데이터 세트로 변환하는 제 3 실행모듈(18505)을 수행할 수 있다. 특징 데이터 세트는 특징 벡터 데이터와 해쉬 함수가 될 수 있다.
서버(2100)의 프로세서는 인공지능엔진(1230)을 수행하고 상기 변환된 특정 포맷의 데이터 세트에 기초하여 상기 저장된 악성코드와 유사 여부를 판단하고 상기 판단에 따라 상기 변환된 특정 포맷의 데이터 세트를 적어도 하나 이상의 정형화된 공격 식별자로 분류하는 제 4 실행모듈(18507)을 수행할 수 있다.
제4 실행모듈(18507)의 수행 과정의 예는 도 7 내지 도 16을 참조하여 설명하였다.
도 27은 개시한 사이버 위협 정보 처리 방법의 다른 일 실시 예를 예시한 도면이다.
실행파일을 디스어셈블한 디스어셈블 코드를 얻는다(S4100).
상기 디스어셈블된 코드 내 인스트럭션들의 관계에 따른 제어흐름에 기반하여 인스트럭션 시퀀스를 생성한다(S4200).
코드 내 인스트럭션들의 관계에 따른 제어흐름에 기반하여 인스트럭션 시퀀스를 얻는 예는 도 19내지 도 25에 상세히 예시하였다.
상기 생성된 인스트럭션 시퀀스를 사이버 위협 정보와 관련된 특징 데이터 세트로 변환한다(S4300).
상기 생성된 인스트럭션 시퀀스들을 특징 벡터 데이터로 변환한 후에 해쉬 함수 값으로 변환할 수 있다. 인스트럭션 시퀀스를 포함하는 코드블록을 벡터 데이터와 해쉬 함수 값으로 변환하는 예는 위에서 상세히 개시하였다. 예를 들면, 데이터 변환에 관하여 도 21 내지 도 24의 실시 예가 사용될 수 있다. 인스트럭션 시퀀스를 포함하는 코드블록을 벡터 데이터와 해쉬 함수 값으로 변환하는 예는 이 실시 예를 참조한다.
상기 사이버 위협 정보와 관련된 특징 데이터 세트를 인공 지능 모델로 학습하여 사이버 위협 정보를 획득한다(S4400). 사이버 위협과 관련된 특징 정보가 포함된 데이터를 인공 지능 모델에 기반하여 학습하여 공격기법 또는 공격그룹을 분류하는 예를 위에서 상세히 개시하였다.
따라서 사이버 위협에만 관여하는 인스트럭션 시퀀스들만을 추출하여 생성한 코드블록으로부터 특정 공격 식별자에 관련된 패턴을 식별할 수 있다. 또한 선택된 공격 식별자에 따른 데이터에 기초하여 확률에 기반하여 정확한 공격 식별자가 결정될 수 있다. 위에서 예시한 바에 따라 공격 그룹도 식별이 가능하다
획득한 사이버 위협 정보는 서버에서 사용자에게 다시 제공할 수 있다. 사용자는 API에 실행파일에 대한 정보를 문의하거나 실행파일을 입력함으로써 그 실행파일과 관련된 구체적인 사이버 위협 정보, 예를 들면 상세한 공격기법 및 공격그룹 등에 대한 정보를 얻을 수 있다.
위에서는 시스템에 대한 실행파일들을 어셈블리어 영역에서 분석하여 사이버 위협 정보를 처리하는 실시예들을 개시하였다.
이하에서는 비실행형 파일로부터 사이버 위협 정보를 식별하고 처리하는 실시예를 개시한다. 최근에 특히 코로나 19 팬데믹으로 인해 경제, 사회, 교육 등 모든 활동이 비대면 중심으로 변화되면서 온라인 상업 활동, 재택근무, 원격 교육 등 수만은 온라인 플랫폼이 확대되고 있다. 따라서 온라인에서 공유되는 비실행형 파일의 수가 늘어났으며 공격자들은 이점을 이용하여 다양한 비실행형 파일을 통한 피싱 공격이나 APT (Advanced Persistent Threat) 공격을 수행하는 경우가 늘고 있다.
그러나 아직까지 일반 사용자들에게 비실행형 악성코드에 대한 경각심도 부족하고, 기존의 안티 바이러스 제품들은 실행형 파일에 맞춰 개발되었기에 비실행형 악성파일을 잘 탐지하지 못한다. 또한 비실행형 악성 파일을 탐지하더라도 탐지 이유에 대한 설명이 부족한 경우가 대부분이다. 따라서 비실행형 악성 파일에 대한 탐지와 그 탐지 근거의 제시가 필요하다. 이러한 점을 고려하여 비실행형 파일로부터 사이버 위협 정보를 식별하고 획득하는 실시 예를 이하에서 상세하게 개시한다.
참고로 여기서 비실행형 파일은 파일의 외형적 형식이 비실행 파일을 의미하며 그 파일의 실행을 위해서는 별도의 실행 프로그램이 필요한 파일을 의미한다. 비실행형 파일을 정확하게 설명하기 위해 도면을 참조하여 설명한다.
도 28는 비실행형 파일 구조와 그 비실행형 파일의 리더 프로그램을 개념적으로 나타낸 도면이다.
파일의 확장자가 PDF나 DOC 등 문서형태 파일로 대표될 수 있는 비실행형 파일들은 이 도면과 같이 그 파일의 내부에 텍스트, 스크립트, 이미지 등 미디어 파일, 그리고 또다른 실행 파일이나 비실행형 파일을 포함(embedding)할 수 있다.
이 도면의 예시와 같이 비실행형 파일은 스크립트, 텍스트나 미디어를 포함할 수 있다. 비실행 파일이 실행 파일을 포함하거나 또 다른 비실행형 파일을 포함할 수도 있다.
비실행형 파일은 해당 파일을 읽을 수 있는 실행 파일(비실행형 파일 리더 프로그램)이 실행되면서 비실행형 파일을 로드하고 그 내용을 확인할 수 있다. 악성 비실행형 파일의 경우, 리더 프로그램에 의해서 로딩되면서(리더 프로그램 실행 중) 리더 프로그램이 다음과 같은 작업을 하도록 유도할 수 있다.
악성 비실행형 파일이 실행되면 예를 들어 악성 행위가 포함된 스크립트가 실행될 수 있다. 또는 그 스크립트 실행으로 악성코드 유포지 서버와 연결해서 해당 악성코드 다운로드 후 실행하거나 악성 행위가 포함되고 임베딩(embedding)되어 있는 실행 파일을 추출 후 실행할 수도 있다.
또한 악성 비실행형 파일이 실행되면 악성 행위가 포함되거나 임베딩되어 있는 비실행 파일을 추출 후 열거나 악성 행위가 포함된, 미디어 파일을 추출 후 열 수도 있다.
이하에서는 비실행형 악성파일을 탐지하고 그에 따른 공격 기법 및 공격 그룹을 식별할 수 있는 실시 예들을 개시한다. 개시하는 실시 예들은 인공 지능 모델을 활용하여 비실행형 파일에 대해 정상 또는 악성을 분류하거나, 비실행형 파일의 공격 그룹을 식별하거나 또는 비실행형 파일의 공격 행위를 식별할 수 있다.
도 29는 비실행형 파일의 사이버 위협 정보를 얻을 수 있는 실시 예의 블록도를 개시한다.
이 실시 예는 파일분석부(4300), 특징처리부(Feature Fusion)(4400), 악성탐지부(Malicious Document Detector)(4500), 공격기법분류부(Attack Technique Classifier)(4610), 및 공격그룹분류부(Attack Group Classifier)(4620)을 포함한다.
파일분석부(4300)는 비실행형 파일(unknown Document)를 수신하고 비실행형 파일의 여러 가지 사이버 위협 정보를 분석할 수 있다.
파일분석부(4300)는 제1 분석부(4310), 제2 분석부(4320), 및 제3 분석부(4330)을 포함할 수 있고, 각 분석부로부터 입력된 비실행형 파일의 특징 정보를 분석할 수 있다.
특징처리부(4400)는 파일분석부(4300)가 분석한 특징 정보를 특징 벡터가 추출되고 추출된 벡터가 악성탐지부(4500)에서 악성 여부가 판단될 수 있도록 적절한 형태로 변환된다.
악성탐지부(4500)는 인공 지능 기법을 기반으로 입력된 특징 벡터가 변환된 데이터에 악성 행위가 포함되는지 탐지할 수 있다. 악성탐지부(4500)가 입력된 데이터에 사이버 위협 정보가 포함되지 않는다고 판단한 경우 정상적인 파일(Normal document)로 판단한다
공격기법분류부(4610)와 공격그룹분류부(4620)는 악성탐지부(4500)가 악성으로 탐지한 데이터에 대해 인공 지능 기법을 기반으로 사이버 위협 정보 체계에 따른 공격 기법(예, T1204.001)과 공격 그룹(예, G001)을 각각 분류할 수 있다.
여기서는 사이버 위협 정보 체계에 따라 비실행형 파일에 포함된 공격 행위가 T1204.001이라는 공격 기법과, 그 공격 행위를 생성한 그룹이 G001이라는 공격 그룹이라는 것을 예시한다.
예시한 블록들은 하드웨어로 구현될 수도 있고 소프트웨어로 구현되어 서버의 프로세서로 각각 실행될 수도 있다. 이하에서는 예시한 블록도의 각 부분의 상세한 예들을 개시한다.
도 30은 파일의 사이버 위협 정보를 얻을 수 있는 예시도 중 파일분석부에 포함되어 파일의 제1 타입의 분석을 실시하는 예를 개시한 도면이다.
제1 분석부(4310)는 입력된 파일 자체를 분석하는데 여기서는 편의상 일종의 정적 분석을 수행하는 것으로 표현한다.
제1 분석부(4310)는 비실행형 파일의 문서 내부에 포함되어 있는 악성 페이로드, 스크립트 등을 추출하고 분석하고 숨겨져 있는 첨부파일이나 다른 파일로 위장한 악성 데이터의 식별하는 등의 정적 분석을 수행한다.
제1 분석부(4310)는 정적특징추출단계, 정적특징처리단계, 및 정적특징변환단계를 수행하는데, 제1 분석부(4310)가 하드웨어적으로 구현된 경우 제1 분석부(4310)은 정적특징추출부(4312), 정적특징처리부(4315), 및 정적특징변환부(4317)을 포함할 수 있다.
제1 분석부(4310)는 정적 분석을 기반으로 비실행형 파일, 예를 들면 문서 내부에 있는 파일을 분리하고, 분리된 파일을 분석할 수 있다. 제1 분석부(4310)는 정적 분석을 기반으로 비실행형 파일 내의 숨겨진 악성 페이로드, 이를 실행할 수 잇는 스크립트 등을 추출하고 문서의 형태에 대한 정보를 추출할 수 있다.
예를 들어 정적특징추출부(4312)는 비실행형 파일 내부의 URI 정보(URIs), 스크립트(Scripts), 임베딩 파일들(Embedding files), 행위관련정보(actions), 텍스트 내용(textual contents) 및 문서 메타 데이터(document metadata) 등을 추출할 수 있다.
정적특징추출부(4312)는, 예를 들어 임베딩 파일들(Embedding files)에 대해서는 이미지 파일(Images)이나 여러 다른 형식의 첨부파일(Attachments)을 추출할 수 있다.
정적특징처리부(4315)는 정적특징추출부(4312)가 추출한 정적특징 정보(URIs, Scripts, Embedding files, Actions 등)를 가공하여 정적특징 정보에 맞게 추가 분석 및 처리를 수행할 수 있다.
정적특징처리부(4315)는 추출된 정보를 세분화하여 처리하여 공격기법과 공격그룹 식별을 구분할 수 있는 특징 정보에 공격자의 의도 정보를 반영하도록 할 수 있다.
예를 들면 정적특징처리부(4315)는 URI 파서로 URI를 파싱하여 URI 메타정보를 얻을 수 있는데, 이를 기반으로 공격자가 2차 감염을 위해 악성 파일을 다운로드하도록 유도하거나, 문서로부터 외부 피싱 웹 사이트에 접속하도록 유도하도록 하는 의도(intuition)를 확인할 수 있다.
정적특징처리부(4315)는 추출된 스크립트 분석을 통해 스크립트 메타데이터를 얻을 수 있으며, 이를 기반으로 공격자가 취약점 공격 또는 악성 행위를 위해 어떤 언어 스크립트를 선호하는지에 대한 정보를 얻을 수 있다.
정적특징처리부(4315)는 임베딩 파일로부터 숨겨진 페이로드 식별자를 확인하고 임베딩 파일의 패이로드 타입을 얻을 수 있는데, 이를 기반으로 공격자가 악성 패이로드를 은닉하기 위해 어떤 기법을 적용하는지에 대한 정보를 얻을 수 있다.
또한, 정적특징처리부(4315)는 임베딩 파일로부터 첨부된 파일의 타입을 확인하여 실제 파일 타입(true file type)을 확인할 수 있는데, 이를 기반으로 공격자가 문서 내부에 첨부 파일로 어떤 데이터를 포함시키고 어떤 것을 위장시켰는지에 대한 정보를 얻을 수 있다
정적특징처리부(4315)는 비실행형 파일 내에 포함된 여러 행위(actions)를 분류하고 행위 메타데이터를 얻을 수 있는데, 이를 기반으로 악성 행위 유발을 위해 어떤 행위나 기법을 사용하는지에 대한 정보를 얻을 수 있다.
이와 같이 정적특징처리부(4315)는 추출된 여러 가지 정적분석 정보로부터 공격자 의도 정보를 얻을 수 있다. 그리고, 정적특징처리부(4315)는 비실행형 파일 내부에 어떤 파일이 비정상적인 형태로 포함되어 있고 그 파일이 스크립트 형태인지 등에 대한 정보를 얻을 수 있다.
정적특징변환부(4317)은 정적특징처리부(4315)가 추출한 이러한 정적특징 정보를 변환시킨다. 예를 들어 정적특징변환부(4317)은 특징처리부(4400)가 추출한 정적특징 정보를 기반으로 사이버 위협 정보를 처리할 수 있도록 위에서 설명한 바와 같이 정규화 또는 벡터화시키는 과정을 수행한다.
도 31은 파일의 사이버 위협 정보를 얻을 수 있는 예시도 중 파일분석부에 포함되어 파일의 제2 타입의 분석을 수행하는 예를 개시한 도면이다.
제2 분석부(4320)는 비실행형 파일을 동적 분석을 기반으로 분석하여 사이버 위협 정보를 추출할 수 있다. 제3 분석부(4320)는 비실행형 파일을 리더 프로그램과 같은 대응되는 프로그램에 실행시켜 실제로 실행 시 발생하는 행위 정보를 추출할 수 있다.
이하에서는 편의상 제2 분석부(4320)는 동적 분석 단계를 수행한다고 표현한다.
제2 분석부(4320)는 비실행형 파일의 동적 분석을 위해 안전하게 분리된 가상 환경을 구축하여 가상 환경에서 비실행형 파일에 맞는 대응 프로그램을 실행한다.
제2 분석부(4320)는 비실행형 파일이 대응 프로그램에서 실행될 경우 발생하는 프로세스에서 시스템 콜을 호출했을 때 어떤 파라미터를 가지고 행위를 수행하는지 분석할 수 있다.
제2 분석부(4320)가 실행단계, 동적특징추출단계 특징변환단계를 수행하는데, 제2 분석부(4320)가 하드웨어적으로 구현된 경우 실행부(4322), 동적특징추출부(4325) 및 동적특징변환부(4327)를 포함할 수 있다.
실행부(4322)의 샌드박스리더(Sandbox Document Reader)는 입력된 비실행형 파일을 가상환경에서 대응 프로그램으로 실행하도록 한다.
실행부(4322)의 시스템콜분석부(System Call Hooking)는 실행된 대응 프로그램에서 파생하는 프로세스에서 특정 시스템 콜을 호출하는지 모니터링하고, 이를 통해 어떤 파라미터로 실행 행위를 하는지 분석할 수 있다.
실행부(4322)의 시스템콜분석부(System Call Hooking)는 동적분석을 기반으로 모니터링하는 시스템콜과 그에 대응하여 추출 가능한 파라미터 데이터를 얻을 수 있다.
예를 들면 실행부(4322)의 시스템콜분석부(System Call Hooking)는 프로그램이 실행되면서 Send API가 호출된 경우 그에 대응하는 패킷 데이터 등을 분석하고 네트워크를 통해 어떤 패킷 데이터가 어느 정도 전송되는지 등에 대한 시스템콜의 파라미터 정보를 얻을 수 있다.
실행부(4322)의 시스템콜분석부(System Call Hooking)는 비실행형 파일의 리더 프로그램이 실행하는 시스템콜의 스택을 역으로 추적하면서 그 추적 정보를 분석할 수 있다. 이러한 추적 정보는 시스템콜에 따른 함수의 실행순서와 그 함수들의 사용 변수 정보를 포함한다.
시스템콜분석부(System Call Hooking)에 대한 상세한 실시 예는 이하에서 다시 상세하게 설명한다.
동적특징추출부(4325)는 실행부(4322)가 가상환경에서 실행한 결과를 추출하고 수집할 수 있다. 예를 들어 동적특징추출부(4325)는 스크립트가 실행되면서 발생하는 여러 가지 명령어 정보, 리더 프로그램이 실행에 따른 네트워크 연결로 발생하는 통신 타입, IP 주소, 포트 번호 정보 등을 수집할 수 있다.
동적특징추출부(4325)는 리더 프로그램이 실행되면서 다운로드하는 여러 가지 패킷 데이터를 수집하거나, 그 패킷의 패이로드로부터 대상 파일의 경로나 패킷 내용에 대한 정보를 수집할 수 있다.
다른 예로 동적특징추출부(4325)는 파일이 실행되거나 열리면서 실행되는 프로그램 및 그 대상 파일에 대한 정보를 얻을 수도 있다.
동적특징변환부(4327)는 동적특징추출부(4325)가 수집하거나 추출한 정보를 변환시킨다. 예를 들어 동적특징변환부(4327)는 동적특징변환부(4327)가 추출한 특징 정보를 기반으로 사이버 위협 정보를 처리할 수 있도록 정규화 또는 벡터화시키는 과정을 수행한다.
도 32은 실시 예에 따른 파일에 대한 제2 타입의 분석에 의해 비실행형 파일의 동적 수행에 의해 추출되는 대상과 추출된 정보를 예시한 도면이다.
비실행형 파일을 리더 프로그램으로 실행할 경우 프로그램 상 여러 가지 액션이 수행될 수 있다. 이 도면은 수행된 액션의 카테고리로 스크립트 실행/열기, 서버 연결, 다운로드, 파일 추출, 파일 실행/열기 등의 카테고리를 예시하였으나, 이외에 수많은 다른 액션이 있을 수 있다.
비실행형 파일의 리더 프로그램 실행으로 스크립트가 실행되는 경우 시스템콜API(System Call API)를 통해 WinExec, System 등의 함수가 실행될 수 있다. 이러한 함수들의 실행으로 커맨드라인 명령어가 실행될 수 있는데 여기서는 powershell.exe가 실행되는 것을 예시하였다.
비실행형 파일의 리더 프로그램 실행으로 다른 서버가 연결되는 경우 시스템콜API(System Call API)를 통해 Socket가 실행될 수 있는데 여기서는 그에 따라 발생하는 통신 타입의 파라미터로 AF_INFT를 예시하였다. 또한 경우 시스템콜API(System Call API)를 통해 Connect가 실행될 경우 포트 번호를 파라미터로 얻을 수도 있다.
그 밖에 예시한 바와 같이 비실행형 파일을 리더 프로그램으로 실행할 경우, 수행된 액션의 카테고리에 따라 시스템콜API(System Call API)를 통해 Send, SendTo, Recv, RecvFrom, Fopen, Fwirte, CreateFile, WriteFile, CreateProcess, ShellExecute 등의 함수가 실행될 수 있다. 각각의 시스템콜API(System Call API)의 함수들에 따라 추출될 수 있는 파라미터의 예를 오른쪽 섹션에 예시하였다.
도 33는 파일의 사이버 위협 정보를 얻을 수 있는 예시도 중 파일분석부에 포함되어 파일에 대한 제3 타입의 분석을 실시하는 예를 개시한 도면이다.
제3 분석부(4330)는 비실행형 파일에 대해 실행 준비 단계에서 메모리에 저장된 정보를 근거로 사이버 위협 정보의 특징을 얻는다. 가상 환경에서 동적 실행을 하기 직전의 메모리 상의 데이터를 분석하는 것이므로 이하에서는 편의상 제3 분석부(4330)은 마일드 동적 분석 단계를 수행한다라고 표현한다.
제3 분석부(4330)는 마일드 동적 분석 단계를 수행할 때, 파일 실행에 따른 악성 행위 준비 단계에서 메모리에 포함된 OP-code 및 연산자 정보, 또는 난독화가 해제된 악성 페이로드 데이터를 추출하여 분석할 수 있다.
제3 분석부(4330)는 위에서 설명한 동적 분석을 실행하면서 발생하는 파라미터들을 추출하는 것이 아니다. 제3 분석부(4330)는 가상 환경에서 동적 실행 직전에 악성 행위가 반드시 수반하는 시스템의 주요 함수들에 대해 일명 API 후킹(hooking)하도록 하여 해당 함수가 호출되는 경우 프로세스를 중지(suspended)상태로 하고, 그때 메모리에 로딩된 정보를 추출(dump)하는 것을 의미한다.
이를 위해 제3 분석부(4330)은 실행준비 단계, 메모리추출단계, 데이터추출단계, 및 특징변환단계를 수행하는데, 제3 분석부(4330)가 하드웨어적으로 분리된 경우 제3 분석부(4330)는 실행준비부(4331), 메모리추출부(4333), 데이터추출부(4335), 및 특징변환부(4337)을 포함할 수 있다.
제3 분석부(4330)는 악성 행위를 준비하는 단계의 정보를 기초로 하여 악성 패이로드의 데이터를 메모리에서 얻어 분석할 수 있다.
실행준비단계에서 실행준비부(4331)는 사용자 영역에서 비실행형 파일(Target file)과 리더 프로그램(application)을 준비한다. 실행준비부(4331)는 커널 영역에서 해당 리더 프로그램인 애플리케이션이 수행될 경우 수행되는 이벤트를 대비하여 여러 가지 파일 시스템, 네트워크 시스템 또는 메모리를 준비할 수 있다.
그리고 실행준비부(4331)는 해당 애플리케이션이 실행 직전에 시스템의 주요 함수들에 대해 API 후킹(hooking)하도록 API 후킹 리스트 정보를 가지고 실행에 대비한다. 상세한 API 후킹 리스트 정보는 이하의 도면에서 예시하였다.
메모리추출부(4333)는 API 후킹 리스트 상에 함수가 호출되면 프로세스를 중지 상태로 하고 그때 메모리에 저장된 데이터를 덤핑(dumping)하여 정보를 추출한다. 메모리추출부(4333)는 함수의 프로세스 실행 직전의 데이터를 사이버 위협 정보가 될 수 있는 분석 정보를 얻을 수 있다.
데이터추출부(4335)는 메모리추출부(4333)가 메모리 덤핑하여 얻은 데이터로부터 OP-code, 연산자(operand) 데이터 및 난독화 해제 데이터(deobfuscated data)를 얻을 수 있다.
예를 들어 데이터추출부(4335)는 메모리추출부(4333)가 메모리 덤핑하여 얻은 데이터를 디스어셈블(disassemble)하고, 디스어셈블된 데이터로부터 OP-code, 연산자(operand) 데이터 및 난독화 해제 데이터(deobfuscated data) 등을 분류할 수 있다.
여기의 데이터추출부(4335)는 전체 실행파일이 아닌 API 후킹 리스트 상에 함수들에 대응하는 OP-code, 연산자(operand) 데이터 및 난독화 해제 데이터 등에 대한 변환 데이터로서 분석 대상 데이터를 얻을 수 있다.
특징변환부(4337)는 얻은 OP-code, 연산자(operand) 데이터 및 난독화 해제 데이터(deobfuscated data)등을 기반으로 사이버 위협 정보를 처리할 수 있도록 정규화 또는 벡터화시키는 과정을 수행한다.
도 34은 실시 예에 따라 제3 분석부가 마일드 동적 분석을 수행할 경우 API 후킹 리스트 정보를 예시한 도면이다.
예시한 API 후킹 리스트 정보는 왼쪽 열에 API의 범주와 오른쪽 열에 각 API 범주에 포함되어 API 후킹 리스트에 포함될 수 있는 API를 각각 예시한 것이다
API의 범주로 Window OS Native API, HTML DOM Parser API, VBS Script Engine API를 예시하였다.
Window OS Native API 범주에 대해서는 API 후킹에 사용될 수 있는 API 등을 예시하였고, HTML DOM Parser API 범주에 대해서는 7개 API를 예시하였고, VBS Script Engine API 범주에 대해서는 11개 API에 대해 예시하였다.
도 35은 비실행형 파일의 사이버 위협 정보를 얻을 수 있는 실시 예 중 특징처리부를 설명하기 위한 도면이다.
개시한 바와 같이 제1 분석부(4310), 및 제2 분석부(4320)는 각각 비실행형 파일에 대해 각각 정적특징정보 및 동적특징정보를 획득하고 분석할 수 있다.
한편 제3 분석부(4330)는 가상 환경에서 비실행형 파일과 관련되어 실행되는 애플리케이션의 API 후킹(hooking)함으로써 그때의 메모리 정보로부터 그 비실행형 파일로 사이버 위협 정보를 획득하고 분석할 수 있다. 개시한 실시 예에서는 제3 분석부(4330)의 분석을 마일드 동적 분석이라고 호칭하였다.
특징처리부(4400)는 제1 분석부(4310), 제2 분석부(4320) 및 제3 분석부(4330)가 각각 추출한 정적특징정보, 동적특징정보 및 마일드 동적특징정보를 선택적으로 취합하고 처리할 수 있다.
악성탐지부(4500)은 특징처리부(4400)가 처리한 정보를 기반으로 비실행형 파일이 사이버 위협 정보를 포함하고 있는지 결정할 수 있다.
그리고 공격기법분류부(4610)는 악성탐지부(4500)가 탐지한 사이버 위협 정보의 공격행위 또는 공격기법을 특정 체계에 따라 상세하게 분류할 수 있다.
공격그룹분류부(4620)는 악성탐지부(4500)가 탐지한 사이버 위협 정보의 공격행위가 누구에 의해 계획 또는 실행되는지를 분류할 수 있다.
특징처리부(4400)는 정적특징정보, 동적특징정보 및 마일드 동적특징정보 중 하나를 이용하거나 적어도 둘 이상을 결합한 특징정보를 생성할 수 있다.
특징처리부(4400)는 각각 추출된 정적특징정보, 동적특징정보 및 마일드 동적특징정보의 특성에 따라 또는 공격기법 또는 공격그룹의 분류 모델을 고려하여 추출된 정보를 선택적으로 결합하여 특징정보를 생성한다.
예를 들어 추출된 특징 정보 중 공격기법을 분류하기 위한 특징 정보와 공격그룹을 분류하기 위한 특징 정보와 다르거나 각 특징 정보의 중요도를 달리 평가하여 특징 정보를 결합할 수 있다. 이에 대한 설명은 이하의 도면에서 상세히 예시한다.
따라서, 특징처리부(4400)는 추출된 정적특징정보, 동적특징정보 및 마일드 동적특징정보 중 적어도 하나의 정보를 선택적으로 또는 결합하여 사용할 수 있다.
예를 들어 정적특징정보와 동적특징정보와 다르게 마일드 동적특징정보만 어셈블리 코드 레벨의 정보를 가지고 있다면, 마일드 동적특징정보를 공격그룹 분류 모델에서 사용하지 않을 수도 있다.
이런 경우 악성탐지부(4500)나 공격기법분류부(4610)가 정적특징정보, 동적특징정보 및 마일드 동적특징정보 중 모든 특징정보를 사용하여 악성을 탐지하거나 공격기법을 분류하고, 공격그룹분류부(4620)는 별도로 정적특징정보와 동적특징정보를 선택적으로 사용하여 공격그룹을 분류할 수 있다.
이와 같이 추출된 특징정보가 모두 다른 중요도와 특성을 가지고 있으므로 그에 따라 선택하거나 결합된 특징정보에 기반하여 악성탐지, 공격기법분류 및 공격그룹분류를 각각 수행할 수 있다.
한편, 악성탐지부(4500)는 비실행형 파일에 악성 여부를 기계 학습 모델을 기반으로 판단한다. 예를 들어 악성탐지부(4500)는 정적특징정보, 동적특징정보 및 마일드 동적특징정보 중 적어도 하나의 특징정보를 특징처리부(4400)가 처리한 경우, 그 특징 정보에 대응하는 특징 벡터 데이터를 기반으로 악성 여부를 탐지할 수 있다.
특징 벡터 데이터를 기반으로 악성 여부를 판단하는 예는 위에서 상세히 설명하였다.
도 36는 개시한 실시 예에 따라 비실행형 파일에서 추출된 특징 정보의 중요도를 비교한 예시도이다.
이 그래프의 예는 가로축이 특징정보에 따른 인덱스, 세로축이 중요도 스코어를 나타내는데 공격그룹 모델(Group model)에 따른 특징정보의 인덱스와 공격기법 식별지(TID model)에 따른 특징정보의 인덱스는 서로 다른 특징 인덱스에서 피크 값들 가지고 있다.
이는 위에서 설명한 바와 같이 공격기법을 나타내는 특징정보와 공격그룹을 나타내는 특징정보의 특성이 서로 다름을 의미한다.
따라서, 특징처리부(4400)는 이러한 특징 정보의 특성에 따라 각각 악성탐지, 공격기법분류 및 공격그룹분류 시에 각각 정적특징정보, 동적특징정보 및 마일드 동적특징정보를 다르게 선택하거나 선별적으로 결합하여 탐지모델 또는 분류모델이 수행되도록 할 수 있다.
도 37은 개시한 실시 예에 따라 공격기법분류부의 분류 모델을 설명하기 위한 예시도이다.
이 도면에서 실시 예에 따른 공격기법분류부가 공격기법을 분류하여 출력한 예를 나타낸다.
개시한 바와 같이 공격기법분류부는 비실행형 파일이 사이버 위협 정보를 포함하여 악성으로 판단된 경우, 특징처리부가 출력하는 사이버 위협에 대한 특징 벡터 데이터를 기반으로 기계 학습 모델을 수행하여 비실행형 파일의 공격 기법을 분류한다.
공격기법분류부가 기계 학습 모델을 이용하여 공격 기법을 분류할 때 훈련 데이터의 클래스 레이블(Class label)을 정답지로 하고 이를 기준으로 학습할 수 있다. 이러한 훈련 데이터는, 특징 벡터 데이터인 독립 변수와, 클래스 레이블인 종속 변수를 포함한다.
일반적으로 종속 변수는 클래스 레이블이 하나의 인덱스 번호를 나타내는 정수 값(single label)이 될 수 있다.
그런데 하나의 파일이 여러 개의 공격 기법을 포함할 수 있으므로, 공격기법분류부는 종속 변수를 1개의 정수 값으로 정의하지 않고 T개 벡터로 정의하는 다중 레이블링(multi label) 기법을 사용할 수 있다. 즉, 공격기법분류부는 특징벡터 데이터를 입력받고, 다중 레이블링 분류로서 공격 기법에 대응되는 이진 벡터로 분류할 수 있다.
공격기법분류부는 다중 출력 분류 모델로서 각 클래스 레이블에 대한 이진 분류 모델을 학습하여 분류 가능한 공격 기법 개수인 T개 만큼 분류 모델을 생성할 수 있다.
설명한 바를 간단히 수식으로 표현하면, T차원 벡터인 예측값 y와 i번째 공격기법 분류모델 fi 의 입력 벡터 x에 대한 예측 값 oi는 다음과 같이 정의될 수 있다.
종속 변수인 클래스 레이블은 단일 레이블로 분류하면 T1059.005로 식별되는 공격기법이나 설명한 다중 레이블링으로 분류하면 공격기법 식별자 T1059.005, T1564.007, T1204.002에 대해 [1, 1, 0]와 같은 다차원 벡터로 표시될 수 있다.
그리고 공격기법분류부는 이 도면의 하단에 표시한 바와 같이 3개의 공격기법에 대한 확률로 출력할 수 있다.
도 38는 개시한 예에 따라 비실행형 파일에 대해 여러 분석 기법을 선택적 결합하여 식별한 공격기법을 예시한 도면이다.
이 도면에서 각 공격기법의 식별자(기법ID), 공격기법의 명칭 및 각 공격기법의 설명을 예시하였다.
예를 들면 공격기법 식별자 T1059.001의 명칭은 Command and Scripting Interpreter: PowerShell이고, 이 공격 기법은 PowerShell 스크립트를 이용하여 악성행위를 수행하는 비실행형 파일의 공격기법을 의미한다
위에서 예시한 공격기법 식별자 T1059.005의 명칭은 Command and Scripting Interpreter: Visual Basic이고, 이 공격 기법은 Visual Basic 프로그래밍 언어를 이용하여 악성행위를 수행하는 비실행형 파일의 공격기법을 의미한다.
도 39는 개시한 실시 예에 따라 공격그룹분류부의 분류 모델을 설명하기 위한 예시도이다.
공격그룹분류부는 위에서 예시한 실시예와 다르게 분류 모델에 기반하여 공격그룹을 분류할 수 있다.
공격그룹분류부는 특징처리부가 출력하는 특징벡터 데이터를 기반으로 공격행위를 의도한 공격그룹을 분류할 수 있다.
이러한 클러스터링 일 예로 공격그룹분류부는 특징벡터 데이터에 기초하여 클러스터링 분석을 수행하고 유사한 성격을 포함하는 데이터를 하나의 그룹으로 그룹핑할 수 있다.
공격그룹분류부는 비실행형 파일에서 추출된 문서의 구조, 내용, 공격행위 첨부파일, 악성 데이터의 형태 등에 따라 클러스터링한 그룹들에 대해 클러스터링 식별정보를 각각 부여할 수 있다.
그리고 공격그룹분류부는 부여한 클러스터링 식별정보(또는 그룹핑식별정보)에 따라 학습데이터를 디시전 트리(Decision Tree) 모델로 학습하고 클러스터링한 그룹들을 분류하도록 할 수 있다.
이 도면의 예는 클러스터링 식별정보(또는 그룹핑식별정보)에 따라 그룹들이 어떤 특징으로 구분되는지 분류하는 디시전 트리를 예시한다.
가장 위의 박스는 루트 노드를 나타낸다. 클러스터링 식별정도를 가진 루트 노드가 비실행형 또는 실행형 파일이 포함하는 여러 가지 특징에 따라 디시전 노드에서 서브 노드들로 순차적으로 분리(splitting)되어, 학습된 의사 결정 트리 모델의 트리 구조를 보일 수 있다.
여기서 디시전 노드와 서브 노드들도 각각 박스 형태로 나타내었다.
공격그룹분류부가 공격그룹을 분류할 경우, 클러스터링과 그룹에 따른 그룹프로파일링 정보를 얻을 수 있다. 예를 들어 공격그룹분류부는 문서 내부의 텍스트의 언어, 문서 내부 컨텐츠의 종류, 문서 내부에 특정 스트립트를 포함하는지, 또는 문서 실행 시 자동을 수행되는 액션이 포함되는지 등의 여러 가지 요건을 포함하는 그룹프로파일링 분석 정보를 제공할 수 있다.
이 도면의 예는 공격그룹분류부가 트리 구조 기반에 따라 그룹을 분류하는 예를 나타내며 6번째 분기를 통해 마지막 리프 노드(leaf node)들은 그룹들을 서로 구분할 수 있는 분류 모델을 예시한다.
이 트리 노드의 마지막 리프 노드(leaf node)들은 그룹을 구분하는 그룹 프로파일링 정보가 될 수 있다. 예를 들어 문서의 텍스트가 영어인지, 메타데이터가 포함되고 길이가 어느 것인지, 또는 컨텐츠를 포함하는지 등의 그룹을 구분하는 프로파일링 정보가 될 수 있다.
예를 들면 그룹 프로파일링 정보는 (1) 문서 내부에 텍스트가 영어, (2) 문서 내부에 미디어 컨텐츠가 없음, (3) 문서 내부에 자바스크립트가 포함됨, (4) 문서 실행 시 자동으로 수행되는 액션 기능이 있음 등의 정보를 포함할 수 있다.
이하에서는 위에서 개시한 동적분석 중 시스템콜분석부(System Call Hooking)의 상세한 실시 예를 개시한다. 위에서 개시한 바와 같이 정적분석특징을 기반으로 비실행형 파일의 악성여부를 판단하는 경우가 있을 수 있다.
그러나 정적분석특징만으로는 외 악성 행위를 포함하는 비실행형 파일인지 또는 어떻게 악성 행위가 발생하는지 상세한 설명을 제공하기 힘든 경우가 많다. 따라서, 리더 프로그램을 실행하여 비실행형 파일을 로딩하면 악성 행위가 발생하는 과정을 정확하게 파악하고 그 설명을 제공할 수 있다.
비실행형 파일에 관련된 리더 프로그램이 실행되면 그 리더 프로그램은 운영체제가 제공하는 시스템콜의 조합에 따라 동작을 수행한다.
리더 프로그램이 윈도우 운영체체에서 실행되는 경우 다음과 같은 시스템콜 등이 사용될 수 있다.
도 40은 위에서 설명한 비실행형 파일의 리더 프로그램 실행과 시스템콜을 예시한 도면이다.
비실행형 파일은 스크립트, 미디어파일, 실행파일, 다른 비실행형 파일, 텍스트 등을 포함할 수 있다. 이 비실행형 파일은 대응되는 리더 프로그램에 의해 실행될 수 있다. 리더 프로그램이 윈도우 운영체제에서 실행된다면 설명한 바와 같이 비실행형 파일의 포함된 파일에 따라 이 도면에서 예시한 여러 가지 시스템콜이 사용될 수 있다.
예를 들어 비실행형 파일 내에 스크립트가 실행될 경우 WinExec, CreateProcess, ShellExecute의 시스템콜이 사용되고, 서버가 연결될 경우 Socket, connect 등의 시스템콜이 사용된다. 비실행형 파일 실행에 의해 다운로드 액션이 수행될 경우 send, sendto, recv, recvfrom 등의 시스템콜이 사용될 수 있다. 비실행형 파일 실행에 의해 파일 추출될 경우 fopen, fwrite, CreateFile, WriteFile 등의 시스템콜이, 파일 실행될 경우 WinExec, CreateProcess, system 등의 시스템콜이, 파일 열기 동작이 수행될 경우 ShellExecute, system 등의 시스템콜이 각각 사용될 수 있다.
그런데 리더 프로그램이 호출하는 이러한 시스템콜들은 그 시스템콜이 호출될 경우 후킹(hooking)(도면상 A 지점으로 표시)이 가능하다.
A 지점에서 시스템콜을 후킹할 경우 각 시스템콜에 전달되는 파라미터 값들이나 메모리 값을 덤핑(dumping)하여 얻을 수 있다.
여기서는 윈도우 운영체제에서만 예시하였으나 모바일 운영체제나 리눅스 운영체제 등 다른 운영체제 상에서도 동일한 실시 예가 적용될 수 있다.
도 41은 실시 예에 따라 프로그램 코드상 시스템콜을 후킹하는 예를 설명하기 위한 도면이다.
이 도면에서 명령어 send의 경우 예시한 바와 같은 함수 시그너처를 포함할 수 있다.
이 프로그램 코드 상에서 위 명령어에 따라 전송하는 정보는 [buf]와 [len]의 메모리 데이터를 덤핑함으로써 확인할 수 있다.
이와 같이 비실행형 파일의 리더 프로그램이 실행되는 시스템콜에 따라 전달되는 파라미터 값 및 그 메모리 값을 덤핑하면 악성 행위가 어떤 동작을 유발시키고 어떤 정보가 이용되는지 확인할 수 있다.
도 42은 실시 예에 따라 동적 분석을 통해 사이버 위협 정보를 추적할 수 있는 예를 개시한다.
실시 예는 특정 운영체제 상의 리더 프로그램이 시스템콜을 사용할 경우 그 후킹 시점에서 리더 프로그램의 스택 트래이스(Stack Trace) 정보를 생성할 수 있다.
이 도면의 예시는 윈도우 운영체제에서 시스템콜 WinExec을 후킹한 후 생성한 스택 트래이스 정보를 통해 악성 행위의 순서와 관련 변수들에 따른 악성 행위 내용을 얻는 과정을 나타낸다.
마지막 단계인 WinExec 시스템콜이 후킹된 시점에서 스택 트래이스를 예시하면 다음과 같다. 생성한 스택 트래이스 정보에 따르면 WinExec 시스템콜과 관하여 그 이전에 함수 main -> find_lastest_target -> get_script 순으로 호출된 것임을 알 수 있다.
이 도면상의 함수를 포함하는 박스의 오른쪽에 각 함수가 사용하는 지역변수를 나타내었다. 예를 들면, find_lastest_target 함수는 지역변수로 count와 targets을 사용한다.
마지막에 get_script 함수에서 WinExec 시스템콜이 호출되었다. 이에 따라 악성 행위가 발생한 경우 스택 트래이스 정보를 이용하여 이에 대한 구체적인 메커니즘을 설명할 수 있다.
즉 스택 트래인스 정보 상의 시스템콜과 관련된 호출함수의 역순에 따라 다음과 같은 설명이 제공될 수 있다.
(1) 시스템콜 WinExec을 통해 의심스러운 명령어 lpCmdLine을 실행하려고 함
(2) 리더 프로그램을 통해 main -> find_lastest_target -> get_script 순으로 함수가 실행됨
(3) 각 함수의 지역변수는 다음과 같이 설정되며 지역변수에 대한 설명은 다음과 같음
(a) main:
target_list - 지역변수의 설명
(b) find_lastest_target:
count - 지역변수의 설명
targets - 지역변수의 설명
(c) get_script:
script_src - 지역변수의 설명
cmd - 지역변수의 설명
실시 예에 따르면 비실행형 파일이 리더 프로그램에서 실행되어 악성 행위가 발생될 경우, 리더 프로그램이 운영체제 상의 시스템콜을 후킹한 후, 해당 시스템콜과 관련된 함수들을 순서와 그 함수들의 변수를 이용하여 악성 행위에 대한 구체적인 메커니즘을 제공할 수 있다.
도 43는 개시한 사이버 위협 정보 처리 장치의 다른 일 실시 예를 예시한 도면이다.
사이버 위협 정보 처리 장치의 다른 일 실시예는 프로세서를 포함하는 서버(2100), 데이터베이스(2200), 및 인텔리전스 플랫폼(10000)을 포함할 수 있다
데이터베이스(2200)는 이미 분류된 악성 코드 또는 악성 코드의 패턴 코드를 저장할 수 있다.
서버(2100)의 프로세서는 응용 프로그램 인터페이스(Application Programming Interface) (1100)통해 수신된 비실행형 파일을 수신할 수 있다.
서버(2100)의 프로세서는 API를 통해 수신한 비실행형 파일의 사이버 위협과 관련된 정적특징정보를 분석하여 추출하는 제1 특징분석모듈(18601)의 수행할 수 있다.
제1 특징분석모듈(18601)이 수행하는 정적특징정보의 분석에 대한 상세한 예는 도 30 등에 기술하였다.
서버(2100)의 프로세서는 API를 통해 수신한 비실행형 파일의 사이버 위협과 관련된 정적특징정보를 분석하여 추출하는 제2 특징분석모듈(18603)의 수행할 수 있다.
제2 특징분석모듈(18603)이 수행하는 동적특징정보의 분석에 대한 상세한 예는 도 31, 도 32, 도 40 내지 도 42에 상세히 개시하였다.
제2 특징분석모듈(18603)가 동적특징정보의 분석할 경우, 비실행형 파일의 리더 프로그램이 그 운영체제에 요청하는 시스템콜을 후킹함으로써, 그때 발생한 메모리 데이터를 덤프하여 사이버 위협 정보를 얻을 수 있다.
제2 특징분석모듈(18603)은 시스템콜을 후킹 직전에 호출된 함수의 순서와 그 함수에 대응되는 파라미터로부터 악성 행위에 대한 메커니즘 정보를 얻을 수 있다.
서버(2100)의 프로세서는 API를 통해 수신한 비실행형 파일의 사이버 위협과 관련된 마일드 동적특징정보를 분석하여 추출하는 제3 특징분석모듈(18605)의 수행할 수 있다.
제3 특징분석모듈(18605)이 수행하는 마일드 동적특징정보의 분석에 대한 상세한 예는 도 33 및 도 34에 상세히 개시하였다.
제3 특징분석모듈(18605)은 비실행형 파일을 수행하는 애플리케이션 시스템의 주요 함수들에 대해 API 후킹(hooking)하도록 하여 해당 함수가 호출되는 경우 프로세스를 중지(suspended)상태로 하고, 그때 메모리에 로딩된 정보를 추출(dump)할 수 있다.
제3 특징분석모듈(18605)는 그 메모리의 데이터를 디스어셈블하여 OP-code, 연산자(operand) 데이터 및 난독화 해제 데이터(deobfuscated data)를 얻고, 얻은 데이터에 기초하여 사이버 위협 정보에 관련된 특징 정보를 얻을 수 있다.
서버(2100)의 프로세서는 제1 특징분석모듈(18601), 제2 특징분석모듈(18603), 제3 특징분석모듈(18605)이 분석한 사이버 위협과 관련된 특징 정보들을 선택적으로 결합하여 사이버 위협 정보와 관련된 특징 데이터로 결합하여 생성하는 특징처리모듈(18607)을 수행할 수 있다.
특징처리모듈(18607)의 상세한 실시 예는 도 35에 상세히 개시하였다.
서버(2100)의 프로세서는 특징처리모듈(18607)가 처리한 사이버 위협 정보의 특징 정보에 기반하여 API를 통해 수신한 비실행형 파일에 악성 행위가 포함되는지 탐지하는 악성탐지모듈(18608)을 수행할 수 있다.
서버(2100)의 프로세서는 악성탐지모듈(18608)가 수행한 결과에 따라 비실행형 파일에 악성 행위가 포함된 경우 AI 엔진(1230)을 수행하여 악성 행위의 공격기법과 공격그룹을 분류하는 분류모듈(18609)를 수행할 수 있다.
분류모듈(18609)이 분류하는 비실행형 파일의 공격기법과 공격그룹에 대한 정보를 생성하는 상세한 실히 예는 도 36 내지 도 39에 상세히 개시하였다.
도 44은 개시한 사이버 위협 정보 처리 방법의 다른 일 실시 예를 예시한 도면이다.
비실행형 파일을 입력받고 상기 입력된 비실행형 파일의 사이버 위협과 관련된 적어도 하나의 특징 분석을 수행한다(S4500)
비실행형 파일의 사이버 위협과 관련된 정적특징정보, 동적특징정보, 마일드 동적특징정보를 각각 수행하는 하는 예들을 개시하였다.
정적특징정보의 분석에 대한 상세한 예는 도 30에, 동적특징정보의 분석에 대한 상세한 예는 도 31, 도 32, 도 40 내지 도 42에 각각 예시하였다. 그리고 마일드 동적특징정보의 분석에 대한 상세한 예는 도 33 및 도 34에 상세히 개시하였다.
적어도 하나의 특징분석에 따른 분석정보들을 선택적으로 결합한 특징 정보에 기반해 비실행형 파일에 악성 행위가 포함되는지 탐지할 수 있다(S4600).
비실행형 파일에 악성행위가 포함된 경우 공격기법에 대한 분류정보와 공격그룹 분류 정보를 생성할 수 있다(S4700). 비실행형 파일의 공격기법과 공격그룹에 대한 정보를 생성하는 상세한 실히 예는 도 36 내지 도 39에 상세히 개시하였다.
위와 같이 분석된 비실행형 파일의 사이버 위협 정보를 사용자에게 제공한다(S4800).
따라서 개시한 실시예에 따르면 동일한 결과를 행하는 프로그램이라고 하더라도 함수들을 포함하는 프로그램의 로직(logic)에 따라 또는 프로그램의 로직의 변화가 없더라도 함수들이 분리되는 등 다르게 활용되는 경우라도 공격기법과 공격그룹에 대한 사이버 위협 정보를 정확하게 제공할 수 있고 악성 코드의 변종에 대응할 수 있다.
실시예에 따르면 비실행형 파일에 악성행위가 포함되는 경우라도 이를 정확히 탐지하고 그에 따른 공격 기법과 공격 그룹에 대한 사이버 위협 정보를 제공할 수 있다.
이하에서는 사이버 위협 정보 처리 장치 및 그 방법의 실시 예에 따라 웹페이지(web page)를 모니터링하고 악성 행위나 정보를 포함하는 웹페이지를 식별하고 웹페이지의 구성하는 구성요소가 악성 행위나 정보를 포함하는지 식별할 수 있는 예들을 개시한다.
도 45은 실시 예에서 웹 페이지를 정보를 입력받거나 수집하고 이를 기반으로 악성 정보를 식별하는 예를 개시한다.
실시 예에 따른 사이버 위협 정보 처리 장치 또는 그 방법은 월드 와이드 웹(World Wide Web, 이하에서는 간단히 web page로 기술)을 입력받거나 수집한다. 실시 예는 수집된 웹페이지를 탐색하고 웹페이지가 특정 악성 행위를 발생시키는지를 분석하고 이를 사용자에 대한 사이버 위협 정보를 제공할 수 있다.
이 도면에서 개시하는 사이버 위협 정보 처리 장치의 실시 예는 데이터수집부(5100) 및 분석탐지부(5200)를 포함한다. 사이버 위협 정보 처리 방법의 실시 예로서 기술하면, 실시 예는 데이터 수집 단계 및 분석 및 탐지지단계를 포함한다.
데이터수집부(5100)는 웹수집부(Web Crawler)(5110) 및 데이터번들부(Data Bundle)(5120)를 포함할 수 있다.
웹수집부(Web Crawler)(5110)는 웹 크로링(Web Crawling)을 통해 입력된 웹페이지의 URL과 연관된 정보를 수집할 수 있다.
웹수집부(Web Crawler)(5110)는 웹페이지의 URL과 연관된 모든 정보를 수집하고 빠르게 처리하기 위해 수집하기 위해 페이지의 복사본을 생성하거나 생성된 페이지를 인덱싱한다.
실시 예의 웹수집부(Web Crawler)(5110)는 대용량 URL 입력 데이터를 병렬 프로세싱으로 빠르게 처리할 수 있다. 예를 들어 웹수집부(Web Crawler)(5110)는 하나의 스레드(thread)에서 입력된 URL과 관련된HTML 정보, 웹페이지 내 자바스크립트(javascript) 정보, 이미지 등 미디어 파일 정보, 웹페이지가 배포하려는 여러 가지 파일 등에 대한 정보를 빠르게 병렬적으로 동시에 처리할 수 있는데 이애 대한 상세한 예는 이하에서 개시한다.
데이터번들부(Data Bundle)(5120)는 웹수집부(Web Crawler)(5110)가 병렬적으로 처리한 여러 가지 정도들을 묶어 그룹핑하여 출력할 수 있다.
분석탐지부(5200)는 데이터번들부(Data Bundle)(5120)가 수집하여 처리한 데이터 묶음에서 악성 행위를 포함한 데이터를 분석하고 탐지할 수 있다. 이를 위해 분석탐지부(5200)는 안티바이러스부(AntiVirus)(5210), 난독화해제부(Deobfuscator) (5220), 맬웨어탐지부(YARA) (5230), 데이터파서(5240), AI엔진(5250) 및 자료제공부(Report)를 포함할 수 있다.
예를 들어 안티바이러스부(AntiVirus)(5210)는 수집된 웹데이터는 분석하고 수집한 데이터에 대해 안티바이러스(AntiVirus)기반의 악성코드 식별, 예를 들면 HTML 코드를 식별할 수 있다.
난독화해제부(Deobfuscator) (5220)는 데이터번들부(Data Bundle)(5120)가 출력하는 데이터가 난독화된 경우 난독화를 해제할 수 있다.
맬웨어탐지부(YARA) (5230)는 안티바이러스부(AntiVirus)(5210)가 분석하여 식별한 악성 코드 또는 난독화해제부(Deobfuscator) (5220)가 출력하는 데이터에 대해 일정한 규칙에 따른 패턴이나 시그니처를 포함한 맬웨어, 즉 공격 도구나 공격자의 시그니처 패턴이 있는지 탐색할 수 있다.
예를 들면 맬웨어탐지부(YARA) (5230)는 입력받은 데이터에 대해 YARA 등의 규칙에 따라 맬웨어 탐지와 분류할 수 있다.
데이터파서(5240)는 난독화해제부(Deobfuscator) (5220)의 난독화 해제에 따라 데이터를 파싱할 수 있다.
AI엔진(5250)은 기계 학습 모델에 기초하여 맬웨어탐지부(YARA) (5230)나 데이터파서(5240)가 출력한 데이터에 대해 악성 또는 정상여부를 판별할 수 있다.
개시하는 실시 예의 웹수집부(Web Crawler)(5110)는 병렬적으로 웹페이지와 관련된 데이터를 수집하여 처리할 수 있다. 그리고 분석탐지부(5200)는 위와 같이 3개의 탐지 단계(안티바이러스탐지, 시그니처에 기반한 맬웨어 탐지 및 AI 기반의 탐지)에 따른 탐지 엔진을 함께 사용함으로써 웹페이지가 포함하거나 연관된 데이터에 대한 악성 여부를 식별할 수 있다.
따라서, 실시 예는 웹페이지 데이터에 대해 빠르게 모니터링하고 정확하게 악성 여부를 식별할 수 있다.
도 46는 실시 예에 따른 웹수집부(Web Crawler)의 동작을 예시한 도면이다.
이 도면의 예와 같이 웹수집부(Web Crawler)는 하나의 프로세서에서 여러 개의 스레드를 병렬적으로 처리하면서 웹페이지의 데이터를 수집할 수 있다.
이 도면의 예는 웹수집부(Web Crawler)가 4개의 프로세스를 수행하면서 각각 서로 다른 웹페이지들에 관련된 데이터를 병렬적으로 수집하는 예를 나타낸다.
프로세스 #1, 프로세스 #2 프로세스 #3 , 및 프로세스 #4는 각각 다른 웹페이지의 주소 정보, 예를 들면 URL 정보를 입력받을 수 있다.
이 도면의 예에서 프로세스 #1이 특정 웹페이지의 주소 정보(이 예에서는 www.kisa.or.kr)를 입력 받은 경우, 프로세스 #1의 제1 수집 및 분석 스레드는 입력된 웹페이지의 주소 정보 및 상기 웹페이지의 하위 뎁스(depth)들에 따른 웹페이지 주소 정보를 다른 수집 및 분석 스레드에 분배할 수 있다.
이 도면의 예는 100개의 수집 및 분석 스레드들이 동시에 웹페이지와 그 하위 웹페이지 정보를 수집하는 경우를 예시한다. 병렬로 동작하는 복수의 수집 및 분석 스레드들은 해당 스레드 내에서 각 웹페이지 데이터를 수집하고 분석하는 인메모리 프로세싱(In-memory processing)을 수행할 수 있다.
각 스레드는 예를 들면 원형큐 방식인 dequeue (DeQ)와 enqueue(EnQ) 방식으로 순차적으로 웹페이지와 뎁스에 따른 데이터를 입력받고 처리할 수 있다.
따라서 병렬로 동작하는 복수의 수집 및 분석 스레드들 중 마스터 또는 제 1 스레드는 입력된 웹페이지의 뎁스 정보에 따라 다른 스레드들에 웹페이지의 뎁스 정보에 따라 웹페이지 분석 작업을 할당할 수 있다.
수집 및 분석 스레드의 수집기는 큐 요청에 따른 웹페이지를 즉시 접속하여 인메모리 내 수집기에 웹페이지 데이터를 로딩하여 그 웹페이지 데이터의 HTTP 요청(request)할 수 있다. 그리고 수집 및 분석 스레드가 해당 웹페이지 데이터의 HTTP 응답(response)을 수신하면 이를 인메모리 프로세싱 내의 분석기에서 분석할 수 있다.
이 경우 수집 및 분석 스레드의 분석기가 수신한 HTTP 응답에 하위 웹페이지의 정보가 포함된 경우, 하위 웹페이지의 정보를 다른 스레드에 즉시 분배하여 유사한 웹페이지 데이터 분석이 수행되도록 할 수 있다.
이와 같이 입력된 웹페이지의 URL이 그 내부에 다른 URL을 포함할 수 있으며, 포함된 뎁스 정보에 따라 추가 페이지를 방문하여 분석을 수행할 수 있다.
이 예에서는 프로세스 #2 프로세스 #3 , 및 프로세스 #4을 예시하였는데 유사하게 다른 프로세스들도 유사한 방식으로 연산을 수행할 수 있다.
도 47은 개시한 실시 예의 뎁스 정보에 따라 웹페이지 데이터를 저장하고 관리하는 예를 개시한다.
이 도면에서 입력된 URL에 따른 웹페이지와 뎁스에 따라 링크된 웹페이지 관계를 예시한다.
메인 웹페이지와 그 하위 웹 페이지들에 대해 각각 뎁스 레벨(Depth level)는0, 1, 2로 표시하였다. 이 예에서 뎁스 레벨 0인 메인 웹페이지는 그 내부에 여러 가지 링크나 레퍼런스, 또는 스트립트 파일 등을 포함할 수 있다.
뎁스 레벨 1의 웹 페이지는 메인 웹페이지의 상기 링크와 연결된 HTML 파일이거나 상기 스트립트 파일에 의해 각각 링크된 파일일 수 있다.
이 예에서 뎁스 레벨 1의 HTML 파일은, 상기 메인 웹페이지의 링크와 연결되어 제1자바(JS) 스트립트 파일의 링크 정보와 이미지 파일(예, logo.png)의 링크 정보를 포함한다. 그리고 이 예에서 뎁스 레벨 1의 자바 스트립트 파일은 메인 웹페이지의 스트립트 파일과 링크된다.
다시 뎁스 레벨 2의 웹페이지는 뎁스 레벨 1의 HTML 파일에 링크된 제1자바(JS) 스트립트 파일과 이미지 파일을 포함한다.
이와 같이 실시 예는 메인 웹페이지의 URL 정보가 입력되면 이와 연결된 링크 회수에 따른 뎁스 정보의 URL 정보를 저장하고 관리할 수 있다. 이 경우 실시 예는 URL 정보를 정규화할 수 있다.
실시 예는 RFC 3492에 따른 퓨니코드(Punycode) 기법 등을 사용하여 유니코드 문자열의 호스트 이름에서 허용된 문자만으로 인코딩하는 방식으로 웹페이지와 링크된 웹페이지를 링크에 따라 정규화하고 저장하고 관리할 수 있다.
도 48는 실시 예에 따라 복수의 단계들 또는 레이어들의 분석에 따라 웹페이지 데이터의 악성 여부를 판단하는 예를 개시한다.
실시 예에 따라 웹수집부가 수집한 웹페이지의 데이터는 데이터번들부(5120)에서 임시 저장되었다가 분석탐지부(5200)의 여러 단계들 또는 레이어들의 분석에 따라 악성 여부가 판단된다.
이 도면의 예에서 웹수집부(Web Crawler)(5110)는 웹페이지 내에 여러 가지 타입의 데이터를 분석하고 수집할 수 있다. 이 예에서는 여러 가지의 파일 타입들 중 HTML 파일, 자바 스크립트(JS) 파일, VB 스크립트(VBS) 파일, EXE실행 파일 등을 수집한 경우를 예시하였다.
웹수집부(Web Crawler)(5110)가 수집한 웹페이지 내의 여러 타입의 데이터는 데이터번들부(5120)에 저장될 수 있는데 위에서 개시한 예의 데이터번들부(5120)의 일종으로 메모리 버퍼(5120)를 예시하였다.
메모리 버퍼(5120)에 저장된 여러 타입의 데이터는 여러 레이어에서 악성 여부가 판단될 수 있다.
예를 들면, 안티바이러스부(AntiVirus)(5210)는 데이터의 패턴을 기반으로 이미 알려진 사이버 위협 정보에 대해 탐지를 수행할 수 있다. 안티바이러스부(AntiVirus)(5210)는 기존에 알려진 안티바이러스 엔진 기반으로 알려진 웹 데이터, 예를 들면 HTML 악성 코드를 식별할 수 있다.
난독화해제부(Deobfuscator) (5220)는 메모리 버퍼(5120)에 저장된 데이터 중 난독화가 된 데이터에 대해서는 난독화 해제를 수행한다. 예를 들어 웹페이지 데이터 내에 난독화된 자바스크립트가 있다면 이를 난독화 해제할 수 있다.
맬웨어탐지부(YARA) (5230)는 메모리 버퍼(5120)에 저장되어 난독화가 해제되거나 또는 안티바이러스부(AntiVirus)(5210)로부터 전달받은 데이터에 대해 패턴 기반의 악성 행위 탐지를 수행한다. 맬웨어탐지부(YARA) (5230)는 예를 들어 YARA rule 등에 따라 패턴 기반으로 웹페이지 내 데이터를 탐지하고 그 데이터 내 악성 및 공격 도구를 식별하고, 공격자의 시그니처 패턴을 식별할 수 있다.
AI엔진(5250)는 AI 기반으로 맬웨어탐지부(YARA) (5230)가 전달하는 데이터에 대해 AI 알고리즘을 기반으로 해당 데이터가 악성인지 정상인지 판단할 수 있다.
개시한 예와 같이 수집된 웹페이지 내 데이터를 여러 단계와 레이어들에 걸쳐 분석함으로써 웹페이지 데이터에 대해 더 정확한 사이버 보안 위협을 탐지하고 분석할 수 있다.
한편 웹페이지에 포함된 EXE 파일과 같은 실행파일의 경우, 도 16 내지 도 32 또는 도 33 내지 43에서 기술한 바와 같은 방식으로 악성 여부, 공격 기법 및 공격 그룹을 식별할 수 있다.
웹페이지에 포함된 비실행파일의 경우, 도 44 내지 60에서 기술한 바와 같은 방식으로 악성 여부, 공격 기법 및 공격 그룹을 식별할 수 있다.
실시 예는 수집한 웹페이지에 악성 행위가 탐지된 경우, 자료 확보를 위해 해당 웹페이지의 기록 데이터를 사용자나 관리자에게 제공하고 저장할 수 있다.
예를 들어 실시 예는 특정 웹페이지에 악성인 데이터가 탐지된 경우 그 웹페이지의 HTTP Archive (HAR) format 파일을 저장할 수 있다. 그러면 관리자 또는 보안 담당자는 저장된 웹페이지의 HTTP Archive (HAR) format 파일로부터 로그데이터 등을 포함한 추가 분석을 수행하고 악성 탐지의 근거 자료를 확보할 수 있다.
HTTP Archive (HAR) format 파일에 근거하여 사용자에게 웹페이지의 모니터링 결과를 제공하는 예는 아래에서 예시한다.
도 49는 실시 예에 따라 웹페이지 데이터를 분석하고 탐지한 정보를 제공하는 개념을 예시한다.
위에서 개시한 바에 따라 웹수집부의 웹페이지 크롤링과 분석탐지부의 웹페이지의 데이터 분석 및 악성 탐지가 순차적으로 수행될 수 있다.
웹페이지의 데이터의 악성 탐지 결과 정상으로 판별된 경우, 지속적으로 다른 웹페이지를 크롤링하여 웹페이지 데이터를 수집한다. 그리고 탐지 결과 악성으로 판별된 경우 해당 웹페이지의 재방문을 통해 관련 웹페이지 데이터를 HTTP Archive (HAR) format 파일을 저장할 수 있다.
HTTP Archive (HAR) format 파일은 웹 브라우저와 사이트의 상호작용을 로그데이터를 기록하는 파일이다. 따라서 HTTP Archive (HAR) format 파일 내에 기록된 데이터 목록에는 그 웹페이지의 각종 리소스 파일, HTTP 요청 및 응답 기록 및 웹페이지와 관련된 스크립트 파일의 기록이 모두 포함된다.
실시 예는 사용자나 사이버 보안 담당자는 웹페이지 모니터링 결과로서 이와 같은 웹페이지에 관련된 트랜잭션(transaction) 등 기록 정보를 얻을 수 있다.
사용자는 HTTP Archive (HAR) format 파일과 같은 웹페이지 기록 정보를 재생하여 웹페이지의 기록 정보를 확인하고 악성 행위에 대한 추가 분석하거나 또는 근거 데이터를 얻을 수 있다.
도 50은 위에서 개시한 실시 예가 컴퓨터 상에서 동작하는 일 예를 개시한다.
개시한 바와 같이 데이터수집부(5100)와 분석탐지부(5200)를 포함하는 사이버 보안 위협 정보 처리 장치는 여러 개의 컴퓨터 노드들에서 병렬적으로 구동될 수 있다.
예시한 도면은 마스터 노드와 복수의 슬레이브 노드들을 포함하는 사이버 위협 정보 처리 장치를 예시한다.
하나의 마스터 노드(5710)의 클라우드 시스템의 운영 시스템 상에는 도커 컨테이너(docker container)가 동작할 수 있다. 위에서 예시한 데이터수집부와 분석탐지부가 별도의 하드웨어로 구현될 수도 있으나, 이 도면의 예에서는 도커 컨테이너(docker container) 상에서 동작할 수도 있다.
그런 경우 각 도커 컨테이너 상에 동작하는 애플리케이션들이 클라우드 시스템의 리소스를 이용하여 위에서 개시한 실시 예를 수행할 수 있다.
마스터 노드(5710)는 위에서 개시한 실시 예를 수행할 수 있는 하나 이상의 도커 컨테이너(docker container)들과 데이터베이스를 포함할 수 있다.
마스터 노드(5710)의 하나의 도커 컨테이너에서 동작할 경우, 특정 도커 컨테이너에서 동작하는 데이터수집부는 마스터 노드(5710) 또는 슬레이브 노드들(5720)에서 동작하는 다른 도커 컨테이너에 수집된 웹페이지와 관련된 웹페이지 링크 정보를 전달할 수 있다. 또한 마스터 노드(5710는 웹페이지의 악성 탐지 모니터링과 관련된 작업을 슬레이브 노드들에 로드 밸런싱(load balancing)을 고려하여 할당할 수 있다.
예시한 도커 스웜(docker swarm)을 기반으로 여러 대의 호스트에서 동작하는 웹페이지 모니터링 시스템들은 하나의 마스터-슬레이브 방식의 클러스터 시스템으로 묶어 관리가 가능하다.
이 경우 클러스터 시스템의 마스터 노드(5710)는 슬레이브 노드들(5720)에 주기적으로 하트 비트 패킷을 전송하여 서버의 장애 여부를 판단할 수도 있다.
클러스터 시스템의 마스터 노드(5710)가 슬레이브 노드들(5720)의 상황을 체크하여 서버의 장애가 있는지 판별할 수 있다. 반대로 클러스터 시스템의 마스터 노드(5710)가 웹페이지 모니터링의 처리 능력을 확장하고자 할 경우 새로운 노드에 도커 이미지를 배포하여 클러스터 시스템에 포함시킬 수도 있다.
이와 같이 클러스터 시스템의 마스터 노드(5710)는 개시한 예와 같이 클러스터 내의 노드의 등록과 해제를 수행하여 웹페이지 모니터링 수행에 대해 스케일 아웃(scale-out)을 수행할 수 있다.
도 51은 웹페이지에 포함된 사이버 위협 정보를 처리하는 방법의 일 실시 예를 개시한다.
웹페이지를 수집하고 상기 웹페이지에 포함된 데이터나 링크 뎁스에 따라 링크된 데이터를 분류한다(S5910). 웹페이지를 수집하고 분류할 경우 여러 컴퓨터 노드에 따라 병렬 프로세스로 처리하고, 상기 컴퓨터 노드들의 스케일 아웃에 따라 각 노드의 도커 컨테이너 상에서 수행되도록 할 수 있다. 이에 대한 상세한 예는 도 46, 도 47 및 도 50에 개시하였다.
상기 웹페이지에 포함된 데이터 또는 상기 링크된 데이터에 대해 복수의 레이어들 상에서 악성 여부를 탐지한다(S5920).
상기 웹페이지에 포함된 데이터는 HTML 데이터, 자바 스크립트 데이터, 이미지나 오디오 등 미디어 파일 등 상기 웹페이지가 배포하는 여러 데이터나 파일을 지칭한다. 상기 웹페이지에 링크된 데이터는 상기 웹페이지와 링크된 여러 타입의 데이터나 파일을 포함한다. 이에 대한 상세한 예는 도 48에 개시하였다.
예를 들어 제 1 레이어에서는 상기 웹페이지에 포함된 데이터 또는 상기 링크된 데이터에 대해 상기 안티바이러스 기반의 HTML 데이터 패턴에 따라 사이버 위협 정보를 탐지할 수 있다.
예를 들어 제 2 레이어에서는 상기 웹페이지에 포함된 데이터 또는 상기 링크된 데이터에 대해 일정한 규칙에 따른 패턴이나 시그니처를 포함한 맬웨어, 즉 공격 도구나 공격자의 시그니처 패턴에 따라 사이버 위협 정보를 탐지할 수 있다. 상기 웹페이지에 포함된 데이터 또는 상기 링크된 데이터가 난독화된 경우 난독화 해제를 수행할 수 있다. 예를 들면 난독화가 적용된 자바 스크립트의 경우 난독화 해제 도구를 적용하고 YARA 룰 등에 따라 시그니처 패턴을 찾을 수 있다.
예를 들어 제3 레이어에서는 상기 웹페이지에 포함된 데이터 또는 상기 링크된 데이터에 대해 인공 지능 알고리즘에 기반하여 악성 행위 데이터 등의 사이버 위협 정보의 포함여부를 탐지할 수 있다.
상기 웹페이지에 포함된 데이터 또는 상기 링크된 데이터에 대한 3개의 탐지 단계들은 병렬적으로 또는 순차적으로 진행될 수 있다.
위 탐지 단계들에서 악성으로 탐지된 상기 웹페이지에 포함된 데이터 또는 상기 링크된 데이터의 경우 해당 웹페이지의 기록 데이터를 제공하거나 저장한다(S5930).
웹페이지의 기록 데이터는 HTTP Archive (HAR) format 파일과 같은 웹페이지 기록 정보를 재생하여 웹페이지의 기록 정보를 포함할 수 있다. 사용자는 기록 데이터에 근거하여 악성 행위에 대한 추가 분석하거나 또는 근거 데이터를 얻을 수 있다.
이하에서는 수집한 웹페이지 데이터가 악성 여부인지 판별하는 더욱 구체적인 실시 예를 개시한다.
웹사이트를 제공하는 레퍼런스 정보, 예를 들면 URL 정보를 획득하면 그 URL의 웹페이지 데이터로부터 HTML (Hypertext Markup Language) 데이터를 얻을 수 있다.
이전의 HTML의 악성 탐지나 분석은 단순히 HTML 데이터 전체를 기계 학습 기반으로 학습하여 HTML 내 특정 태그 수의 빈도 수나 특정 문자의 빈도 수에 따라 악성을 판별하였다. 따라서, HTML 내 어떤 것이 구체적인 악성 행위를 유발하고 누가 유발하는 것인지 확인하기 어려웠다.
개시하는 실시 예는 이러한 문제점을 극복하기 위해 HTML 데이터 내의 구체적인 공격 행위 식별과 심지어 공격 그룹 식별이 가능하다.
웹페이지 데이터는 이를 기술하는 HTML (Hypertext Markup Language) 데이터를 포함하는데, HTML (Hypertext Markup Language) 데이터는 웹페이지를 여러 가지 명령어 집합인 태그(tag)를 이용하여 웹페이지의 내용을 기술할 수 있다.
예를 들면 HTML 데이터는 그 데이터 내에 각 태그의 열고 닫음을 포함하는 태그의 묶음을 포함하고, 이와 같이 태그 묶음은 HTML 데이터의 부분을 구성할 수 있다.
HTML은 웹 브라우저마다 지원하는 태그가 조금씩 다르지만 대체로 비슷한 태그를 지원한다. 따라서, 실시 예는 태그 묶음에 포함되는 기술 내용에 대해 공격자의 공격 행위를 탐지하고 식별할 수 있다.
예를 들어 공격자는 웹페이지의 HTML 태그의 기능을 악용하여 공격 행위를 수행할 수 있다. 공격자가 웹페이지에서 동일한 공격 기법이 사용한다면 그 웹페이지 HTML의 태그 내 기술 되는 데이터는 사이버 위협 정보의 분석 시 유사하게 나타날 수 있다.
실시 예는 HTML 데이터의 태그 단위의 부분 영역의 유사도를 기반으로 악성 태그 혹은 그 악성 태그와 유사한 악성 태그인지를 식별할 수 있다.
이하에서 이에 대한 상세한 실시 예를 개시한다.
도 52은 사이버 위협 정보를 처리하는 방법의 일 실시 예를 개시한다.
링크 정보에 기반하여 웹페이지 데이터를 획득하고 상기 웹페이지 데이터의 태그 구조 정보를 분석한다(S6110). 웹페이지 데이터의 태그 구조 정보의 일 예로서 이하에서는 돔 트리(Document Object Model(Dom) Tree) 구조를 예시한다.
상기 태그 구조 정보에 따라 상기 웹페이지 데이터의 태그 영역에 포함된 데이터를 태그 특징 데이터로 변환한다(S6120). 태그 구조 정보에 따라 HTML 데이터 중 공격자가 수정할 수 있는 태그 단위의 데이터를 태그 특징 데이터로 변환할 수 있다. 태그 특징 데이터의 상세한 실시 예는 이하에서 개시한다.
변환된 태그 특징 데이터를 학습하여 상기 태그 영역에 포함된 데이터의 사이버 위협 정보를 획득한다(S6130). 태그 특징 데이터를 인공 지능 알고리즘의 분류 모델로 분류하여 각 태그 부분에 악성 행위에 대한 공격 기법과 공격 그룹을 식별할 수 있다.
도 53는 실시 예에 따른 사이버 위협 정보를 처리하는 방법으로서 HTML 데이터의 태그에 기반한 구조 정보를 예시한다.
HTML 데이터의 태그 단위로 분석이 가능한데 이 도면은 HTML 데이터의 태그 단위의 돔 트리(Document Object Model(Dom) Tree)로 나타낸 예이다. 돔 트리(Dom Tree)는 태그들의 순차적 차례에 따른 깊이와 관련된 되어 태그 단위로 오브젝트 또는 노드가 될 수 있다. 따라서, HTML 데이터의 돔 트리(Dom Tree)를 얻으면 그 HTML 구조를 쉽게 파악할 수 있다.
이 도면의 예는 HTML 데이터를 분석한 예로서, 태그들의 위치 및 깊이에 따른 돔 트리 구조를 예시한 것이다.
이 도면의 예에서는 HTML 문서 전체를 둘러싼 태그 부분의 끝을 나타내는 태그</html>(5910), HTML 문서의 명칭을 나타내는 태그의 끝</title> (5920), HTML 문서 바디를 나타내는 태그 영역의 끝</body>(5930), HTML 문서 중 스트립트를 나타내는 태그 묶음의 끝</script>(5940)를 각각의 식별번호와 함께 예시하였다.
그리고 HTML 문서 바디 내에 내용의 제목(heading)을 나타내는 태그 묶음의 끝</h1>(5950), 중첩되는 브라우징의 내용, 즉 문서 내에 다른 HTML 페이지를 삽입하는 태그의 묶음의 끝 </iframe>(5960), 그리고 하이퍼링크를 생성하는 태그 영역의 끝</a>(5970)을 각각 예시하였다.
이와 같이 HTML 데이터를 계층적 구조의 정보로 분석하여 HTML 데이터의 특성을 알 수 있는 태그 단위로 분리할 수 있다.
여기서는 HTML 데이터의 특성을 알 수 있는 태그 영역으로 분리하는 예로서 HTML 데이터를 돔 트리(Dom Tree)에 따라 분류하는 예를 개시하였다.
도 54은 실시 예에 따른 사이버 위협 정보를 처리하는 방법으로서 HTML 데이터의 태그에 기반한 구조 정보로부터 사이버 보안 위협에 관련한 특징 정보를 얻는 예를 개시한다.
먼저 실시 예를 용이하게 하기 위해 위에서 개시한 도면의 태그 구조 정보를 가진 웹페이지를 이용하여 그 웹페이지 데이터의 사이버 보안 위협에 관련한 특징 정보를 얻는 예를 개시한다.
위에서 개시한 예와 같이 돔 트리(Dom Tree) 분석에 따라 HTML 데이터의 태그 구조 정보를 얻을 수 있다.
여기서 얻은 태그 데이터를 왼쪽 섹션에, 각 태그 데이터에 대응되는 웹페이지 데이터를 오른쪽 섹션에 예시하였다.
위에 개시한 예에 따르면, HTML 데이터의 태그 구조 정보에 포함되는 태그 영역 또는 태그 데이터로서 <body>, <image>, <iframe>, <a>, <script>나 </script>를 예시하였다.
이 도면 예에서 태그 구조 정보 중 태그 바디<body>에 포함되는 텍스트(5980)는 도면에 예시한 바와 같이 다음과 같다.
onload=”teclear();”
Background=”ground.gif”
Link=”#ff2ff”
Text=”#ff0001e”
Link=”fff2ff”
그리고 이 예에서 태그 구조 정보 중 태그 이미지<image>영역에 포함하는 내용은 이미지 소스가 제공되는 URL 주소 (이 도면의 예에서 http://analytics.hosting24.com/do.php) 등일 수 있다.
태그 구조 정보에 포함된 각 태그 영역에 대응되는 위와 같은 HTML 데이터에 대해 사용자 또는 공격자가 임의로 수정하거나 사이버 위협 정보를 추가할 수 있다.
따라서, 이러한 경우 수정되거나 공격자가 임의로 수정할 수 있는 데이터는, 사이버 위협 정보는 탐지하거나 분석을 위한 데이터로 대체할 수 있다.
여기서 사용자나 공격자가 임의로 수정할 수 있는 데이터는 HTML 데이터 중 HTML 문법을 제외하고 사용자가 임의로 수정할 수 있는 값들을 의미하며 태그 영역 내의 URL 주소나 문자열 값 등을 의미한다.
위의 예에 따르면 HTML 데이터 중 임의로 수정할 수 있는 값은 함수 (이 도면의 예에서 teclear()), URL 주소 (이 도면의 예에서 http://analytics.hosting24.com/do.php), 문자열(이 도면의 예에서 web hosting 등), 변수명(이 도면의 예에서 weight) 등이 공격자가 수정 가능한 데이터에 해당할 수 있다.
위 예에서 함수, teclear()는 HTML 데이터 중 함수임을 나타내는 데이터(예, <func>)로, URL 주소는 HTML 데이터 중 URL 주소임을 나타내는 데이터(예, <http><url><ext : php>)로 대체될 수 있다.
또한 위 예에서 문자열(예, web hosting)는 HTML 데이터 중 특정 문자 스트링임을 나타내는 데이터(예, <string> 등)로, 변수명(예, height, width)는 HTML 데이터 중 변수명임을 표시하는 데이터(예, <name>등)로 변환되거나 대체할 수 있다.
이와 같이 HTML 데이터 중 유와 같은 일정한 규칙에 따라 대체가능한 부분이 대체된 경우 변환된 태그 정보는 사이버 위협 정보를 나타내는 정보로서 벡터화 데이터로 변환될 수 있다.
도 55은 위에서 예시한 HTML 문서 중에서 HTML 문법을 제외하고 사이버 위협 정보가 포함될 수 있는 부분을 실시 예에 처리하여 변환하는 과정을 예시한다.
실시 예에 따라 URL 정보에 따른 HTML 데이터는 태그 구조 정보에 따른 태그 영역 또는 태그 데이터에 따라 분석될 수 있다.
이 예에서 특정 웹페이지의 HTML 데이터를 태그 구조 정보에 따른 태그 영역 또는 태그 데이터로 분석한 경우 각 태그 데이터가 왼쪽 열에 위치한다.
여기 예에서 각 태그 데이터(6110)는 <body>, <image>, <iframe>, <a>, <script>나 </script>로 구분될 수 있다.
HTML 문서 내의 각 태그 데이터에 대응되는 데이터는 위와 같이 일정한 규칙에 따라 처리되는데 여기서는 각 preprocessing 섹션(6120)에 나타내었다.
예를 들어 바디 부분의 데이터는 변환 규칙에 따라 아래와 같이 처리된다.
onload=”<func>();”
Background=”<name>.gif”
Link=”<hex>”
Text=”<hex>”
Link=”<hex>”
위에서 개시한 예와 같이 HTML 데이터 중 태그 영역에 포함되는 함수는 <func>()로, 이미지의 명칭은 <name>, 링크나 텍스트에 포함되는 16진법의 코드는 <hex>로 변환할 수 있다.
그리고 문자열은 <string>, URL 주소는 <http><url>로 각각 변환하고 변수 명칭은 <name> 으로 변환한다. 이와 같이 HTML 문법에 반드시 사용되는 부분을 제외한 부분은 일정한 형식이나 원칙에 따라 변경이 가능하며 여기서 변환되는 규칙은 당업자에게 충분히 변경이 가능하다.
preprocessing 섹션(6120)의 데이터는 일정한 길이의 정규화 데이터로 변환되고 정규화 데이터는 퍼지 해쉬 값으로 변환될 수 있다.
이 도면의 예에서 퍼지 해쉬 섹션(6130)은 일정한 규칙에 따라 처리된 preprocessing 섹션(6120)의 데이터가 퍼지 해쉬 값으로 변환된 결과를 나타낸다.
즉 HTML 데이터 중 <body> 태그 영역의 데이터로부터 처리된 preprocessing 섹션(6120) 내 데이터가 변환된 퍼지 해쉬 값이 퍼지 해쉬 섹션(6130)의 첫 번째 행에 예시된다.
HTML 데이터 중 <image> 태그 영역의 데이터로부터 처리된 preprocessing 섹션(6120) 내 데이터가 변환된 퍼지 해쉬 값이 퍼지 해쉬 섹션(6130)의 두 번째 행에 예시된다.
또한 HTML 데이터 중 <iframe> 태그 영역의 데이터로부터 처리된 preprocessing 섹션(6120) 내 데이터가 변환된 퍼지 해쉬 값이 퍼지 해쉬 섹션(6130)의 세 번째 행에 예시된다.
이와 같이 HTML 데이터 중 태그 영역의 데이터로부터 처리된 데이터는 정규화된 후 퍼지 기반의 해쉬 함수에 적용된 해쉬 값으로 각각 변환될 수 있다.
위에서 예시한 바와 같이 추출된 Hash 값은 N-gram 데이터로 변환되어 M 바이트 패턴에 따른 빈도 수를 이용하여 태그 특징 데이터(61400)로 변환될 수 있다. 여기서는 추출된 Hash 값에 2-gram 기법을 적용하여, 2-byte 패턴에 따른 빈도 수를 이용하여 태그 특징 데이터로 변환한 예를 개시한다.
이하에서는 태그 구조 정보에 따라 각 태그 영역이 변환되어 사이버 위협 정보를 나타낼 수 있는 데이터를 태그 특징 데이터로 호칭한다. 즉, 태그 특징 데이터는 태그 구조 정보에 따라 구분된 태그 단위에 대응되는 사이버 위협 특징 정보가 될 수 있다.
따라서, 태그 벡터 데이터를 기반으로 분류 모델을 학습하면 이에 대한 악성 여부를 판별할 수 있다.
도 56는 실시 예에 따른 사이버 위협 정보 처리 방법의 일 예를 개념적으로 도시한 도면이다.
실시 예는 웹페이지 데이터를 획득하고 그 웹페이지 데이터의 태그 구조 정보(6210)에 따라 웹페이지 데이터를 분리하여 처리할 수 있다. 웹페이지 데이터는 URL 정보로 입력받을 수도 있고, 웹크롤링 형태로 수집할 수도 있다.
이 예는 웹페이지 데이터가 입력될 경우 입력된 웹페이지 데이터의 태그 구조 정보(6210)로 분석할 결과를 개념적으로 표시하였다. 설명의 편의상 태그 구조 정보(6210)는 위에서 개시한 예와 동일한 예를 사용하였다.
태그 구조 정보(6210)에 따라 각 태그 영역 또는 태그 데이터 별로 HTML데이터를 일정한 규칙에 따라 변환하고, 상기 변환된 데이터를 정규화하여 해쉬 값으로 변환할 수 있다. 그리고 상기 해쉬 값으로 변환한 HTML데이터는 N 그램 데이터인 태그 특징 데이터로 변환할 수 있다.
이 예에서는 태그 구조 정보(6210) 중 태그 영역 <a>에 대응하는 HTML데이터를 태그 특징 데이터(6220)로 변환한 결과를 예시하였다.
태그 특징 데이터(6220)는, HTML에 반드시 필요한 문법을 제외하고, 공격 행위와 관련된 데이터 또는 그 패턴 데이터를 포함할 수 있다. 따라서, 태그 특징 데이터(6220)는 사이버 위협 정보 중 공격 행위의 식별자 또는 공격 그룹을 식별할 수 있는 데이터를 포함할 수 있다.
실시 예는 태그 특징 데이터(6220)를 기반으로 트리기반의 분류 모델(6230)로 학습하도록 할 수 있다. 예를 들면, 준비된 태그 특징 데이터 베이스(DB)(6240)을 기반으로, 입력된 태그 특징 데이터(6220)에 대해 적어도 하나 이상의 디시전 트리(Decision Tree)(6245)를 이용한` 랜덤 포레스트(Random Forest) 학습 알고리즘을 적용하며 태그 특징 데이터(6220)의 악성 여부를 분류할 수 있다.
태그 특징 데이터 베이스(DB)(6240)는 웹페이지의 악성 레이블 정보에 따라 HTML 데이터에 포함되는 태그 영역의 데이터를 악성 또는 정상의 태그 특징 데이터로 저장한다. 즉, 악성 행위가 포함된 HTML 내 태그 영역의 데이터는 데이터 베이스의 악성 태그 데이터로 저장되고, 정상인 HTML의 태그 영역 데이터는 데이터 베이스의 정상 태그 데이터로 저장된다.
즉, 실시 예의 트리기반의 분류 모델(6230)의 분류 결과에 따라 태그 특징 데이터(6220)가 악성인지 여부에 대해 확률적으로 판단할 수 있다(6250). 여기서는 HTML 문서 내 태그 영역 <a>의 데이터가 악성일 확률이 98%로 판별된 예를 개시한다.
그리고 해당 태그 특징 데이터(6220)가 악성인 경우, 그 태그 특징 데이터(6220)가 포함하는 공격 기법 식별자와 공격자 그룹도 식별할 수 있다. 여기서의 예에서는 태그 특징 데이터(6220)에 대해 Blackhole로 호칭되는 공격 기법 식별자와 공격자 그룹 Lazarus를 식별한 예를 개시한다.
따라서 실시 예는 웹페이지 데이터에 포함되는HTML 문서 자체의 악성 여부를 뿐만 아니라 HTML의 어떤 태그 영역이 악성인지 식별이 가능하다. 또한 단순히 HTML 데이터를 기계 학습 기반으로 악성 탐지 또는 분류하거나 HTML 내 특정 태그 수의 빈도 수나 특정 문자의 빈도 수에 따라 악성을 판별하는 것이 아니라 HTML 데이터의 특정 태그 데이터의 공격 기법과 공격 그룹을 식별할 수 있으므로 정확한 악성 탐지 및 분석이 가능하다.
도 57은 실시 예에 따라 웹페이지의 태그에 포함된 사이버 위협 정보 처리 장치의 일 예를 개시한 도면이다.
사이버 위협 정보 처리 장치의 다른 일 실시예는 프로세서를 포함하는 서버(2100), 데이터베이스(2200), 및 인텔리전스 플랫폼(10000)을 포함할 수 있다
데이터베이스(2200)는 이미 분류된 악성 코드 또는 악성 코드의 패턴 코드를 저장할 수 있다.
서버(2100)의 프로세서는 응용 프로그램 인터페이스(Application Programming Interface) (1100)를 통해 웹페이지의 링크 정보와 같은 위치 정보를 입력 받을 수 있다.
프레임워크(18000)의 수신모듈(18801)은 서버(2100)의 프로세서의 지시에 따라 API를 통해 수신한 웹페이지의 링크 정보를 이용해 상기 웹페이지 데이터를 수신할 수 있다.
분석모듈(18803)은 웹페이지의 링크 정보에 기반해 수신된 웹페이지 데이터를 분석하여 상기 웹페이지 데이터에 대한 태그 구조 정보를 얻을 수 있다. 태그 구조 정보의 일 예로서 돔 트리(Document Object Model(Dom) Tree) 구조를 예시하였다.
변환모듈(18805)은 웹페이지 데이터의 태그 구조 정보에 따라 상기 웹페이지 데이터의 태그 영역에 포함된 데이터를 태그 특징 데이터로 변환할 수 있다. 변환모듈(18805)은 웹페이지를 구성하도록 하는 필수 구조에 대한 부분 이외에 사용자가 수정할 수 있는 부분의 데이터에 대해 상기 태그 구조 정보에 따른 태그 단위의 태그 특징 데이터로 변환할 수 있다.
학습모듈(18807)은 AI 엔진(1230)을 이용해 태그 특징 데이터를 분류 모델을 적용하여 태그 구조 정보에 따른 태그 영역에 포함된 데이터의 사이버 위협 정보를 획득한다.
학습모듈(18807)은 태그 특징 데이터를 AI 엔진(1230)의 알고리즘에 따른 분류 모델로 분류하여 각 태그 부분에 악성 행위에 대한 공격 기법과 공격 그룹을 식별할 수 있다.
학습모듈(18807)이 태그 특징 데이터와 같은 특징 데이터를 분류 모델을 적용하여 예는 도 25 내지 도 28 및 도 52 내지 도 55에 상세히 개시하였다.
이하에서는 분석된 사이버 위협 정보를 제공하는 형식의 실시 예들을 개시한다. 개시하는 실시 예에 따르면 분석된 사이버 위협 정보는 일관되며 이해하기 쉬운 방식으로 공유될 수 있다. 개시하는 보안 정보의 제공 형식의 예들은 분석된 사이버 위협 정보가 빠르고 효과적으로 제공되면서 향후 사이버 위협 정보에 따른 대응과 예측에 사용될 수 있다.
위에서 상술한 바와 같이 인텔리전스 플랫폼(10000)은 각 분석 정보들의 중복되거나 공통된 분석 정보의 중복된 부분을 제거하고, 부족한 부분의 데이터의 인리치먼트(enrichment) 작업 등을 수행한다. 그리고, 인텔리전스 플랫폼(10000)은 후 처리를 통해 표준화된 정보를 사이버 공격들의 방지하기 위해 고안된 표준인 STIX (Structured Threat Information Expression) 등의 포맷으로 제공할 수 있다.
이하에서는 위와 같이 분석된 사이버 위협 정보를 사이버 위협 정보 공유 모델을 통해 다른 사용자 등에게 공유할 수 있다. 사이버 위협 정보 공유 모델의 일 예로서, STIX (Structured Threat Information Expression) 등의 포맷으로 제공하는 예를 개시하도록 한다.
STIX 포맷은 사이버 위협 정보의 협업 분석, 자동화 탐지 및 대응, 또는 위협 정보의 교환 등의 기능들을 제공하고 공유하기 위해 설계된 것으로서 지속적으로 개선되고 있다.
개시하는 실시 예는 위와 같이 인텔리전스 플랫폼(10000)을 이용하여 분석, 탐지 및 예측한 사이버 위협 정보를 사이버 위협 정보 공유 모델을 기반으로 제공할 수 있다.
분석, 탐지, 예측한 결과로서 사이버 위협 정보를 공유 시에 STIX 모델은 글로벌 표준 체계를 제공한다. 여러 사이버 보안 기업들은 STIX 모델을 이용하여 효율적이면서 공통의 의미를 이용하여 사이버 위협 정보를 조회하고 검증할 수 있다.
사이버 위협 정보를 STIX 모델을 이용하여 제공하면 다른 사이버 보안 기업들에서 공유한 정보들과 연관관계를 자동으로 생성할 수 있다. 따라서, STIX 모델을 이용하여 위와 같이 처리한 사이버 위협 정보를 공유하면 증가하는 보안 위협 방지에 크게 기여할 수 있고 공동으로 조기 대응이 가능하다.
이러한 점에서 단순히 새로운 사이버 위협 정보를 탐지하여 STIX 모델로 제공하는 것만으로도 연관관계분석을 통해 공동 대응의 기반이 되는 상당량의 파생 정보를 생성할 수 있고 위협 분류 기준의 범용성을 크게 늘릴 수 있어 보안 위협에 대처에 대단히 효율적이다.
이하의 실시 예에서는 위에서 개시한 인텔리전스 플랫폼을 이용하여 얻은 사이버 위협 정보를 이러한 위협 정보 공유 모델을 기반으로 제공하는 예를 개시한다.
도 58은 개시한 실시 예에 따라 분석한 사이버 위협 정보를 사이버 위협 정보 공유 모델로 제공하는 방법의 일 예를 나타낸다.
입력된 파일로부터 사이버 위협 정보와 관련된 데이터를 추출하는 프로파일링(profiling) 기법을 기반으로 상기 파일의 특징 정보를 추출한다(S3910).
입력된 파일로부터 사이버 위협 정보와 관련된 데이터를 추출하는 프로파일링 기법의 일 예로서, 심층 분석 프로파일링(deep binary profiling)이 있을 수 있다.
심층 분석 프로파일링(deep binary profiling)은, 상기 입력된 파일이 실행파일인 경우 입력된 파일의 바이너리 소스 내 사이버 위협 정보와 관련된 함수 벡터인 인스트럭션 시퀀스의 분석하는 것으로서, 이에 대한 실시 예는 도 17 내지 도 27에서 예시하였다.
만약 상기 입력된 파일이 실행파일을 포함할 수 있는 비실행파일인 경우, 심층 분석 프로파일링(deep binary profiling)은 도 28 내지 44에서 예시한 문서 또는 스크립트 파일 등 비실행파일의 분석 과정을 의미한다.
만약 상기 입력된 파일이 웹페이지인 경우 심층 분석 프로파일링(deep binary profiling)은 도 45 내지 도 57에서 예시한 웹페이지 파일의 분석 과정을 의미한다.
상기 추출한 특징 정보를 인공 지능 모델을 이용해 상기 파일에 포함된 공격 기법 식별자를 분류한다(S3920).
사이버 위협 정보 공유 모델을 기반으로 상기 파일의 관련한 상기 공격 기법 식별자를 포함하는 사이버 위협 정보를 제공한다(S3930).
여기서 사이버 위협 정보 공유 모델로서 STIX 모델이 사용될 수 있다.
사이버 위협 정보는 입력 파일과 그 공격 행위 식별자의 관계를 즉시 알 수 있으므로 사용자가 직관적으로 사이버 위협 정보를 파악할 수 있도록 할 수 있다. 이하에서는 사이버 위협 정보 공유 모델을 이용하여 사용자가 공유되는 사이버 위협 정보와 그 관련성을 직관적으로 이해할 수 있는 예들을 개시한다.
도 59는 개시한 실시 예에 따라 분석한 사이버 위협 정보를, 사이버 위협 정보 공유 모델을 이용하여 제공하는 예를 예시한다.
사이버 위협 정보 공유 모델로서, STIX 모델은 객체(이하, object, 오브젝트)들로 표현되는 사이버 위협 인텔리전스의 분류를 정의하는 스키마(schema)이다.
오브젝트는 사이버 위협 정보를 표현하는 구성요소로서 타입(type), 식별자(ID), 속성(property) 등을 가질 수 있고, 오브젝트들은 서로 관계를 가질 수 있다.
예를 들어 STIX 모델의 오브젝트들 중 SDO(STIX Domain Objects)는 위협 분석가가 위협 환경을 이해하면서 일반적으로 생성하거나 작업하는 동작 및 구성을 나타내는 상위 수준 인텔리전스 오브젝트를 나타낸다.
SCO(STIX Cyber-observable Objects)는 위협 환경에 대해 더 충분할 이해를 전달하기 위해 사용되거나 높은 수준의 인텔리전스와 관련될 수 있는 네트워크 또는 호스트에 대해 관찰된 사실을 나타내는 오브젝트를 나타낸다.
한편 SRO(STIX Relationship Objects)는 SDO를 서로 연결하거나, SCO를 서로 연결하거나, SDO 와 SCO를 서로 연결하여 위협 환경을 표현한다.
이 도면의 예시는 SDO(33001)와 SCO(33003)가 연결(link)된 예를 나타낸다. 열린 화살표 또는 가는 머리의 화살표(→)는 관계 오브젝트(SRO)를 나타내는데, 열린 머리의 화살표는, 화살표의 시작점에 위치한 오브젝트가 그 화살표 종점에 위치한 오브젝트와 일반 관계 또는 관찰 관계가 있음을 나타낸다.
닫힌 화살표 또는 굵은 머리의 화살표( )는 속성(property)을 나타내는데, 화살표의 시작점에 위치한 오브젝트가 그 화살표 종점에 위치한 오브젝트를 속성으로 이용하는 것을 나타낸다. 각 오브젝트는 공통 속성, 선택 속성, 또는 사용하지 않는 속성을 정의하는데 다른 객체를 이용해 속성을 나타낼 수도 있다.
그리고 STIX 모델은 STIX Core Object들과 STIX Meta Object들을 포함하는 STIX 오브젝트와, 임의의 STIX 오브젝트들을 패키징한 STIX Bundle Object를 포함할 수 있다.
STIX Core Object는, 행위 또는 위협 분석에 따른 구성을 나타내는 상위 레벨의 인텔리전스 객체인 STIX Domain Objects(SDOs), 네트워크 또는 호스트에 대한 관찰된 사실을 나타내는 STIX Cyber-observable Objects(SCOs), STIX Domain Objects, STIX Cyber-observable Objects를 각각 또는 함께 연결해 위협 환경을 이해하도록 하는 STIX Relationship Objects(SROs)를 포함할 수 있다.
STIX Meta Objects는 사용자 및 시스템 워크플로를 지원하기 위해 관련 메타데이터를 제공하는 오브젝트로서, Language Content Object와 Marketing Definition Objects를 포함할 수 있다.
도 60은 개시한 실시 예에 따라 분석한 사이버 위협 정보를 사이버 위협 정보 공유 모델로 기술한 간단한 예를 나타낸다.
개시한 인텔리전스 플랫폼(10000)이 입력된 데이터를 분석한 경우, 입력 데이터에 포함된 파일에 대한 사이버 위협 정보를 STIX의 오브젝트들로 나타낼 수 있다.
이 도면의 예에서 인텔리전스 플랫폼(10000)이 입력된 파일은 오브젝트로 표현된다.
여기서 중심에 표현된 파일(file)은, 하나 이상의 STIX의 오브젝트들로 기술될 수 있으며, 파일(file) 자체도 STIX의 오브젝트 중 SCO(STIX Cyber-observable Object)로 표현될 수 있다.
SCO(STIX Cyber-observable Object)인 파일은 STIX 모델 기반의 사이버 위협 정보는 분석된 내용들을 표현하는 N개의 오브젝트(N 자연수)와 관계를 가지거나 또는 속성을 가질 수 있다.
이하에서는 편의상 분석된 파일의 오브젝트(SCO)의 속성 또는 관계 오브젝트를, 제1 오브젝트, 제2 오브젝트, …, 제N 오브젝트 등으로 기술한다.
실시 예에 따른 STIX 모델 기반의 사이버 위협 정보는 파일에 대한 속성 또는 분석 정보를 나타내는 제1 오브젝트(33011), 데이터에 대한 악성 탐지 정보를 나타내는 제2 오브젝트(33012), 파일에 의해 발생하는 공격 패턴 또는 취약점 정보를 나타내는 제3 오브젝트(33013), 파일에 의해 발생하는 통신 정보를 나타내는 제4 오브젝트(33014), 파일에 의해 발생하는 네트워킹 분석 정보를 나타내는 제5 오브젝트(33015), 임의의 오브젝트(Nth object)(33016) 등의 N개의 오브젝트(N 자연수)를 포함할 수 있다.
실시 예에 따른 인텔리전스 플랫폼(10000)이 개시한 바와 같이 입력 파일들을 분석하면 STIX 모델을 기반으로 입력 데이터에 대해 제1 오브젝트(33011) 내지 제N 오브젝트(33016)로서 입력 파일의 사이버 위협 정보를 제공할 수 있다.
이하에서는 실시 예에 따라 STIX 모델로 제공되는 사이버 위협 정보의 오브젝트들과 정보에 대해 상세하게 개시한다. 이하에서 STIX 모델 기반의 사이버 위협 정보는 실시 예에 따라 분석한 파일을 file SCO(STIX Cyber-observable Objects)로 하고, 그 파일의 위협 정보를 기술하는데 사용될 수 있다.
도 61은 개시한 실시 예에 따라 분석한 사이버 위협 정보 중 파일 속성 또는 분석 정보를 사이버 위협 정보 공유 모델 기반으로 예시한 예이다.
STIX 모델 기반의 파일에 대한 속성 또는 분석 정보의 일 예는, 파일의 자체 속성과 그 파일을 특정한 방식으로 분석한 정보를 포함한다.
STIX 모델 기반의 파일 속성 또는 분석 정보의 일 예는, file SCO(STIX Cyber-observable Objects)와 관계를 가지는 오브젝트들로서, 위협 행위자 오브젝트(threat-actor SDO), 파일 익스텐션 오브젝트(x-file-ext SDO로 표시), 제1 분석 정보 오브젝트(io-dynamic-analysis SDO로 표시), 제2 분석 정보 오브젝트(io-static-analysis SDO로 표시)를 포함한다.
이 예에서 file SCO(STIX Cyber-observable Objects)는 자기 자신 또는/및 위 오브젝트들과 여러 가지 관계(relationship)을 가질 수 있는데 여기서는 이러한 관계들을 downloads, authored-by, originates-from로 표현하였다.
관계(relation) downloads는 맬웨어 인스턴스(또는 제품군)가 다른 맬웨어 인스턴스, 도구 또는 파일을 다운로드하거나 삭제하는 것을 문서화한다.
관계(relation) authored-by는 악성코드 인스턴스 또는 패밀리가 관련 위협 행위자 또는 침입 세트에 의해 개발되었음을 기술한다.
관계(relation) originates-from는 이 맬웨어 인스턴스 또는 패밀리가 특정 위치에서 시작되었음을 문서화한다.
이 예에서, file SCO(STIX Cyber-observable Objects)는 네트워크 또는 호스트와 관련된 관찰 오브젝트(SCO)로서 url SCO, location SCO, ip4-addr SCO, ip4-addr SCO 등의 오브젝트들과 originates-from에 따른 관계를 가질 수 있다.
여기서 예시한 사이버 위협 정보 공유 모델에서, 관계 downloads는 파일 오브젝트, file SCO(STIX Cyber-observable Objects)가 그 파일 오브젝트를 다운로드하거나 삭제할 수 있음을 나타낸다. 이 예에서, file SCO(STIX Cyber-observable Objects)는 위협 행위자 오브젝트(threat-actor SDO) 와 파일 생성과 관련해 authored-by에 따른 관계를 가진다.
그리고 예시한 사이버 위협 정보 공유 모델은, file SCO(STIX Cyber-observable Objects)이, 네트워크 또는 호스트와 관련된 관찰 오브젝트(SCO)들(URL SCO, location SCO, ip4-addr SCO, ip4-addr SCO) 중 어느 하나로부터 시작되었음을 나타낼 수 있다.그리고 file SCO(STIX Cyber-observable Objects)는 파일 익스텐션 오브젝트(x-file-ext SDO), 제1 분석 정보 오브젝트(io-dynamic-analysis SDO), 제 2 분석 정보 오브젝트(io-static-analysis SDO)를 속성(created_by_ref)을 가진다.
속성 created_by_ref은 오브젝트를 만든 엔터티를 설명하는 식별(identity) 객체의 속성을 지정한다. 속성 created_by_ref이 생략되면 이 정보의 출처가 정의되지 않고 익명을 유지하고자 하는 객체 생성자가 사용할 수 있다.
예시한 STIX 기반 사이버 위협 정보 공유 모델에서, 파일 오브젝트, File SCO(STIX Cyber-observable Objects)는 다운로드할 수 있는 파일임을 관계 오브젝트(downloads SRO)로 기술한다.
따라서, 예시한 STIX 기반 사이버 위협 정보 공유 모델에서, 파일 오브젝트 File SCO(STIX Cyber-observable Objects)는 관련된 위협 행위자 오브젝트(Threat-actor SDO)에 의해 개발되었다는 것을 관계 오브젝트(authored-by SRO)로 기술할 수 있다.
그리고 예시한 STIX 기반 사이버 위협 정보 공유 모델에서, 파일 오브젝트, File SCO(STIX Cyber-observable Objects)는 각각 URL 오브젝트(url SCO), 위치 오브젝트(location SCO), IP4 어드레스 오브젝트(ip4-addr SCO) 또는 IP4 어드레스 오브젝트(ip6-addr SCO 등의 오브젝트) 중 어느 하나로부터 전달되었다는 것을 관계 오브젝트(originates-from SRO)로 기술할 수 있다.
또한 예시한 STIX 기반 사이버 위협 정보 공유 모델에서, 파일 오브젝트, File SCO(STIX Cyber-observable Objects)는 상기 파일의 추가정보를 저장하는 파일 익스텐션 오브젝트(x-file-ext SDO로 표시)를 created_by_ref 속성으로 가질 수 있다.
파일 익스텐션 오브젝트(x-file-ext SDO)는 파일(파일 오브젝트가 나타내는 파일)의 추가적인 정보로서 바이너리 시그니처 기반 파일 타입 식별 정보를 가지는 것을 나타낼 수 있다.
또한 파일 익스텐션 오브젝트(x-file-ext SDO)는 파일 확장자만을 가지고 파일 타입을 구분할 수 없다는 정보를 나타낼 수 있다. 예를 들면, 파일 익스텐션 오브젝트(x-file-ext SDO)는 파일의 확장자가 이미지(.png)이나 실제로는 실행 파일 타입(.exe)일 수 있음을 기술할 수 있다.
또한 파일 익스텐션 오브젝트(x-file-ext SDO)는 파일(파일 오브젝트가 나타내는 파일)이 다른 이름을 가졌던 적이 있는 경우 그 명칭을 리스트로 표시할 수 있다. 예를 들어 이 파일이 현재까지 사용했던 이름이 scan.dll, SCAN.DLL, scan 등의 이름을 가졌던 경우 그 이름을 나타낸다.
파일 익스텐션 오브젝트(x-file-ext SDO)는 파일(파일 오브젝트가 나타내는 파일)의 태그(tag) 정보, 타사의 AV 엔진 탐지 정보, 파일의 컴퍼일러 정보, 파일의 생성, 마지막 변경, 마지막 제출, 마지막, 분석, 첫 번째 제출 등의 시간과 관련된 정보(생성 시간(creation), 마지막 변경 시간(last_modification), 상기 파일이 가장 최근에 관측 및 발견된 시간(last_seen), 마지막 분석시간(last_analysis), 상기 파일이 가장 최초로 관측 및 발견된 시간(first_ seen) 등)를 포함할 수 있다.
STIX 기반 사이버 위협 정보 공유 모델에서 파일 오브젝트를 기술하는 속성 또는 분석 정보로서, 제1 분석 정보 오브젝트(io-dynamic-analysis SDO로 표시)는 해당 파일을 분석한 경우 분석되어 저장된 정보를 나타낼 수 있다.
제1 분석 정보 오브젝트(io-dynamic-analysis SDO)는 파일 오브젝트가 나타내는 파일을 동작시켜 얻는 정보를 표시할 수 있는데, 예를 들면 파일이 동작되면서 생성되는 프로세스들에 대한 정보를 표시할 수 있다.
제1 분석 정보 오브젝트(io-dynamic-analysis SDO)는 파일 수행 시 파일에 대한 행위, 레지스트리에 대한 행위, 서비스에 대한 행위, 및 mutex에 대한 행위 등을 나타낼 수 있다. 예를 들면 제1 분석 정보 오브젝트(io-dynamic-analysis SDO)는 파일 실행 시 파일의 open, write, delete, copy 등 속성을 변경하는 파일에 의한 행위를 나타낼 수 있거나, 파일 실행 시 value write, key open, key delete 등 레지스트리에 발생하는 행위를 나타낼 수 있다.
그리고, 제1 분석 정보 오브젝트(io-dynamic-analysis SDO)는 파일 실행 시 파일이 제공하는 서비스의 open, create, stop, delete, bound 등의 행위를 나타내거나, mutex의 행위로서 create, open 등을 나타낼 수 있다.
이와 같이 제1 분석 정보 오브젝트(io-dynamic-analysis SDO)는 파일을 동작시키거나 수행할 때 발생되는 정보를 나타낸다.
따라서, 파일 오브젝트에 대해 제1 분석 정보 오브젝트(io-dynamic-analysis SDO)는 파일에 대해 도 5, 도 34, 또는 도 42에 예시한 동적 분석을 수행한 정보를 나타낼 수 있다.
제2 분석 정보 오브젝트(io-static-analysis SDO로 표시)는 파일 오브젝트가 나타내는 파일 자체를 분석한 결과를 나타내는 정보이다.
현재 STIX 모델은 파일을 분석 시 NTFS 파일 확장자(ntfs-ext), 래스터 이미지 파일 확장자(raster-image-ext), PDF 파일 확장자(pdf-ext), 아카이브 파일 확장자(archive-ext), Windows의 PE 이진 파일 확장자(windows-pebinary-ext) 등 파일과 관련된 분석 정보를 표현할 수 있다.
예를 들어 NTFS 파일 확장자(ntfs-ext)는 NTFS 파일 시스템의 파일 저장소와 관련된 특성을 캡처하기 위한 기본 확장자를 지정할 수 있다.
래스터 이미지 파일 확장자(raster-image-ext)는 래스터 이미지 파일과 관련된 특성을 캡처하기 위한 기본 확장자를 지정할 수 있다.
PDF 파일 확장자(pdf-ext)는 PDF 파일과 관련된 특성을 캡처하기 위한 기본 확장자를 지정할 수 있다.
아카이브 파일 확장자(archive-ext)는 아카이브 파일과 관련된 특성을 캡처하기 위한 기본 확장자를 지정할 수 있다.
Windows의 PE(실행 파일) 이진 파일 확장자(windows-pebinary-ext)는 Windows의 PE(실행 파일)의 특정한 특성을 캡처하기 위한 기본 확장자를 지정할 수 있다.
그러나 위와 같은 확장 정보가 있음에도 불구하고 이러한 분석 정보는 사이버 위협 정보의 인텔리전스 서비스를 구현할 만큼 파일에 대한 충분할 정보를 포함하지 않는다.
실시 예에 따른 제2 분석 정보 오브젝트(io-static-analysis SDO로 표시)는 이러한 Windows의 PE(실행 파일)로부터 분석된 악성 정보에 imports 함수 리스트와 exports 함수 리스트를 저장하는 속성 또는 객체를 표현할 수 있다.
따라서, 이 실시 예에서 파일 오브젝트(file SCO)에 대한 제2 분석 정보 오브젝트(io-static-analysis SDO)는 파일에 대해 도 4 또는 도 30에서 예시한 정적 분석을 수행한 정보를 나타낼 수 있다.
도 62는 개시한 실시 예에 따라 분석한 사이버 위협 정보 중 데이터에 대한 악성 탐지 정보를 사이버 위협 정보 공유 모델 기반으로 예시한 예이다.
예시한 사이버 위협 정보 모델에서, 파일 오브젝트, File SCO(STIX Cyber-observable Objects)는 인디케이터 오브젝트(indicator SDO)와 related-to 타입의 관계가 있음을 나타낸다.
related-to 타입의 관계는 두 SDO 간의 비특정(non-specific) 관계를 나타내는 것으로서, related-to 타입의 관계는 다른 사전 정의된 관계들 중 적절한 것이 없으면서 사용자 정의 관계도 필요하지 않은 경우에 사용될 수 있다.
이 예에서와 같이 하나의 이상의 맬웨어(malware)들을 설명하는 맬웨어 오브젝트들이 함께 사용되는 경우에, related-to 관계는 관련 도구로서 표시될 수 있다.
그리고 파일 오브젝트, File SCO(STIX Cyber-observable Objects)는 여러 가지 맬웨어 오브젝트(malware)를 sample_refs 속성으로 가질 수 있다.
sample_refs 속성은 이 맬웨어 인스턴스 또는 패밀리와 관련된 SCO 파일 또는 아티팩트(artifact) 오브젝트 식별자 목록을 지정한다.
여기서 예시한 사이버 위협 정보 모델에서,인디케이터 오브젝트(indicator SDO)는 식별자 오브젝트(identity SDO)를 created_by_ref 속성으로 가질 수 있다.
이 예에서 인디케이터 오브젝트(indicator SDO)는 x_score의 확장된 정보로서 0.0~1.0 사이의 값을 가질 수 있으며, AV기반, 정적 분석 기반, 인공 지능 기반 등 맬웨어를 탐지한 여러 탐지 방법들을 종합한 malware score를 나타낼 수 있다.
속성 sample_refs은 파일 오브젝트, File SCO(STIX Cyber-observable Objects)의 식별자(identifier)들의 리스트를 나타낼 수 있다. 즉, 이 예에서 파일 오브젝트, File SCO(STIX Cyber-observable Objects)는 적어도 하나 이상의 악성 행위(malware) 오브젝트의 리스트를 포함할 수 있다.
맬웨어 오브젝트들은 x_malwares_com 속성에 추가한 것으로서, 악성 탐지 방법에 따라 맬웨어에 대응되는 오브젝트들이 저장될 수 있다.
이 예에서는, 맬웨어 오브젝트들(malware SDO)은 분석방식에 따라 맬웨어 분석 오브젝트(malware-analysis)과 관계를 가질 수 있다.
이 예에서는 이러한 관계로서, 제1 탐지 분석(av-analysis-of) 관계, 제2 탐지 분석(static-analysis-of) 관계, 제3 탐지 분석(x-ai-analysis) 관계, 제4 탐지 분석(dynamic-analysis-of) 관계, 제5 탐지 분석(x-dbp-analysis-of) 관계 등을 예시하였다. 각 탐지 분석 관계 오브젝트는 해당 맬웨어 오브젝트들이 어떤 분석에 따라 탐지되었는지 나타낼 수 있다.
예를 들면, 제1 탐지 분석(av-analysis-of) 관계 오브젝트는, 관련된 맬웨어 오브젝트(malware SDO)가 맬웨어 분석 오브젝트(malware-analysis SDO)인 AV 기반 분석을 기반으로 악성으로 탐지된 관계(av-analysis-of)임을 나타낸다.
그리고, 제2 탐지 분석(static-analysis-of) 관계 오브젝트는, 관련된 맬웨어 오브젝트(malware SDO)가 맬웨어 분석 오브젝트(malware-analysis SDO)인 야라(Yara) 룰 등의 정적 분석 기반으로 악성으로 탐지된 관계임을 나타낸다.
제3 탐지 분석(x-ai-analysis) 관계 오브젝트는, 관련된 맬웨어 오브젝트(malware SDO)가 맬웨어 분석 오브젝트(malware-analysis SDO)인 인공지능 기반으로 악성으로 탐지된 관계임을 나타낸다.
제4 탐지 분석(dynamic-analysis-of) 관계 오브젝트는, 관련된 맬웨어 오브젝트(malware SDO)가 맬웨어 분석 오브젝트(malware-analysis SDO)인 동적 분석 기반으로 악성으로 탐지된 관계임을 나타낸다.
제5 탐지 분석(x-dbp-analysis-of) 관계 오브젝트는, 관련된 맬웨어 오브젝트(malware SDO)가 맬웨어 분석 오브젝트(malware-analysis SDO)인, 분석된 데이터의 프로파일링 기법에 따라 악성으로 탐지된 관계임을 나타낸다. 위에서 분석된 데이터의 프로파일링 기법의 일 예로서, 심층 분석 프로파일링을 예시하였다.
이 예에 따르면, 상기 파일이 실행파일인 경우, 그 파일의 바이너리 소스 내 함수 벡터인 인스트럭션 시퀀스를 분석한 과정(도 17 내지 도 27에서 예시)의 결과가 제5 탐지 분석(x-dbp-analysis-of) 관계 오브젝트로 표시될 수 있다.
또는, 상기 파일이 비실행파일인 경우, 문서 또는 스크립트 파일 등 비실행파일의 분석 과정(도 28 내지 44에서 예시)의 결과가 제5 탐지 분석(x-dbp-analysis-of) 관계 오브젝트로 표시될 수 있다.
또는, 상기 파일이 웹페이지인 경우, 웹페이지에 대한 악성 분석 과정(도 45 내지 도 57에서 예시)의 결과가 제5 탐지 분석(x-dbp-analysis-of) 관계 오브젝트로 표시될 수도 있다. 이와 같이 여러 가지 다른 탐지 분석 결과에 따른 관계 오브젝트들은 각 맬웨어 오브젝트(malware SDO)가 어떤 분석을 통해 탐지된 것인지를 나타낼 수 있다.
도 63은 개시한 실시 예에 따라 분석한 사이버 위협 정보 중 데이터의 공격 분석 또는 취약점 정보를 사이버 위협 정보 공유 모델 기반으로 예시한 예이다.
사이버 위협 정보 공유 모델로서, 현재 STIX 모델은 맬웨어 오브젝트(malware SDO)만이 취약점 오브젝트(vulnerability SDO) 또는 공격 패턴 오브젝트(attack-pattern SDO)과 관계를 가지도록 정의된다.
그러나 하나의 파일이 여러 악성 탐지 방법에 의해서 서로 다른 기준으로 맬웨어 (malware)로 분석될 수 있기 때문에 이러한 관점에서 현재 STIX 모델은 사이버 위협 정보를 표현하기 부적절하다. 이 도면에서 예시한 사이버 위협 정보 공유 모델의 예에서는 파일 오브젝트(file SCO)가 취약점 오브젝트(vulnerability SDO) 또는 공격 패턴 오브젝트(attack-pattern SDO)과 관계를 가질 수 있다.
여기서 파일 오브젝트(file SCO)가 취약점 오브젝트(vulnerability SDO)와 target 관계(target SRO)가 있음을 나타낸다.
Targets 관계(target SRO) 및 취약점 오브젝트(vulnerability SDO)
Targets 관계(target SRO)는 공격 패턴이 일반적으로 관련 Identity(ID), 위치 또는 취약점 오브젝트로 표시되는 피해자, 위치 또는 취약성의 유형을 타겟으로 한다고 설명할 때 사용된다 (This Relationship describes that this Attack Pattern typically targets the type of victim, location, or vulnerability represented by the related Identity, Location, or Vulnerability object.).
이 예에서 파일 오브젝트(file SCO)는 취약점 오브젝트(vulnerability SDO)가 나타내는 정보에 대해 타겟 관계가 있음을 나타낼 수 있다.
그리고 파일 오브젝트(file SCO)는 공격 패턴 오브젝트(attack-pattern SDO)가 나타내는 정보에 대해 use 관계(use SRO)가 있음을 나타낸다.
Use 관계(use SRO) 및 공격 패턴 오브젝트(attack-pattern SDO)
Use 관계(use SRO)는 관련 맬웨어 또는 도구를 사용하여 공격 패턴에서 식별된 동작을 수행함을 설명한다.
이 예에서는 파일 오브젝트(file SCO)가 공격 패턴 오브젝트(attack-pattern SDO)의 속성을 가진 공격들을 이용함을 나타낼 수 있다.
현재 STIX 모델에서 맬웨어 오브젝트(malware SDO)는 취약점 오브젝트(vulnerability SDO), 공격 패턴 오브젝트(attack-pattern SDO)의 관계만을 이용해서 연관 관계가 표현된다. 예를 들어 맬웨어 오브젝트(malware SDO)와 취약점 오브젝트(vulnerability SDO), 공격 패턴 오브젝트(attack-pattern SDO)가 관계를 가지도록 정의된다. 그러나 이러한 부분은 맬웨어를 기술하는데 효율적이지 않다.
예를 들어 하나의 파일이 여러 악성 탐지 방법에 의해서 서로 다른 기준으로 malware로 분석될 수 있기 때문에, 파일 오브젝트(file SCO)가 취약점 오브젝트(vulnerability SDO) 또는/및 공격 패턴 오브젝트(attack-pattern SDO)가 관계(relation)을 가지도록 하면 더욱 용이하게 사이버 위협 정보의 공유가 가능하다.
한편, 현재 STIX 모델은 취약점 오브젝트(vulnerability SDO) 또는 공격 패턴 오브젝트(attack-pattern SDO)에 대해 관계 오브젝트(SRO)만을 이용해서 연관 관계를 표현한다. 현재 STIX 모델은 번들 오브젝트(bundle SDO)를 이용하여 취약점 오브젝트(vulnerability SDO) 또는 공격 패턴 오브젝트(attack-pattern SDO)에 대해 사이버 위협 정보를 표현할 수도 있지만, 번들 오브젝트(bundle SDO)에는 STIX 객체 리스트만 포함되기 때문에 부가 정보를 기술하기 어렵다.
그러나, 이 도면에서 예시한 바와 같이 해당 악성파일이 가지는 취약점 오브젝트(vulnerability SDO)와 공격 패턴 오브젝트(attack-pattern SDO)을 하나의 묶음의 정보로 표현할 수 있으면 사이버 위협 정보에 대한 정보 전달력을 높일 수 있어 공유 모델에 매우 효과적으로 사용될 수 있다.
이러한 효과를 제공하기 위에 이 실시 예는 새로운 오브젝트인 공격 행위 식별자 오브젝트(x-sandslab-io-tids로 표시)를 개시하고, 이 오브젝트는 공격 행위의 식별자를 명확히 알 수 있도록 기술한다.
공격 행위 식별자 오브젝트(x-sandslab-io-tids SDO)
공격 행위 식별자 오브젝트(x-sandslab-io-tids SDO)는 파일과 관련된 취약점 오브젝트(vulnerability SDO), 공격 패턴 오브젝트(attack-pattern SDO), 및 해당 파일에 따른 공격 행위의 식별자, 예를 들어 위의 예시에 따르면 MITRE ATT&CK에 따른 공격 행위 식별자를 기술할 수 있도록 할 수 있다.
이 예에서는 공격 행위 식별자 오브젝트(x-sandslab-io-tids SDO)가 취약점 오브젝트(vulnerability SDO)와 공격 패턴 오브젝트(attack-pattern SDO)에 대한 관찰 속성(object_refs) 리스트를 가질 수 있음을 예시한다.
관찰 속성 (object_refs)
관찰 속성 object_refs는 관찰을 나타내는 SCO 및 SRO 리스트 또는 목록인데 관찰 속성 object_refs가 정의된 경우 최소한 하나의 SCO 참조를 포함한다. 관찰 속성 object_refs는 SCO가 단일 관찰의 일부로 관련되어 있는 경우 여러 SCO 및 해당 SRO를 포함할 수도 있다.
예를 들어, 네트워크 트래픽 오브젝트와 src_ref 및 dst_ref 속성을 통해 관련된 두 개의 IPv4 주소 개체는 모두 관련되어 단일 엔터티를 특성화하는 데 사용될 수 있으며 동일한 관찰 데이터에 포함될 수 있다.
공격 행위 식별자 오브젝트(x-sandslab-io-tids SDO)
예시한 공격 행위 식별자 오브젝트(x-sandslab-io-tids SDO)는 공격 상세 분석 오브젝트(x-sandslab-io-dbpt SDO로 표시)를 속성 x_tids_ref로 표시된 공격 행위 식별자 속성(x_tids_ref)으로 가질 수 있다.
이 예에서 공격 행위 식별자 속성(x_tids_ref)를 이용해 공격 상세 분석 오브젝트(x-sandslab-io-dbp SDO로 표시)에 따른 공격 행위 식별자 목록을 제공할 수 있다.
분석 프로파일링 오브젝트(x-sandslab-io-dbp SDO)
분석 프로파일링 오브젝트(x-sandslab-io-dbp SDO)는 분석된 데이터의 분석 프로파일링 정보를 나타낼 수 있다.
분석 프로파일링 오브젝트(x-sandslab-io-dbp SDO)는 제1 속성인 공격 행위 식별자 속성 (x_tids_ref)으로 공격 행위 식별자 오브젝트(x-sandslab-io-tids SDO)와 연관될 수 있다.
분석 프로파일링 오브젝트(x-sandslab-io-dbp SDO)는 제2 속성인 함수 정보 속성 (x_func_refs)을 이용하여 파일 내에 분석된 함수들의 묶음 정보와 연관될 수 있다.
함수 정보 속성(x_func_refs)은 공격 상세 분석 정보의 결과에 따라 공격 행위를 유발하는 여러 가지 함수에 대한 정보 또는 함수에 따른 리스트를 포함할 수 있다.
한편, 분석 프로파일링 오브젝트(x-sandslab-io-dbp SDO)은 분석 데이터의 프로파일링에 따라 분석된 맬웨어 분석 오브젝트(malware-analysis SDO)와 유사도 분석 관계(x-net-similar-to)로서 연관될 수 있다. 그러면, 분석 프로파일링 오브젝트(x-sandslab-io-dbp SDO)은 유사도 분석 관계(x-net-similar-to)에 따라 유사하게 특징으로 분석된 맬웨어 분석 오브젝트(malware-analysis SDO)에 대한 정보를 제공할 수 있다.
공격 행위 함수 오브젝트(x-sandslab-io-func SDO)
공격 행위 함수 오브젝트(x-sandslab-io-func SDO)는 분석된 데이터의 공격 행위에 포함된 함수 정보를 나타낼 수 있다. 예를 들어 공격 행위 함수 오브젝트(x-sandslab-io-func SDO)는 파일과 관련해 분석한 함수의 메타정보, 사용된 공격 식별자(TID), 그리고 코드 정보를 포함할 수 있다.
여기서 분석한 함수의 메타정보는 함수의 이름(시작 주소), 함수를 구성하는 코드의 라인 수, 함수의 시작과 끝 오프셋 주소, 함수의 특징정보로부터 만들어진 퍼지해시 값, 함수에서 사용된 공격 식별자(TID) 정보를 포함할 수 있다.
여기서 코드 정보는 각 코드 라인에 따라 코드 오프셋 주소, 코드를 나타내는 인스트럭션 바이트 값, 상기 분석한 함수와 관련된 opcode의 mnemonic, operand 정보를 포함할 수 있다.
설명한 바와 같이 공격 행위 함수 오브젝트(x-sandslab-io-func SDO)는 분석 프로파일링 오브젝트(x-sandslab-io-dbp SDO)와 공격 행위 식별자 속성(x_tids_ref)에 의해 연관될 수 있다.
공격 행위 함수 오브젝트(x-sandslab-io-func SDO)는 공격 행위 식별자 속성(x_tids_ref)에 기반해 공격 상세 분석 오브젝트(x-sandslab-io-dbp SDO)에 공격 행위 식별자 목록을 제공할 수 있다.
공격 행위 함수 오브젝트(x-sandslab-io-func SDO)는 동일 함수 관계(x-dbp-identical-with SRO)를 가질 수 있다.
동일 함수 관계(x-dbp-identical-with SRO)
동일 함수 관계(x-dbp-identical-with SRO)는 분석된 함수와 동일한 사이버 위협 정보의 특징을 가지는 다른 함수(동일 또는 다른 파일로부터 얻은 사이버 위협 정보의 프로파일링 분석에 따라 다른 함수도 포함)와의 관계를 나타낼 수 있다.
따라서, 공격 행위 함수 오브젝트(x-sandslab-io-func SDO)는 사이버 위협 정보 또는 분석된 함수와 동일한 특성을 가지는 함수 목록을 제공할 수 있다.
위와 같은 오브젝트, 관계 또는 속성을 이용해 파일에 대한 공격 분석 또는 취약점 정보가 제공될 수 있다.
이 예에 따르면, 파일 오브젝트(file SCO)는, 공격 식별자 오브젝트(x-sandslab-io-tids SDO), 공격 상세 분석 오브젝트(x-sandslab-io-dbp SDO) 또는/및 공격 행위 함수 오브젝트(x-sandslab-io-func SDO)를 created_by_ref 속성으로 가질 수 있다. 있다.
그리고 파일 오브젝트(file SCO)는 예시한 바와 같이 맬웨어 오브젝트(malware SDO)와 관련하여 sample_refs 속성을 가질 수 있다. 설명한 바와 같이 sample_refs 속성은 이 맬웨어 인스턴스 또는 패밀리와 관련된 SCO 파일 또는 아티팩트(artifact) 개체의 식별자 목록을 지정할 수 있다.
맬웨어 오브젝트들(malware)은 맬웨어 분석 오브젝트(malware analysis)와 분석 프로파일링에 따른 분석(x-net-analysis-of) 관계를 가질 수 있다.
분석 프로파일링에 따른 분석(x-net-analysis-of) 관계에 의해 지칭되는 분석 프로파일링은, 위에서 개시한 심층 분석 프로파일링이 될 수 있다.
따라서, 상기 파일이 실행파일인 경우, 심층 분석 프로파일링으로서 그 파일의 바이너리 소스 내 함수 벡터인 인스트럭션 시퀀스를 분석 과정(도 17 내지 도 27에서 참고)을 예시하였다.
상기 파일이 비실행파일인 경우, 심층 분석 프로파일링으로서 문서 또는 스크립트 파일 등 비실행파일의 분석 과정(도 28 내지 44 참고)을 예시하였다.
상기 파일이 웹페이지인 경우, 심층 분석 프로파일링으로서 웹페이지에 대한 악성 분석 과정(도 45 내지 도 57 참고)을 예시하였다.
도 64는 개시한 실시 예에 따라 분석한 사이버 위협 정보 중 네트워크 통신 정보를 사이버 위협 정보 공유 모델 기반으로 예시한 예이다.
이 예에서, 사이버 위협 정보 공유 모델로서, 사이버 위협 정보 중 파일 오브젝트와 관련된 사이버 위협 정보로서 네트워크 통신 정보를 제공하는 예를 개시한다.
현재 STIX 모델에서 맬웨어 오브젝트(malware SDO)는 오브젝트(ip4-addr, ip6-addr, domain-name, url)들과 관계 communicates-with 로 연관이 될 수 있다.
관계 communicates-with는 이 악성코드 인스턴스(또는 패밀리)가 정의된 네트워크 주소 지정 가능 리소스와 통신(비콘, 연결 또는 데이터 추출)하는 것을 문서화한다. 즉, 현재 STIX 모델에서 맬웨어 오브젝트(malware SDO)에 대해 IP4 주소, IP6 주소, 도메인네임 및 리소스 위치 URL 정보를 문서화할 수 있다.
그런데 하나의 파일은 여러 가지 악성 탐지 방법에 의해 서로 다른 기준으로 악성코드(malware)로 분석될 수 있어서 현재 STIX 모델의 사이버 위협 정보의 표현 방법은 정보 공유에 제한이 많다.
이 예에서는, 파일 오브젝트(file SCO)와 관찰 데이터 오브젝트(observed-data)와 관계 communicates-with로 연관이 될 수 있다
관찰 데이터 오브젝트(observed-data)는 사이버 관찰 가능 개체(SCO)를 사용하여 파일, 시스템 및 네트워크와 같은 사이버 보안 관련 개체에 대한 정보를 전달한다. 예를 들어 관찰 데이터 오브젝트(Observed Data)는 IP 주소, 네트워크 연결, 파일 또는 레지스트리 키에 대한 정보를 캡처할 수 있다.
관찰 데이터 오브젝트(observed-data)는 단일 개체(파일, 네트워크 연결)에 대한 단일 관찰과 개체에 대한 여러 관찰의 집계를 모두 캡처할 수 있다. 예를 들어 방화벽은 보이는 각 연결에 대해 단일 네트워크 트래픽 개체를 포함하는 단일 관찰 데이터 인스턴스를 내보낼 수 있다. 방화벽은 또한 데이터를 집계하고 대신 IP 주소와 해당 창에서 해당 IP 주소가 관찰된 횟수를 나타내는 적절한 관찰된 수 (number_observed) 값과 함께 특정 시간(예, 10분)마다 관찰 데이터 인스턴스를 보낼 수 있다. 샌드박스는 발견한 파일 해시가 포함된 관찰 데이터 인스턴스를 내보낼 수 있다.
관찰 데이터 오브젝트(observed-data)는 다른 SDO와 관련되어 해당 개체와 관련된 원시 데이터를 나타낼 수도 있다. 예를 들어, 관찰 관계 개체는 indicator, 맬웨어 또는 기타 SDO를 특정 관찰 데이터와 연결하여 관찰 생성으로 이어진 원시 정보(예: 특정 인스턴스가 악성코드가 활성화됨)를 나타낼 수 있다.
이 도면에서 예시한 바 같이 사이버 위협 정보 공유 모델의 네트워크 통신 정보를 표시한 경우, 관찰 데이터 오브젝트(observed-data)는 확장 번들 속성(x_object_refs_bundle)으로 네트워크 정보를 속성을 가지거나, 개별적인 네트워크 정보를 관찰 속성(object_refs)으로 가질 수 있다.
관찰 데이터 오브젝트(observed-data)는 IP4-address 또는 IP6-address의 IP 정보, 도메인 네임(domain-name), URL 또는 네트워크 트래픽(network-traffic) 등 관찰 오브젝트(SCO)들을 개별적인 네트워크 정보에 대한 관찰 속성(object_refs)을 가질 수 있다.
네트워크 트래픽(network-traffic) 관찰 오브젝트(SCO)는 IP4-address 또는 IP6-address의 IP 정보에 대한 관찰 오브젝트(SCO)을 속성으로 가질 수도 있다.
한편 IP4-address 또는 IP6-address의 IP 정보, 도메인 네임(domain-name), URL 등의 관찰 오브젝트(SCO)들은 whois 등의 정보를 나타내는 note 오브젝트를 각각 관찰 속성(object_refs)으로 가질 수 있다.
여기의 실시 예는, 파일 오브젝트(file SCO)가 관계 communicates-with에 기반해 연관되는 관찰 데이터 오브젝트(observed-data)가 확장 번들 속성(x_object_refs_bundle)을 가지도록 하였다.
확장 번들 속성(x_object_refs_bundle)은, 관찰 데이터 오브젝트(observed-data)가 위에서 예시한 개별적인 네트워크 정보의 관찰 속성과 note 오브젝트를 하나의 번들(bundle)에 포함시켜 지정할 수 있도록 한다.
그러면, 번들(bundle)에 필요한 객체들과 속성들을 모두 포함시켰기 때문에 관찰 데이터 오브젝트(observed-data)에 대해 한번에 네트워크 통신 정보를 기술하도록 할 수 있어서 통합적으로 사이버 위협 정보를 파악할 수 있다.
만약 위와 같이 관찰 데이터 오브젝트(observed-data)의 확장 속성을 번들로 통합하여 표현하지 않으면 사이버 위협 정보는 개별적으로 검색되어 획득되어야 하기 때문에 개시한 실시 예는 사이버 위협 정보를 통합적이고 효율적으로 제공할 수 있다.
도 65는 개시한 실시 예에 따른 사이버 위협 정보 공유 모델 기반으로 분석한 사이버 위협 정보 중 네트워크 분석 정보를 제공하는 예를 개시한다.
이 도면은 개시한 사이버 위협 정보 공유 모델 기반으로 파일 오브젝트(file SCO)에 대한 네트워크 분석 정보 또는 프로토콜 정보를 제공한 예이다.
여기서 파일 오브젝트(file SCO)는 확장 네트워크 속성(x-networking)으로 입출력네트워크 오브젝트(x-sandslab-io-networking SDO)를 가질 수 있다.
입출력네트워크 오브젝트(x-sandslab-io-networking SDO)는 대상 파일이 통신할 때 사용하는 네트워킹의 메타 정보를 나타낼 수 있다.
네트워킹의 메타 정보로서 입출력네트워크 오브젝트(x-sandslab-io-networking SDO)는, 데이터 플로우 오브젝트(x-sandslab-io-flow SDO)와 플로우 속성(flow_refs)으로 연관되거나 입출력 패킷 오브젝트(x-sandslab-io-packet SCO)와 패킷 속성(packet_refs)으로 연관될 수 있다.
데이터 플로우 오브젝트(x-sandslab-io-flow SDO)는 각각의 속성(feature_ref, udp_sess_ref, tcp_sess_ref, classify_ref, packet_refs)에 기반하여, 패킷 특징 오브젝트(x-sandslab-io-packet-feature SCO), UDP 세션 오브젝트(x-sandslab-io-udp-session SCO), TCP 세션 오브젝트(x-sandslab-io-tcp-session SCO), 입출력 분류 오브젝트(x-sandslab-io-classification), 그리고 다시 입출력 패킷 오브젝트(x-sandslab-io-packet SCO)와 각각 연관될 수 있다.
각각의 오브젝트(SCO)들은 대상 파일이 통신할 경우 각각 패킷 특징, UDP 세션, TCP 세션, 입출력 분류, 입출력 패킷에 대한 정보를 각각 표시할 수 있다.
한편, 네트워크 프로토콜 정보로서 입출력네트워크 오브젝트(x-sandslab-io-networking SDO)는, 각각의 확장 속성( )으로 네트워크 프로토콜 오브젝트들()과 관계를 가질 수 있다.
각각의 네트워크 프로토콜 오브젝트들(x-sandslab-io-http, x-sandslab-io-ssl, x-sandslab-io-dns, x-sandslab-io-ssh, x-sandslab-io-dhcp, x-sandslab-io-mail(POP3, SMTP, IMAP), x-sandslab-io-ftp, x-sandslab-io-smb, x-sandslab-io-l2tp, x-sandslab-io-pptp, x-sandslab-io-telnet)은 관찰 속성 (object_refs)에 따라 각각의 프로토콜 정보를 표시하는 네트워크 프로토콜 오브젝트(SCO)들을 가질 수 있다.
이 예에서 각각의 프로토콜 정보를 표시하는 네트워크 프로토콜 오브젝트(SCO)들을 프로토콜 명에 따라 x-sandslab-io-[프로토콜 명]-protocol로 표시하였다.
예시한 파일 오브젝트(file SCO)는 예시한 사이버 위협 정보 공유 모델에서 네트워크-트래픽 (network-traffic) 객체에서 extensions 속성으로 파일이 통신하는 네트워크 메타 정보 또는 네트워크 프로토콜 정보와 연결되어 표시될 수 있다. .
이러한 네트워크 메타 정보 또는 네트워크 프로토콜 정보를 여기서는 네트워크 분석 정보라고 호칭한다.
네트워크 분석 정보는, 파일이 실행되면서 통신하는 정보로서, 소스에서 시작되어 대상으로 주소가 지정된 임의의 네트워크 트래픽을 나타낼 수 있다. 여기의 예에서는 프로토콜의 정보로서 13개의 프로토콜((HTTP, SSL, DNS, SSH, DHCP, mail(POP3, SMTP, IMAP), FTP, SMB, L2TP, PPTP, TELNET)을 예시하였으나, 유사한 방식을 확장하여 여기에 나타내지 않은 다른 프로토콜도 유사하게 표현이 가능하다.
개시한 예에서, 파일 오브젝트(file SCO)에 대한 네트워크 프로토콜 정보는 해당 파일이 통신하면서 사용한 프로토콜의 분석 정보들을 표현한 것으로서 프로토콜 분석을 하면서 송수신된 파일 추출하고, 추출된 파일은 다시 분석에 사용되며, downloads relation으로 연관정보를 지정할 수 있다.
도 66은 개시한 실시 예에 따라 분석한 사이버 위협 정보를 사이버 위협 정보 공유 모델 기반으로 표시한 예를 나타낸 도면이다.
이 도면에서 파일 오브젝트(file SCO)에 대한 각각의 사이버 위협 정보를 예시한 사이버 위협 정보의 공유 모델로 하나의 도면에 표시하였다. 파일 오브젝트(file SCO)는 실행 파일, 비실행파일, 웹페이지 등 여러 가지 파일일 수 있다.
파일 오브젝트(file SCO)가 실행 파일을 의미하는 오브젝트라면, 도 17 내지 도 27에 예시한 심층 분석 프로파일링 방식에 따라 파일로부터 사이버 위협 정보를 얻을 수 있다.
파일 오브젝트(file SCO)가 비실행 파일을 나타내는 오브젝트라면, 도 28 내지 도 44에 예시한 심층 분석 프로파일링 방식에 따라 파일로부터 사이버 위협 정보를 얻을 수 있다.
파일 오브젝트(file SCO)가 웹페이지 파일을 나타내는 오브젝트라면, 도 45 내지 도 57에 예시한 심층 분석 프로파일링 방식에 따라 파일로부터 사이버 위협 정보를 얻을 수 있다.
이와 같이 얻은 사이버 위협 정보는 개시한 사이버 위협 정보 공유 모델을 기반으로 다른 사용자에게 제공될 수 있다.
파일 오브젝트(file SCO)에 대한 속성 또는 분석 정보는 도 61에 예시하였다.
파일 오브젝트(file SCO)에 대한 악성 탐지 정보는 도 62에 예시하였다.
파일 오브젝트(file SCO)에 대한 공격 분석 및 취약점 정보는 도 63에 예시하였다.
파일 오브젝트(file SCO)에 대한 네트워크 통신 정보는 도 63에 예시하였다.
파일 오브젝트(file SCO)에 대한 네트워크 분석 정보는 도 64에 예시하였다.
도 67은 개시한 실시 예에 따라 분석한 사이버 위협 정보를 사이버 위협 정보 공유 모델 기반으로 제공하는 사이버 위협 정보 처리 장치의 일 예를 나타낸 도면이다.
사이버 위협 정보 처리 장치의 일 실시예는 프로세서를 포함하는 서버(2100), 데이터베이스(2200), 및 인텔리전스 플랫폼(10000)을 포함할 수 있다.
데이터베이스(2200)는 이미 분류된 악성 코드 또는 악성 코드의 패턴 코드를 저장할 수 있다.
서버(2100)의 프로세서는 응용 프로그램 인터페이스(Application Programming Interface) (1100)를 통해 사이버 위협 정보 또는 그 정보와 관련된 파일을 제공받고, 프레임워크(18000)에서 그 파일을 분석하고 사이버 위협 정보를 얻을 수 있는 모듈들을 실행할 수 있다.
프레임워크(18000)의 분석및예측모듈(18100)내 분석모듈(18900)은 수신된 파일을 파일의 타입에 따라 분석할 수 있다. 여기서는 위에서 개시한 여러 가지 분석 모듈들을 이 도면의 하나의 분석모듈(18900)로 표시하였다.
예를 들어, 분석모듈(18900)은 실행 파일, 비실행파일, 웹페이지 등 여러 가지 타입의 파일을 수신하고 AI 엔진(1230)과 함께 그 파일과 관련된 사이버 위협 정보를 얻을 수 있다.
분석모듈(18900)과 AI 엔진(1230)은 심층 분석 프로파일링 방식으로 파일을 분석할 수 있다.
예를 들어 분석모듈(18901)은 파일이 실행 파일인 경우 도 17 내지 도 27에 예시한 예들에 따라 파일로부터 사이버 위협 정보를 얻을 수 있다.
분석모듈(18900)은 파일이 비실행 파일인 경우 도 28 내지 도 44에 예시한 예들에 따라 파일로부터 사이버 위협 정보를 얻을 수 있다.
분석모듈(18900)은 파일이 웹페이지인 경우 도 45 내지 도 57에 예시한 예들에 따라 파일로부터 사이버 위협 정보를 얻을 수 있다.
AI 엔진(1230)은 분석모듈(18910)이 분석한 분석 데이터를 기반으로 인공 지능 모델을 이용해 상기 파일에 관련된 사이버 위협 정보를 분류할 수 있다. 파일 방식에 따라 AI 엔진이 사이버 위협 정보를 분석하고 분류하는 예는 위에서 개시하였다.
정보공유모듈(18915)은 분석모듈(18900)과 AI 엔진(1230)이 분석한 사이버 위협 정보를 사이버 위협 정보 공유 모델을 기반으로 정보를 생성할 수 있다.
사이버 위협 정보 공유 모델을 기반으로 제공될 수 있는 정보의 상세한 예는 도 58 내지 도 66에 예시하였다.
도 68은 개시한 실시 예에 따라 분석한 사이버 위협 정보를 사이버 위협 정보 공유 모델 기반으로 제공하는 일 예를 나타낸 도면이다.
입력된 파일로부터 사이버 위협 정보와 관련된 데이터를 분석하는 분석 프로파일링(profiling) 기반하여 상기 파일의 특징 정보를 추출한다(S4010).
상기 추출한 특징 정보를 인공 지능 모델을 이용해 상기 파일에 관련된 사이버 위협 정보를 얻는다(S4020)
상기 분석 프로파일링에 대한 정보를 포함하는 사이버 위협 정보 공유 모델에 기반하여 상기 얻은 사이버 위협 정보를 제공한다(S4030).
상기 사이버 위협 정보 공유 모델은 상기 개시한 예에 따라 상기 파일에 관련된 공격 행위 식별자 정보를 제공할 수 있다. 상기 사이버 위협 정보 공유 모델은 상기 파일에 관련된 공격 행위에 사용된 함수 정보를 포함할 수 있다.
상기 사이버 위협 정보 공유 모델은 상기 파일 자체의 속성 또는 사이버 위협 정보 관점의 분석 정보를 제공할 수 있다. 이를 통해 사용자는 상기 파일의 자체적인 속성이나 기본적인 분석 정보를 얻을 수 있는데, 상기 사이버 위협 정보 공유 모델에 따른 정보는 도 61에 상세한 실시 예를 개시하였다.
상기 사이버 위협 정보 공유 모델은 상기 파일과 관련된 악성 탐지 정보를 제공할 수 있다. 이를 통해 사용자는 상기 파일과 관련된 여러 가지 맬웨어와 이를 어떤 분석을 통해 얻었는지 확인할 수 있다.
상기 사이버 위협 정보 공유 모델은, 상기 파일에 관련된 맬웨어를 분석한 분석 방법 또는 상기 분석 프로파일링에 대한 정보를 제공할 수 있다.
도 62에 파일의 악성 탐지 정보 제공에 대한 상세한 실시 예를 개시하였다.
개시한 것처럼 상기 사이버 위협 정보 공유 모델은 상기 파일과 관련된 취약점 정보와 공격 패턴 정보의 관련성을 기술할 수 있다. 도 63에 파일의 취약점과 공격에 관련된 정보에 대한 상세한 실시 예를 개시하였다.
상기 사이버 위협 정보 공유 모델은 상기 개시한 예에 따라 상기 파일에 관련된 네트워크 통신 정보를 제공할 수 있다.
개시한 것처럼 예를 들어 상기 사이버 위협 정보 공유 모델은 상기 파일과 관련된 관찰된 네트워크 통신 정보를 번들 형태로 제공할 수 있다.
상기 사이버 위협 정보 공유 모델은, 상기 파일과 관련된 관측 데이터 중 적어도 하나의 네트워크 정보와 상기 네트워크 정보를 각각 기술하는 노트(note) 정보를 하나의 번들에 포함시켜 제공할 수 있다. 도 64에 이에 대한 상세한 실시 예를 개시하였다.
상기 사이버 위협 정보 공유 모델은 따라 상기 파일에 관련된 네트워크 분석 정보를 제공할 수 있다. 상기 사이버 위협 정보 공유 모델은 상기 파일이 통신하는 네트워크 통신 정보, 네트워크의 메타 정보, 또는 네트워크 프로토콜 정보 중 적어도 하나를 포함하는 네트워크 분석 정보를 포함할 수 있다.
즉, 네트워크 분석 정보는 파일이 통신하면서 사용하는 네트워크의 메타 정보나 프로토콜 정보를 포함할 수 있다. 도 65에 이에 대한 상세한 실시 예를 개시하였다.
예시한 사이버 위협 정보 공유 모델에 기반하여 사용자는 해당 파일과 관련된 사이버 위협 정보를 더욱 잘 이해하고 대처할 수 있다.
1010, 1020, 1030: 클라이언트
1100: 응용 프로그래밍 인터페이스
1210, 18000, 18100: 프레임워크
1211, 1213, 1215, 1219: 제 1모듈, 제 2모듈, 제 3 모듈, 제 N 모듈
1230: AI 엔진
2000: 물리장치
2200: 데이터베이스
2100: 서버
2510, 2520, 2530,2540, 2610, 2620,2630 디시전 트리의 노드
10000: 인텔리전스 플랫폼
18601: 제 1특징분석모듈
18603: 제 2특징분석모듈
18605: 제 3특징분석모듈
18607: 특징처리모듈
18608: 악성탐지모듈
18609: 분류모듈
18801: 수신모듈
18803: 분석모듈
18805: 변환모듈
18807: 학습모듈

Claims (7)

  1. 입력된 파일로부터 사이버 위협 정보와 관련된 데이터를 분석하는 분석 프로파일링(profiling) 기반하여 상기 파일의 특징 정보를 추출하는 단계;
    상기 추출한 특징 정보를 인공 지능 모델을 이용해 상기 파일에 관련된 사이버 위협 정보를 얻는 단계; 및
    사이버 위협 정보 공유 모델을 기반으로 상기 파일이 통신하는 네트워크 통신 정보, 네트워크의 메타 정보, 또는 네트워크 프로토콜 정보 중 적어도 하나를 포함하는 사이버 위협 정보를 제공하는 단계;를 포함하는 사이버 위협 정보 처리 방법.
  2. 제1항에 있어서,
    상기 사이버 위협 정보 공유 모델은, 상기 파일에 관련된 맬웨어를 분석한 분석 방법 또는 상기 분석 프로파일링에 대한 정보를 제공하는 사이버 위협 정보 처리 방법.
  3. 제1항에 있어서,
    상기 사이버 위협 정보 공유 모델은, 상기 파일과 관련된 관측 데이터 중 적어도 하나의 네트워크 정보와 상기 네트워크 정보를 각각 기술하는 노트(note) 정보를 하나의 번들에 포함시켜 제공하는, 사이버 위협 정보 처리 방법.
  4. 데이터를 저장하는 데이터베이스; 및
    프로세서;를 포함하고,
    상기 프로세서는,
    입력된 파일로부터 사이버 위협 정보와 관련된 데이터를 분석하는 분석 프로파일링(profiling) 기반하여 상기 파일의 특징 정보를 추출하고;
    상기 추출한 특징 정보를 인공 지능 모델을 이용해 상기 파일에 관련된 사이버 위협 정보를 얻고; 및
    사이버 위협 정보 공유 모델을 기반으로 상기 파일이 통신하는 네트워크 통신 정보, 네트워크의 메타 정보, 또는 네트워크 프로토콜 정보 중 적어도 하나를 포함하는 사이버 위협 정보를 제공하는; 것을 포함하는 연산들을 수행하는 사이버 위협 정보 처리 장치.
  5. 제4항에 있어서,
    상기 사이버 위협 정보 공유 모델은, 상기 파일에 관련된 맬웨어를 분석한 분석 방법 또는 상기 분석 프로파일링에 대한 정보를 제공하는 사이버 위협 정보 처리 장치.
  6. 제4항에 있어서,
    상기 사이버 위협 정보 공유 모델은, 상기 파일과 관련된 관측 데이터 중 적어도 하나의 네트워크 정보와 상기 네트워크 정보를 각각 기술하는 노트(note) 정보를 하나의 번들에 포함시켜 제공하는, 사이버 위협 정보 처리 장치.
  7. 입력된 파일로부터 사이버 위협 정보와 관련된 데이터를 분석하는 분석 프로파일링(profiling) 기반하여 상기 파일의 특징 정보를 추출하고;
    상기 추출한 특징 정보를 인공 지능 모델을 이용해 상기 파일에 관련된 사이버 위협 정보를 얻고; 및
    사이버 위협 정보 공유 모델을 기반으로 상기 파일이 통신하는 네트워크 통신 정보, 네트워크의 메타 정보, 또는 네트워크 프로토콜 정보 중 적어도 하나를 포함하는 사이버 위협 정보를 제공하는; 것을 포함하는 명령어들을 수행하는, 컴퓨터로 실행 가능한 프로그램을 저장하는 저장매체.
KR1020230101427A 2022-08-04 2023-08-03 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체 KR20240019739A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020220097517 2022-08-04
KR20220097517 2022-08-04

Publications (1)

Publication Number Publication Date
KR20240019739A true KR20240019739A (ko) 2024-02-14

Family

ID=89849572

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020230101425A KR20240019738A (ko) 2022-08-04 2023-08-03 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체
KR1020230101427A KR20240019739A (ko) 2022-08-04 2023-08-03 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체
KR1020230101430A KR20240019740A (ko) 2022-08-04 2023-08-03 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020230101425A KR20240019738A (ko) 2022-08-04 2023-08-03 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020230101430A KR20240019740A (ko) 2022-08-04 2023-08-03 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체

Country Status (2)

Country Link
KR (3) KR20240019738A (ko)
WO (1) WO2024029919A1 (ko)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101960869B1 (ko) * 2017-06-30 2019-03-21 주식회사 씨티아이랩 인공지능 기반 악성코드 검출 시스템 및 방법
KR101969572B1 (ko) * 2018-06-22 2019-04-16 주식회사 에프원시큐리티 악성코드 탐지 장치 및 방법
KR102093275B1 (ko) * 2019-05-23 2020-03-25 (주)지란지교시큐리티 악성코드 감염 유도정보 판별 시스템, 프로그램이 기록된 저장매체 및 방법
KR102362516B1 (ko) * 2021-08-11 2022-02-15 주식회사 샌즈랩 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체
KR102424014B1 (ko) * 2022-02-09 2022-07-25 주식회사 샌즈랩 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체

Also Published As

Publication number Publication date
WO2024029919A1 (ko) 2024-02-08
KR20240019740A (ko) 2024-02-14
KR20240019738A (ko) 2024-02-14

Similar Documents

Publication Publication Date Title
US10972493B2 (en) Automatically grouping malware based on artifacts
US10200390B2 (en) Automatically determining whether malware samples are similar
US20200201989A1 (en) Multi-point causality tracking in cyber incident reasoning
US11941054B2 (en) Iterative constraint solving in abstract graph matching for cyber incident reasoning
CN114679329B (zh) 用于基于赝象对恶意软件自动分组的***
Raju et al. A survey on cross-architectural IoT malware threat hunting
CN106384048A (zh) 一种威胁信息处理方法与装置
KR102362516B1 (ko) 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체
KR102424014B1 (ko) 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체
US10701087B2 (en) Analysis apparatus, analysis method, and analysis program
US11916937B2 (en) System and method for information gain for malware detection
KR102396237B1 (ko) 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체
KR20230103275A (ko) 사이버 보안 위협 정보 처리 장치, 사이버 보안 위협 정보 처리 방법 및 사이버 보안 위협 정보 처리하는 프로그램을 저장하는 저장매체
US20240054210A1 (en) Cyber threat information processing apparatus, cyber threat information processing method, and storage medium storing cyber threat information processing program
US20230048076A1 (en) Cyber threat information processing apparatus, cyber threat information processing method, and storage medium storing cyber threat information processing program
KR102411383B1 (ko) 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체
KR102420884B1 (ko) 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체
KR20240019739A (ko) 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체
US20240054215A1 (en) Cyber threat information processing apparatus, cyber threat information processing method, and storage medium storing cyber threat information processing program
KR102447279B1 (ko) 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체
KR102447280B1 (ko) 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체
KR102396236B1 (ko) 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체
KR20240021677A (ko) 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 컴퓨터 판독 가능한 저장매체
KR20240021676A (ko) 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체
KR102396238B1 (ko) 사이버 위협 정보 처리 장치, 사이버 위협 정보 처리 방법 및 사이버 위협 정보 처리하는 프로그램을 저장하는 저장매체