KR20210051669A - 악성 코드 탐지 모델 학습 방법 및 이를 이용한 탐지 방법 - Google Patents

악성 코드 탐지 모델 학습 방법 및 이를 이용한 탐지 방법 Download PDF

Info

Publication number
KR20210051669A
KR20210051669A KR1020190137229A KR20190137229A KR20210051669A KR 20210051669 A KR20210051669 A KR 20210051669A KR 1020190137229 A KR1020190137229 A KR 1020190137229A KR 20190137229 A KR20190137229 A KR 20190137229A KR 20210051669 A KR20210051669 A KR 20210051669A
Authority
KR
South Korea
Prior art keywords
malicious code
time interval
list
detection model
time
Prior art date
Application number
KR1020190137229A
Other languages
English (en)
Other versions
KR102317833B1 (ko
Inventor
신장미
조영민
전정배
김장호
인태진
Original Assignee
삼성에스디에스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성에스디에스 주식회사 filed Critical 삼성에스디에스 주식회사
Priority to KR1020190137229A priority Critical patent/KR102317833B1/ko
Priority to US17/082,302 priority patent/US11475133B2/en
Publication of KR20210051669A publication Critical patent/KR20210051669A/ko
Application granted granted Critical
Publication of KR102317833B1 publication Critical patent/KR102317833B1/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
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2151Time stamp
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1425Traffic logging, e.g. anomaly detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/168Implementing security features at a particular protocol layer above the transport layer

Abstract

악성 코드 탐지 모델 학습 방법, 장치 및 이를 이용한 탐지 방법이 제공된다. 본 발명의 몇몇 실시예에 따른 악성 코드 탐지 모델 학습 방법은 악성 코드악성 코드 동적분석이 수행된 결과 로그로부터 호출된 함수에 대한 API 콜 정보를 얻는 단계, 상기 API 콜 정보로부터 추출된 API의 호출 시간을 가리키는 타임 스탬프를 이용하여 상기 타임 스탬프 간의 시간 간격을 가리키는 타임 인터벌을 계산하는 단계, 상기 타임 인터벌을 기초로 악성 코드 특징값을 결정하는 단계 및 상기 API 콜 정보에 포함된 상기 API의 콜 시퀀스와 상기 특징값을 이용하여 상기 악성 코드를 탐지하는 모델을 학습시키는 단계를 포함를 포함할 수 있다.

Description

악성 코드 탐지 모델 학습 방법 및 이를 이용한 탐지 방법{method for machine LEARNING of MALWARE DETECTING MODEL AND METHOD FOR detecting Malware USING THE SAME}
본 발명은 악성 코드 탐지 모델 학습 방법 및 장치에 관한 것이다. 보다 자세하게는, 동적분석이 수행된 결과 로그로부터 API 함수 호출 시간을 분석하여 악성 코드를 탐지할 수 있는 악성 코드 탐지 모델 학습 방법 및 장치에 관한 것이다.
의심 코드에 대하여 동적 분석(Dynamic analysis)을 수행하고, 그 결과를 이용하여 악성 코드를 탐지하기 기술이 제공된다. 예를 들어, 동적 분석의 결과 출력되는 API 호출 정보를 통해 악성 코드가 탐지될 수 있다. 도 1a에 도시된 바와 같이, 악성 코드가 호출하는 API 함수(a) 별 호출 빈도수(s)에 따른 스코어를 기반으로 악성 코드가 탐지될 수 있다. 또는, 도 1b에 도시된 바와 같이, 악성 코드가 호출하는 API 함수의 호출 시퀀스를 분석함으로써 악성 코드가 탐지될 수 있다.
그러나, 상기 설명된 동적 분석 기반의 악성 코드 탐지 기술은, 정상 코드가 악성 코드와 동일하거나 유사한 함수명을 사용하거나, 악성 코드와 유사한 패턴(p)으로 함수를 호출하게 되면, 악성 코드로 잘못 판정되는 문제가 있다. 또한, 악성 코드에서 함수명을 변형시키거나 전체 패턴에서 일부를 손실 재귀 또는 치환하는 등 다양한 방식으로 패턴을 변형시키는 경우 이를 탐지하지 못하는 경우도 있다. 따라서, 동적분석의 API 호출 정보를 이용하되, 악성 코드의 특징을 보다 명확히 식별하여 탐지할 수 있는 기술이 필요한 실정이다.
등록특허공보 제 10- 1472321호(2014.12.08. 등록)
본 발명의 몇몇 실시예를 통해 해결하고자 하는 기술적 과제는, API 함수의 호출 시각에 따른 패턴을 기반으로 악성 코드를 탐지하는 인공지능 모델의 기계 학습 방법, 기계 학습 장치 및 그 인공지능 모델을 이용한 악성 코드 탐지 방법 및 악성 코드 탐지 장치를 제공하는 것이다.
본 발명의 몇몇 실시예를 통해 해결하고자 하는 다른 기술적 과제는, API 함수의 호출 시간을 분석하여 악성 코드의 특징을 학습함에 따라, 시간의 흐름에 따라 본격적인 악성동작을 수행하는 악성 코드의 특징을 보다 세밀하게 분석할 수 있는 악성 코드 탐지 모델 학습 방법, 장치 및 이를 이용한 탐지 방법을 제공하는 것이다.
본 발명의 몇몇 실시예를 통해 해결하고자 하는 또 다른 기술적 과제는, 종래의 동적분석에 의해 탐지되지 않았던 악성 코드를 탐지하여 종래의 동적분석을 함께 이용하면서도 종래 방법의 미흡한 점을 보완할 수 있는 악성 코드 탐지 모델 학습 방법, 장치 및 이를 이용한 탐지 방법을 제공하는 것이다.
본 발명의 몇몇 실시예를 통해 해결하고자 하는 또 다른 기술적 과제는, 종래의 탐지 모델을 크게 변경하지 않으면서도 적용 가능할 수 있는 악성 코드 탐지 모델 학습 방법, 장치 및 이를 이용한 탐지 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명의 기술분야에서의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한, 본 발명의 몇몇 실시예에 따른 악성 코드 탐지 모델 학습 방법은 악성 코드악성 코드 동적분석이 수행된 결과 로그로부터 호출된 함수에 대한 API 콜 정보를 얻는 단계, 상기 API 콜 정보로부터 추출된 API의 호출 시간을 가리키는 타임 스탬프를 이용하여 상기 타임 스탬프 간의 시간 간격을 가리키는 타임 인터벌을 계산하는 단계, 상기 타임 인터벌을 기초로 악성 코드 특징값을 결정하는 단계 및 상기 API 콜 정보에 포함된 상기 API의 콜 시퀀스와 상기 특징값을 이용하여 상기 악성 코드를 탐지하는 모델을 학습시키는 단계를 포함할 수 있다.
일 실시예에서, 상기 타임 인터벌을 계산하는 단계는, 상기 파일에서 호출된 API 호출 시퀀스와, 상기 타임 스탬프를 저장하는 리스트를 생성하는 단계 및 상기 타임 인터벌을 기준으로 상기 리스트의 구간을 분할하는 단계를 포함하고, 상기 특징값을 결정하는 단계는, 상기 분할된 구간 별로 상기 타임 인터벌을 분석하는 단계를 포함할 수 있다.
일 실시예에서, 상기 리스트의 구간을 분할하는 단계는, 상기 타임 인터벌의 개수를 기준으로 상기 리스트를 균등하게 분할하는 단계를 포함할 수 있다.
다른 실시예에서, 상기 리스트의 구간을 분할하는 단계는, 상기 타임 인터벌의 개수에 따라 상기 리스트가 균등하게 분할되지 않는 경우, 상기 리스트를 임의의 크기로 분할하는 단계, 상기 임의의 크기로 분할된 리스트의 구간별로 특징값을 결정하는 단계, 상기 특징값을 이용하여 상기 악성 코드를 탐지하는 시뮬레이션을 수행하는 단계, 상기 시뮬레이션 결과를 측정하여 상기 리스트를 분할하는 최적의 크기를 결정하는 단계 및 상기 리스트를 분할하는 최적의 크기를 이용하여 상기 타임 인터벌이 포함된 리스트를 분할하는 단계를 포함할 수 있다.
상기 기술적 과제를 해결하기 위한, 본 발명의 다른 실시예에 따른 악성 코드 탐지 방법은 악성 코드 탐지가 요청된 파일에 대하여 악성 코드 동적분석이 수행된 결과 로그를 얻는 단계, 상기 결과 로그로부터 상기 파일에서 호출하는 함수에 대한 API 콜 정보를 파싱하는 단계, 상기 API 콜 정보로부터 추출된 API의 호출 시간을 가리키는 타임 스탬프를 이용하여 상기 타임 스탬프 간의 간격을 가리키는 타임 인터벌을 계산하는 단계, 상기 타임 인터벌을 기초로 상기 악성 코드의 특징을 가리키는 특징값을 결정하는 단계 및 악성 코드 탐지 모델을 이용하여 상기 파일에 대하여 악성 코드를 탐지하는 단계를 포함하고, 상기 악성 코드 탐지 모델은, 상기 API 콜 정보에 포함된 상기 API의 콜 시퀀스와 상기 특징값을 이용하여 상기 악성 코드의 특징을 학습한 모델일 수 있다.
본 발명의 다른 실시예에 따른 악성 코드 탐지 모델 학습장치는 프로세서, 네트워크 인터페이스, 메모리 및 상기 메모리에 로드(load)되고, 상기 프로세서에 의해 실행되는 컴퓨터 프로그램을 포함하되, 상기 컴퓨터 프로그램은, 악성 코드 탐지가 요청된 파일에 대하여 동적분석이 수행된 결과 로그를 얻는 인스트럭션(instruction), 상기 획득한 결과 로그로부터 API 콜 정보를 파싱하는 인스트럭션, 상기 API 콜 정보로부터 상기 API가 호출된 타임 스탬프를 추출하고, 상기 타임 스탬프 간의 시간 간격을 이용하여 타임 인터벌을 계산하는 인스트럭션 및 상기 산출된 타임 인터벌을 기초로 상기 악성 코드의 특징을 가리키는 특징값을 결정하는 인스트럭션을 포함할 수 있다.
도 1a 및 도 1b는 종래의 악성 코드 탐지 모델 학습 방법에서 이용된 함수의 특징을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따른 악성 코드 탐지 모델 학습 방법의 순서도이다.
도 3은 악성 코드 탐지 모델 학습 방법에 의해 생성된 타임 인터벌이 포함된 리스트를 나타내는 도면이다.
도 4는 도 2를 참조하여 설명된 악성 코드 탐지 모델 학습 방법의 일부 동작을 보다 구체적으로 설명하기 위한 도면이다.
도 5는 리스트를 분할하는 일 실시예를 설명하기 위한 도면이다.
도 6은 리스트를 분할하는 리스트를 분할하는 다른 실시예를 설명하기 위한 순서도이다.
도 7은 몇몇 실시예에 따라 분할된 리스트를 나타내는 예시도이다.
도 8은 타임 인터벌의 특징값을 결정하는 방법을 설명하기 위한 도면이다.
도 9는 리스트를 분할하는 또 다른 실시예를 설명하기 위한 순서도이다.
도 10은 도 9에 따라 분할된 리스트를 나타내는 예시도이다.
도 11a는 파싱된 API 콜 정보에 포함된 데이터를 전처리하기 전의 상태를 나타내는 도면이고, 도 11b는 전처리한 후의 상태를 나타내는 도면이다.
도 12는 본 발명의 다른 실시예에 따른 악성 코드 탐지 방법의 순서도이다.
도 13은 본 발명의 악성 코드 탐지 방법을 통해 탐지한 악성 코드와 타임 인터벌을 분석한 결과를 설명하기 위한 도면이다.
도 14는 본 발명의 악성 코드 탐지 방법의 결과와 종래의 악성 코드 탐지 방법의 결과를 비교하기 위한 도면이다.
도 15는 본 발명의 다른 실시예에 따른 악성 코드 탐지장치의 하드웨어 구성도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명의 기술적 사상은 이하의 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 이하의 실시예들은 본 발명의 기술적 사상을 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명의 기술적 사상은 청구항의 범주에 의해 정의될 뿐이다.
각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
또한, 본 발명의 구성 요소를 설명하는 데 있어서, 제1, 제2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 또는 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.
본 발명에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는 (comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
이하, 본 발명의 몇몇 실시예들에 대하여 첨부된 도면에 따라 상세하게 설명한다.
도 2는 본 발명의 일 실시예에 따른 악성 코드 탐지 모델 학습 방법의 순서도이다. 본 실시예에 따른 악성 코드 탐지 모델 학습 방법은 컴퓨팅 장치에 의하여 수행 될 수 있다. 본 실시예에 따른 방법에 속한 모든 동작이 하나의 컴퓨팅 장치에 의하여 수행될 수도 있고, 본 실시예에 따른 방법에 속한 일부 동작은 제1 컴퓨팅 장치에 의하여 수행되고, 나머지 동작은 제2 컴퓨팅 장치에 의하여 수행될 수도 있음을 유의한다. 이하, 본 실시예에 따른 방법이 속한 동작의 주체가 생략된 경우, 그 주체는 상기 컴퓨팅 장치인 것으로 해석될 수 있을 것이다.
도 2를 참조하면, 본 발명의 악성 코드 탐지 모델 학습 방법은 파일의 동적분석 결과 로그로부터 추출한 타임 스탬프를 이용하여 악성 코드를 탐지할 수 있다.
구체적으로 단계 S110에서 악성 코드 탐지가 요청된 파일에 대하여 악성 코드 동적분석이 수행된 결과 로그를 얻을 수 있다. 여기서 악성 코드 탐지가 요청된 파일은 PE(Portable Executable) 형식일 수 있으나, 이에 한정되는 것은 아니고, 악성 코드가 탐지될 수 있는 다양한 형식의 파일로 변경될 수 있다. 본 단계에서 악성 코드 탐지가 요청된 파일에 대하여 미리 악성 코드 동적분석이 수행되고 동적분석이 수행된 결과 로그가 수집될 수 있다.
상기 동적분석은 결과 로그를 출력할 수 있는 악성 코드 탐지 모델 학습 방법으로서, 본 발명의 악성 코드 탐지 모델 학습 방법이 수행되기 전에 수행되는 동작일 수 있다. 상기 동적분석은 sandbox에서 수행됨으로써, 악성 코드의 동작에 따른 보안상 문제가 외부 시스템에 영향을 끼치는 것이 차단 될 수 있으나, 어느 하나의 동적분석 방법으로 한정되지 않고, 결과 로그를 출력할 수 있는 다양한 방법으로 수행될 수 있으며, 상기 동적분석을 수행하는 주체는 한정되지 않는다.
즉, 상기 동적분석은 본 발명의 악성 코드 탐지 모델 학습 방법이 수행되는 제1 장치에서 수행되거나, 제1 장치가 아닌 제2 장치에서 수행될 수 있다. 즉, 동적분석에 의해 분석된 결과 로그를 제1 장치 또는 제2 장치로부터 획득되는지 여부는 한정되지 않는다.
여기서 결과 로그는 상기 동적분석이 수행되어 출력된 데이터로서, 악성 코드 탐지가 요청된 파일의 프로세스, 네트워크, 레지스트리, 호출 함수의 분석 결과를 포함하는 데이터일 수 있으며, 이러한 종류의 데이터에 한정되는 것은 아니고, 상기 동적분석을 통해 획득할 수 있는 다양한 정보를 포함할 수 있다.
단계 S130에서 결과 로그로부터 파일에서 호출하는 함수를 가리키는 API 콜 정보가 파싱될 수 있다. API 콜 정보는 악성 코드 탐지가 요청된 파일이 호출하는 API 함수명 및 호출되는 시간 정보를 가리키는 타임 스탬프 등 결과 로그에 포함되어 있는 API 함수에 관련된 정보일 수 있다.
단계 S140에서 파싱된 API 콜 정보에 담긴 데이터가 전처리될 수 있다. 악성 코드는 동일한 동작을 수행하는 API 함수를 포함하는 경우에도 상이한 API 함수명으로 동작할 수 있다. 따라서, 본 단계에서는 동일하거나 유사한 동작을 수행하는 함수명은 유사한 형태로 전처리될 수 있다. 이러한 단계 S140에 대한 보다 구체적인 내용은 도 11a 및 도 11b를 통해 설명하도록 한다.
단계 S150에서 API 콜정보에서 API의 호출 시간을 가리키는 타임 스탬프가 추출될 수 있다. 추출된 타임 스탬프를 이용하여 타임 스탬프 간의 시간 간격을 가리키는 타임 인터벌이 계산될 수 있다. 본 단계에서 리스트를 생성하여 추출된 API 함수명과 타임 스탬프를 저장하고, 타임 스탬프를 이용하여 타임 인터벌을 계산할 수 있는데, 이에 대한 상세한 내용은 도 3을 참조하여 설명하도록 한다.
도 3은 악성 코드 탐지 모델 학습 방법에 의해 생성된 타임 인터벌(30)이 포함된 리스트(1)를 나타내는 도면이다.
도 3에 도시된 바와 같이 단계 S150에서 생성된 리스트(1)는 API 함수명이 나열된 API 콜 시퀀스(10)와 각각의 함수가 호출된 시간을 가리키는 타임 스탬프(20)를 추출하여 생성된 리스트(1)에 저장할 수 있다.
이때, 리스트(1)는 링크드 리스트 또는 배열 리스트로 생성될 수 있으나, 이러한 구조체로 한정되는 것은 아니고, API 함수명과 타임 스탬프(20)를 저장할 수 있는 다양한 구조체로 변경될 수 있다. 리스트(1)는 API가 호출하는 순서대로 API 함수명을 저장하고, 해당 함수가 호출되는 시간을 가리키는 타임 스탬프(20)를 함께 저장할 수 있다. 본 단계에서 리스트(1)에 API 함수명과 타임 스탬프(20)가 저장되면, 각 타임 스탬프(20) 간의 시간 간격을 가리키는 타임 인터벌(30)이 계산될 수 있다.
다시 도 2를 참조하면, 단계 S150에서 리스트(1)의 구간이 분할될 수 있다. 리스트(1)는 API의 콜 시퀀스(10)의 개수 또는 타임 인터벌(30)을 기초로 분할될 수 있는데 리스트(1)가 분할되는 상세한 내용은 도 4 이하를 참조하여 설명하도록 한다.
단계 S170에서, 타임 인터벌(30)을 기초로 악성코드의 특징을 가리키는 대표값이 결정된다. 도 4를 참조하여 보다 자세히 설명한다.
도 4를 참조하면, 단계 S171에서 리스트(1)가 생성될 수 있는데, 리스트(1)에는 파일에서 호출된 API 콜 시퀀스(10)와, 상기 타임 스탬프(20)가 저장될 수 있다. 단계 S173에서, 타임 인터벌(30)을 기준으로 리스트(1)의 구간이 분할될 수 있다. 즉, 본 단계에서, 여러 개의 타임 인터벌(30)이 그룹핑될 수 있다. 타임 인터벌(30)의 그룹핑에 대하여는, 도 6 내지 도 10을 참조하여 자세히 후술될 것이다.
단계 S190에서 API 콜 정보에 포함된 상기 API의 콜 시퀀스(10)와 상기 특징값을 이용하여 상기 악성 코드를 탐지하는 모델이 학습될 수 있다. 본 단계에서는 API의 콜 시퀀스(10)와 특징값을 피쳐로 하여 기계학습이 수행될 수 있는데, 본 기계학습 알고리즘은 종래 알려진 다양한 방식으로 구현될 수 있으며, 본 발명의 논지를 흐리지 않기 위해 설명을 생략하도록 한다.
이상 도 2를 참조하여 설명된 본 실시예에 따른 악성 코드 탐지 모델 학습 방법은 API 함수의 호출 시간을 분석하여 악성 코드의 특징을 학습함에 따라, 시간의 흐름에 따라 본격적인 악성동작을 수행하는 악성 코드의 특징을 보다 세밀하게 분석할 수 있는 장점이 있다. 또한, 본 발명의 악성 코드 탐지 모델 학습 방법은 종래의 동적분석에 의해 탐지되지 않았던 악성 코드를 탐지할 수 있으며, 종래의 탐지 모델을 크게 변경하지 않으면서도 적용 가능하여 본 방법을 적용하는 경우 탐지 성능은 크게 상승시키면서도 큰 비용이 들지 않는 장점이 있다.
이하, 본 실시예에 따른 악성 코드 탐지 모델 학습 방법의 효과 악성 코드 탐지 모델 학습 방법에 담긴 기술적 취지에 대하여 설명한다.
대다수의 악성코드 제작자는, 백신 탐지를 우회하기 위하여 하나의 악성코드가 아닌 다양한 변종 악성 코드를 만들어 공격을 시도한다. 예를 들어 악성코드 제작자는 기존 악성코드에서 사용 했던 API 함수를 대체 가능한 다른 함수로 사용하는 등의 변화를 준다. 이때 악성코드의 행위 또는 기능 자체는 크게 달라지지 않지만, 제작자의 의도에 따라 코드가 흘러가야 하므로 함수의 호출 시각 또는 호출 시간 간격은 변종이라 할지라도 유사한 패턴을 보이게 된다. 따라서 함수의 호출시간으로부터 특징 값을 도출하여 악성코드 탐지에 활용하는 것은 유의미하다. 또한, 함수 호출 시간 간격을 이용하여 생성된 패턴은, 악성 코드 분석가들의 분석(예를 들어, 각 악성 코드의 작성 주체의 동일성에 대한 판단)에도 중요한 기준이 될 수 있는 것이다.
도 5는, 본 발명의 몇몇 실시예에서, 상기 리스트가 복수개로 분할되는 것을 설명하기 위한 도면이다.
도 5를 참조하면, 타임 인터벌(30)의 개수(intN)는 호출되는 API 전체 콜의 개수보다 1개가 적을 수 있다. 이때 호출되는 API 전체 콜의 개수는 API 콜 시퀀스(10)의 전체 개수와 동일하다.
일 실시예에서, 단계 S173에서 타임 인터벌(30)의 개수를 기준으로 상기 리스트(1)가 균등하게 분할될 수 있다. 실시예에 따라 리스트(1)를 타임 인터벌(30)의 개수를 기준으로 3개의 구간(40 내지 60)으로 균등하게 분할할 수 있다. 본 발명에 따른 방법은 리스트(1)를 타임 인터벌(30)을 기준으로 분할하기 때문에, 타임 인터벌(30)이 포함된 리스트(1)를 상기 악성 코드가 유해동작을 수행하기 전 주변 환경을 분석하는 초기, 악성 코드가 유해동작을 수행하는 중기 및 상기 악성 코드가 유해동작을 완료하는 후기로 분류할 수 있다.
예를 들어 도 5와 같이, 호출되는 API 전체 콜 개수가 3n이라고 가정할 때, 타임 인터벌(30)의 개수 3n을 균등하게 분할하여 초기 리스트의 수(40), 중기 리스트의 수(50), 후기 리스트의 수(60)를 각각 m개로 균등하게 분할할 수 있다. 리스트(1)가 균등하게 분할되지 않는 경우를 도 6을 참조하여 설명하도록 한다.
도 6은 리스트를 분할하는 리스트를 분할하는 다른 실시예를 설명하기 위한 순서도이고, 도 7은 몇몇 실시예에 따라 분할된 리스트를 나타내는 예시도이며, 도 8은 타임 인터벌의 특징값을 결정하는 방법을 설명하기 위한 도면이다.
도 6의 단계 S1731에서 타임 인터벌(30)의 개수에 따라 리스트(1)가 균등하게 분할되지 않는 경우가 판단될 수 있다. 만약 본 단계에서 타임 인터벌(30)의 개수에 따라 리스트(1)가 균등하게 분할되는 경우에는 단계 S190이 수행될 수 있다. 만약 균등하게 분할되지 않는 경우, 단계 S1733에서 리스트(1)가 임의의 크기로 분할되고, 임의의 크기로 분할된 리스트(1)의 구간별로 특징값이 결정되어, 악성 코드를 탐지하는 시뮬레이션이 수행될 수 있다. 또한, 본 단계에서 시뮬레이션 결과를 측정하여 상기 리스트(1)를 분할하는 최적의 크기가 결정될 수 있다.
단계 S1735에서 최적의 성능 결과를 가져오는 크기로 리스트(1)를 분할하도록 구간이 재조정될 수 있다. 예를 들면 호출되는 API 전체 콜 개수가 3n+1이라고 가정할 때, 타임 인터벌(30)의 개수 3n+1이 3개의 구간으로 균등하게 분할되기 어렵기 때문에 초기 리스트(1)의 수는 n, 중기 리스트(1)의 수는 3n, 후기 리스트(1)의 수는 n+1개로 분할될 수 있다.
다른 실시예에서, 호출되는 API 전체 콜 개수가 3n+1이라고 가정할 때, 타임 인터벌(30)의 개수 3n+1는 3개의 구간으로 균등하게 분할하기 어렵기 때문에 초기 리스트(1)의 수는 n, 중기 리스트(1)의 수는 n+1, 후기 리스트(1)의 수는 n+1개로 분할될 수 있다.
이러한 방식으로 단계 S1733에서 시뮬레이션 하여 최적의 성능 결과가 출력되는 최적의 크기가 결정되고, 단계 S1735에서 이러한 최적의 크기에 따라 구간이 재조정될 수 있다.
도 7을 참조하면, 리스트(1)는 API 호출 정보로부터 저장된 API 콜 시퀀스와, 각각의 API가 호출된 타임 스탬프(20) 및 타임 스탬프(20) 간의 시간 간격을 계산한 타임 인터벌(30)을 저장할 수 있다.
본 리스트(1)에서 API 콜 시퀀스는 총 33개로서, 타임 인터벌(30)이 32개, 즉 3n+2개인데, 초기 리스트(1)의 수는 n, 중기 리스트(1)의 수는 n+1, 후기 리스트(1)의 수는 n+1개로 분할될 수 있다. 따라서, n을 10으로 하여 리스트(1)에서 초기 리스트(1)의 수는 10, 중기 리스트(1)의 수는 11, 후기 리스트(1)의 수는 11개로 분할될 수 있다.
도 8을 참조하면, 도 7의 리스트(1)에서 타임 인터벌(30)을 이용하여 특징값이 결정될 수 있다. 단계 S170에서 결정된 특징값은, 타임 리스트(1)에서 타임 인터벌(30)의 최대 값, 상기 타임 인터벌(30)의 평균 값 및 상기 타임 인터벌(30)의 표준편차 중 적어도 하나의 값을 포함할 수 있다.
초기 구간(40)에서 초반에 호출된 'sleep'과 'sleep'함수의 타임 스탬프(20) 간격, 즉, 타임 인터벌(30)이 4485로 가장 큰 최대값(m1)으로 분석되었고, 초기 구간의 평균 타임 인터벌(30)은 1124.7이고, 표준편차는 1422.62로 분석되었다.
중기 구간(50)에서 호출된 'Set Timer'와 'Set Timer'함수의 타임 인터벌(30)이 2346인 위치가 가장 큰 최대값(m2)값으로 분석되었고, 중기 구간의 평균 타임 인터벌(30)은 629.27이고, 표준편차는 844.54로 분석되었다.
후기 구간(60)에서 호출된 'Set Timer'와 'Set Timer'함수의 타임 인터벌(30)이 13770인 위치가 가장 큰 최대값(m3)으로 분석되었고, 후기 구간의 평균 타임 인터벌(30)은 5470.54이고, 표준편차는 5940.51로 분석되었다.
다른 실시예에서, 특징값은 동적분석이 수행된 결과 로그로부터 상기 악성 코드 탐지가 요청된 파일의 부가정보를 더 포함할 수 있고, 부가정보의 특징값을 더 이용하여 모델이 학습될 수 있다.
도 9는 리스트를 분할하는 또 다른 실시예를 설명하기 위한 순서도이고, 도 10은 도 9에 따라 분할된 리스트를 나타내는 예시도이다.
도 9를 참조하면, 도 4의 단계 S173에서 리스트(1)의 구간이 분할될 때, 타임 인터벌(30) 값의 크기를 기초로 리스트(1)가 분할될 수 있다. 구체적으로, 단계 S1737에서 타임 인터벌(30) 값의 크기를 기초로 기준 타임 인터벌(30)이 설정될 수 있다. 타임 인터벌(30)이 급격하게 증가하였다는 것은, 함수가 호출되고 그 함수 내에서 동작이 수행되었기 때문에 타임 인터벌(30)이 커졌을 확률이 높다고 판단될 수 있고, 다양한 동작이 수행되었다는 것은 의심스러운 동작이 수행될 가능성이 존재하는 것으로 판단될 수 있다. 따라서, 일 실시예에서 리스트(1) 상에서 타임 인터벌(30)이 급격하게 증가하거나 급격하게 급감하는 경우 그에 해당하는 타임 인터벌(30)을 기준 타임 인터벌로 설정할 수 있다. 이후 단계 S1739에서 기준 타임 인터벌을 기준으로 리스트의 구간이 분할될 수 있다.
도 10을 참조하면, 5번째 함수인 'get system Default laneID'에서 'Set timer'함수를 호출하는 구간에서 타임 인터벌(30)이 1234에서 61로 급감하는 것을 확인하였다. 따라서, 단계 S1737에서 이 구간을 기준 타임 인터벌(30)로 하여 초기 구간과 중기 구간의 경계가 설정될 수 있다. 중기 구간과 후기 구간의 경우 'Set timer'함수가 반복되면서 호출되는 도중 타임 인터벌(30)이 1367에서 13770으로 급증하는 구간이 있는데 단계 S1737에서 이 구간을 중기 구간과 후기 구간의 경계가 설정될 수 있다.
이후, 단계 S1739에서 기준 타임 인터벌(30)을 기준으로 리스트(1)의 구간이 분할될 수 있다. 따라서, 본 실시예에 따라 리스트(1)의 구간을 분할하는 경우 본 발명의 악성 코드 탐지 모델 학습 방법은 타임 인터벌(30)이 포함된 리스트(1)를 상기 악성 코드가 유해동작을 수행하기 전 주변 환경을 분석하는 초기, 상기 악성 코드가 유해동작을 수행하는 중기 및 상기 악성 코드가 유해동작을 완료하는 후기로 분류할 수 있다.
도 11a는 파싱된 API 콜 정보에 포함된 데이터를 전처리하기 전의 상태를 나타내는 도면이고, 도 11b는 전처리한 후의 상태를 나타내는 도면이다.
도 11a를 참조하면, 동적분석이 수행된 결과 로그를 파싱한 데이터의 일 예시로서, 각각의 데이터가 '|' 또는 '.'로 구분될 수 있다. API 함수는 동일한 기능을 하는 경우에도 다국어지원을 위해 APIname이 다거나 또는 확장 버전(Ex)인 경우에는 같은 API라고 하더라도 'MessageBox'와 'MessageBoxA', 또는 'Sleep'과 'SleepEx'와 같이 함수명이 상이할 수 있다.
도 11b를 참조하면, 파싱된 API 콜 정보에 포함된 함수 중에서 유사 함수로 판단되는 함수명을 통일시킬 수 있다. 유사 함수는 사전에 함수 그룹핑 테이블을 설정되어 유사 함수를 판단하거나, 함수명이 미리 설정된 확률 이상으로 일치하는 경우 유사 함수로 판단할 수 있다. 도 11b와 같이 본 단계에서, 데이터 내에서 '|'로 구분되었던 값이 모두 '.'로 통일되었고, 동일한 함수인 경우 함수명이 동일하도록 전처리되었다.
도 12는 본 발명의 일 실시예에 따른 악성 코드 탐지 방법의 순서도이다.
도 12를 참조하면, 악성 코드 탐지 방법은 상술하였던 악성 코드 탐지 모델 학습 방법을 통해 학습된 모델을 이용하여 악성 코드를 탐지할 수 있다. 구체적으로 단계 S210에서 악성 코드 탐지가 요청된 파일에 대하여 악성 코드 동적분석이 수행된 결과 로그를 얻을 수 있다. 이후, 단계 S230에서 결과 로그로부터 파일에서 호출하는 함수에 대한 API 콜 정보가 파싱될 수 있다.
단계 S250에서 상기 API 콜 정보로부터 추출된 API의 호출 시간을 가리키는 타임 스탬프(20)를 이용하여 타임 스탬프(20) 간의 간격을 가리키는 타임 인터벌(30)이 계산될 수 있다. 단계 S270에서 상기 타임 인터벌(30)을 기초로 상기 악성 코드의 특징을 가리키는 특징값이 결정될 수 있다. 이때, 단계 S240에서 특징값은 상기 동적분석이 수행된 결과 로그로부터 상기 악성 코드 탐지가 요청된 파일의 부가정보를 함께 이용하여 결정될 수 있다. 여기서 부가정보는 dll(종류, 변화 횟수), 프로세스id(변화 횟수), cpu값 또는 Telemetry 데이터를 포함할 수 있다.
단계 S290에서 API의 콜 시퀀스와 상기 특징값을 이용하여 상기 악성 코드를 탐지하는 모델이 학습될 수 있고, 단계 S295에서 악성 코드 탐지 모델을 이용하여 상기 파일에 대하여 악성 코드가 탐지될 수 있다.
도 13은 본 발명의 악성 코드 탐지 방법을 통해 탐지한 악성 코드와 타임 인터벌을 분석한 결과물을 설명하기 위한 도면이고, 도 14는 본 발명의 악성 코드 탐지 방법의 결과와 종래의 악성 코드 탐지 방법의 결과를 비교하기 위한 도면이다.
도 13을 참조하면, 본 발명의 악성 코드 탐지 방법은 성능 테스트를 위해 KISA 정보보호 챌린지 파일로부터 다양한 악성 코드를 탐지하였으며, 각각의 그래프의 가로축은 탐지된 악성 코드의 API 콜 시퀀스에 따른 시간이고, 세로축은 타임 인터벌로서, 도시된 그래프와 같은 타임 인터벌이 획득되었다. 도 13에 도시된 그래프를 통해 동종 악성 코드의 경우 타임 인터벌의 형태가 거의 유사하게 획득되는 것으로 확인되었으며, 이로서 악성코드 분석에 대하여 타임 인터벌을 특징으로 추출하는 것이 유의미한 것임을 확인할 수 있었다.
도 14를 참조하면, 각 파일마다 128비트 암호화 해시 함수인 MD5를 이용하여 고유한 값을 나타내는 파일(2)에 대하여 본 발명의 악성 코드 탐지 방법을 수행한 결과를 나타낸다. 종래의 분석장비로 악성코드를 탐지한 결과(3() 정상으로 탐지되었던 파일(2)들에서 본 발명의 악성 코드 탐지 방법을 이용하여 악성코드를 탐지한 결과(4)모두 악성 코드가 탐지되는 것으로 예측되었다.
본 파일(2)들에서 실제 악성 코드가 존재하는지 여부를 확인하였을 때, 최종 검증 단계(5)에서는 악성 코드가 존재하는 것으로 확인되었다. 본 발명의 악성 코드 탐지 방법을 이용하여 KISA 정보보호 챌린지 파일과, 보안관제서버에서 직접 획득한 파일에서 악성 코드를 탐지하여 Random sampling으로 3차례에 걸친 테스트 결과, 정확도/정밀도/재현률 모두 93%를 우회하는 성능을 보여 악성 코드 탐지의 정확도가 향상된 것을 확인할 수 있었다.
지금까지 설명된 본 발명의 실시예에 따른 방법들은 컴퓨터가 읽을 수 있는 코드로 구현된 컴퓨터프로그램의 실행에 의하여 수행될 수 있다. 상기 컴퓨터프로그램은 인터넷 등의 네트워크를 통하여 제1 컴퓨팅 장치로부터 제2 컴퓨팅 장치에 전송되어 상기 제2 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 제2 컴퓨팅 장치에서 사용될 수 있다. 상기 제1 컴퓨팅 장치 및 상기 제2 컴퓨팅 장치는, 서버 장치, 서버 풀에 속한 물리 서버, 데스크탑 피씨와 같은 고정식 컴퓨팅 장치를 모두 포함한다.
상기 컴퓨터프로그램은 DVD-ROM, 플래시 메모리 장치 등의 기록매체에 저장된 것일 수도 있다.
이하, 도 15를 참조하여, 본 발명의 또 다른 실시예에 따른 악성 코드 탐지 모델 학습장치(100)의 하드웨어 구성에 대하여 설명하도록 한다.
도 15를 참조하면, 본 발명의 또 다른 실시예에 따른 악성 코드 탐지 모델 학습장치(100)는 하나 이상의 프로세서(110), 프로세서(110)에 의하여 수행되는 API 타임 인터벌 계산 프로그램(151) 및 악성 코드 탐지 프로그램(152)을 로드(Load)하는 메모리(120), 버스(130), 네트워크 인터페이스(140) 및 API 타임 인터벌 계산 프로그램(151) 및 악성 코드 탐지 프로그램(152)을 저장하는 스토리지(150)를 포함할 수 있다. 여기서, 도 15에는 본 발명의 실시예와 관련 있는 구성요소들만 도시되어 있다. 따라서, 본 발명이 속한 기술분야의 통상의 기술자라면 도 15에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있음을 알 수 있다.
프로세서(110)는 악성 코드 탐지 모델 학습장치(100)의 각 구성의 전반적인 동작을 제어한다. 프로세서(110)는 CPU(Central Processing Unit), MPU(Micro Processor Unit), MCU(Micro Controller Unit), GPU(Graphic Processing Unit) 또는 본 발명의 기술 분야에 잘 알려진 임의의 형태의 프로세서를 포함하여 구성될 수 있다. 또한, 프로세서(110)는 본 발명의 실시예들에 따른 방법을 실행하기 위한 적어도 하나의 애플리케이션 또는 프로그램에 대한 연산을 수행할 수 있다. 여기서, 도 15에 도시된 악성 코드 탐지 모델 학습장치(100)는 하나의 프로세서(110)를 포함하는 것으로 도시되어 있으나, 이에 한정되지 않고 복수의 프로세서를 구비할 수 있다.
메모리(120)는 각종 데이터, 명령 및/또는 정보를 저장한다. 메모리(120)는 본 발명의 다양한 실시예에 따른 방법/동작을 실행하기 위하여 스토리지(150)로부터 API 타임 인터벌 계산 프로그램(151) 및 악성 코드 탐지 프로그램(152)을 로드할 수 있다. 메모리(120)에 API 타임 인터벌 계산 프로그램(151) 및 악성 코드 탐지 프로그램(152)이 로드되면, 프로세서(110)는 API 타임 인터벌 계산 프로그램(151) 및 악성 코드 탐지 프로그램(152)을 구성하는 하나 이상의 인스트럭션(121, 122)들을 실행함으로써 응용 프로그램의 스트리밍 영상 제공 방법/동작을 수행할 수 있다. 메모리(120)는 RAM과 같은 휘발성 메모리로 구현될 수 있을 것이나, 본 발명의 기술적 범위가 이에 한정되는 것은 아니다.
버스(130)는 악성 코드 탐지 모델 학습장치(100)의 구성 요소 간 통신 기능을 제공한다. 버스(130)는 주소 버스(address Bus), 데이터 버스(Data Bus) 및 제어 버스(Control Bus) 등 다양한 형태의 버스로 구현될 수 있다.
네트워크 인터페이스(140)는 악성 코드 탐지 모델 학습장치(100)의 유무선 인터넷 통신을 지원한다. 또한, 네트워크 인터페이스(140)는 인터넷 통신 외의 다양한 통신 방식을 지원할 수도 있다. 이를 위해, 네트워크 인터페이스(140)는 본 발명의 기술 분야에 잘 알려진 통신 모듈을 포함하여 구성될 수 있다. 몇몇 실시예에서, 네트워크 인터페이스(140)는 생략될 수도 있다.
스토리지(150)는 API 타임 인터벌 계산 프로그램(151) 및 악성 코드 탐지 프로그램(152)을 비 임시적으로 저장할 수 있다. 악성 코드 탐지 모델 학습장치(100)를 통해 응용 프로그램을 실행 및 조작하는 경우, 스토리지(150)는 실행 및 조작에 따라 실행되는 응용 프로그램에 대한 각종 데이터를 저장할 수 있다. 예를 들어, 스토리지(150)는 실행되는 응용 프로그램에 대한 정보, 응용 프로그램에 대한 조작 정보 및 응용 프로그램에 대한 실행을 요청한 사용자에 대한 정보 등을 저장할 수 있다.
스토리지(150)는 ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리 등과 같은 비휘발성 메모리, 하드 디스크, 착탈형 디스크, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터로 읽을 수 있는 기록 매체를 포함하여 구성될 수 있다.
API 타임 인터벌 계산 프로그램(151) 및 악성 코드 탐지 프로그램(152)은 메모리(120)에 로드될 때 프로세서(110)로 하여금 본 발명의 다양한 실시예에 따른 방법/동작을 수행하도록 하는 하나 이상의 인스트럭션(121, 122)들을 포함할 수 있다. 즉, 프로세서(110)는 상기 하나 이상의 인스트럭션(121, 122)들을 실행함으로써, 본 발명의 다양한 실시예에 따른 상기 방법/동작을 수행할 수 있다.
일 실시예에서, API 타임 인터벌 계산 프로그램(151) 및 악성 코드 탐지 프로그램(152)은 악성 코드악성 코드 동적분석이 수행된 결과 로그로부터 호출된 함수에 대한 API 콜 정보를 얻는 인스트럭션(instruction), 상기 API 콜 정보로부터 추출된 API의 호출 시간을 가리키는 타임 스탬프를 이용하여 상기 타임 스탬프 간의 시간 간격을 가리키는 타임 인터벌을 계산하는 인스트럭션, 상기 타임 인터벌을 기초로 악성 코드 특징값을 결정하는 인스트럭션 및 상기 API 콜 정보에 포함된 상기 API의 콜 시퀀스와 상기 특징값을 이용하여 상기 악성 코드를 탐지하는 모델을 학습시키는 인스트럭션을 포함할 수 있다.
지금까지 도 1 내지 도 15를 참조하여 본 발명의 다양한 실시예들 및 그 실시예들에 따른 효과들을 언급하였다. 본 발명의 기술적 사상에 따른 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다.

Claims (10)

  1. 컴퓨팅 장치에 의해 수행되는 방법에 있어서,
    악성 코드악성 코드 동적분석이 수행된 결과 로그로부터 호출된 함수에 대한 API 콜 정보를 얻는 단계;
    상기 API 콜 정보로부터 추출된 API의 호출 시간을 가리키는 타임 스탬프를 이용하여 상기 타임 스탬프 간의 시간 간격을 가리키는 타임 인터벌을 계산하는 단계;
    상기 타임 인터벌을 기초로 악성 코드 특징값을 결정하는 단계; 및
    상기 API 콜 정보에 포함된 상기 API의 콜 시퀀스와 상기 특징값을 이용하여 상기 악성 코드를 탐지하는 모델을 학습시키는 단계를 포함하는,
    악성 코드 탐지 모델 학습 방법.
  2. 제1항에 있어서,
    상기 타임 인터벌을 계산하는 단계는,
    상기 파일에서 호출된 API 호출 시퀀스와, 상기 타임 스탬프를 저장하는 리스트를 생성하는 단계; 및
    상기 타임 인터벌을 기준으로 상기 리스트의 구간을 분할하는 단계를 포함하고,
    상기 특징값을 결정하는 단계는, 상기 분할된 구간 별로 상기 타임 인터벌을 분석하는 단계를 포함하는,
    악성 코드 탐지 모델 학습 방법.
  3. 제2항에 있어서,
    상기 리스트의 구간을 분할하는 단계는,
    상기 타임 인터벌의 개수를 기준으로 상기 리스트를 균등하게 분할하는 단계를 포함하는,
    악성 코드 탐지 모델 학습 방법.
  4. 제3항에 있어서,
    상기 리스트의 구간을 분할하는 단계는,
    상기 타임 인터벌의 개수를 기준으로 상기 리스트를 3개의 구간으로 균등하게 분할하는 단계를 포함하는,
    악성 코드 탐지 모델 학습 방법.
  5. 제2항에 있어서,
    상기 리스트의 구간을 분할하는 단계는,
    상기 타임 인터벌의 개수에 따라 상기 리스트가 균등하게 분할되지 않는 경우, 상기 리스트를 임의의 크기로 분할하는 단계;
    상기 임의의 크기로 분할된 리스트의 구간별로 특징값을 결정하는 단계;
    상기 특징값을 이용하여 상기 악성 코드를 탐지하는 시뮬레이션을 수행하는 단계;
    상기 시뮬레이션의 결과를 측정하여 상기 리스트를 분할하는 최적의 크기를 결정하는 단계; 및
    상기 리스트를 분할하는 최적의 크기를 이용하여 상기 타임 인터벌이 포함된 리스트를 분할하는 단계를 포함하는,
    악성 코드 탐지 모델 학습 방법.
  6. 제2항에 있어서,
    상기 리스트의 구간을 분할하는 단계는,
    상기 타임 인터벌의 값의 크기를 기초로 기준 타임 인터벌을 설정하고, 상기 기준 타임 인터벌을 기준으로 상기 리스트의 구간을 분할하는 단계를 포함하는,
    악성 코드 탐지 모델 학습 방법.
  7. 제2항에 있어서,
    상기 특징값은,
    상기 타임 인터벌이 포함된 리스트에서 상기 타임 인터벌의 최대 값, 상기 타임 인터벌의 평균 값 및 상기 타임 인터벌의 표준편차 중 적어도 하나의 값을 포함하는,
    악성 코드 탐지 모델 학습 방법.
  8. 제1항에 있어서,
    상기 악성 코드의 특징을 가리키는 특징값을 결정하는 단계는,
    상기 동적분석이 수행된 결과 로그로부터 상기 악성 코드 탐지가 요청된 파일의 부가정보를 더 이용하여 상기 특징값을 결정하는 단계를 포함하는,
    악성 코드 탐지 모델 학습 방법.
  9. 제1항에 있어서,
    상기 파싱된 API 콜 정보에 포함된 함수 중에서 유사 함수로 판단되는 함수명을 통일시키는 전처리를 수행하는 단계를 더 포함하는,
    악성 코드 탐지 모델 학습 방법.
  10. 컴퓨팅 장치에 의해 수행되는 방법에 있어서,
    악성 코드악성 코드 동적분석이 수행된 결과 로그로부터 호출된 함수에 대한 API 콜 정보를 얻는 단계;

    상기 API 콜 정보로부터 추출된 API의 호출 시간을 가리키는 타임 스탬프를 이용하여 상기 타임 스탬프 간의 간격을 가리키는 타임 인터벌을 계산하는 단계;
    상기 타임 인터벌을 기초로 상기 악성 코드의 특징을 가리키는 특징값을 결정하는 단계; 및
    악성 코드 탐지 모델을 이용하여 상기 파일에 대하여 악성 코드를 탐지하는 단계를 포함하고,
    상기 악성 코드 탐지 모델은,
    상기 API 콜 정보에 포함된 상기 API의 콜 시퀀스와 상기 특징값을 이용하여 상기 악성 코드의 특징을 학습한 모델인,
    악성 코드 탐지 방법.
KR1020190137229A 2019-10-31 2019-10-31 악성 코드 탐지 모델 학습 방법 및 이를 이용한 탐지 방법 KR102317833B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020190137229A KR102317833B1 (ko) 2019-10-31 2019-10-31 악성 코드 탐지 모델 학습 방법 및 이를 이용한 탐지 방법
US17/082,302 US11475133B2 (en) 2019-10-31 2020-10-28 Method for machine learning of malicious code detecting model and method for detecting malicious code using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190137229A KR102317833B1 (ko) 2019-10-31 2019-10-31 악성 코드 탐지 모델 학습 방법 및 이를 이용한 탐지 방법

Publications (2)

Publication Number Publication Date
KR20210051669A true KR20210051669A (ko) 2021-05-10
KR102317833B1 KR102317833B1 (ko) 2021-10-25

Family

ID=75687401

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190137229A KR102317833B1 (ko) 2019-10-31 2019-10-31 악성 코드 탐지 모델 학습 방법 및 이를 이용한 탐지 방법

Country Status (2)

Country Link
US (1) US11475133B2 (ko)
KR (1) KR102317833B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113378156A (zh) * 2021-07-01 2021-09-10 上海观安信息技术股份有限公司 一种基于api的恶意文件检测方法和系统

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11979418B2 (en) * 2021-06-08 2024-05-07 Microsoft Technology Licensing, Llc Detecting potential malicious use of a resource management agent using a resource management log
CN113486344B (zh) * 2021-07-14 2023-09-05 北京奇艺世纪科技有限公司 一种接口防刷方法、装置、服务端及存储介质
CN113688391A (zh) * 2021-08-31 2021-11-23 南方电网科学研究院有限责任公司 一种电力软件恶意代码监测方法、系统、设备和介质
CN114389875B (zh) * 2022-01-12 2024-01-16 国网山东省电力公司泰安供电公司 一种人机行为检测方法、系统、设备及介质
CN114253866B (zh) * 2022-03-01 2022-05-10 紫光恒越技术有限公司 恶意代码检测的方法、装置、计算机设备及可读存储介质
CN114969732B (zh) * 2022-04-28 2023-04-07 国科华盾(北京)科技有限公司 恶意代码的检测方法、装置、计算机设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110128632A (ko) * 2010-05-24 2011-11-30 충남대학교산학협력단 스마트폰 응용프로그램의 악성행위 탐지 방법 및 장치
KR101472321B1 (ko) 2013-06-11 2014-12-12 고려대학교 산학협력단 이동단말의 어플리케이션 내 악성코드 탐지 방법 및 시스템
KR20170108330A (ko) * 2016-03-17 2017-09-27 한국전자통신연구원 악성 코드 탐지 장치 및 방법
KR101969572B1 (ko) * 2018-06-22 2019-04-16 주식회사 에프원시큐리티 악성코드 탐지 장치 및 방법

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8028301B2 (en) * 2005-03-14 2011-09-27 Symantec Corporation Restricting recordal of user activity in a processing system
US20080016339A1 (en) * 2006-06-29 2008-01-17 Jayant Shukla Application Sandbox to Detect, Remove, and Prevent Malware
EP3367288B1 (en) * 2015-11-30 2020-06-17 Nippon Telegraph And Telephone Corporation Classification method, classification device, and classification program
RU2634177C1 (ru) * 2016-05-20 2017-10-24 Акционерное общество "Лаборатория Касперского" Система и способ обнаружения нежелательного программного обеспечения
US10699010B2 (en) * 2017-10-13 2020-06-30 Ping Identity Corporation Methods and apparatus for analyzing sequences of application programming interface traffic to identify potential malicious actions
US10867039B2 (en) * 2017-10-19 2020-12-15 AO Kaspersky Lab System and method of detecting a malicious file
US11106789B2 (en) * 2019-03-05 2021-08-31 Microsoft Technology Licensing, Llc Dynamic cybersecurity detection of sequence anomalies

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110128632A (ko) * 2010-05-24 2011-11-30 충남대학교산학협력단 스마트폰 응용프로그램의 악성행위 탐지 방법 및 장치
KR101472321B1 (ko) 2013-06-11 2014-12-12 고려대학교 산학협력단 이동단말의 어플리케이션 내 악성코드 탐지 방법 및 시스템
KR20170108330A (ko) * 2016-03-17 2017-09-27 한국전자통신연구원 악성 코드 탐지 장치 및 방법
KR101969572B1 (ko) * 2018-06-22 2019-04-16 주식회사 에프원시큐리티 악성코드 탐지 장치 및 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113378156A (zh) * 2021-07-01 2021-09-10 上海观安信息技术股份有限公司 一种基于api的恶意文件检测方法和系统

Also Published As

Publication number Publication date
US11475133B2 (en) 2022-10-18
KR102317833B1 (ko) 2021-10-25
US20210133323A1 (en) 2021-05-06

Similar Documents

Publication Publication Date Title
KR102317833B1 (ko) 악성 코드 탐지 모델 학습 방법 및 이를 이용한 탐지 방법
US9015814B1 (en) System and methods for detecting harmful files of different formats
JP6736532B2 (ja) 静的分析の要素を用いた悪質なファイルを検出するためのシステム及び方法
US10621349B2 (en) Detection of malware using feature hashing
US8762948B1 (en) System and method for establishing rules for filtering insignificant events for analysis of software program
CN109829306B (zh) 一种优化特征提取的恶意软件分类方法
Rathnayaka et al. An efficient approach for advanced malware analysis using memory forensic technique
TWI720932B (zh) 用於藉由分析已知及/或未知網路安全威脅的形態來偵測資料異常的系統和方法
CN109271788B (zh) 一种基于深度学习的Android恶意软件检测方法
US20200012789A1 (en) Selection apparatus, selection method, and selection program
RU2722692C1 (ru) Способ и система выявления вредоносных файлов в неизолированной среде
US11250129B2 (en) Method and system for determining affiliation of software to software families
NL2026782B1 (en) Method and system for determining affiliation of software to software families
JP2017004123A (ja) 判定装置、判定方法および判定プログラム
KR102011725B1 (ko) 악성코드 검출을 위한 화이트리스트 구축 방법 및 이를 수행하기 위한 기록매체 및 장치
NL2029433B1 (en) Method and system for clustering executable files
JP5441043B2 (ja) プログラム、情報処理装置、及び情報処理方法
KR101557455B1 (ko) 응용 프로그램 코드 분석 장치 및 그것을 이용한 코드 분석 방법
CN108319853B (zh) 病毒特征码处理方法及装置
Ugarte-Pedrero et al. On the adoption of anomaly detection for packed executable filtering
KR102174475B1 (ko) 머신러닝을 이용하여 애플리케이션의 난독화 또는 패킹 여부를 식별하는 시스템과, 그것을 포함하는 은폐된 멀웨어 탐지 분류 시스템 및 방법
JP7031438B2 (ja) 情報処理装置、制御方法、及びプログラム
CN107844702B (zh) 基于云防护环境下网站木马后门检测方法及装置
KR20200061830A (ko) 안드로이드 애플리케이션의 주요부분을 패턴화한 멀웨어 탐지 분류 방법 및 시스템
KR101480244B1 (ko) 클래스 단위의 시그니처를 이용한 악성 어플리케이션 탐지 방법 및 장치

Legal Events

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