KR102344496B1 - 악성코드의 기능을 분석하는 방법 및 장치 - Google Patents

악성코드의 기능을 분석하는 방법 및 장치 Download PDF

Info

Publication number
KR102344496B1
KR102344496B1 KR1020200025535A KR20200025535A KR102344496B1 KR 102344496 B1 KR102344496 B1 KR 102344496B1 KR 1020200025535 A KR1020200025535 A KR 1020200025535A KR 20200025535 A KR20200025535 A KR 20200025535A KR 102344496 B1 KR102344496 B1 KR 102344496B1
Authority
KR
South Korea
Prior art keywords
graph
analyzing
representative
generating
malicious
Prior art date
Application number
KR1020200025535A
Other languages
English (en)
Other versions
KR20210110074A (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 KR1020200025535A priority Critical patent/KR102344496B1/ko
Priority to US17/037,691 priority patent/US11853421B2/en
Publication of KR20210110074A publication Critical patent/KR20210110074A/ko
Application granted granted Critical
Publication of KR102344496B1 publication Critical patent/KR102344496B1/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
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Stored Programmes (AREA)

Abstract

다량의 악성코드의 집합으로부터 추출한 소스코드를 분석하여 악성코드의 기능을 분석하기에 적절한 복수의 그래프(Graph)를 생성하고, 생성된 그래프들을 기능별로 군집화 한 뒤, 분석대상 악성코드의 소스코드로부터 생성한 그래프와, 이를 악성코드 집합으로부터 생성한 대표그래프들과의 유사도를 비교하여 분석대상 악성코드의 기능을 분석하는 방법 및 장치가 개시된다.

Description

악성코드의 기능을 분석하는 방법 및 장치 {METHOD AND APPARATUS FOR ANALYSING FUNCTION OF MALICIOUS CODE}
본 개시는 악성코드의 기능을 분석하는 방법 및 장치에 관한 것이다.
최근 새로운 악성코드의 출현이 기하급수적으로 증가하면서 코드분석가가 이를 수작업으로 분석하는 것은 매우 어려운 상황이다. 이에 따라 악성코드 분석을 자동화 하는 기술 개발이 꾸준히 이루어 지고 있다. 악성코드 탐지 및 분류기술은 크게 시그니처 기반의 분석방법과 시맨틱 기반의 분석방법으로 나누어 진다. 시그니처 기반의 악성코드 탐지는 기존에 분석된 악성코드의 패턴이 저장된 데이터베이스를 이용하여 이루어진다. 그러나 시그니처 기반의 방법은 코드 난독화 기법으로 생성된 변종 악성코드에는 효과적이지 못하다.
이러한 한계를 극복하기 위해서 시맨틱 기반의 악성코드 분석방법에 대한 연구가 활발히 진행되고 있다. 특히, 행위그래프라고 불리는 데이터 의존그래프를 이용하여 악성코드를 탐지 및 분류하는 연구가 이루어 지고 있다.
또한, 기존 연구들은 악성코드로부터 데이터 의존그래프를 추출하기 위해서 동적 분석에 의존해 왔다. 그러나, 동적 분석은 정적 분석에 비해서 악성코드의 실행범위를 포괄적으로 다루지 못하고 자원과 시간이 많이 요구된다.
따라서, 폭발적으로 증가하는 악성코드를 효과적으로 분석하기 위해서는 분석의 정확도와 속도를 향상시킬 수 있는 기술이 요구된다.
대한민국 등록특허 제 10-2045500 호 대한민국 등록특허 제 10-2045772 호
악성코드의 기능을 분석하는 방법 및 장치를 제공하는데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는 데 있다. 본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 개시의 제 1 측면은, 악성코드의 기능 분석을 위한 대표그래프 생성 방법에 있어서, 미리 저장된 악성파일로부터 소스코드(Source Code)를 획득하는 단계, 상기 소스코드를 분석하여 각 노드(Node)가 상기 소스코드의 일부로 구성된 제1 그래프(Graph)를 생성하는 단계, 상기 제1 그래프의 상기 노드를 분석하여 파라미터(Parameter)간 의존관계를 분석하는 단계, 상기 분석된 파라미터간 의존관계를 나타내는 제2 그래프를 생성하는 단계, 상기 제2 그래프를 유사도를 기준으로 군집화 하는 단계; 및 상기 군집화된 제2 그래프의 군집에서 군집의 기능을 대표하는 대표그래프를 생성하는 단계; 를 포함하는 대표그래프 생성 방법일 수 있다.
또한, 상기 제1 그래프는 상기 소스코드를 파싱(Parsing)하여 추상 구문 트리(Abstract Syntax Tree)를 생성한 뒤, 상기 추상 구문 트리를 분석하여 기본블록으로 구성한 제어 흐름 그래프(Control Flow Graph)이고, 상기 파라미터는 API(Application Programming Interface) 파라미터이고, 상기 제2 그래프는 API 파라미터간 의존관계를 나타내는 ADG(API Dependency Graph)인 것인, 대표 그래프 생성 방법일 수 있다.
또한, 상기 대표그래프를 저장하여 데이터베이스(DB)화 하는 것을 포함하는, 대표그래프 생성 방법일 수 있다.
또한, 상기 대표그래프를 생성하는 단계는, 각각의 제2 그래프를 더하여 출현빈도가 임계값을 초과하는 노드만을 연결하여 생성하는 것인, 대표 그래프 생성 방법일 수 있다.
또한, 상기 임계값은, 최대 출현 노드 수의 10%인, 대표 그래프 생성 방법일 수 있다.
또한, 상기 군집화 하는 단계는, K-means Clustering 방식을 이용하는 것인, 대표그래프 생성 방법일 수 있다.
본 개시의 제 2 측면은, 악성코드의 기능 분석 방법에 있어서, 분석대상 악성파일의 소스코드를 획득하는 단계, 상기 소스코드를 분석하여 각 노드가 상기 소스코드의 일부로 구성된 제1 그래프를 생성하는 단계, 상기 제1 그래프의 상기 노드를 분석하여 파라미터(Parameter)간 의존관계를 분석하는 단계, 상기 분석된 파라미터간 의존관계를 나타내는 제2 그래프를 생성하는 단계, 및 미리 저장된 대표그래프 각각과 상기 생성된 제2 그래프의 유사도를 비교하여 악성코드의 기능을 분석하는 단계를 포함하는 악성코드의 기능 분석 방법일 수 있다.
또한, 상기 제1 그래프는 상기 소스코드를 파싱(Parsing)하여 추상 구문 트리(Abstract Syntax Tree)를 생성한 뒤, 상기 추상 구문 트리를 분석하여 기본블록으로 구성한 제어 흐름 그래프(Control Flow Graph)이고, 상기 파라미터는, API(Application Programming Interface) 파라미터이고, 상기 제2 그래프는 API 파라미터간 의존관계를 나타내는 ADG(API Dependency Graph)인 것인, 악성코드의 기능 분석 방법일 수 있다.
또한, 상기 대표그래프는, 각각의 제2 그래프를 더하여 출현빈도가 임계값을 초과하는 노드만을 연결하여 생성한 것인, 악성코드의 기능 분석 방법일 수 있다.
또한, 상기 임계값은, 최대 출현 노드 수의 10%인 것인, 악성코드의 기능 분석 방법일 수 있다.
또한, 상기 유사도를 비교하는 것은, 상기 생성된 제2 그래프의 노드와 상기 미리 저장된 각각의 대표그래프 노드의 교집합 대 합집합의 비율을 유사도 판단 지표로 이용하는 것을 포함하는, 악성코드의 기능 분석 방법일 수 있다.
본 개시의 제 3 측면은 악성코드의 기능 분석을 위한 대표그래프 생성 장치에 있어서, 적어도 하나의 인스트럭션(Instruction)을 저장하기 위한 메모리 및 상기 메모리에 저장된 적어도 하나의 인스트럭션을 실행하는 적어도 하나의 프로세서를 포함하고, 상기 프로세서는, 하나 이상의 인스트럭션을 실행함으로써 미리 저장된 악성파일로부터 소스코드(Source Code)를 획득하고, 상기 소스코드를 분석하여 각 노드(Node)가 상기 소스코드의 일부로 구성된 제1 그래프(Graph)를 생성하고, 상기 제1 그래프의 상기 노드를 분석하여 파라미터(Parameter)간 의존관계를 분석하고, 상기 분석된 파라미터간 의존관계를 나타내는 제2 그래프를 생성하고, 상기 제2 그래프를 유사도를 기준으로 군집화 하고, 상기 군집화된 제2 그래프의 군집에서 군집의 기능을 대표하는 대표그래프를 생성하는 대표그래프 생성 장치일 수 있다.
또한, 상기 제1 그래프는 상기 소스코드를 파싱(Parsing)하여 추상 구문 트리(Abstract Syntax Tree)를 생성한 뒤, 상기 추상 구문 트리를 분석하여 기본블록으로 구성한 제어 흐름 그래프(Control Flow Graph)이고, 상기 파라미터는 API(Application Programming Interface) 파라미터이고, 상기 제2 그래프는 API 파라미터간 의존관계를 나타내는 ADG(API Dependency Graph)인, 대표그래프 생성 장치일 수 있다.
또한, 상기 대표그래프를 저장하여 데이터베이스(DB)화 하는 것을 포함하는, 대표그래프 생성 장치일 수 있다.
또한, 상기 대표그래프를 생성하는 것은, 각각의 제2 그래프를 더하여 출현빈도가 임계값을 초과하는 노드만을 연결하여 생성하는 것인, 대표그래프 생성 장치일 수 있다.
또한, 상기 임계값은, 최대 출현 노드 수의 10%인, 대표그래프 생성 장치일 수 있다.
또한, 상기 군집화 하는 것은, K-means Clustering 방식을 이용하는 것인, 대표그래프 생성 장치일 수 있다.
본 개시의 제 4 측면은 악성코드의 기능 분석 장치에 있어서, 적어도 하나의 인스트럭션(Instruction)을 저장하기 위한 메모리 및 상기 메모리에 저장된 적어도 하나의 인스트럭션을 실행하는 적어도 하나의 프로세서를 포함하고, 상기 프로세서는, 하나 이상의 인스트럭션을 실행함으로써 분석대상 악성파일의 소스코드를 획득하고, 상기 소스코드를 분석하여 각 노드가 상기 소스코드의 일부로 구성된 제1 그래프를 생성하고, 상기 제1 그래프의 상기 노드를 분석하여 파라미터(Parameter)간 의존관계를 분석하고, 상기 분석된 파라미터간 의존관계를 나타내는 제2 그래프를 생성하고, 미리 저장된 대표그래프 각각과 상기 생성된 제2 그래프의 유사도를 비교하여 악성코드의 기능을 분석하는, 악성코드의 기능 분석 장치일 수 있다.
또한, 상기 제1 그래프는 상기 소스코드를 파싱(Parsing)하여 추상 구문 트리(Abstract Syntax Tree)를 생성한 뒤, 상기 추상 구문 트리를 분석하여 기본블록으로 구성한 제어 흐름 그래프(Control Flow Graph)이고, 상기 파라미터는 API(Application Programming Interface) 파라미터이고, 상기 제2 그래프는 API 파라미터간 의존관계를 나타내는 ADG(API Dependency Graph)인 것인, 악성코드의 기능 분석 장치일 수 있다.
또한, 상기 대표그래프는, 각각의 제2 그래프를 더하여 출현빈도가 임계값을 초과하는 노드만을 연결하여 생성한 것인, 악성코드의 기능 분석 장치일 수 있다.
또한, 상기 임계값은, 최대 출현 노드 수의 10%인 것인, 악성코드의 기능 분석 장치일 수 있다.
또한, 상기 유사도를 비교하는 것은, 상기 생성된 제2 그래프의 노드와 상기 미리 저장된 각각의 대표그래프 노드의 교집합 대 합집합의 비율을 유사도 판단 지표로 이용하는 것을 포함하는, 악성코드의 기능 분석 장치일 수 있다.
본 개시의 제 5 측면은 제 1 또는 제 2 측면의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공할 수 있다.
도 1은 미리 저장된 악성파일로부터 대표그래프를 생성하는 방법의 흐름도이다.
도 2는 분석 대상 악성파일의 기능을 분석하는 방법의 흐름도이다.
도 3은 일 실시 예에 따른 악성코드 파일 집합으로부터 군집을 대표하는 ADG를 생성하는 방법의 흐름도이다.
도 4는 일 실시 예에 따른 악성파일로부터 복수의 ADG를 생성하여 데이터베이스(DB)화 하는 구체적인 과정을 설명하기 위한 흐름도이다.
도 5a는 일 실시 예에 따른 파라미터간 의존관계를 나타내는 제2 그래프의 개념도이다.
도 5b는 군집화된 제2 그래프 군집으로부터 대표그래프를 생성하는 과정 및 이를 데이터베이스(DB)에 저장하는 과정을 설명하는 흐름도이다.
도 5c는 일 실시 예에 따른 제2 그래프를 더하여 대표그래프를 생성하는 방법을 예시하는 도면이다.
도 6a는 일 실시 예에 따른 분석대상 악성코드의 ADG와 각각의 대표그래프를 비교하여 기능을 분석하는 방법의 흐름도이다.
도 6b는 일 실시 예에 따른 분석대상 제2그래프 DB를 분석하여 악성코드의 기능정보를 저장하여 DB화하는 방법의 흐름도이다.
도 7은 일 실시 예에 따른 소스코드를 분석하여 CFG(Control Flow Graph)를 생성하는 것을 설명하기 위한 도면이다.
도 8은 일 실시 예에 따른 악성코드의 기능 분석 장치의 구성을 나타내는 개념도이다.
본 명세서에서 다양한 곳에 등장하는 "일부 실시 예에서" 또는 "일 실시 예에서" 등의 어구는 반드시 모두 동일한 실시 예를 가리키는 것은 아니다.
본 개시의 일부 실시 예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들의 일부 또는 전부는, 특정 기능들을 실행하는 다양한 개수의 하드웨어 및/또는 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 본 개시의 기능 블록들은 하나 이상의 마이크로프로세서들에 의해 구현되거나, 소정의 기능을 위한 회로 구성들에 의해 구현될 수 있다. 또한, 예를 들어, 본 개시의 기능 블록들은 다양한 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능 블록들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 개시는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. “메커니즘”, "데이터베이스", “요소”, “수단” 및 “구성”등과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 또한, 명세서에 기재된 "??부", "??모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
또한, 도면에 도시된 구성 요소들 간의 연결 선 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것일 뿐이다. 실제 장치에서는 대체 가능하거나 추가된 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들에 의해 구성 요소들 간의 연결이 나타내어질 수 있다.
이하 첨부된 도면을 참고하여 본 개시를 상세히 설명하기로 한다.
도 1은 악성파일로부터 대표그래프를 생성하는 방법의 흐름도이다.
도 1을 참조하면, 미리 저장된 악성파일로부터 소스코드를 획득한다(S110). 소스코드가 구문 별로 구분되어 복수의 노드(Node)를 이루고, 이를 구성으로 하여 그래프(Graph)를 생성할 수 있다(S120). 이렇게 생성한 그래프를 제1 그래프라고 한다. 제1 그래프는 제어 흐름 그래프(Control Flow Graph)일 수 있다. 제어 흐름 그래프는 소스코드에서 생성해 낼 수 있는 정보 중 하나로서, 프로그램이 실행 중에 횡단 할 수 있는 모든 경로를 그래프 표기법을 통해 노드(Node)와 엣지(Edge)로 나타내는 것을 의미한다. 노드는 원 또는 네모 모양 그리고 엣지는 선 또는 화살표 등으로 나타낼 수 있다. 이에 제한되지 않고 다른 형태들이 더 포함될 수 있음을 당해 기술분야의 통상의 기술자라면 이해할 수 있다. 소스코드를 획득하는 방법은 도 4에서 보다 상세히 설명한다.
생성된 제1 그래프의 노드를 분석하면 파라미터간 의존관계를 알아낼 수 있다(S130). 파라미터(Parameter)는 소스코드에서 함수의 호출(Function Call)을 일으키는 변수역할을 한다. 파라미터는 API(Application Programming Interface) 파라미터일 수 있고, 함수는 API일 수 있다. 파라미터 의존관계란, 서로 다른 인자간의 함수를 매개로 한 상관관계를 의미할 수 있다. 여기서 인자는 파라미터 또는 리턴 값 일 수 있다.
분석된 파라미터간 의존관계를 나타내는 제2 그래프를 생성한다(S140). 제2 그래프는 API의존그래프(API Dependency Graph, ADG) 일 수 있다. 생성된 제2 그래프는 추후에 악성코드의 기능별로 분류하고 모으기(군집화, Clustering) 위하여 데이터베이스(DB)에 저장할 수 있다. 데이터베이스(DB)에 존재하는 제2 그래프는 각각 노드와 엣지가 다르게 구성 되어 있을 수 있다. 도 5a가 파라미터간 의존관계를 나타내는 제2 그래프(또는 의존그래프)의 일 예시가 될 수 있다. 도 5a에 대하여는 추후에 보다 상세히 설명한다.
제2 그래프는 각 그래프들간 유사도를 기준으로 군집화 한다(S150). 군집화란 유사한 기능을 가진 제2 그래프들은 서로 유사한 형태의 그래프일 것이기 때문에 이를 기초로 제2 그래프를 각각의 악성코드의 기능별 그룹(집합)으로 분류하여 모으는 것이다. 군집화 방법은 가까운 거리에 위치한 그래프들을 같은 그룹(집합)으로 모으는 방식일 수 있다.
본 발명의 그래프 형태의 데이터간의 분석에서 거리개념은 편집거리를 사용 할 수 있다. 군집화를 위한 데이터 또는 그래프간 유사도를 판단할 때에도 편집거리를 이용할 수 있다. 편집거리가 가장 가까운(또는 가장 작은) 그래프가 서로 유사도가 가장 높은 그래프이다. 편집거리란 서로 다른 두 데이터를 같게 만들기 위해 필요한 삭제와 추가 연산의 수 총합을 의미한다. 예를 들어 데이터 ABCD와 ABBA의 편집거리는 BA를 삭제하고 CD를 추가해야 하기 때문에 4 라고 볼 수 있다. 그래프 구조의 데이터의 경우, 서로 다른 2개의 그래프가 있을 때, 하나의 그래프에서 다른 하나의 그래프와 같은 노드와 엣지를 가질 수 있도록 만드는 데에 필요한 추가와 삭제의 연산 수의 총 합이 편집거리이다. 군집화 방법으로 K-means Clustering 알고리즘을 적용할 수 있다. K-means Clustering이란, 데이터를 거리개념적으로 가까운 것들끼리 K개의 군집으로 모으는 알고리즘이다. 각 군집은 하나의 중심을 가지며, 같은 중심에 할당된 데이터들이 모여 하나의 군집을 형성한다.
분류된 제2 그래프로부터 대표그래프를 생성한다(S160). 각각의 대표그래프는 각각의 기능에 해당하는 악성코드 군집을 대표한다. 각각의 대표그래프는 각각의 악성코드 기능에 일대일로 대응될 수 있다. 대표그래프는 대표ADG(Representative ADG, RADG)일 수 있다. 또한, 대표그래프를 메모리(802)에 저장하여 데이터베이스(DB)화 할 수 있다. 대표그래프 생성 방법에 대해서는 도 5c에서 보다 상세히 설명한다.
한편, 악성코드의 타입은 랜섬웨어형(ransomware), 웜계열(worm) (확산형), 피싱(phishing), 뱅커(banker), 트로이전(trojan)/봇(bot), 애드웨어(adware), 스파이웨어(spyware), 공격툴 기반형 및 기만형 등으로 분류될 수 있으며, 악성코드의 기능들은 부트공격, 정보탈취, 백도어(backdoor), 데이터 위변조, 사회공학형탐지, 멀웨어, 탐지우회, 후킹(hooking), 보안체계우회, 시스템 요약, 확산, 시스템 위/변조, 뱅킹공격, 비정상 네트워킹, 안티디버깅(anti debugging) 으로 분류될 수 있고, 분류 기준은 이에 제한되지 않는다.
도 2는 분석 대상 악성파일의 기능을 분석하는 방법의 흐름도이다.
분석 대상 악성파일로부터 소스코드를 획득한다(S210). 분석대상 악성파일이란, 그 기능을 분석하고자 하는 악성코드를 포함하는 파일을 의미한다. 파일은 실행파일(.exe), Patch파일(.pat), 문서파일(.pdf, .hwp, .doc)형태일 수 있다. 그러나 이에 제한되지 않고 다른 확장자 형태의 파일이 더 포함될 수 있음을 당해 기술분야의 통상의 기술자라면 이해할 수 있다. 소스코드를 획득하는 방법은 상기 도 1에서 설명한 방법과 동일하다.
획득된 분석대상 악성파일의 소스코드를 분석하여 제1 그래프를 생성한다(S220). 제1 그래프 생성 방법 또한, 상기 도 1에서 설명한 방법과 동일하다.
기능을 분석하고자 하는 악성파일로부터 생성한 제1 그래프의 노드를 분석하여 파라미터간 의존관계를 알아낼 수 있다(S230). 파라미터와는 도 1에서 설명한 것과 동일한 의미를 가진다.
알아낸 또는 분석된 파라미터간 의존관계를 나타내는 분석대상 악성파일의 제2 그래프를 생성한다(S240). 도 2에서의 제2 그래프의 의미는 도 2에서 설명한 바와 동일하다. 분석대상 악성파일로부터 생성한 제2 그래프는 저장되어 데이터베이스(DB)화 할 수 있다. 추후에 데이터베이스(DB)에서 분석대상 악성파일의 제2 그래프를 추출하여 각각의 악성기능을 대표하는 대표그래프들과 한꺼번에 비교할 수 있다(도 6a 참고).
분석대상 악성파일로부터 생성한 제2 그래프와 미리 저장된 대표그래프와 유사도를 비교한다(S250). 유사도가 가장 높은 대표그래프가 어떤 기능을 대표하는지 파악함으로써 해당 악성코드가 어떤 기능을 하는지 알 수 있다. 유사도를 비교하는 방법은 추후에 도 6에서 보다 상세히 설명한다.
도 3은 일 실시 예에 따른 악성코드 파일 집합으로부터 군집을 대표하는 ADG를 생성하는 방법의 흐름도이다.
기존에 존재하는 악성코드로부터 다량의 ADG를 생성하여 각 기능을 대표하는 RADG를 생성하기 위한 악성코드 집합을 준비한다(S310). 악성코드 집합은 기 존재하는 악성코드로서, 기계어로 존재하는 악성코드 그 자체일 수 있으며, 악성파일 형태일 수도 있다. 악성코드 집합으로부터 대표그래프를 생성하는 과정에 대해서는 도 4을 이용하여 후술한다.
악성코드로부터 ADG를 생성할 수 있다(S320). ADG 생성 과정 또한 도 4에서 보다 상세히 설명한다.
군집화를 수행하기 위하여 다량의 ADGs를 데이터베이스(DB)화 할 수 있다(S330). ADGs은 다량의 악성코드 집합으로부터 ADG 생성을 거쳐 생성된 복수의 ADG의 집합을 의미한다. ADGs에는 여러 가지 기능의 악성코드로부터 생성된 그래프들이 공존할 수 있다.
다양한 기능을 포함하는 ADGs로부터 각 기능별로 ADG를 분류하기 위해 ADG 군집화수행(S340)단계가 존재한다. 같은 기능을 하는 악성코드의 ADG는 서로 유사한 형태일 것 이기 때문에, ADG들간의 유사도에 따라 군집화 할 수 있다. 군집화는 도 1에서와 마찬가지로, 편집거리를 이용할 수 있고, 가까운 거리에 위치한 그래프들을 같은 집합으로 모으는 방식인 K-means Clustering 알고리즘을 사용할 수 있다.
군집화 작업에 의해 유사한 ADG끼리 모인 ADG군집들로부터 각 군집(S351, S352)을 대표하는 대표그래프(Representative ADG, RADG)를 생성할 수 있다. 각각의 ADG와 분석대상 악성코드의 ADG를 일일이 비교하는 것은 분석속도가 느려 효과적인 악성코드의 기능을 분석하는 데에 장애가 된다. 따라서 효율적인 악성코드 기능 분석을 위해 악성기능을 대표하는 대표ADG(RADG)를 생성할 수 있다(S361, S362). RADG별로 어떤 기능을 의미하는지 편리하게 확인 할 수 있도록 또는 인공지능 학습에 용이할 수 있도록 각 RADG에 해당 RADG의 기능을 나타내는 기능레이블을 할 수 있다 (S371, S372).
도 4는 일 실시 예에 따른 악성파일로부터 복수의 ADG를 생성하여 데이터베이스(DB)화 하는 구체적인 과정을 설명하기 위한 흐름도이다.
ADG 데이터베이스(DB)는 악성코드 기능 분석을 위한 비교모델로 사용하기 위해 생성하는 것이다. 정적 분석은 동적 분석과 달리 악성코드 파일 실행하는 것이 아니라, 코드 자체를 분석하는 방법을 이용하는 것이다. 악성파일을 정적 분석하기 위해 분석 대상 악성코드의 소스코드를 확보할 필요가 있다. 분석 대상 악성코드는 언팩(Unpack)된 악성코드 일 수 있다.
도 4를 참조하면, 악성코드의 소스코드는 악성코드 파일을 분석하여 확보할 수 있다. 일 실시 예에서, 악성코드 파일은 기계어(Machine Language)로 이루어 져 있을 수 있다. 기계어를 디스어셈블(Disassemble)하여 어셈블리어(Assembly Language)를 획득하고(S410), 획득된 어셈블리어를 다시 디컴파일(Decomplile)하여 소스코드(Source Code)를 얻을 수 있다(S420). 일 실시 예에서 소스코드는 의사코드(Pseudo Code) 또는 C언어(C Code)일 수 있으나, 이에 제한되지 않고 다른 프로그래밍 언어들이 더 포함될 수 있음을 당해 기술분야의 통상의 기술자라면 이해할 수 있다.
소스코드를 분석(S430)하여 제1 그래프를 생성할 수 있다. 일 실시 예 에서는 제1 그래프를 생성하는 것은 CFG(Control Flow Graph)를 생성하는 것 일 수 있다(S440).
CFG를 생성하기 위해 획득한 소스코드를 파싱(Parsing)하여 코드를 구문별로 구분 한다. 예를 들면, if문, while문 또는 goto문 등이 있을 수 있다. 그러나 이에 제한되지 않고 다른 범용적인 구문들이 더 포함될 수 있음을 당해 기술분야의 통상의 기술자라면 이해할 수 있다. 이와 같이 악성코드 파일로부터 획득한 소스코드를 파싱한 것을 분석하여 추상 구문 트리(Abstract Syntax Tree)를 만들고, 추상 구문 트리 내의 구문에서 기본블록(Basic Block)을 식별 한 뒤 기본블록으로 CFG를 구성한다. 여기서, 추상 구문 트리란 프로그래밍 언어로 작성된 소스 코드의 추상 구문 구조의 트리이고, 기본블록이란 블록의 시작과 끝을 제외하고는 중간으로 실행분기가 들어오거나 나가지 않는 블록을 말한다. CFG가 생성되면, CFG내의 코드를 다시 한 줄씩 파싱(Parsing)하여 파라미터(Parameter)간 의존관계를 분석 할 수 있다. 일 실시 예에서, 파라미터간 의존관계 분석은 API 파라미터간 의존관계 분석(S450)일 수 있다.
API 파라미터는 API의 입력으로 들어가며, 이에 대한 출력은 다른 API 파라미터 또는 리턴 값(Return Value)로 반환된다. 리턴 값은 다시 다른 API의 파라미터가 될 수 있다. 일 실시 예에서, API_1의 파라미터 x가 API_1에 입력되어 리턴 값으로 y값이 출력되면, y값은 다시 API_2의 파라미터가 될 수 있다. 이러한 실시 예에서 API_1과 API_2에서 x와 y는 파라미터간 의존관계가 있다고 본다.
한편, API 파라미터 의존관계 분석은 데이터 흐름 분석 기법을 활용하여 이루어 질 수 있다. 데이터 흐름 분석이란 컴퓨터 프로그램 내 특정 지점에서 변수가 가질 수 있는 값에 대한 정보를 모으는 기법을 말한다. 일 실시 예에서 데이터 흐름 분석 기법은 정방향 분석인 도달 정의(Reaching Definition)를 이용한다. 도달 정의 분석의 목적은 파라미터를 정의하는 명령어가 어느 지점까지 영향을 줄 수 있는가를 알아내는 것이다. 분석은 함수 단위로 생성된 CFG 내 코드를 한 줄씩 분석하면서 함수를 호출하고, 그 함수 값을 변수에 할당하는 Call-assignment 구문을 발견하면 값이 할당되는 변수, 호출되는 함수의 이름 및 해당 구문의 위치정보를 큐(Queue)에 저장하고, 그 이후에 큐의 원소를 하나씩 꺼내어 해당되는 구문의 위치부터 변수가 소멸(Kill)하지 않고 어느 지점까지 도달하는지 분석하는 기법이다. 변수에 값이 할당된 후 새로운 값이 할당되면, 이는 기존의 값이 덮어씌워지게 되는 결과이기 때문에 소멸한다고 판단할 수 있다. 본 발명에서 ADG를 생성 할 때에는 기본 블록 단위로 분석을 진행하며 블록 내에서 변수가 소멸하는 경우에는 분석을 종료하고, 블록 끝까지 소멸되지 않는 경우에는 분석중인 기본 블록의 후손블록(Successor Block)에 대해 분석을 계속 진행한다. 분석중인 변수가 소멸되지 않고 해당 변수를 인자로 갖는 함수 호출(Function Call)을 발견 시 변수에 값을 할당한 함수와 변수를 인자로 갖는 함수를 간선으로 연결하여 그래프를 생성할 수 있다. 여기에서 함수는 노드를 의미 할 수 있다.
파라미터간 의존관계를 분석하여 제2 그래프를 생성 할 수 있고, 일 실시 예에서 제2 그래프를 생성하는 것은 ADG(API Dependency Graph)를 생성하는 것(S460)일 수 있다.
그 다음, ADG가 생성된 악성파일이 마지막 악성파일인지 판단하는 단계(S470)가 있을 수 있다. 마지막 악성파일이 아닌 경우 다시 처음단계로 돌아가서 다른 악성파일의 ADG를 생성하고, 마지막 악성파일에 해당하는 경우 생성된 모든 ADG를 데이터베이스(DB)에 저장한다. 이와 같은 방법으로 기 존재하는 모든 악성파일을 ADG형태로 변환하여 데이터베이스(DB)화할 수 있다(S480).
도 5a는 일 실시 예에 따른 파라미터간 의존관계를 나타내는 제2 그래프의 개념도이다.
제1 그래프(501)의 노드를 분석하여 파라미터간 의존관계를 분석하여 제2 그래프(502)를 생성할 수 있다. 제2 그래프는 제1 그래프에서 파라미터간 의존관계가 존재(흑색 노드)하는 파라미터들을 포함하는 노드만을 연결한 그래프 일 수 있다.
도 5b는 일 실시 예에 따른 군집화된 제2 그래프 군집으로부터 대표그래프를 생성하는 과정 및 이를 데이터베이스(DB)에 저장하는 과정을 설명하는 도면이다.
복수의 군집으로부터 각 군집을 대표하는 대표 그래프를 생성하기 위해 각 군집(S511)에 존재하는 각각의 제2 그래프들을 더할 수 있다(S512). 그래프를 더하는 방법에 대해서는 추후에 도 5c에서 상세히 설명한다.
더해진 그래프에서 출현 빈도가 임계값을 넘는 노드들만 추출한다(S513). 그래프를 더할 때 그래프의 모든 노드와 엣지를 병합하면, 각 노드와 엣지의 영향력을 고려할 수 없이 모두 포함하게 되므로 어떠한 악성코드의 기능을 대표하는 그래프라고 보기 어렵다. 따라서, 출현빈도가 일정 기준치(이하 "임계값" 이라 함)를 초과하는 노드 또는 엣지만을 병합 대상으로 삼을 수 있다. 임계값은 휴리스틱(Heuristic)하게 정할 수 있다. 일 실시 예에서 임계값을 최대 출현 노드 수의 10%로 하여, 최대 출현 노드 수의 10% 초과하는 노드만을 포함하는 것으로 할 수 있다.
추출된 노드를 연결하여 대표그래프를 생성한다(S514). 연결선(엣지)의 가중치가 표시되어 있지 않은 경우에는 가중치는 1이다. 그러나 파라미터간 의존관계의 정도 등 필요에 따라 다양한 값으로 표시될 수 있다.
악성코드의 기능을 상징하는 대표그래프를 데이터베이스(DB)에 저장(S515)하여 DB화 할 수 있다. 대표그래프는 악성코드의 어떠한 기능을 나타낸다고 볼 수 있기 때문에 비교 대상 악성코드와의 비교모델이 될 수 있다. 대표그래프 DB(S516)는 본 발명의 메모리에 저장되어 추후에 악성코드의 기능 분석을 위해 사용될 수 있다.
도 5c는 일 실시 예에 따른 제2 그래프를 더하여 대표그래프를 생성하는 방법을 예시하는 도면이다.
도 5c를 참조하면, 제2 그래프(521, 522)는 노드의 수에 따라 행렬 형태(523, 524)로 표현될 수 있다. 예를 들어, 노드 수가 4개인 경우 행과 열이 4개씩인 4 by 4의 정사각 행렬 일 수 있다. 정사각 행렬은 대칭행렬(Symmetric Matrix) 일 수 있으며, 정사각 행렬의 주대각선(Diagonal)상의 성분은 모두 0일 수 있다. 그래프를 행렬로 표현할 때에는 각 번호에 해당하는 노드가 서로 연결되어 있는 경우 행렬 성분에 엣지의 가중치 값이 기입될 수 있다. 연결되지 않은 경우 0이 기입된다.
일 실시 예에서 2번째 노드가 1, 3, 4번째 노드와 모드 연결되어 있는 경우, (2,1), (2,3), (2,4), (1,2), (3,2), (4,2)에 모두 1이 기입 될 수 있다. 그래프를 행렬 형태로 표현한 뒤, 행렬을 성분 별로 더한다(525).
더해진 행렬(527)의 성분 값은 각각의 노드가 얼마나 존재했는지 출현빈도를 의미한다. 해당 성분 값이 임계값을 넘는 경우만을 병합대상 노드로 취급하고 이를 추출하여 간선으로 연결함으로써 대표그래프를 생성할 수 있다(526).
도 6a는 일 실시 예에 따른 분석대상 악성코드의 ADG와 각각의 대표그래프를 비교하여 기능을 분석하는 방법의 흐름도이다.
도 4에서 설명한 바와 같이, 분석대상 악성코드(S611)로부터 ADG를 생성(S612)한 뒤, 분석대상 악성코드 ADGs의 데이터베이스(DB)(S613)에서 ADG를 추출하여 각각의 기능을 대표하는 복수의 RADG(S614, S615)와 비교한다. 이와 같은 방식으로, 다수의 악성코드의 기능 분석을 한꺼번에 수행 할 수 있다. 한꺼번에 악성코드의 기능 분석을 수행함으로써 분석의 정확도와 속도를 향상시키는 효과가 있다. 악성코드의 기능은 RADG의 기능레이블을 확인하여 확인할 수 있다. 기능레이블은 도 3에서 설명한 바와 같은 의미를 갖는다.
도 6b는 일 실시 예에 따른 분석대상 제2그래프 DB를 분석하여 악성코드의 기능정보를 저장하여 DB화하는 방법의 흐름도이다.
제2 그래프 DB에서 분석하고자 하는 제2 그래프를 미리 저장된 대표그래프와 유사도를 비교한다(S621). 일 실시 예에서 유사도 비교는 편집거리를 이용할 수 있다. 유사도 비교 시 절대적인 노드의 수만을 기준으로 유사도를 판단하게 되면 많은 노드를 가지고 있는 대표그래프가 높은 가산점을 가지게 되어 유사도 판단이 잘못될 수 있으므로, 생성된 제2 그래프의 노드와 미리 저장된 각각의 대표그래프 노드의 교집합 대 합집합의 비율을 유사도 판단 지표로 이용할 수 있다. 교집합은 비교하는 두 그래프가 공통적으로 갖고 있는 노드들이며, 합집합은 비교하는 두 그래프가 갖고 있는 모든 노드들을 합한 것을 의미한다. 예를 들면, 상기 지표의 값(비율)이 높을수록 유사하다고 볼 수 있다.
유사도가 높은 대표그래프를 식별하고(S622), 그 식별된 대표그래프를 통해 분석대상 제2 그래프가 어떤 기능을 수행하는 악성코드로부터 생성된 것인지 판단할 수 있다.
기능이 분석된 악성코드의 기능정보는 저장되어 데이터베이스(DB)화 할 수 있다(S623). 기능정보DB는 추후 동일 또는 유사한 악성코드의 기능을 분석하는 데에 이용될 수 있다. 분석된 제2 그래프는 다시 도 5b에서 S511단계의 제2 그래프 군집에 포함되어, 추후 다른 악성코드 기능 분석의 비교모델을 위한 데이터가 될 수 있다.
도 7은 일 실시 예에 따른 소스코드를 분석하여 CFG(Control Flow Graph)를 생성하는 것을 설명하기 위한 도면이다.
도 7은 파라미터간 의존관계를 분석하기 위해 소스코드를 CFG로 변환하는 과정(700)을 나타낸다. 소스코드(701)는 코드 각각의 행 또는 구문에 번호가 부여될 수 있다(702). 각 번호에 해당하는 블록을 노드로 하고, 코드의 실행순서에 맞게 노드가 연결되면 CFG(703)가 생성된다.
예를 들면, 변수 선언의 경우 다음 행으로 순차적으로 이동한다( 1 -> 2 ). if문의 경우 조건에 따라 다른 행이 실행될 수 있으므로 분기점이 된다( 2 -> 3 또는 2 -> 4 ). 다시 순차적인 변수선언 행이 실행되면 분기점은 한곳으로 모인다( 3 -> 5 또는 4 -> 5 ). while문의 경우 조건에 따라 루프(Loop)를 형성할 수도 있고 루프를 빠져나올 수도 있다( 6 -> 7 또는 6 -> 8 ).
도 8은 일 실시 예에 따른 악성코드의 기능 분석 장치의 구성을 나타내는 개념도이다.
장치(800)는 프로세서(801)와 메모리(802)를 포함할 수 있다. 도 8에 도시된 장치(800)에는 실시 예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 8에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 당해 기술분야의 통상의 기술자라면 이해할 수 있다.
메모리(802)는, 프로세서(801)의 처리 및 제어를 위한 프로그램을 저장할 수 있다. 메모리(802)는 수집된 데이터를 저장하여 악성코드수집DB, 제2 그래프DB, 대표그래프DB, 기능정보DB 및 악성행위분석결과DB를 포함할 수 있다. 메모리(802)는 플래시 메모리 타입(flash memory type), 하드디스크 타입(hard disk type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 카드 타입의 메모리(예를 들어 SD 또는 XD 메모리 등), 램(RAM, Random Access Memory) SRAM(Static Random Access Memory), 롬(ROM, Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory), 자기 메모리, 자기 디스크, 광디스크 중 적어도 하나의 타입의 저장매체를 포함할 수 있다.
프로세서(801)는 도 1 내지 도 7에서 상술한 악성코드들의 기능을 분석하기 위해 필요한 일련의 과정을 처리할 수 있다. 일 실시 예에서 프로세서(801)는 악성코드 파일로부터 악성코드의 소스코드를 추출하고, 추출된 소스코드를 파싱 또는 분석하여 제1 그래프, 제2 그래프 및 대표그래프를 생성할 수 있다. 대표그래프 또는 RADG와 분석대상 악성코드의 제2 그래프 또는 CFG를 비교하여 그래프간 유사도를 판단할 수 있다. 판단된 유사도를 근거로 악성코드의 기능이 무엇인지 판단할 수 있다.
한편, 장치(800)의 프로세서(801)는 적어도 하나의 하드웨어 칩 형태로 제작되어 장치(800)에 탑재될 수 있다.
본 실시 예들은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈과 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
또한, 본 명세서에서, "부"는 프로세서 또는 회로와 같은 하드웨어 구성(hardware component), 및/또는 프로세서와 같은 하드웨어 구성에 의해 실행되는 소프트웨어 구성(software component)일 수 있다.
전술한 본 명세서의 설명은 예시를 위한 것이며, 본 명세서의 내용이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 실시예의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 포함되는 것으로 해석되어야 한다.

Claims (17)

  1. 컴퓨터 시스템에 의해 수행되는 악성코드의 기능 분석을 위한 대표그래프 생성 방법에 있어서,
    미리 저장된 악성파일로부터 소스코드(Source Code)를 획득하는 단계;
    상기 소스코드를 분석하여 각 노드(Node)가 상기 소스코드의 일부로 구성된 제1 그래프(Graph)를 생성하는 단계;
    상기 제1 그래프의 상기 노드를 분석하여 파라미터(Parameter)간 의존관계를 분석하는 단계;
    상기 분석된 파라미터간 의존관계를 나타내는 제2 그래프를 생성하는 단계;
    상기 제2 그래프를 악성코드의 기능별로 분류하기 위하여 유사도를 기준으로 군집화 하는 단계; 및
    상기 군집화된 제2 그래프의 군집에서 군집의 기능을 대표하는 대표그래프를 생성하는 단계; 를 포함하는 대표그래프 생성 방법.
  2. 제 1 항에 있어서,
    상기 제1 그래프는 상기 소스코드를 파싱(Parsing)하여 추상 구문 트리(Abstract Syntax Tree)를 생성한 뒤, 상기 추상 구문 트리를 분석하여 기본블록으로 구성한 제어 흐름 그래프(Control Flow Graph)이고,
    상기 파라미터는 API(Application Programming Interface) 파라미터이고,
    상기 제2 그래프는 API 파라미터간 의존관계를 나타내는 ADG(API Dependency Graph)인 것인, 대표 그래프 생성 방법.
  3. 제 1 항에 있어서,
    상기 대표그래프를 저장하여 데이터베이스(DB)화 하는 것을 포함하는, 대표그래프 생성 방법.
  4. 제 1 항에 있어서,
    상기 대표그래프를 생성하는 단계는,
    각각의 제2 그래프를 더하여 출현빈도가 임계값을 초과하는 노드만을 연결하여 생성하는 것인, 대표 그래프 생성 방법.
  5. 제 1 항에 있어서,
    상기 군집화 하는 단계는,
    K-means Clustering 방식을 이용하는 것인, 대표그래프 생성 방법.
  6. 컴퓨터 시스템에 의해 수행되는 악성코드의 기능 분석 방법에 있어서,
    분석대상 악성파일의 소스코드를 획득하는 단계;
    상기 소스코드를 분석하여 각 노드가 상기 소스코드의 일부로 구성된 제1 그래프를 생성하는 단계;
    상기 제1 그래프의 상기 노드를 분석하여 파라미터(Parameter)간 의존관계를 분석하는 단계;
    상기 분석된 파라미터간 의존관계를 나타내는 제2 그래프를 생성하는 단계; 및
    악성코드의 기능별로 분류되어 미리 생성 및 저장된 대표그래프 각각과 상기 생성된 제2 그래프의 유사도를 비교하여 악성코드의 기능을 분석하는 단계; 를 포함하는 악성코드의 기능 분석 방법.
  7. 제 6 항에 있어서,
    상기 제1 그래프는 상기 소스코드를 파싱(Parsing)하여 추상 구문 트리(Abstract Syntax Tree)를 생성한 뒤, 상기 추상 구문 트리를 분석하여 기본블록으로 구성한 제어 흐름 그래프(Control Flow Graph)이고,
    상기 파라미터는, API(Application Programming Interface) 파라미터이고,
    상기 제2 그래프는 API 파라미터간 의존관계를 나타내는 ADG(API Dependency Graph)인 것인, 악성코드의 기능 분석 방법.
  8. 제 6 항에 있어서,
    상기 유사도를 비교하는 것은, 상기 생성된 제2 그래프의 노드와 상기 미리 저장된 각각의 대표그래프 노드의 교집합 대 합집합의 비율을 유사도 판단 지표로 이용하는 것을 포함하는, 악성코드의 기능 분석 방법.
  9. 악성코드의 기능 분석을 위한 대표그래프 생성 장치에 있어서,
    적어도 하나의 인스트럭션(Instruction)을 저장하기 위한 메모리; 및
    상기 메모리에 저장된 적어도 하나의 인스트럭션을 실행하는 적어도 하나의 프로세서; 를 포함하고,
    상기 프로세서는, 하나 이상의 인스트럭션을 실행함으로써 미리 저장된 악성파일로부터 소스코드(Source Code)를 획득하고,
    상기 소스코드를 분석하여 각 노드(Node)가 상기 소스코드의 일부로 구성된 제1 그래프(Graph)를 생성하고,
    상기 제1 그래프의 상기 노드를 분석하여 파라미터(Parameter)간 의존관계를 분석하고,
    상기 분석된 파라미터간 의존관계를 나타내는 제2 그래프를 생성하고,
    상기 제2 그래프를 악성코드의 기능별로 분류하기 위하여 유사도를 기준으로 군집화 하고,
    상기 군집화된 제2 그래프의 군집에서 군집의 기능을 대표하는 대표그래프를 생성하는, 대표그래프 생성 장치.
  10. 제 9 항에 있어서,
    상기 제1 그래프는 상기 소스코드를 파싱(Parsing)하여 추상 구문 트리(Abstract Syntax Tree)를 생성한 뒤, 상기 추상 구문 트리를 분석하여 기본블록으로 구성한 제어 흐름 그래프(Control Flow Graph)이고,
    상기 파라미터는 API(Application Programming Interface) 파라미터이고,
    상기 제2 그래프는 API 파라미터간 의존관계를 나타내는 ADG(API Dependency Graph)인, 대표그래프 생성 장치.
  11. 제 9 항에 있어서,
    상기 대표그래프를 저장하여 데이터베이스(DB)화 하는 것을 포함하는, 대표그래프 생성 장치.
  12. 제 9 항에 있어서,
    상기 대표그래프를 생성하는 것은, 각각의 제2 그래프를 더하여 출현빈도가 임계값을 초과하는 노드만을 연결하여 생성하는 것인, 대표그래프 생성 장치.
  13. 제 9 항에 있어서,
    상기 군집화 하는 것은, K-means Clustering 방식을 이용하는 것인, 대표그래프 생성 장치.
  14. 악성코드의 기능 분석 장치에 있어서,
    적어도 하나의 인스트럭션(Instruction)을 저장하기 위한 메모리; 및
    상기 메모리에 저장된 적어도 하나의 인스트럭션을 실행하는 적어도 하나의 프로세서; 를 포함하고,
    상기 프로세서는, 하나 이상의 인스트럭션을 실행함으로써 분석대상 악성파일의 소스코드를 획득하고,
    상기 소스코드를 분석하여 각 노드가 상기 소스코드의 일부로 구성된 제1 그래프를 생성하고,
    상기 제1 그래프의 상기 노드를 분석하여 파라미터(Parameter)간 의존관계를 분석하고,
    상기 분석된 파라미터간 의존관계를 나타내는 제2 그래프를 생성하고,
    악성코드의 기능별로 분류되어 미리 생성 및 저장된 대표그래프 각각과 상기 생성된 제2 그래프의 유사도를 비교하여 악성코드의 기능을 분석하는, 악성코드의 기능 분석 장치.
  15. 제 14 항에 있어서,
    상기 제1 그래프는 상기 소스코드를 파싱(Parsing)하여 추상 구문 트리(Abstract Syntax Tree)를 생성한 뒤, 상기 추상 구문 트리를 분석하여 기본블록으로 구성한 제어 흐름 그래프(Control Flow Graph)이고,
    상기 파라미터는 API(Application Programming Interface) 파라미터이고,
    상기 제2 그래프는 API 파라미터간 의존관계를 나타내는 ADG(API Dependency Graph)인 것인, 악성코드의 기능 분석 장치.
  16. 제 14 항에 있어서,
    상기 유사도를 비교하는 것은, 상기 생성된 제2 그래프의 노드와 상기 미리 저장된 각각의 대표그래프 노드의 교집합 대 합집합의 비율을 유사도 판단 지표로 이용하는 것을 포함하는, 악성코드의 기능 분석 장치.
  17. 제 1 항 내지 제 8 항 중 어느 한 항에 따른 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체.
KR1020200025535A 2020-02-25 2020-02-28 악성코드의 기능을 분석하는 방법 및 장치 KR102344496B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200025535A KR102344496B1 (ko) 2020-02-28 2020-02-28 악성코드의 기능을 분석하는 방법 및 장치
US17/037,691 US11853421B2 (en) 2020-02-25 2020-09-30 Method and apparatus for analyzing malicious code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200025535A KR102344496B1 (ko) 2020-02-28 2020-02-28 악성코드의 기능을 분석하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20210110074A KR20210110074A (ko) 2021-09-07
KR102344496B1 true KR102344496B1 (ko) 2021-12-28

Family

ID=77797177

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200025535A KR102344496B1 (ko) 2020-02-25 2020-02-28 악성코드의 기능을 분석하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102344496B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115981711B (zh) * 2023-03-20 2023-06-27 花瓣云科技有限公司 一种代码处理方法及电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101930293B1 (ko) * 2017-09-12 2018-12-18 연세대학교 산학협력단 정적 분석과 동적 분석을 이용하여 변종 악성코드를 식별하는 장치 및 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101720686B1 (ko) * 2014-10-21 2017-03-28 한국전자통신연구원 시각화 유사도 기반 악성 어플리케이션 감지 장치 및 감지 방법
KR102045772B1 (ko) 2015-02-11 2019-11-19 한국전자통신연구원 악성 코드를 탐지하기 위한 전자 시스템 및 방법
KR102045500B1 (ko) 2018-03-16 2019-11-15 한양대학교 산학협력단 악성코드를 탐지하는 방법, 이를 이용하는 컴퓨팅 시스템, 및 프로그램

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101930293B1 (ko) * 2017-09-12 2018-12-18 연세대학교 산학협력단 정적 분석과 동적 분석을 이용하여 변종 악성코드를 식별하는 장치 및 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Annamalai Narayanan et al, "A Multi-view Context-aware Approach to Android Malware Detection and Malicious Code Localization"(2017.04.)
Fabian Yamaguchi et al, "Modeling and Discovering Vulnerabilities with Code Property Graphs", 2014 IEEE Symposium on Security and Privacy(2014.11.)

Also Published As

Publication number Publication date
KR20210110074A (ko) 2021-09-07

Similar Documents

Publication Publication Date Title
Alasmary et al. Soteria: Detecting adversarial examples in control flow graph-based malware classifiers
CN109101815B (zh) 一种恶意软件检测方法及相关设备
US20120072988A1 (en) Detection of global metamorphic malware variants using control and data flow analysis
RU2427890C2 (ru) Система и способ сравнения файлов на основе шаблонов функциональности
CN105138916B (zh) 基于数据挖掘的多轨迹恶意程序特征检测方法
Li et al. Effective and light-weight deobfuscation and semantic-aware attack detection for powershell scripts
BR102015017215A2 (pt) método implementado em computador para classificação de aplicativos móveis, e, programa de computador codificado em um meio de armazenamento não-trasitório
US11853421B2 (en) Method and apparatus for analyzing malicious code
Eskandari et al. To incorporate sequential dynamic features in malware detection engines
CN111222137A (zh) 一种程序分类模型训练方法、程序分类方法及装置
O'Kane et al. N-gram density based malware detection
KR102344496B1 (ko) 악성코드의 기능을 분석하는 방법 및 장치
CN113971284B (zh) 基于JavaScript的恶意网页检测方法、设备及计算机可读存储介质
US11868473B2 (en) Method for constructing behavioural software signatures
Suhuan et al. Android malware detection based on logistic regression and XGBoost
Rosli et al. Ransomware behavior attack construction via graph theory approach
Gurrutxaga et al. Evaluation of malware clustering based on its dynamic behaviour
WO2023067668A1 (ja) 解析機能付与方法、解析機能付与装置及び解析機能付与プログラム
US11222113B1 (en) Automatically generating malware definitions using word-level analysis
Wang et al. APT attribution for malware based on time series shapelets
KR102382017B1 (ko) 악성코드 진화관계를 분석하는 장치 및 방법
Ping et al. On the effectiveness of application characteristics in the automatic classification of malware on smartphones
Thebeyanthan et al. E-secure: An automated behavior based malware detection system for corporate e-mail traffic
KR102572607B1 (ko) 비실행데이터 내의 셸코드 식별장치 및 방법
JP7427146B1 (ja) 攻撃分析装置、攻撃分析方法、及び攻撃分析プログラム

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant