KR102246797B1 - 명령 코드 생성을 위한 장치, 방법, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램 - Google Patents

명령 코드 생성을 위한 장치, 방법, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램 Download PDF

Info

Publication number
KR102246797B1
KR102246797B1 KR1020190141865A KR20190141865A KR102246797B1 KR 102246797 B1 KR102246797 B1 KR 102246797B1 KR 1020190141865 A KR1020190141865 A KR 1020190141865A KR 20190141865 A KR20190141865 A KR 20190141865A KR 102246797 B1 KR102246797 B1 KR 102246797B1
Authority
KR
South Korea
Prior art keywords
command code
command
sentences
code
sequence
Prior art date
Application number
KR1020190141865A
Other languages
English (en)
Inventor
최창희
신성욱
이인섭
Original Assignee
국방과학연구소
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 국방과학연구소 filed Critical 국방과학연구소
Priority to KR1020190141865A priority Critical patent/KR102246797B1/ko
Application granted granted Critical
Publication of KR102246797B1 publication Critical patent/KR102246797B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Electrically Operated Instructional Devices (AREA)

Abstract

다양한 실시 예에 따르면, 명령 코드 생성을 위한 방법에 있어서, 소스 코드를 확인하는 동작; 상기 소스 코드에서, 명령 코드 시퀀스를 확인하는 동작; 상기 명령 코드 시퀀스에 대한 전처리를 통해, 상기 명령 코드 시퀀스를 복수개의 명령 코드 문장으로 분할하는 동작; 지정된 학습 모델에 상기 분할된 복수개의 명령 코드 문장을 입력하여, 복수 개의 명령 코드 문장을 생성하는 동작; 및 상기 생성된 복수 개의 명령 코드 문장을 출력하는 동작을 포함할 수 있다.

Description

명령 코드 생성을 위한 장치, 방법, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램{APPARATUS, METHOD, COMPUTER-READABLE STORAGE MEDIUM AND COMPUTER PROGRAM FOR GENERATING OPERATION CODE}
본 발명은 명령 코드 생성을 위한 장치, 방법, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램에 관한 것이다.
사이버(cyber) 상에서 각 나라 간의 사이버 전쟁이 심화됨에 따라, 사이버 방어 기술에 대한 연구가 활발하게 진행되고 있다. 과거에는 기존의 사이버 공격에 대한 시그니처를 만들어 이를 이용한 방어 체계를 구축하기 위한 기술 개발에 힘을 쏟았으나, 최근에는 인공지능을 이용한 사이버 공격이 증가하면서 과거에 개발한 기술만으로는 사이버 공격에 대한 방어가 어렵게 되었다. 이에 따라, 최근에는 사이버 공격에 대한 방어 측면에서, 인공지능을 이용한 기술이 연구되고 있으나, 관련 데이터의 부족으로 어려움이 있다.
인공지능을 이용한 사이버 방어 기술에 필요한 데이터는 크게 2가지로 나뉠 수 있다. 상기 사이버 방어 기술에 필요한 첫 번째 데이터는, 실제 사이버 공격 또는 사이버 상의 사용자(사용자 장치)로부터 취득한 실제 데이터일 수 있다. 많은 양의 데이터가 수집될수록 상기 사이버 방어 기술의 구축에 용이할 수 있지만, 개인정보 보호법, 기관간의 협조문제, 데이터 수집 시 운용 중인 체계에 대한 영향성 등을 고려할 때 현실적으로는 데이터 취득에 많은 제약이 있을 수 있다. 또한, 상기 사이버 방어 기술에 필요한 두 번째 데이터는, 사이버 상에서 실제 데이터의 대안으로 널리 이용되고 있는 모의 데이터일 수 있다. 상기 모의 데이터의 경우 현실성은 떨어질 수 있으나 상황에 맞게 변인을 통제하며 데이터를 생성할 수 있어서 성능 평가의 공정성 측면에서는 실제 데이터보다 우수한 측면이 있다.
사이버 기술 분야에서는 상기 모의 데이터를 생성하기 위한 여러 가지 기술이 연구되어 왔다. 예를 들어, 특정 패킷을 검사하는 툴을 위한 사용자의 행위를 모사하는 프레임워크를 제시하는 기술이 개발되어 있으며, 이러한 기술은 현실과 유사한 페이로드와 패킷 타이밍 정보까지 모사하여, 많은 양의 데이터를 제공할 수 있다.
한편, 네트워크 기술분야에서는 모의 데이터 생성을 위한 도구가 상용화되고 있다. 예를 들어, 종래에는 네트워크에서 발생할 수 있는 여러 가지 상황을 템플릿으로 정의해놓고 사용자가 이를 조합하여 네트워크 트래픽을 발생시킬 수 있는 기능을 제공하고 있는 기술이 개발되어 제공되고 있다.
본 발명의 실시 예는, 명령 코드 시퀀스의 양을 증가 시킬 수 있는 명령 코드 생성을 위한 장치, 방법, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램을 제공할 수 있다.
본 발명의 실시 예에 따르면, 명령 코드 생성을 위한 방법에 있어서, 소스 코드를 확인하는 동작; 상기 소스 코드에서, 명령 코드 시퀀스를 확인하는 동작; 상기 명령 코드 시퀀스에 대한 전처리를 통해, 상기 명령 코드 시퀀스를 복수개의 명령 코드 문장으로 분할하는 동작; 지정된 학습 모델에 상기 분할된 복수개의 명령 코드 문장을 입력하여, 복수 개의 명령 코드 문장을 생성하는 동작; 및 상기 생성된 복수 개의 명령 코드 문장을 출력하는 동작을 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 소스 코드는, 입력출 인터페이스 또는 통신 인터페이스로부터 수신되거나, 또는 메모리에 저장될 수 있다.
본 발명의 실시 예에 따르면, 상기 명령 코드 시퀀스에 대한 전처리를 통해, 상기 명령 코드 시퀀스를 상기 복수개의 명령 코드 문장으로 분할하는 동작은, 지정된 기본 블록, 지정된 기능 또는 지정된 분기 명령어를 기초로 실행될 수 있다.
본 발명의 실시 예에 따르면, 상기 지정된 학습 모델은, SeqGAN(Sequence Generative Adversarial Networks)를 포함할 수 있다.
본 발명의 실시 예에 따르면, 컴퓨터 프로그램을 저장하고 있는 컴퓨터 판독 가능 기록매체로서, 상기 컴퓨터 프로그램은, 프로세서에 의해 실행되면, 소스 코드를 확인하는 동작; 상기 소스 코드에서, 명령 코드 시퀀스를 확인하는 동작; 상기 명령 코드 시퀀스에 대한 전처리를 통해, 상기 명령 코드 시퀀스를 복수개의 명령 코드 문장으로 분할하는 동작; 지정된 학습 모델에 상기 분할된 복수개의 명령 코드 문장을 입력하여, 복수 개의 명령 코드 문장을 생성하는 동작; 및 상기 생성된 복수 개의 명령 코드 문장을 출력하는 동작을 포함하는 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함할 수 있다.
본 발명의 실시 예에 따르면, 컴퓨터 판독 가능한 기록매체에 저장되어 있는 컴퓨터 프로그램으로서, 상기 컴퓨터 프로그램은, 프로세서에 의해 실행되면, 소스 코드를 확인하는 동작; 상기 소스 코드에서, 명령 코드 시퀀스를 확인하는 동작; 상기 명령 코드 시퀀스에 대한 전처리를 통해, 상기 명령 코드 시퀀스를 복수개의 명령 코드 문장으로 분할하는 동작; 지정된 학습 모델에 상기 분할된 복수개의 명령 코드 문장을 입력하여, 복수 개의 명령 코드 문장을 생성하는 동작; 및 상기 생성된 복수 개의 명령 코드 문장을 출력하는 동작을 포함하는 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함할 수 있다.
본 발명의 실시 예에 따르면, 명령 코드 생성을 위한 장치에 있어서, 프로세서; 및 상기 프로세서와 전기적으로 연결된 메모리를 포함하며, 상기 메모리는, 상기 프로세서가, 소스 코드를 확인하며, 상기 소스 코드에서, 명령 코드 시퀀스를 확인하며, 상기 명령 코드 시퀀스에 대한 전처리를 통해, 상기 명령 코드 시퀀스를 복수개의 명령 코드 문장으로 분할하며, 지정된 학습 모델에 상기 복수개의 명령 코드 문장을 입력하여, 복수 개의 명령 코드 문장을 생성하며, 상기 생성된 복수 개의 명령 코드 문장을 출력하도록 하는 명령을 포함할 수 있다.
본 발명의 다양한 실시 예에 따른 명령 코드 생성을 위한 장치, 방법, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램은, 명령 코드 시퀀스의 양을 증가 시킬 수 있다.
예를 들어, 상기 증가시킨 명령 코드 시퀀스 데이터를 악성 코드 탐지 모델의 학습 데이터에 입력시킬 경우, 상기 악성 코드 탐지 모델의 악성 코드 탐지 성능을 향상시킬 수 있다. 일반적으로 국가 급의 APT(advanced persistent threat, 지능형 지속 위협) 공격의 경우, 한 번의 공격으로 끝나지 않으며, 일정 기간 미리 준비한 다양한 변종 악성 코드로 수차례 공격을 실행하는데, 종래의 악성 코드 탐지 기법, 예를 들어, 시그니처 방식 또는 머신 러닝 방식의 악성 코드 탐지 기법의 경우, 데이터의 부족으로 탐지 성능이 좋지 않은 문제가 있었다. 그러나, 본 발명의 증폭된(증가된) 명령 코드 시퀀스 데이터를 생성하는 실시 예를 상기 악성 코드 탐지 기법에 적용할 경우, 적은 양의 악성 코드 샘플을 이용하여도 종래에 비해 탐지율의 상승 효과를 확인할 수 있다.
도 1은 본 발명의 일 실시 예에 따른 명령 코드 생성을 위한 장치의 블록도이다.
도 2는 본 발명의 일 실시 예에 따른 명령 코드 생성을 위한 동작의 흐름도이다.
도 3a 내지 도 3e는 본 발명의 일 실시 예에 따른 명령 코드 생성 동작을 설명하기 위한 도면이다.
도 4 및 도 5는 본 발명의 실시 예에 따른 생성된 명령어 문장의 성능 평가 결과를 나타낸 도면이다.
먼저, 본 발명의 장점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되는 실시 예들을 참조하면 명확해질 것이다. 여기에서, 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 발명의 범주를 명확하게 이해할 수 있도록 하기 위해 예시적으로 제공되는 것이므로, 본 발명의 기술적 범위는 청구항들에 의해 정의되어야 할 것이다.
아울러, 아래의 본 발명을 설명함에 있어서 공지 기능 또는 구성 등에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들인 것으로, 이는 사용자, 운용자 등의 의도 또는 관례 등에 따라 달라질 수 있음은 물론이다. 그러므로, 그 정의는 본 명세서의 전반에 걸쳐 기술되는 기술사상을 토대로 이루어져야 할 것이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예에 대하여 상세하게 설명한다.
도 1은 본 발명의 일 실시 예에 따른 명령 코드 생성을 위한 장치의 블록도이다.
도 1을 참조하면 상기 장치(100)는, 프로세서(101), 입출력 인터페이스(103), 통신 인터페이스(105) 및/또는 메모리(107)를 포함할 수 있다.
프로세서(101)(제어부, 제어 장치 또는 제어 회로라고도 함)는 연결된 장치(100)의 적어도 하나의 다른 구성 요소(예: 하드웨어 구성 요소(예: 메모리(101), 입출력 인터페이스(103) 및/또는 통신 인터페이스(105)) 또는 소프트웨어 구성 요소)를 제어할 수 있고, 다양한 데이터 처리 및 연산을 수행할 수 있다.
입출력 인터페이스(103)는 예를 들면, 사용자 또는 다른 외부 기기로부터 입력된 명령 또는 데이터를 장치(100)의 다른 구성요소(들)에 전달하거나, 또는 장치(100)의 다른 구성요소(들)로부터 수신된 명령 또는 데이터를 사용자 또는 다른 외부 기기로 출력할 수 있다.
통신 인터페이스(105)는 예를 들면, 장치(100)와 외부 장치간의 통신을 설정할 수 있다. 예를 들면, 통신 인터페이스(105)는 무선 통신 또는 유선 통신을 통해서 네트워크에 연결되어 외부 장치와 통신할 수 있다.
메모리(107)는 장치(100)의 적어도 하나의 구성요소(프로세서(101), 입출력 인터페이스(103) 및/또는 통신 인터페이스(105))에 의해 사용되는 다양한 데이터, 예를 들어, 소프트웨어(예: 프로그램) 및, 이와 관련된 명령에 대한 입력 데이터 또는 출력 데이터를 저장할 수 있다. 메모리(107)는, 휘발성 메모리 또는 비휘발성 메모리를 포함할 수 있다.
일 실시 예에 따르면, 상기 프로세서(101)는, 소스 코드를 확인하며, 상기 소스 코드에서, 명령 코드 시퀀스를 확인하며, 상기 명령 코드 시퀀스에 대한 전처리를 통해, 상기 명령 코드 시퀀스를 복수개의 명령 코드 문장으로 분할하며, 지정된 학습 모델에 상기 분할된 복수개의 명령 코드 문장을 입력하여, 복수 개의 명령 코드 문장을 생성하며, 상기 생성된 복수 개의 명령 코드 문장을 출력하도록 할 수 있다.
예를 들어, 상기 소스 코드는, 입출력 인터페이스(103) 또는 통신 인터페이스(105)로부터 수신된 것이거나, 또는 메모리(107)에 저장된 것으로부터 획득된 것일 수 있다.
예를 들어, 상기 프로세서(101)는, 지정된 기본 블록, 지정된 기능 또는 지정된 분기 명령어를 기초로, 상기 명령 코드 시퀀스에 대한 전처리를 통해, 상기 명령 코드 시퀀스를 상기 복수개의 명령 코드 문장으로 분할할 수 있다.
예를 들어, 상기 지정된 학습 모델은, SeqGAN(Sequence Generative Adversarial Networks)를 포함할 수 있다. 예를 들어, 상기 SeqGAN은 메모리(107)에 저장될 수 있으며, 상기 프로세서(101)의 제어에 따라 학습 동작을 실행할 수 있다.
예를 들어, 상기 생성된 복수 개의 명령 코드는 상기 입출력 인터페이스(103)를 통해 출력될 수 있다.
도 2는 본 발명의 일 실시 예에 따른 명령 코드 생성을 위한 동작의 흐름도이다. 도 3a 내지 도 3e는 본 발명의 일 실시 예에 따른 명령 코드 생성 동작을 설명하기 위한 도면이다.
도 2를 참조하면, 장치(예: 장치(100) 또는 장치(100)의 프로세서(101))는 악성 코드의 고유의 성질을 최대한 잃지 않도록 하기 위해, 악성 코드에서 주요 특징점을 추출하지 않은 최초 상태인 명령 코드를 추출하고 상기 추출한 명령 코드를 증폭할 수 있다.
201 동작에서 상기 장치는, 소스 코드를 확인할 수 있다.
일 실시 예에 따르면, 상기 소스 코드는, 일반적인 프로그램의 소스 코드 또는 악성 코드 등 다양한 종류의 소스 코드 중 하나일 수 있다. 예를 들어, 상기 소스 코드 데이터는 도 3과 같은 이진 코드(binary code)일 수 있다.
일 실시 예에 따르면, 상기 소스 코드는, 입출력 인터페이스(103) 또는 통신 인테페이스(105)로부터 수신되거나 또는 메모리(107)에 저장된 것일 수 있다.
203 동작에서 상기 장치는 상기 소스 코드에서 명령 코드 시퀀스를 확인할 수 있다.
일 실시 예에 따르면, 상기 장치는 도 3과 같은 소스 코드에서, 기 설정된 툴(예를 들어, IDA 툴)을 이용하여, 명령 코드 시퀀스를 추출할 수 있으며, 상기 추출한 명령 코드 시퀀스는 도 3b와 같을 수 있다. 도 3b를 참조하면, 상기 추출한 명령 코드 시퀀스는, 'push', 'lea', 'push', 'mov', 'call', 'mov', 'mov' 및 'pop' 등을 포함함을 알 수 있다. 예를 들어, 상기 명령 코드 시퀀스는, opcode sequence일 수 있다.
205 동작에서 상기 장치는 상기 명령 코드 시퀀스에 대한 전처리를 통해, 상기 명령 코드 시퀀스를 복수개의 명령 코드 문장으로 분할할 수 있다.
일 실시 예에 따르면, 상기 장치는, 상기 명령 코드 시퀀스의 증폭을 위해, 알맞은 단위로 상기 명령 코드 시퀀스를 분할(구분)할 수 있다. 예를 들어, 상기 명령 코드 시퀀스의 분할을 위해, 상기 장치는, 기 설정된 basic block, function, 조건 분기 명령어 또는 무조건 분기 명령어를 분할자로 이용할 수 있다.
예를 들어, 상기 장치는, RETN 및 JMP와 같은 상기 무조건 분기 명령어를 이용하여, 도 3b의 명령 코드 시퀀스를 분할하는 경우, 도 3c와 같은 복수개의 명령 코드 문장으로 분할할 수 있다. 예를 들어, 상기 명령 코드 문장은 opcode sentence일 수 있다. 예를 들어, 상기 RETN 및 JMP는 문장의 마침표, 즉, 끝맺음 명령어로 미리 지정될 수 있다.
후술하는 207 동작에서, 지정된 학습 모델인 SeqGAN의 policy gradient을 적용한 SeqGAN의 생성기(generator)에서는 state & action tree를 만드는데, 이때 문장의 길이가 너무 길면 계산량이 증가하고 gradient vanishing 문제가 발생할 수 있다. 이에 따라, 본 발명의 실시 예에서는, 최적의 길이로 문장을 분할하기 위해, 전처리 과정을 적용할 수 있다.
207 동작에서 상기 장치는 지정된 학습 모델에 상기 분할된 복수개의 명령 코드 문장을 입력하여, 복수 개의 명령 코드 문장(명령 코드 데이터 또는 데이터라고도 함)을 생성하고, 상기 생성된 복수 개의 명령 코드 문장을 출력(증폭된 명령 코드 문장을 출력)할 수 있다.
일 실시 예에 따르면, 상기 지정된 학습 모델은, SeqGAN(Sequence Generative Adversarial Networks)일 수 있다.
도 3d를 참조하면, 상기 장치는, 실제 데이터(true data)인 복수개의 명령 코드 문장을, 일반적인 gradient 알고리즘이 아닌 동작(action)& 상태(state) 그래프(graph)에서 policy gradient 알고리즘을 이용하는 SeqGAN의 입력으로 적용하여, SeqGAN이 학습을 하도록 제어할 수 있다.
예를 들어, SeqGAN은 판별기(discriminator)(310) 및 생성기(generator)(320)를 포함할 수 있다.
판별기(310)는 생성기(320)가 생성한 데이터(data from generator)의 진위 여부를 판별하도록 학습될 수 있다. 생성기(230)는 상기 판별기(310)의 판별 결과인 진위 여부에 따른 딥러닝(학습)을 수행하여, 데이터를 생성할 수 있다.
일반적으로는, 생성기(230)는 딥러닝을 할 때, 실제 데이터(true data)와 생성된 데이터(data from generator) 간의 수치적인 차이를 적용하는 gradient 알고리즘을 이용하여 학습함으로써, 데이터를 생성할 수 있다.
그러나, 본 발명의 실시 예의 경우, 명령어들 간의 수치적인 차이를 확인할 수 없으므로, 생성기(230)는 상태(state)에 대한 동작을 확률적으로 선택하도록 하는 policy gradient 알고리즘을 이용하여 학습함으로써, 데이터를 생성할 수 있다. 예를 들어, 명령어 xor 및 lea를 예로 들어 설명하면, 이전의 학습에 따라 또는 기 설정된 조건에 따라, 명령어 xor 이후 선택될 명령어가 sub일 확률이 70%이고, add일 확률이 30%일 때, 실제 데이터(true data)에는, xor 이후 선택될 명령어가 sub인 경우가 지정된 기준값 이하인 경우, 생성기(230)는 xor 이후 선택될 명령어가 sub일 확률의 값을 낮출 수 있다.
상기 장치는, 상기 SeqGAN이 실제 데이터(true data)인 상기 복수개의 명령 코드의 입력에 기초하여, 데이터를 생성(선택)하여 출력, 즉, 증폭된 명령 코드 문장을 출력하도록 할 수 있다.
예를 들어, 복수개의 명령 코드 문장을 입력 받은, 상기 SeqGAN은, 상기 학습에 따라, 도 3e와 같은 증폭된(생성된) 명령 코드 문장(명령어 문장)을 출력할 수 있다.
도 4 및 도 5는 본 발명의 실시 예에 따른 생성된 명령어 문장의 성능 평가 결과를 나타낸 도면이다.
일 실시 예에 따르면, 상기 장치는, 상술한 실시 예에 따른 생성된 명령어 문장(증폭된 명령어 문장)을 이용하여, 성능 평가를 수행할 수 있다.
예를 들어, 상기 장치는, 악성 코드가 5개라고 가정하였을 때와, 상술한 실시 예에 따라 상기 악성 코드를 6배 정도 증폭한 명령어 문장을, 기 설정된 APT(advanced persistent threat, 지능형 지속 위협) 공격을 방어를 위한 시나리오에 적용시켰으며, 이에 따른 결과는 도 4 및 도 5와 같을 수 있다.
상기 장치는, 상기 방어를 위한 시나리오에서 적용한 방어 모델은 n-gram으로, 상기 악성 코드 및 상기 증폭한 명령어 문장 각각에서 n-gram 특징점들을 추출하고 추출된 특징점들 중에서 상위 500 개의 특징점들을 이용한 MLP(multi payer perceptron) classifier를 적용하여 실험을 수행하였다.
도 4를 참조하면, 악성 코드가 5개라고 가정한 실험 데이터 값인 Biased data와, 상기 악성 코드를 6배 정도 증폭한 명령어 문장의 실험 데이터 값인 Amplified data에 대응하는 값들을 비교하면, 넓이를 나타내는 AUC(area under the curve) 값은, Biased data의 경우 0.792인데 비해 Amplified data의 경우 0.980으로 0.188 증가했음을 확인할 수 있다.
도 5를 참조하면, 도 4의 TP(true positive), TN(true negative), FP(false positive), FN(false negative)의 수치들을 이용하여, Biased data와 Amplified data를 ROC curve 그래프로 나타낸 것이다. 도 5를 참조하면, Amplified data의 경우 Biased data에 비해, 더 높은 성능을 보여줌을 확인할 수 있다.
본 문서의 다양한 실시예들은 기기(machine)(예: 컴퓨터)로 읽을 수 있는 저장 매체(machine-readable storage media)(예: 메모리(215)(내장 메모리 또는 외장 메모리))에 저장된 명령어를 포함하는 소프트웨어(예: 프로그램)로 구현될 수 있다. 기기는, 저장 매체로부터 저장된 명령어를 호출하고, 호출된 명령어에 따라 동작이 가능한 장치로서, 개시된 실시예들에 따른 전자 장치(예: 전자 장치(100))를 포함할 수 있다. 상기 명령이 프로세서(예: 프로세서(101))에 의해 실행될 경우, 프로세서가 직접, 또는 상기 프로세서의 제어하에 다른 구성요소들을 이용하여 상기 명령에 해당하는 기능을 수행할 수 있다. 명령은 컴파일러 또는 인터프리터에 의해 생성 또는 실행되는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, '비일시적'은 저장매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다.
일시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다.
이상의 설명은 본 발명의 기술사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경 등이 가능함을 쉽게 알 수 있을 것이다. 즉, 본 발명에 개시된 실시 예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것으로서, 이러한 실시 예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다.
따라서, 본 발명의 보호 범위는 후술되는 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (7)

  1. 명령 코드 생성 장치에 의한 명령 코드 생성을 위한 방법에 있어서,
    소스 코드를 확인하는 동작;
    상기 소스 코드에서, 명령 코드 시퀀스를 확인하는 동작;
    상기 명령 코드 시퀀스에 대한 전처리를 통해 문장의 끝맺음 명령어를 분할자로 이용하여, 상기 명령 코드 시퀀스를 복수개의 명령 코드 문장으로 분할하는 동작;
    지정된 학습 모델에 상기 분할된 복수개의 명령 코드 문장을 입력하여, 상기 학습 모델의 출력으로서 각각의 명령 코드 문장에 대응하는 증폭된 복수개의 명령 코드 문장을 생성하는 동작; 및
    상기 증폭된 복수개의 명령 코드 문장을 출력하는 동작을 포함하고,
    상기 분할된 복수개의 명령 코드 문장을 상기 학습 모델에 입력할 때에, 동작(action) & 상태(state) 그래프(graph)에서 폴리시 그래디언트(policy gradient) 알고리즘을 이용하는 SeqGAN(Sequence Generative Adversarial Networks)에 입력하는
    명령 코드 생성을 위한 방법.
  2. 제 1항에 있어서, 상기 소스 코드는,
    입출력 인터페이스 또는 통신 인터페이스로부터 수신되거나, 또는 메모리에 저장된,
    명령 코드 생성을 위한 방법.
  3. 삭제
  4. 삭제
  5. 컴퓨터 프로그램을 저장하고 있는 컴퓨터 판독 가능 기록매체로서,
    상기 컴퓨터 프로그램은, 프로세서에 의해 실행되면,
    소스 코드를 확인하는 동작;
    상기 소스 코드에서, 명령 코드 시퀀스를 확인하는 동작;
    상기 명령 코드 시퀀스에 대한 전처리를 통해 문장의 끝맺음 명령어를 분할자로 이용하여, 상기 명령 코드 시퀀스를 복수개의 명령 코드 문장으로 분할하는 동작;
    지정된 학습 모델에 상기 분할된 복수개의 명령 코드 문장을 입력하여, 상기 학습 모델의 출력으로서 각각의 명령 코드 문장에 대응하는 증폭된 복수개의 명령 코드 문장을 생성하는 동작; 및
    상기 증폭된 복수개의 명령 코드 문장을 출력하는 동작을 포함하고,
    상기 분할된 복수개의 명령 코드 문장을 상기 학습 모델에 입력할 때에, 동작(action) & 상태(state) 그래프(graph)에서 폴리시 그래디언트(policy gradient) 알고리즘을 이용하는 SeqGAN(Sequence Generative Adversarial Networks)에 입력하는 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함하는, 컴퓨터 판독 가능한 기록매체.
  6. 컴퓨터 판독 가능한 기록매체에 저장되어 있는 컴퓨터 프로그램으로서,
    상기 컴퓨터 프로그램은, 프로세서에 의해 실행되면,
    소스 코드를 확인하는 동작;
    상기 소스 코드에서, 명령 코드 시퀀스를 확인하는 동작;
    상기 명령 코드 시퀀스에 대한 전처리를 통해 문장의 끝맺음 명령어를 분할자로 이용하여, 상기 명령 코드 시퀀스를 복수개의 명령 코드 문장으로 분할하는 동작;
    지정된 학습 모델에 상기 분할된 복수개의 명령 코드 문장을 입력하여, 상기 학습 모델의 출력으로서 각각의 명령 코드 문장에 대응하는 증폭된 복수개의 명령 코드 문장을 생성하는 동작; 및
    상기 증폭된 복수개의 명령 코드 문장을 출력하는 동작을 포함하고,
    상기 분할된 복수개의 명령 코드 문장을 상기 학습 모델에 입력할 때에, 동작(action) & 상태(state) 그래프(graph)에서 폴리시 그래디언트(policy gradient) 알고리즘을 이용하는 SeqGAN(Sequence Generative Adversarial Networks)에 입력하는 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함하는, 컴퓨터 프로그램.
  7. 명령 코드 생성을 위한 장치에 있어서,
    프로세서; 및
    상기 프로세서와 전기적으로 연결된 메모리를 포함하며, 상기 메모리는, 상기 프로세서가,
    소스 코드를 확인하며,
    상기 소스 코드에서, 명령 코드 시퀀스를 확인하며,
    상기 명령 코드 시퀀스에 대한 전처리를 통해 문장의 끝맺음 명령어를 분할자로 이용하여, 상기 명령 코드 시퀀스를 복수개의 명령 코드 문장으로 분할하며,
    지정된 학습 모델에 상기 분할된 복수개의 명령 코드 문장을 입력하여, 상기 학습 모델의 출력으로서 각각의 명령 코드 문장에 대응하는 증폭된 복수개의 명령 코드 문장을 생성하며,
    상기 증폭된 복수개의 명령 코드 문장을 출력하도록 하고,
    상기 분할된 복수개의 명령 코드 문장을 상기 학습 모델에 입력할 때에, 동작(action) & 상태(state) 그래프(graph)에서 폴리시 그래디언트(policy gradient) 알고리즘을 이용하는 SeqGAN(Sequence Generative Adversarial Networks)에 입력하는 명령을 포함하는 명령 코드 생성을 위한 장치.
KR1020190141865A 2019-11-07 2019-11-07 명령 코드 생성을 위한 장치, 방법, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램 KR102246797B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190141865A KR102246797B1 (ko) 2019-11-07 2019-11-07 명령 코드 생성을 위한 장치, 방법, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190141865A KR102246797B1 (ko) 2019-11-07 2019-11-07 명령 코드 생성을 위한 장치, 방법, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램

Publications (1)

Publication Number Publication Date
KR102246797B1 true KR102246797B1 (ko) 2021-04-30

Family

ID=75740921

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190141865A KR102246797B1 (ko) 2019-11-07 2019-11-07 명령 코드 생성을 위한 장치, 방법, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램

Country Status (1)

Country Link
KR (1) KR102246797B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070086517A (ko) * 2004-12-22 2007-08-27 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘) 컴퓨터 프로그램 코드에 정보를 삽입하고 검출하는 방법 및이 방법을 수행하는 컴퓨터 판독가능 매체
KR20110112810A (ko) * 2008-11-28 2011-10-13 상하이 신하오 (브레이브칩스) 마이크로 일렉트로닉스 코. 엘티디. 데이터 처리 방법 및 장치
KR101985850B1 (ko) * 2018-12-11 2019-09-30 넷마블 주식회사 이상 로그 탐지를 위한 탐지 장치 및 이의 동작 방법과 트레이닝 장치 및 이의 동작 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070086517A (ko) * 2004-12-22 2007-08-27 텔레호낙티에볼라게트 엘엠 에릭슨(피유비엘) 컴퓨터 프로그램 코드에 정보를 삽입하고 검출하는 방법 및이 방법을 수행하는 컴퓨터 판독가능 매체
KR20110112810A (ko) * 2008-11-28 2011-10-13 상하이 신하오 (브레이브칩스) 마이크로 일렉트로닉스 코. 엘티디. 데이터 처리 방법 및 장치
KR101985850B1 (ko) * 2018-12-11 2019-09-30 넷마블 주식회사 이상 로그 탐지를 위한 탐지 장치 및 이의 동작 방법과 트레이닝 장치 및 이의 동작 방법

Similar Documents

Publication Publication Date Title
CN111614599B (zh) 基于人工智能的webshell检测方法和装置
CN110266647B (zh) 一种命令和控制通信检测方法及系统
CN107316198B (zh) 账户风险识别方法及装置
CN111310191B (zh) 一种基于深度学习的区块链智能合约漏洞检测方法
CN105074717A (zh) 在网络环境中的恶意脚本语言代码的检测
US9336239B1 (en) System and method for deep packet inspection and intrusion detection
Li et al. Deep learning backdoors
CN106778101A (zh) 一种基于控制流和外形混淆的Python代码混淆方法
CN111092912B (zh) 安全防御方法及装置
Yang et al. An android malware detection and classification approach based on contrastive lerning
Yoo et al. The image game: exploit kit detection based on recursive convolutional neural networks
CN115883261A (zh) 一种基于att和ck的电力系统apt攻击建模方法
KR102246797B1 (ko) 명령 코드 생성을 위한 장치, 방법, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램
CN110086788A (zh) 基于云WAF的深度学习WebShell防护方法
CN109313635B (zh) 人工智能的行为控制数据库的建立方法及其设备、系统及存储介质
CN109313645B (zh) 人工智能终端系统、服务器及其行为控制方法
CN111881446B (zh) 一种工业互联网恶意代码识别方法及装置
Yerima et al. Bot-IMG: A framework for image-based detection of Android botnets using machine learning
Rekik et al. An autoregressive time delay neural network for speech steganalysis
Gu et al. An online website fingerprinting defense based on the non-targeted adversarial patch
CN112948578B (zh) 一种dga域名开集分类方法、装置、电子设备及介质
CN109600361A (zh) 基于哈希算法的验证码防攻击方法及装置
CN112764791B (zh) 一种增量更新的恶意软件检测方法及系统
CN114969732B (zh) 恶意代码的检测方法、装置、计算机设备和存储介质
Giorgi et al. Email Spoofing Attack Detection through an End to End Authorship Attribution System.

Legal Events

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