KR20200073824A - 악성코드 프로파일링 방법 및 그 장치 - Google Patents

악성코드 프로파일링 방법 및 그 장치 Download PDF

Info

Publication number
KR20200073824A
KR20200073824A KR1020180162438A KR20180162438A KR20200073824A KR 20200073824 A KR20200073824 A KR 20200073824A KR 1020180162438 A KR1020180162438 A KR 1020180162438A KR 20180162438 A KR20180162438 A KR 20180162438A KR 20200073824 A KR20200073824 A KR 20200073824A
Authority
KR
South Korea
Prior art keywords
profiling
attribute
profile
malicious
malware
Prior art date
Application number
KR1020180162438A
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 KR1020180162438A priority Critical patent/KR20200073824A/ko
Publication of KR20200073824A publication Critical patent/KR20200073824A/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/335Filtering based on additional data, e.g. user or group profiles
    • G06F16/337Profile generation, learning or modification

Abstract

악성코드 프로파일링 방법 및 그 장치가 제공된다. 본 개시의 몇몇 실시예들에 따른 악성코드 프로파일링 방법은, 복수의 악성코드를 포함하는 악성코드 리스트를 입력받는 단계, 상기 복수의 악성코드를 프로파일링하기 위한 프로파일링 속성을 입력받는 단계, 상기 복수의 악성코드에 대한 프로파일 정보를 조회하는 단계, 상기 조회된 프로파일 정보에서 상기 입력된 프로파일링 속성에 대응되는 속성 정보를 추출하여, 악성코드 별로 프로파일 벡터를 생성하는 단계 및 상기 생성된 프로파일 벡터를 클러스터링하여, 상기 복수의 악성코드를 유형 별로 분류하는 단계를 포함할 수 있다.

Description

악성코드 프로파일링 방법 및 그 장치{METHOD FOR PROFILING MALWARE AND APPARATUS THEREOF}
본 개시는 악성코드 프로파일링 방법 및 그 장치에 관한 것이다. 보다 자세하게는, 악성코드의 프로파일 정보에 기반하여 입력된 악성코드 리스트와 프로파일링 속성을 대상으로 맞춤형 프로파일링을 수행하는 방법 및 그 방법을 지원하는 컴퓨팅 장치에 관한 것이다.
악성코드(malware)란 악성 또는 악용 가능한 소프트웨어의 집합으로서, 바이러스, 웜, 스파이웨어, 악성 애드웨어 등 사용자와 컴퓨터에게 잠재적으로 위험이 되는 모든 소프트웨어를 총칭하는 용어이다. 현재 전 세계적으로 매일 20만개 이상의 신종변종 악성코드가 새롭게 발견되고 있으며, 악성코드 발생량은 해마다 증가하고 있는 추세이다.
보안 장비에서 악성코드가 탐지되는 것을 우회하기 위해, 공격자는 주로 기존 악성코드를 변형한 변종 악성코드를 이용하여 사이버 공격을 수행한다. 신종 악성코드를 개발하는 것보다 기존 악성코드를 변형하는 것이 상대적으로 용이하고 개발 비용도 저렴하기 때문이다. 최근에는 악성코드를 자동으로 제작하는 도구가 등장하면서 전문적인 공격자가 아니더라도 손쉽게 다양한 기능을 갖춘 악성코드를 대량으로 생성, 유포할 수 있는 환경이 형성되고 있다.
각종 악성코드에 의해 발생되는 사이버 공격에 효과적으로 대응하기 위해서는 악성코드를 유형 별로 분류하는 것이 중요하다. 다양한 악성코드를 유형 별로 분류할 수 있다면, 사이버 공격에 이용된 악성코드의 유형에 따라 적절하고 신속한 대응이 가능하기 때문이다.
최근에는, 프로파일링(profiling) 기법을 도입하여 악성코드를 유형 별로 분류하는 방법에 대한 연구가 진행 중에 있다. 프로파일링 기법은 비슷한 유형의 범죄를 저지른 사람들은 공통되는 성격과 특성을 공유한다는 점에 착안하여 발달한 수사 기법을 말한다. 위의 연구들은 범죄자의 행적을 분석하듯이 악성코드들의 프로파일 정보를 분석하여 공통된 특성 또는 악성 행위를 보이는 악성코드들의 유형 별로 분류하는 것을 목적으로 한다.
한편, 악성코드의 프로파일 정보에는 수많은 속성에 관한 정보가 포함되며, 전문가마다 프로파일링을 원하는 속성과 악성코드 리스트는 달라질 수 있다. 따라서, 지정된 프로파일링 속성과 악성코드 리스트에 대해 자동으로 프로파일링을 수행하는 방법이 요구되나, 아직까지는 이를 위한 연구가 진행된 바가 없다.
한국공개특허 제10-2015-0124020호 (2015.11.05 공개)
본 개시의 몇몇 실시예들을 통해 해결하고자 하는 기술적 과제는, 악성코드를 프로파일링하는 방법 및 그 방법을 지원하는 장치를 제공하는 것이다.
본 개시의 다른 몇몇 실시예들을 통해 해결하고자 하는 기술적 과제는, 지정된 악성코드 리스트와 프로파일링 속성을 대상으로 맞춤형 프로파일링을 수행하는 방법 및 그 방법을 지원하는 장치를 제공하는 것이다.
본 개시의 또 다른 몇몇 실시예들을 통해 해결하고자 하는 기술적 과제는, 사용자 편의적인 프로파일링 서비스를 제공하기 위해, 프로파일링에 효과적인 속성들을 추천하는 방법 및 그 방법을 지원하는 장치를 제공하는 것이다.
본 개시의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 개시의 기술분야에서의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 해결하기 위한, 본 개시의 몇몇 실시예들에 따른 악성코드 프로파일링 방법은, 컴퓨팅 장치에 의하여 수행되는 악성코드 프로파일링 방법에 있어서, 복수의 악성코드를 포함하는 악성코드 리스트를 입력받는 단계, 상기 복수의 악성코드를 프로파일링하기 위한 프로파일링 속성을 입력받는 단계, 상기 복수의 악성코드에 대한 프로파일 정보를 조회하는 단계, 상기 조회된 프로파일 정보에서 상기 입력된 프로파일링 속성에 대응되는 속성 정보를 추출하여, 악성코드 별로 프로파일 벡터를 생성하는 단계 및 상기 생성된 프로파일 벡터를 클러스터링하여, 상기 복수의 악성코드를 유형 별로 분류하는 단계를 포함할 수 있다.
몇몇 실시예에서, 상기 클러스터링은, k-medoids 클러스터링 알고리즘에 의해 수행될 수 있다.
몇몇 실시예에서, 상기 프로파일 정보는 악성코드에 대한 행위 분석을 통해 생성될 수 있다.
몇몇 실시예에서, 상기 프로파일 벡터를 생성하는 단계는, 상기 추출된 속성 정보에서 속성값의 중복을 제거하는 단계, 상기 중복이 제거된 속성값을 기초로 상기 프로파일 벡터의 컬럼을 구성하는 단계 및 각 컬럼에 대응되는 속성값의 빈도를 상기 각 컬럼의 값으로 설정하여, 상기 프로파일 벡터를 생성하는 단계를 포함할 수 있다.
몇몇 실시예에서, 상기 프로파일 벡터를 생성하는 단계는, 상기 조회된 프로파일 정보를 기초로 복수의 프로파일링 속성 중에서 일부 속성을 선정하는 단계 및 상기 일부 속성에 대응되는 속성 정보를 이용하여 상기 프로파일 벡터를 생성하는 단계를 포함할 수 있다.
몇몇 실시예에서, 상기 복수의 악성코드를 유형 별로 분류하는 단계는, 상기 복수의 악성코드 각각의 파일 타입을 식별하는 단계, 상기 식별된 파일 타입을 기준으로 상기 복수의 악성코드를 그룹핑하는 단계 및 상기 그룹핑을 통해 형성된 악성코드 그룹 별로 클러스터링을 수행하는 단계를 포함할 수 있다.
몇몇 실시예에서, 상기 복수의 악성코드를 유형 별로 분류하는 단계는, 기 정의된 API 기능코드를 이용하여 상기 복수의 악성코드 각각에 대한 분류 코드를 생성하는 단계, 상기 생성된 분류 코드를 기준으로 상기 복수의 악성코드를 그룹핑하는 단계 및 상기 그룹핑을 통해 형성된 악성코드 그룹 별로 클러스터링을 수행하는 단계를 포함할 수 있다.
몇몇 실시예에서, 상기 조회된 프로파일 정보와 연관된 복수의 속성 중에서 제1 속성을 상기 프로파일링을 위한 속성으로 추천하는 단계를 더 포함할 수 있다.
상술한 기술적 과제를 해결하기 위한 본 개시의 몇몇 실시예들에 따른 악성코드 프로파일링 장치는, 프로세서 및 상기 프로세서에 의해 실행되는 하나 이상의 인스트럭션들(instructions)을 포함하는 메모리를 포함하되, 상기 프로세서는, 상기 하나 이상의 인스트럭션들을 실행함으로써, 복수의 악성코드를 포함하는 악성코드 리스트를 입력받고, 상기 복수의 악성코드를 프로파일링하기 위한 프로파일링 속성을 입력받으며, 상기 복수의 악성코드에 대한 프로파일 정보를 조회하고, 상기 조회된 프로파일 정보에서 상기 입력된 프로파일링 속성에 대응되는 속성 정보를 추출하여, 악성코드 별로 프로파일 벡터를 생성하며, 상기 생성된 프로파일 벡터를 클러스터링하여, 상기 복수의 악성코드를 유형 별로 분류할 수 있다.
상술한 기술적 과제를 해결하기 위한 본 개시의 몇몇 실시예들에 따른 컴퓨터 프로그램은, 컴퓨팅 장치와 결합하여, 복수의 악성코드를 포함하는 악성코드 리스트를 입력받는 단계, 상기 복수의 악성코드를 프로파일링하기 위한 프로파일링 속성을 입력받는 단계, 상기 복수의 악성코드에 대한 프로파일 정보를 조회하는 단계, 상기 조회된 프로파일 정보에서 상기 입력된 프로파일링 속성에 대응되는 속성 정보를 추출하여, 악성코드 별로 프로파일 벡터를 생성하는 단계 및 상기 생성된 프로파일 벡터를 클러스터링하여, 상기 복수의 악성코드를 유형 별로 분류하는 단계를 실행시키기 위하여 컴퓨터로 판독가능한 기록매체에 저장될 수 있다.
도 1은 본 개시의 몇몇 실시예들에 따른 악성코드 프로파일링 시스템을 나타내는 예시적인 구성도이다.
도 2는 본 개시의 몇몇 실시예들에 따른 행위 분석 시스템을 설명하기 위한 도면이다.
도 3은 본 개시의 몇몇 실시예들에 따른 악성코드 프로파일링 장치를 나타내는 예시적인 블록도이다.
도 4는 본 개시의 몇몇 실시예들에 따른 악성코드 프로파일링 방법을 나타내는 예시적인 흐름도이다.
도 5 및 도 6은 본 개시의 다양한 실시예들에서 참조될 수 있는 프로파일 정보의 세부 속성과 속성 카테고리를 도시한다.
도 7은 본 개시의 몇몇 실시예들에 따른 프로파일 벡터 생성 방법을 나타내는 예시적인 흐름도이다.
도 8 내지 도 10은 본 개시의 몇몇 실시예들에 따른 프로파일 벡터 생성 방법을 부연 설명하기 위한 예시도이다.
도 11 및 도 12는 본 개시의 몇몇 실시예들에 따른 프로파일 벡터 차원 축소 방법을 설명하기 위한 도면이다.
도 13은 본 개시의 몇몇 실시예들에 따른 클러스터링 방법을 나타내는 예시도이다.
도 14는 본 개시의 다양한 실시예들에서 참조될 수 있는 프로파일링 결과를 예시한다.
도 15 및 도 16은 본 개시의 몇몇 실시예들에 따른 분류 코드 생성 방법을 설명하기 위한 예시도이다.
도 17 내지 도 19는 본 개시의 몇몇 실시예들에 따른 분류 코드 기반 클러스터링 방법을 설명하기 위한 예시도이다.
도 20은 본 개시의 다양한 실시예들에서 참조될 수 있는 프로파일링 이력을 나타내는 예시도이다.
도 21은 본 개시의 다른 몇몇 실시예들에 따른 악성코드 프로파일링 방법을 나타내는 예시적인 흐름도이다.
도 22는 본 개시의 다양한 실시예들에 따른 장치/시스템을 구현할 수 있는 예시적인 컴퓨팅 장치를 나타내는 예시적인 하드웨어 구성도이다.
이하, 첨부된 도면을 참조하여 본 개시의 바람직한 실시예들을 상세히 설명한다. 본 개시의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 개시의 기술적 사상은 이하의 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 개시가 완전하도록 하고, 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 본 개시의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 개시의 기술적 사상은 청구항의 범주에 의해 정의될 뿐이다.
각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 개시를 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 개시의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 개시를 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
또한, 본 개시의 구성 요소를 설명하는 데 있어서, 제1, 제2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 또는 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.
명세서에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는 (comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
본 명세서에 대한 설명에 앞서, 본 명세서에서 사용되는 몇몇 용어들에 대하여 명확하게 하기로 한다.
본 명세서에서, 속성(attribute or feature)이란, 정보를 나타내는 최소 단위를 의미한다. 상기 속성은 당해 기술 분야에서 특징(feature), 항목(item), 필드(field), 컬럼(column), 요소(element) 등의 용어와 혼용하여 사용될 수 있다. 악성코드의 프로파일 정보를 구성하는 속성에 대한 예는 도 6 및 도 7을 참조하도록 한다.
본 명세서에서, 프로파일링 속성(profiling attribute or profiling feature)이란, 프로파일 정보를 구성하는 복수의 속성 중에서 프로파일링에 이용되는 속성을 의미한다.
본 명세서에서, 악성코드의 프로파일(profile)이란, 악성코드에 대한 명세 정보를 의미한다. 상기 프로파일 정보는 하나 이상의 속성과 그 속성에 대응되는 속성값 또는 속성 데이터로 구성될 수 있다.
본 명세서에서, 프로파일 벡터(profile vector)란, 프로파일 정보 중에서 프로파일링 속성에 대응되는 속성 정보를 기초로 생성된 벡터를 의미한다. 프로파일 벡터를 생성하는 방법에 대한 설명은 도 7 내지 도 10을 참조하도록 한다.
본 명세서에서, API 기능코드란, API(Application Programming Interface)의 기능 분류를 나타내도록 정의한 코드이다. 상기 API 기능코드는 악성코드의 행위 유형을 나타내는 분류 코드를 생성하기 위해 이용될 수 있다. 상기 API 기능코드의 예는 도 15를 참조하도록 한다.
본 명세서에서, 인스트럭션(instruction)이란, 기능을 기준으로 묶인 일련의 컴퓨터 판독가능 명령어들로서 컴퓨터 프로그램의 구성 요소이자 프로세서에 의해 실행되는 것을 가리킨다.
이하, 본 개시의 몇몇 실시예들에 대하여 첨부된 도면에 따라 상세하게 설명한다.
도 1은 본 개시의 몇몇 실시예들에 따른 악성코드 프로파일링 시스템을 나타내는 예시적인 구성도이다.
도 1에 도시된 바와 같이, 상기 악성코드 프로파일링 시스템은 행위 분석 시스템(10) 및 악성코드 프로파일링 장치(20)를 포함할 수 있다. 단, 이는 본 개시의 목적을 달성하기 위한 바람직한 실시예일 뿐이며, 필요에 따라 일부 구성 요소가 추가되거나 삭제될 수 있음은 물론이다. 또한, 도 1에 도시된 악성코드 프로파일링 시스템의 각각의 구성 요소들은 기능적으로 구분되는 기능 요소들을 나타낸 것으로서, 복수의 구성 요소가 실제 물리적 환경에서는 서로 통합되는 형태로 구현될 수도 있음에 유의한다.
또한, 실제 물리적 환경에서 상기 각각의 구성 요소들은 복수의 세부 기능 요소로 분리되는 형태로 구현될 수도 있다. 예컨대, 악성코드 프로파일링 장치(20)의 제1 기능은 제1 컴퓨팅 장치에서 구현되고, 제2 기능은 제2 컴퓨팅 장치에서 구현될 수도 있다. 이하, 상기 각각의 구성 요소에 대하여 설명한다.
상기 악성코드 프로파일링 시스템에서, 행위 분석 시스템(10)은 악성코드에 대한 행위 분석을 수행하는 시스템이다. 행위 분석 시스템(10)은 하나 이상의 컴퓨팅 장치로 구현될 수 있다. 상기 컴퓨팅 장치의 일 예는 도 22를 참조하도록 한다.
참고로, "행위 분석"이라는 용어는 당해 기술 분야에서 "동적 분석"이라는 용어와 혼용되어 사용될 수 있을 것이나, 명세서의 명료함을 위해 본 명세서에서는 행위 분석이라는 용어로 통일하여 사용하도록 한다.
행위 분석 시스템(10)은 샌드박스(sandbox)와 같이 고립된 환경에서 악성코드에 대한 행위 분석을 수행하고, 행위 분석 결과에 기반하여 개별 악성코드 별로 프로파일 정보를 생성할 수 있다. 상기 프로파일 정보는 악성코드에 대한 다양한 속성과 그에 대응되는 속성값(또는 속성 데이터)으로 구성될 수 있는데, 상기 속성에 대한 예시는 도6 및 도 7을 참조하도록 한다.
몇몇 실시예에서, 행위 분석 시스템(10)은, 도 2에 도시된 바와 같이, 분석 매니저(30)와 하나 이상의 워커(40-1 내지 40-n)를 포함할 수 있다. 이때, 분석 매니저(30)와 각각의 워커(40-1 or 40-2 or ? or 40-n)는 독립된 컴퓨팅 장치로 구현될 수 있고, 장치 내의 컴퓨팅 모듈로 구현될 수도 있다. 이해의 편의를 제공하기 위해, 도 2를 참조하여 본 실시예에 따른 행위 분석 시스템(10)의 동작에 대하여 부연 설명하도록 한다. 이하에서, 하나 이상의 워커(40-1 내지 40-n)를 총칭하거나 임의의 워커(40-1 or 40-2 or ? or 40-n)를 지칭하는 경우에는 참조 번호 "40"을 이용하도록 한다.
분석 매니저(30)는 워커(40)와 행위 분석 태스크에 대한 전반적인 제어 및 관리를 수행하는 모듈이다. 분석 매니저(30)는 태스크 매니저(31), 수집부(33), 프로파일 생성부(35) 및 프로파일 DB(37)를 포함할 수 있다.
태스크 매니저(31)는 행위 분석 태스크를 워커(40)에게 할당하는 등의 태스크 관리를 수행한다. 가령, 태스크 매니저(31)는 유휴 상태에 있는 워커(40) 또는 활성화된 가상 머신(virtual machine)의 개수가 기준치 미만인 워커(40)에게 행위 분석 태스크를 할당할 수 있다.
수집부(33)는 워커(40)로부터 행위 분석 결과를 수집한다.
프로파일 생성부(35)는 행위 분석 결과를 종합하여 악성코드 별로 행위 기반 프로파일 정보를 생성하고, 생성된 프로파일 정보를 프로파일 DB(37)에 저장한다.
다음으로, 워커(40)는 샌드박스 환경에서 할당된 행위 분석 태스크를 수행하는 모듈이다. 워커(40)는 하나 이상의 가상 머신(41 내지 43)과 행위 분석 결과가 저장될 로컬 DB(45)를 포함할 수 있다. 도 2에서는 샌드박스 환경의 예시로 가상 머신(41 내지 43)이 활용된 것을 예로써 도시하고 있으나, 본 개시의 기술적 범위가 이에 한정되는 것은 아니다.
워커(40)는 각각의 가상 머신(41 or 42 or 43)에서 악성코드에 대한 행위 분석을 수행하고, 분석 결과를 분석 매니저(30)에게 보고한다. 보다 구체적으로, 워커(40)는 가상 머신을 생성하여 악성코드가 실행될 가상 환경을 구성하고, 상기 생성된 가성 머신 내에서 악성코드를 직접 실행하며, 실행된 악성코드의 동작을 모니터링함으로써 행위 분석을 수행할 수 있다.
몇몇 실시예에서, 분석 회피형 악성코드의 악성 행위를 탐지하기 위해, 워커(40)는 페이크 정보를 활용할 수 있다. 여기서, 상기 분석 회피형 악성코드는 실행 환경에 대한 탐지 기능이 구비된 지능형 코드들로, 가상 환경으로 탐지된 경우 악성 행위를 수행하지 않도록 구현된 코드를 의미한다. 가령, 상기 분석 회피형 악성 코드는 가상 환경임을 나타내는 속성 값(e.g. 가상 머신만의 설정 값)을 읽어오는 API(이하, "가상 환경 탐지 API")를 호출하고, 반환 값을 확인하여 현재 실행 환경이 가상 환경인지 여부를 판단할 수 있다. 상기 페이크 정보에는 실제 환경과 유사한 값이 미리 설정되어 있는데, 워커(40)는 가상 환경 탐지 API의 호출을 후킹(hooking)하고, 미리 준비된 페이크 정보를 후킹된 API의 반환 값으로 제공함으로써 분석 회피형 악성코드의 회피 기능을 무력화시킬 수 있다. 본 실시예에 따르면, 분석 회피형 악성코드에 대한 탐지 정확도가 향상되며, 분석 회피형 악성코드에 대해서도 신뢰도 높은 행위 분석 결과가 제공될 수 있다.
다시 도 1을 참조하여 설명을 이어가도록 한다.
상기 악성코드 프로파일링 시스템에서, 악성코드 프로파일링 장치(20)는 악성코드에 대한 맞춤형 프로파일링 기능이 구비된 컴퓨팅 장치이다. 여기서, 상기 컴퓨팅 장치는, 노트북, 데스크톱(desktop), 랩탑(laptop) 등이 될 수 있으나, 이에 국한되는 것은 아니며 컴퓨팅 기능이 구비된 모든 종류의 장치를 포함할 수 있다. 상기 컴퓨팅 장치의 일 예시는 도 22를 참조하도록 한다. 이하의 서술에서는, 설명의 편의상 악성코드 프로파일링 장치(20)를 프로파일링 장치(20)로 약칭하도록 한다.
프로파일링 장치(20)는 복수의 악성코드를 포함하는 악성코드 리스트와 프로파일링 속성을 입력받고, 입력된 프로파일링 속성을 기준으로 악성코드 리스트에 대한 맞춤형 프로파일링을 수행한다. 이때, 프로파일링 장치(20)는 행위 분석 시스템(10)에 의해 제공되는 프로파일 정보를 참조하여 맞춤형 프로파일링 수행할 수 있다. 중복된 설명을 배제하기 위해, 프로파일링 장치(20)의 동작에 대한 자세한 설명은 도 3 이하의 도면을 참조하여 후술하도록 한다.
몇몇 실시예에서, 행위 분석 시스템(10)과 프로파일링 장치(20)는 네트워크를 통해 통신할 수 있다. 여기서, 상기 네트워크는 근거리 통신망(Local Area Network; LAN), 광역 통신망(Wide Area Network; WAN), 이동 통신망(mobile radio communication network), Wibro(Wireless Broadband Internet) 등과 같은 모든 종류의 유/무선 네트워크로 구현될 수 있다.
전술한 악성코드 프로파일링 시스템은 사이버 보안이 요구되는 다양한 환경에 구축되어 활용될 수 있다. 이를테면, 기 수집된 대량의 악성코드를 다각적으로 유형화하는데 이용될 수 있고, 실시간으로 유입되는 신규 악성코드의 대응 조치를 마련하는 경우에도 활용될 수 있다. 가령, 보안 관리자는 신규 악성코드와 기존 악성코드에 대한 맞춤형 프로파일링을 통해 신규 악성코드와 유사한 악성코드에 대한 정보(e.g. 유사 악성코드 그룹, 신규 악성코드와 기존 악성코드 간의 유사도 등)를 확보하고, 확보된 정보에 기반하여 신규 악성코드에 대한 대응 조치를 수립할 수 있을 것이다.
지금까지 도 1 및 도 2를 참조하여 본 개시의 몇몇 실시예들에 따른 악성코드 프로파일링 시스템과 이에 대한 활용예에 대하여 설명하였다. 이하에서는, 프로파일링 장치(20)의 구성 및 동작에 대하여 도 3을 참조하여 설명한다.
도 3은 본 개시의 몇몇 실시예들에 따른 프로파일링 장치(20)를 나타내는 예시적인 블록도이다.
도 3에 도시된 바와 같이, 프로파일링 장치(20)는 정보 입력부(61), 조회부(62), 추천부(64), 벡터 생성부(65) 및 클러스터링부(66)를 포함할 수 있다. 다만, 도 3에는 본 개시의 실시예와 관련 있는 구성요소들만이 도시되어 있다. 따라서, 본 개시가 속한 기술분야의 통상의 기술자라면 도 3에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있음을 알 수 있다. 또한, 도 3에 도시된 프로파일링 장치(20)의 각각의 구성 요소들은 기능적으로 구분되는 기능 요소들을 나타낸 것으로서, 복수의 구성 요소가 실제 물리적 환경에서는 서로 통합되는 형태로 구현될 수도 있음에 유의한다. 이하, 각 구성 요소에 대하여 설명하도록 한다.
정보 입력부(61)는 맞춤형 프로파일링을 위한 각종 정보를 입력받는다. 여기서, 상기 각종 정보는 악성코드 리스트와 프로파일링 속성을 포함한다.
몇몇 실시예에서, 정보 입력부(61)는 상기 각종 정보를 입력받기 위한 사용자 인터페이스(user interface)를 제공할 수 있다. 가령, 정보 입력부(61)는 웹 기반의 사용자 인터페이스를 제공하고, 사용자(e.g. 보안 관리자)는 상기 사용자 인터페이스를 통해 편리하게 악성코드 리스트와 프로파일링 속성을 입력할 수 있다.
다음으로, 조회부(62)는 프로파일 DB(63)에서 악성코드 리스트에 포함된 개별 악성코드에 대한 프로파일 정보를 조회한다. 프로파일 DB(63)는 로컬 DB로 구현될 수 있고, 원격으로 접속 가능한 외부의 DB(e.g. 행위 분석 시스템 10의 프로파일 DB 37)로 구현되더라도 무방하다.
다음으로, 추천부(64)는 입력된 악성코드 리스트의 프로파일링에 효과적일 것으로 예측되는 속성들을 추천한다. 추천 속성을 결정하는 구체적인 방식은 실시예에 따라 달라질 수 있다.
몇몇 실시예에서, 추천부(64)는 상기 입력된 악성코드 리스트와 연관된 과거 클러스터링 결과의 평가 점수에 기초하여 추천 속성을 결정할 수 있다. 상기 평가 점수는 프로파일링 이력을 통해 조회될 수 있다.
몇몇 실시예에서, 추천부(64)는 특정 속성이 과거 프로파일링에 이용된 횟수에 기초하여 추천 속성을 결정할 수 있다.
몇몇 실시예에서, 추천부(64)는 속성의 분산 값을 기초로 추천 속성을 결정할 수 있다.
몇몇 실시예에서, 추천부(64)는 입력된 프로파일링 속성이 속하지 않는 카테고리 속성 중에서 추천 속성을 결정할 수 있다.
추천부(64)의 동작에 대해서는 추후 보다 상세하게 설명하도록 한다.
다음으로, 벡터 생성부(65)는 악성코드 리스트의 프로파일 정보(즉, 리스트에 포함된 개별 악성코드들의 프로파일 정보)에서 프로파일링 속성에 대응되는 속성 정보를 추출하고, 추출된 속성 정보에 기초하여 악성코드 별로 프로파일 벡터를 생성한다. 중복된 설명을 배제하기 위해, 프로파일 벡터를 생성하는 방법에 대한 자세한 설명은 도 7 내지 도 10을 참조하여 후술하도록 한다.
다음으로, 클러스터링부(66)는 프로파일 벡터를 클러스터링하여 악성코드 리스트에 포함된 복수의 악성코드를 유형 별로 분류한다. 이때, 상기 클러스터링을 통해 형성된 각각의 악성코드 클러스터가 하나의 악성코드 유형에 대응될 수 있을 것이나, 본 개시의 기술적 범위가 이에 한정되는 것은 아니다. 상기 악성코드 클러스터는 유사한 프로파일링 속성을 공유하는 유사 악성코드 그룹을 나타내게 된다.
몇몇 실시예에서, 클러스터링부(66)는 K-Medoids 클러스터링 알고리즘을 이용하여 악성코드 클러스터를 구축할 수 있다. K-Medoids 클러스터링 알고리즘은 K-평균 클러스터링(K-means clustering) 알고리즘의 변형 중 하나로써, 클러스터 중심에 가장 가까이 위치한 대표 객체(medoids)를 중심으로 클러스터링을 수행하는 알고리즘이다. K-Medoids 클러스터링 알고리즘은 평균 값을 이용함에 따라 이상치(outlier)에 민감한 K-평균 클러스터링 알고리즘과는 달리, 이상치의 영향에 강인한(robust) 특성을 지닌다. 본 실시예에 따르면, 이상치에 강인한 클러스터링 알고리즘을 적용함으로써, 프로파일 벡터에 노이즈가 존재하는 경우에도 신뢰도 높은 프로파일링 결과가 제공될 수 있다.
몇몇 실시예에서, 클러스터링부(66)는 악성코드의 파일 타입에 따라 악성코드를 그룹핑하고, 악성코드 그룹 별로 클러스터링을 수행할 수 있다. 그렇게 함으로써, 행위 유형 별로 보다 정확한(또는 세분화된) 클러스터링 결과가 제공될 수 있다.
몇몇 실시예에서. 클러스터링부(66)는 미리 정의된 API 기능코드에 기초하여 악성코드 별로 분류 코드를 생성하고, 상기 분류 코드를 기준으로 악성코드를 그룹핑하며, 악성코드 그룹 별로 클러스터링을 수행할 수 있다. 그렇게 함으로써, 행위 유형 별로 보다 정확한(또는 세분화된) 클러스터링 결과가 제공될 수 있다. 상기 분류 코드는 API 기능코드를 종합(e.g. or 연산)하여 생성될 수 있다. 가령, 제1 악성코드가 제1 API와 제2 API를 호출하는 경우, 상기 제1 API의 기능코드와 상기 제2 API의 기능코드를 종합(e.g. or 연산)하여 상기 제1 악성코드의 분류코드가 생성될 수 있다. 몇몇 실시예에서, 악성코드가 호출한 전체 API 중에서 주요 API의 기능코드를 종합하여 분류 코드가 생성될 수도 있다. 상기 주요 API는 API의 TF-IDF(Term Frequency-Inverse Document Frequency) 값이 기준치 이상인 API가 될 수 있으나, 본 개시의 기술적 범위가 이에 한정되는 것은 아니다. 본 실시예에 대한 보다 자세한 설명은 도 15 내지 도 19을 참조하여 후술하도록 한다.
또한, 클러스터링부(66)는 악성코드 유형 별로(즉, 클러스터 별로) 대표 악성코드를 선출하고, 클러스터에 속한 악성코드의 개수를 카운팅하여 악성코드 유형별로 규모를 산출하며, 악성코드 간 유사도를 산출하는 등의 작업을 더 수행할 수 있다. 상기 작업을 통해 생성된 정보들은 프로파일링 결과와 함께 제공될 수 있다. 상기 대표 악성코드는 클러스터 중심(centroid)에 가장 가까이 위치한 악성코드가 될 수 있을 것이나, 본 개시의 기술적 범위가 이에 한정되는 것은 아니다.
또한, 클러스터링부(66)는 클러스터링 결과(즉, 프로파일링 결과)에 대한 평가를 수행하고, 평가 결과를 프로파일링 이력으로 저장할 수 있다. 상기 프로파일링 이력은 추천부(64)에서 프로파일링 속성을 추천하기 위해 이용될 수 있다. 상기 프로파일링 이력에 대한 예는 도 20을 참조하도록 한다.
한편, 도 3에 도시된 모든 구성 요소가 프로파일링 장치(20)를 구현하기 위한 필수 구성요소는 아닐 수도 있음에 유의하여야 한다. 즉, 본 개시의 다른 몇몇 실시예들에 따른 프로파일링 장치(20)는 도 3에 도시된 구성 요소 중 일부에 의해 구현될 수도 있다.
도 3 에 도시된 각 구성 요소는 소프트웨어(Software) 또는, FPGA(Field Programmable Gate Array)나 ASIC(Application-Specific Integrated Circuit)과 같은 하드웨어(Hardware)를 의미할 수 있다. 그렇지만, 상기 구성 요소들은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니며, 어드레싱(Addressing)할 수 있는 저장 매체에 있도록 구성될 수도 있고, 하나 또는 그 이상의 프로세서들을 실행시키도록 구성될 수도 있다. 상기 구성 요소들 안에서 제공되는 기능은 더 세분화된 구성 요소에 의하여 구현될 수 있으며, 복수의 구성 요소들을 합하여 특정한 기능을 수행하는 하나의 구성 요소로 구현될 수도 있다.
지금까지 도 3을 참조하여 본 개시의 몇몇 실시예들에 따른 프로파일링 장치(20)의 구성 및 동작에 대하여 설명하였다. 이하에서는, 도 4 내지 도 20을 참조하여 본 개시의 몇몇 실시예들에 따른 악성코드 프로파일링 방법에 대하여 상세하게 설명한다.
이하에서 후술될 악성코드 프로파일링 방법의 각 단계는 프로세서를 구비한 컴퓨팅 장치에 의해 수행될 수 있다. 다시 말하면, 상기 악성코드 프로파일링 방법의 각 단계는 프로세서에 의해 실행되는 하나 이상의 인스트럭션들로 구현될 수 있다. 상기 악성코드 프로파일링 방법에 포함되는 모든 단계는 하나의 물리적인 컴퓨팅 장치에 의하여 실행될 수도 있을 것이나, 상기 방법의 제1 단계들은 제1 컴퓨팅 장치에 의하여 수행되고, 상기 방법의 제2 단계들은 제2 컴퓨팅 장치에 의하여 수행될 수도 있다. 이하에서는, 이해의 편의를 위해, 상기 악성코드 프로파일링 방법의 각 단계가 프로파일링 장치(20)에 의해 수행되는 것을 가정하여 설명을 이어가도록 한다. 다만, 상기 악성코드 프로파일링 방법에 포함되는 각 단계의 동작 주체는 그 기재가 생략될 수도 있다.
도 4는 본 개시의 몇몇 실시예들에 따른 악성코드 프로파일링 방법을 나타내는 예시적인 흐름도이다. 단, 이는 본 개시의 목적을 달성하기 위한 바람직한 실시예일뿐이며, 필요에 따라 일부 단계가 추가되거나 삭제될 수 있음은 물론이다.
도 4에 도시된 바와 같이, 상기 악성코드 프로파일링 방법은 악성코드 리스트와 프로파일링 속성을 입력받는 단계 S100에서 시작된다. 상기 악성코드 리스트는 복수의 악성코드들을 포함할 수 있다.
몇몇 실시예에서, 프로파일링 장치(20)는 입력된 악성코드 리스트에 대한 프로파일링 속성을 추천할 수 있다. 상기 추천은 다양한 기준에 의거하여 수행될 수 있는데, 본 실시예에 대한 자세한 설명은 추후 도 20을 참조하여 후술하도록 한다.
단계 S200에서, 악성코드 리스트에 포함된 개별 악성코드의 프로파일 정보가 조회된다. 상기 개별 악성코드의 프로파일 정보는 다수의 속성과 그에 대응되는 속성값(또는 데이터)로 구성될 수 있다. 또한, 상기 프로파일 정보는 각 악성코드에 대한 행위 분석 결과에 기반하여 생성된 것일 수 있다.
도 5 및 도 6에 도시된 표(70-1, 70-2)는 프로파일 정보에 포함되는 속성들을 예시하고 있다. 표(70-1, 70-2)에 나타난 바와 같이, 프로파일 정보는 카테고리 별로 다양한 속성에 대한 정보를 포함할 수 있다.
각 속성 카테고리에 대하여 간략하게 부연 설명하면, "Basic Info"는 개별 악성코드 식별에 가장 기본이 되는 정보와 연관된 속성 카테고리이고, 대략 19종의 속성을 포함할 수 있다. "idx"속성은 악성코드의 식별자를 나타내고, "duration" 속성은 악성코드가 샌드박스 상에서 실행된 시간을 나타내며, "md5", "sha1"등의 속성은 악성코드의 해시 값을 나타내고, "label_id" 속성은 악성코드의 분류 코드를 나타낸다. 또한, "signature" 속성은 YARA 시그니처 값을 나타내고, "score" 속성은 악성코드의 악성 정도를 수치로 나타낸 것이다. 기타 속성들의 의미는 속성명으로부터 직관적으로 파악할 수 있을 것인 바, 더 이상의 설명은 생략하도록 한다.
"Static Info"는 악성코드 파일의 내부 구조를 스캔함으로써 획득되는 정보와 연관된 속성 카테고리이며, 대략 22종의 속성을 포함할 수 있다. "compile_time" 속성은 악성코드의 수집 시간 또는 생성 시간을 나타내고, "imphash"는 IAT 구조의 해시 값을 나타내며, "certificate_country" 속성은 인증 국가를 나타내고, "certificate_local"는 인증 지역을 나타낸다. "sec_" 관련 속성은 해당 섹션(e.g. .text, .rdata)들의 엔트로피 값을 나타낸다. 기타 속성들의 의미는 속성명으로부터 직관적으로 파악할 수 있을 것인 바, 더 이상의 설명은 생략하도록 한다.
"Behavior Info"는 악성코드 동작에 관한 정보와 연관된 속성 카테고리이고, 대략 16종의 속성을 포함할 수 있다. "api_vector" 속성은 API 콜 시퀀스에 대한 피처 해싱을 통해 생성된 벡터를 나타내고, "api_category"는 API의 기능 카테고리를 나타낸다. 기타 속성들의 의미는 속성명으로부터 직관적으로 파악할 수 있을 것인 바, 더 이상의 설명은 생략하도록 한다.
"Dropped_file info"는 악성코드가 실행 시 추가로 드랍한 파일(e.g. 특정 URL에 접속해서 추가로 다운로드한 파일 등) 정보와 연관된 속성 카테고리이고, 대략 8종의 속성을 포함할 수 있다. 각 속성들의 의미는 속성명으로부터 직관적으로 파악할 수 있을 것인 바, 이에 대한 설명은 생략하도록 한다.
"Network Info"는 악성코드의 네트워크 접속 관련 정보와 연관된 속성 카테고리이고, 대략 8종의 속성을 포함할 수 있다. 각 속성들의 의미는 속성명으로부터 직관적으로 파악할 수 있을 것인 바, 이에 대한 설명은 생략하도록 한다.
"VT Info"는 백신 진단 정보와 연관된 속성 카테고리이고, 대략 57종의 속성들을 포함할 수 있다.
마지막으로 "User Info"는 사용자가 입력한 해시태그 정보(즉, 수동 분석 정보)와 연관된 속성 카테고리이다.
다시 도 4를 참조하여 설명을 이어가도록 한다.
단계 S300에서, 조회된 프로파일 정보에서 프로파일링 속성에 대응되는 속성 정보를 기초로 악성코드 별로 프로파일 벡터가 생성된다. 본 단계 S300에 대한 세부 과정은 도 7에 도시되어 있다.
도 7에 도시된 바와 같이, 조회된 프로파일 정보에서 프로파일링 속성에 대응되는 속성 정보가 추출되고, 추출된 속성 정보에서 속성값의 중복을 제거하여(e.g. 합집합 연산) 프로파일 벡터의 컬럼이 구성된다(S310 내지 S350). 컬럼이 구성되면, 속성값의 빈도를 대응되는 컬럼의 값으로 설정하여 악성코드 별로 프로파일 벡터가 생성된다(S370). 가령, 상기 제1 악성코드의 속성 정보에서 각 컬럼에 대응되는 속성값이 출현한 빈도를 구하고, 속성값의 빈도를 각 컬럼의 값으로 설정하면 제1 악성코드에 대한 제1 프로파일 벡터가 생성될 수 있다. 보다 이해의 편의를 제공하기 위해, 도 8 내지 도 10에 도시된 예시도를 참조하여 부연 설명하도록 한다.
도 8은 프로파일링 속성(81)에 대응되는 악성코드 1 및 2의 속성 정보(80-1)를 예시하고, 도 9는 프로파일링 속성(81)에 대응되는 악성코드 3 및 4의 속성 정보(80-2)를 예시하고 있다. 즉, 악성코드 1 내지 4의 프로파일 정보에는 훨씬 더 많은 속성에 대한 정보가 포함되어 있을 것이나, 도 8 및 도 9는 프로파일링 속성(81)에 대한 속성 정보(80-1, 80-2)만을 예시하고 있다.
속성 정보(80-1, 80-2)는 프로파일링 속성(81)과 이에 대응되는 속성값으로 구성되는데, 모든 악성코드의 프로파일 벡터는 동일한 컬럼을 공유해야 하므로, 중복이 제거된 속성값으로 프로파일 벡터의 컬럼이 구성된다. 구체적인 예를 들어, 프로파일링 속성(81) 중에서 "group_id"의 속성값은 227, 227, 78, 78인데, 여기서 중복을 제거하면 {227, 78}이 된다. 이와 같은 중복 제거 작업이 프로파일링 속성(81)에 포함된 각 개별 속성 별로 수행되고, 중복이 제거된 속성값들은 프로파일 벡터의 컬럼을 구성하게 된다.
도 8 및 도 9의 속성 정보(80-1, 80-2)를 기초로 생성된 프로파일 벡터(90)는 도 10에 도시되어 있다. 도 10에 도시된 바와 같이, 프로파일 벡터(90)의 컬럼(91)은 중복이 제거된 속성값으로 구성되고, 각 속성값의 빈도가 컬럼(91)의 값으로 설정된 것을 확인할 수 있다.
대표적으로 악성코드 1의 프로파일 벡터(93)에 대해 살펴보면, 악성코드 1의 속성 정보(80-1)에서 제1 컬럼에 대응되는 속성값("227")의 출현 빈도는 "1"이므로 상기 제1 컬럼의 값은 "1"이 된다. 이와 같은 방식으로, 각 컬럼에 대응되는 속성값의 출현 빈도로 각 컬럼의 값을 설정하면, 악성코드의 1의 프로파일 벡터(93)가 생성될 수 있다. 악성코드 2 내지 4의 프로파일 벡터 또한 동일한 방식으로 생성될 수 있다.
한편, 입력된 프로파일링 속성의 개수 또는 속성값의 개수가 많은 경우, 프로파일 벡터의 차원이 지나치게 커져 클러스터링(또는 프로파일링)의 정확도가 저하되는 문제가 발생될 수 있다. 이와 같은 문제를 해결하기 위해, 다양한 방식으로 프로파일 벡터의 차원을 축소시킬 수 있는데, 이하 이와 관련된 실시예들에 대하여 간략하게 설명하도록 한다.
몇몇 실시예에서, 도 11에 도시된 바와 같이, 소정의 기준에 따라 n개의 프로파일링 속성(91)을 토대로 k개(단, k는 n미만의 자연수)의 속성(99)이 결정될 수 있다.
예를 들어, 주성분 분석(Principal Component Analysis, 93)을 통해 n개의 프로파일링 속성(91)로부터 k개의 속성(99)이 생성될 수 있다. 상기 주성분 분석은 당해 기술 분야에서 이미 널리 알려진 알고리즘인 바, 이에 대한 자세한 설명은 생략하도록 한다.
다른 예를 들어, 속성값의 분산(95)을 이용하여 n개의 프로파일링 속성(91) 중에서 k개의 속성(99)이 선별될 수 있다. 가령, n개의 프로파일링 속성(91) 중에서 속성값의 분산이 기준치 이상인 속성들이 선별될 수 있다. 분산이 높다는 것은 해당 속성이 악성코드 리스트에 대해 많은 정보를 포함하고 있다는 것을 의미하기 때문이다.
또 다른 예를 들어, 프로파일링에 이용된 횟수(97)에 기반하여 n개의 프로파일링 속성(91) 중에서 k개의 속성(99)이 선별될 수 있다. 즉, 다수의 사용자에 의해 프로파일링에 자주 이용된 k개의 프로파일링 속성(99)이 선별될 수 있다. 프로파일링에 이용된 횟수(97)는 기 저장된 프로파일링 이력에 기반하여 산출될 수 있다. 보다 구체적으로, 기 저장된 프로파일링 이력 중에서 입력된 악성코드 리스트와 연관된 프로파일링 이력이 조회되고, 조회된 프로파일링 이력을 토대로 각 프로파일링 속성의 이용 횟수가 카운팅될 수 있다.
몇몇 실시예에서, 중복 제거 이후 전체 속성값의 개수가 기준치 이상인 경우, 상기 전체 속성값의 개수가 상기 기준치 미만으로 조정될 수 있다. 속성값의 개수가 줄어들면, 프로파일 벡터의 차원이 감소될 것이기 때문이다. 속성값의 개수를 조정하는 방식은 일부 속성값을 프로파일 벡터에서 제외하는 방식, 복수의 속성값을 하나의 속성값으로 병합하는 방식 등 어떠한 방식이 되더라도 무방하다. 몇몇 실시예에서는, 다수의 수치형 속성값을 하나의 범위형 속성값으로 변환함으로써 속성값의 개수가 조정될 수 있다. 가령, 도 8 및 도9에 도시된 속성 정보(80-1, 80-2)에서, "compile_time", "group_id" 등은 수치형 속성값을 갖다. 여기서, "group_id"를 [1, 300]에 속하는 경우 "1" [301, 600]에 속하는 경우에는 "2"와 같이 범위형으로 변환하면, 악성코드 1 내지 4에 대한 "group_id"의 속성값은 모두 "1"이 될 것이므로, 속성값의 개수가 감소될 수 있다.
몇몇 실시예에서, 중복 제거 이후에 특정 프로파일링 속성에 대한 속성값의 개수가 기준치 이상인 경우, 상기 특정 프로파일링 속성에 대한 속성값의 개수가 상기 기준치 미만으로 조정될 수 있다. 이는, 특정 프로파일링 속성이 프로파일 벡터의 대부분을 차지하는 것을 방지하기 위한 것이다. 가령, 도 12에 도시된 프로파일 벡터의 경우, 속성#1(101), 속성#2(103) 및 속성#3(105)에 대한 속성값의 개수가 각각 8, 3, 2가 되는데, 속성#1(101)에 대한 속성값이 프로파일 벡터의 대부분을 차지하는 것을 확인할 수 있다. 이와 같은 경우, 프로파일링에 다른 속성(103, 105)이 잘 반영되지 않을 수 있고, 불필요하게 프로파일 벡터의 차원도 커지게 된다. 따라서, 특정 속성(e.g. 101)에 대한 속성값의 개수가 조정될 수 있는데, 상기 속성값의 개수를 조정하는 방식은 전술한 실시예와 유사한 방식으로 수행될 수 있다.
지금까지 악성코드 별로 프로파일 벡터를 생성하는 방법에 대하여 상세하게 설명하였다. 다시 도 4를 참조하여 이후 단계에 대한 설명을 이어가도록 한다.
단계 S400에서, 다수의 프로파일 벡터에 대해 클러스터링이 수행되고, 클러스터링 결과에 따라 악성코드 리스트에 포함된 복수의 악성코드가 유형 별로 분류된다. 가령, 도 13에 도시된 바와 같이, 다수의 프로파일 벡터(111)를 클러스터링하면, 유사한 프로파일 속성을 공유하는 악성코드들끼리 그룹(113 내지 117)을 형성하게 되므로, 복수의 악성코드가 유형 별로 분류될 수 있다.
또한, 본 단계 S400에서, 악성코드 클러스터 별로 프로파일링 ID가 부여될 수 있다. 즉, 동일한 클러스터에 속한 악성코드에게는 동일한 프로파일링 ID가 부여될 수 있다. 가령, 도 14는 프로파일링 결과(120)를 도시하고 있는데, 프로파일링 ID가 동일한 악성코드(M134, M22)는 동일한 클러스터에 속한다는 것을 의미한다. 상기 프로파일링 ID는 악성코드의 유형을 나타내는 식별자로 활용될 수 있다.
본 단계 S400에서, 클러스터링에 이용되는 구체적인 알고리즘은 실시예에 따라 달라질 수 있다.
몇몇 실시예에서는, 도 13에 도시된 바와 같이, K-Medoids 클러스터링 알고리즘이 이용될 수 있다. K-Medoids 클러스터링 알고리즘에 대한 설명은 전술한 바와 같으므로, 더 이상의 설명은 생략하도록 한다.
한편, 본 개시의 다양한 실시예에서는, 프로파일 벡터를 클러스터링하기 전에, 악성코드 리스트에 포함된 복수의 악성코드를 소정의 기준에 따라 그룹핑하고, 각 악성코드 그룹 별로 프로파일 벡터를 클러스터링할 수 있다. 그렇게 함으로써, 복수의 악성코드를 보다 세분화된 유형으로 분류할 수 있기 때문이다. 이하, 본 실시예에 대하여 간략하게 부연 설명하도록 한다.
몇몇 실시예에서, 악성코드의 파일 타입을 기준으로 악성코드가 그룹핑되고, 악성코드 그룹 별로 클러스터링이 수행될 수 있다. 물론, 상기 클러스터링은 악성코드의 프로파일 벡터를 대상으로 수행된다. 파일 타입을 기준으로 악성코드를 그룹핑하는 이유는 파일 타입에 따라 악성코드의 악성 행위가 달라지기 때문이다. 즉, 일차적으로 파일 타입에 따라 악성코드를 그룹핑하면, 유사한 악성 행위를 수행하는 악성코드들이 그룹을 형성하게 되고, 형성된 그룹 내에서 클러스터링을 수행하면, 보다 정확하고 세분화된 프로파일링 결과가 획득될 수 있다.
몇몇 실시예에서, 악성코드의 분류 코드를 기준으로 악성코드가 그룹핑되고, 악성코드 그룹 별로 클러스터링이 수행된다. 분류 코드를 기준으로 악성코드를 그룹핑하는 이유는 분류 코드가 악성코드의 행위 유형을 나타내기 때문이다. 즉, 분류 코드는 API 기능코드에 기반하여 생성된 것이기 때문에, 유사한 행위를 수행하는 악성코드들은 유사한 분류 코드를 갖게 된다. 따라서, 분류 코드에 기반하여 형성된 그룹 내에서 클러스터링을 수행하면, 보다 정확하고 세분화된 프로파일링 결과가 획득될 수 있다. 본 실시예에 대하여 도 15 내지 도 19를 참조하여 부연 설명하도록 한다.
도 15는 API 기능코드의 몇몇 예시를 나타낸다. 도 15에 도시된 표(121)는 API의 기능을 17개의 카테고리로 정의하고, 각 기능 카테고리 별로 기능코드를 할당한 것을 예시하고 있다. 도 15에 도시된 표(121)는 일 예에 불과할 뿐이므로, API 기능 카테고리를 정의하는 방식, 기능코드를 할당하는 방식 등은 얼마든지 달라질 수 있다.
도 15에 도시된 표(121)에서, "Crypto"는 암호화 관련 기능을 수행하는 API의 카테고리, "Crypto"는 암호화 관련 기능을 수행하는 API의 카테고리이며, "Misc"는 기타 기능을 수행하는 API의 카테고리이다. 당해 기술 분야의 당업자라면, 카테고리의 명칭에서 해당 카테고리의 기능을 직관적으로 알 수 있을 것인 바, 더 이상의 설명은 생략하도록 한다.
도 16은 기 정의된 API 기능코드(e.g. 도 15의 121)를 이용하여 제1 악성코드의 분류 코드를 생성하는 예를 도시하고 있다. 도 16은 제1 악성코드가 3개의 API(a, b, c)를 호출하는 것을 예로써 도시하고 있다.
도 16에 도시된 바와 같이, 상기 제1 악성코드의 API 정보(122, e.g. API 콜 시퀀스 정보)가 획득되면, 각 API 별로 기능 카테고리(123, 125, 127)와 기능 코드(124, 126, 128)가 결정될 수 있다. 이를테면, 각 API(a, b, c)의 기능 카테고리(123, 125, 127)가 결정되면, 각 기능 카테고리(123, 125, 127)에 해당하는 기능코드를 조회함으로써 각 API(a, b, c)의 기능코드(124, 126, 128)가 결정될 수 있다. 또한, 상기 제1 악성코드의 분류 코드(129)는 각 API(a, b, c)의 기능코드(124, 126, 128)를 종합한 값을 갖도록 생성될 수 있다. 도 16은 or 연산을 통해 분류 코드(78)가 생성되는 것을 예로써 도시하고 있으나, 이는 실시예에 따라 얼마든지 달라질 수 있다.
도 17 내지 도 19는 분류 코드 별로 클러스터링이 수행되는 것을 부연 설명 하기 위한 도면이다.
도 17에 도시된 바와 같이, 악성코드(M29, M31, M32)는 분류 코드(131 내지 135)가 동일하기 때문에, 동일한 악성코드 그룹(137)으로 그룹핑된다. 또한, 도 18에 도시된 바와 같이, 제1 악성코드 그룹(141)의 프로파일 벡터에 대해 클러스터링(143)이 수행되고, 제2 악성코드 그룹(145)에 대해 클러스터링(147)이 수행된다. 이와 같이 클러스터링이 수행되면 도 19에 도시된 클러스터링 결과표(150)와 같이, 분류 코드 별로 악성코드 클러스터가 구축될 수 있다.
몇몇 실시예에서, 파일 타입 및 분류 코드를 기준으로 악성코드가 그룹핑되고, 악성코드 그룹별로 클러스터링이 수행될 수도 있다.
다시 도 4를 참조하여 설명을 이어가도록 한다.
단계 S500에서, 클러스터링 결과(즉, 프로파일링 결과)에 대한 평가가 수행된다.
몇몇 실시예에서, 클러스터 내 분산(즉, 클러스터 내 응집도/유사도)과 클러스터 간 분산(즉, 클러스터 간 분리도/비유사도)을 기초로 클러스터링 결과가 평가될 수 있다. 이를테면, Davies-Bouldin index, Dunn index, 실루엣 기법 등이 이용될 수 있으나, 본 개시의 기술적 범위가 이에 한정되는 것은 아니다.
상기 평가 결과는 도 20에 도시된 바와 같이 프로파일링 이력(160)에 포함되어 저장될 수 있다. 프로파일링 이력(160)은 프로파일링이 수행된 악성코드 리스트, 프로파일링 속성, 평가 점수, 클러스터링 결과 등을 포함할 수 있다.
한편, 몇몇 실시예에서는, 도 20에 도시된 프로파일링 이력(160)이 사용자에게 프로파일링 속성을 추천하기 위해 이용될 수 있다. 가령, 단계 S100에서, 악성코드 리스트를 입력받으면, 프로파일링 이력을 토대로 적절한 프로파일링 속성을 사용자에게 추천할 수 있다. 또는, 단계 S100에서, 악성코드 리스트와 프로파일링 속성을 모두 입력받더라도, 프로파일링 이력을 토대로 사용자에 의해 입력되지 않은 속성 중 일부를 추천할 수 있다. 이하, 프로파일링 속성 추천과 관련된 다양한 실시예들에 대하여 설명하도록 한다.
몇몇 실시예에서, 입력된 악성코드 리스트와 연관된 과거 클러스터링 결과의 평가 점수에 기초하여 추천 속성이 결정될 수 있다. 예를 들어, 기 저장된 프로파일링 이력에서 상기 악성코드 리스트와 연관된 프로파일링 이력을 조회하고, 조회된 프로파일링 이력 상에서 평가 점수가 기준치 이상인 프로파일링 케이스들이 선별될 수 있다. 그러면, 프로파일링 케이스에 자주 이용된 프로파일링 속성이 추천 속성으로 결정될 수 있다. 본 실시예는 다수의 프로파일링 속성 중에서 일부 속성을 선별하기 위한 경우(도 11 참조)에도 적용될 수 있다.
몇몇 실시예에서, 프로파일링에 이용된 횟수에 기초하여 추천 속성이 결정될 수 있다. 즉, 사용자들이 프로파일링에 자주 이용한 속성들이 추천 속성으로 결정될 수 있다. 본 실시예에 관한 자세한 내용은 도 11에 대한 설명 부분(프로파일링 횟수 97에 관한 설명 부분 참조)을 참조하도록 한다.
몇몇 실시예에서, 속성의 분산 값을 기초로 추천 속성이 결정될 수 있다. 보다 구체적으로, 입력된 악성코드 리스트에 대한 프로파일 정보가 조회되면, 조회된 프로파일 정보를 이용하여 각 속성(즉, 프로파일 정보에 포함된 속성들)에 대한 분산 값이 연산될 수 있다. 프로파일링 속성이 입력된 경우라면, 프로파일 정보에 포함된 복수의 속성 중에서 상기 프로파일링 속성을 제외한 나머지 속성에 대하여 분산 값이 연산될 수 있다. 또한, 분산 값이 기준치 이상인 속성이 추천 속성으로 결정될 수 있다. 전술한 바와 같이, 분산 값이 높다는 것은 해당 속성에 포함된 정보가 많다는 것을 의미하기 때문이다.
몇몇 실시예에서, 추천 속성은 입력된 프로파일링 속성이 속하지 않는 카테고리(도 5 및 도 6에 도시된 카테고리 참조)의 속성 중에서 결정될 수 있다. 즉, 다각적인 프로파일링이 수행될 수 있도록, 사용자가 지정하지 않은 카테고리의 속성 중에서 추천 속성이 결정될 수 있다. 특정 카테고리에 속한 복수의 속성 중에서 추천 속성을 결정하기 위해서는, 전술한 실시예들이 활용될 수 있다.
참고로, 전술한 단계 S100 내지 S500 중에서, 단계 S100은 정보 입력부(61)에 의해 수행되고, 단계 S200은 조회부(62)에 의해 수행되며, 단계 S300은 벡터 생성부(65)에 의해 수행될 수 있다. 또한, 단계 S400 및 S500은 클러스터링부(66)에 의해 수행될 수 있다.
지금까지 도 4 내지 도 20을 참조하여 본 개시의 몇몇 실시예들에 따른 악성코드 프로파일링 방법에 대하여 설명하였다. 상술한 방법에 따르면, 악성코드 리스트가 프로파일링 속성에 기반하여 프로파일링될 수 있다. 여기서, 악성코드 리스트와 프로파일링 속성은 모두 사용자에 의해 변경될 수 있는 것들이므로, 사용자에게 ?춤형 프로파일링 서비스가 제공될 수 있다.
뿐만 아니라, 합리적인 기준에 따라 선별된 속성들이 사용자에게 추천될 수 있다. 따라서, 프로파일링 서비스를 이용하는 사용자의 편의성 및 만족도가 제고될 수 있다.
이하에서는, 도 21을 참조하여 본 개시의 다른 몇몇 실시예들에 따른 악성코드 프로파일링 방법에 대하여 설명하도록 한다. 명세서의 명료함을 위해, 중복되는 내용에 대한 설명은 생략하도록 한다.
도 21은 본 개시의 다른 몇몇 실시예들에 따른 악성코드 프로파일링 방법을 나타내는 예시적인 흐름도이다. 단, 이는 본 개시의 목적을 달성하기 위한 바람직한 실시예일뿐이며, 필요에 따라 일부 단계가 추가되거나 삭제될 수 있음은 물론이다.
도 21에 도시된 악성코드 프로파일링 방법은 보다 자동화된 프로파일링 서비스를 제공하는 방법에 관한 것이다. 즉, 사용자에게 맞춤형 프로파일링 서비스를 제공하는 것보다 자동 프로파일링 서비스에 보다 초점을 두고 고안된 방법으로 이해될 수 있다.
도 21에 도시된 바와 같이, 상기 악성코드 프로파일링 방법은 복수의 악성코드를 포함하는 악성코드 리스트만을 입력받는다(S600). 물론, 다른 몇몇 실시예에서는, 사용자로부터 프로파일링 속성을 입력받을 수도 있다.
단계 S700에서, 프로파일링 속성이 자동으로 결정되거나 이전 과정에서 결정된 프로파일링 속성이 변경된다. 즉, 프로파일링 속성을 변경해가며 프로파일링 시뮬레이션이 수행된다.
프로파일링 속성을 자동으로 결정하는 구체적인 방식은 실시예에 따라 달라질 수 있다.
몇몇 실시예에서, 랜덤으로 프로파일링 속성이 자동으로 결정될 수 있다.
몇몇 실시예에서, 전술한 추천 속성 결정 방법에 기반하여 프로파일링 속성이 자동으로 결정될 수 있다.
몇몇 실시예에서는, 전술한 실시예들의 조합에 기반하여 프로파일링 속성이 결정될 수 있다.
몇몇 실시예에서, 사용자로부터 프로파일링 속성이 입력된 경우에는, 입력된 프로파일링 속성과 자동으로 결정된 프로파일링 속성을 함께 이용하여 프로파일링 시뮬레이션이 수행될 수 있다.
단계 S800에서, 결정된 프로파일링 속성으로 입력된 악성코드 리스트에 대한 프로파일링이 수행된다. 본 단계 S800에 세부 내용은 앞서 설명한 바와 같으므로, 더 이상의 설명은 생략하도록 한다.
단계 S900에서, 프로파일링 결과가 평가된다. 즉, 클러스터링이 얼마나 잘 이루어졌는지에 대한 평가가 수행된다. 본 단계 S900에 세부 내용 또한 앞서 설명한 바와 같으므로, 더 이상의 설명은 생략하도록 한다.
단계 S1000에서, 기 지정된 종료 조건이 만족되는지 여부가 판정된다. 상기 종료 조건은 반복 횟수, 평가 점수 등에 기초하여 정의될 수 있을 것이나, 본 개시의 기술적 범위가 이에 한정되는 것은 아니다.
단계 S1100에서, 평가 점수를 기초로 최종 프로파일링 결과가 결정된다. 가령, 평가 점수가 가장 높은 프로파일링 결과가 입력된 악성코드 리스트에 대한 최종 결과가 결정된다.
본 단계 S1100에서, 상기 최종 프로파일링 결과는 프로파일링에 이용된 속성과 함께 사용자에게 제공될 수 있다.
참고로, 전술한 단계 S600 내지 S1100 중에서, 단계 S600은 정보 입력부(61)에 의해 수행되고, 단계 S700은 프로파일링 속성 결정부(미도시)에 의해 수행되며, 단계 S800은 벡터 생성부(65) 및 클러스터링부(660)에 의해 수행될 수 있다. 또한, 단계 S900 내지 단계 S1100도 클러스터링부(66)에 의해 수행될 수 있다.
지금까지 도 21을 참조하여 본 개시의 다른 몇몇 실시예들에 따른 악성코드 프로파일링 방법에 대하여 설명하였다. 상술한 방법에 따르면, 반복적인 프로파일링 시뮬레이션을 통해 사용자에게 정확도 높은 프로파일링 결과가 제공될 수 있다. 뿐만 아니라, 입력된 악성코드의 프로파일링에 효과적인 프로파일링 속성이 자동으로 결정되는 바, 보다 편의적인 프로파일링 서비스가 제공될 수 있다.
이하에서는, 본 개시의 다양한 실시예들에 따른 장치(e.g. 프로파일링 장치 20)/시스템(e.g. 행위 분석 시스템 10)을 구현할 수 있는 예시적인 컴퓨팅 장치에 대하여 설명하도록 한다.
도 22는 본 개시의 다양한 실시예들에 따른 장치/시스템을 구현할 수 있는 예시적인 컴퓨팅 장치를 나타내는 예시적인 하드웨어 구성도이다.
도 22에 도시된 바와 같이, 컴퓨팅 장치(200)는 하나 이상의 프로세서(210), 버스(250), 통신 인터페이스(270), 프로세서(210)에 의하여 수행되는 컴퓨터 프로그램을 로드(load)하는 메모리(230)와, 컴퓨터 프로그램(291)을 저장하는 스토리지(290)를 포함할 수 있다. 다만, 도 22에는 본 개시의 실시예와 관련 있는 구성요소들만이 도시되어 있다. 따라서, 본 개시가 속한 기술분야의 통상의 기술자라면 도 22에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있음을 알 수 있다.
프로세서(210)는 컴퓨팅 장치(200)의 각 구성의 전반적인 동작을 제어한다. 프로세서(210)는 CPU(Central Processing Unit), MPU(Micro Processor Unit), MCU(Micro Controller Unit), GPU(Graphic Processing Unit) 또는 본 개시의 기술 분야에 잘 알려진 임의의 형태의 프로세서를 포함하여 구성될 수 있다. 또한, 프로세서(210)는 본 개시의 실시예들에 따른 방법을 실행하기 위한 적어도 하나의 애플리케이션 또는 프로그램에 대한 연산을 수행할 수 있다. 컴퓨팅 장치(200)는 하나 이상의 프로세서를 구비할 수 있다.
메모리(230)는 각종 데이터, 명령 및/또는 정보를 저장한다. 메모리(230)는 전술한 본 개시의 다양한 실시예들에 따른 방법/동작을 실행하기 위하여 스토리지(290)로부터 하나 이상의 프로그램(291)을 로드할 수 있다. 가령, 메모리(230)에 컴퓨터 프로그램(291)이 로드되면, 도 3에 도시된 바와 같이 모듈이 메모리(230) 상에 구현될 수 있다. 메모리(230)는 RAM과 같은 휘발성 메모리로 구현될 수 있을 것이나, 본 개시의 기술적 범위가 이에 한정되는 것은 아니다.
버스(250)는 컴퓨팅 장치(200)의 구성 요소 간 통신 기능을 제공한다. 버스(250)는 주소 버스(Address Bus), 데이터 버스(Data Bus) 및 제어 버스(Control Bus) 등 다양한 형태의 버스로 구현될 수 있다.
통신 인터페이스(270)는 컴퓨팅 장치(200)의 유무선 인터넷 통신을 지원한다. 또한, 통신 인터페이스(270)는 인터넷 통신 외의 다양한 통신 방식을 지원할 수도 있다. 이를 위해, 통신 인터페이스(270)는 본 개시의 기술 분야에 잘 알려진 통신 모듈을 포함하여 구성될 수 있다.
스토리지(290)는 상기 하나 이상의 프로그램(291)을 비임시적으로 저장할 수 있다. 스토리지(290)는 ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리 등과 같은 비휘발성 메모리, 하드 디스크, 착탈형 디스크, 또는 본 개시가 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터로 읽을 수 있는 기록 매체를 포함하여 구성될 수 있다.
컴퓨터 프로그램(291)은 메모리(230)에 로드될 때 프로세서(210)로 하여금 본 개시의 다양한 실시예들에 따른 방법/동작을 수행하도록 하는 하나 이상의 인스트럭션들(instructions)을 포함할 수 있다. 즉, 프로세서(210)는 상기 하나 이상의 인스트럭션들을 실행함으로써, 본 개시의 다양한 실시예에 따른 동작/방법들을 수행할 수 있다.
예를 들어, 컴퓨터 프로그램(291)은 복수의 악성코드를 포함하는 악성코드 리스트를 입력받는 동작, 상기 복수의 악성코드를 프로파일링하기 위한 프로파일링 속성을 입력받는 동작, 상기 복수의 악성코드에 대한 프로파일 정보를 조회하는 동작, 상기 조회된 프로파일 정보에서 상기 입력된 프로파일링 속성에 대응되는 속성 정보를 추출하여, 악성코드 별로 프로파일 벡터를 생성하는 동작 및 상기 생성된 프로파일 벡터를 클러스터링하여, 상기 복수의 악성코드를 유형 별로 분류하는 동작을 수행하도록 하는 하나 이상의 인스트럭션들을 포함할 수 있다. 이와 같은 경우, 컴퓨팅 장치(200)를 통해 프로파일링 장치(20)가 구현될 수 있다.
지금까지 도 22를 참조하여 본 개시의 다양한 실시예들에 따른 장치/시스템을 구현할 수 있는 예시적인 컴퓨팅 장치에 대하여 설명하였다.
지금까지 도 1 내지 도 22를 참조하여 본 개시의 다양한 실시예들 및 그 실시예들에 따른 효과들을 언급하였다. 본 개시의 기술적 사상에 따른 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
지금까지 도 1 내지 도 22를 참조하여 설명된 본 개시의 기술적 사상은 컴퓨터가 읽을 수 있는 매체 상에 컴퓨터가 읽을 수 있는 코드로 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체는, 예를 들어 이동형 기록 매체(CD, DVD, 블루레이 디스크, USB 저장 장치, 이동식 하드 디스크)이거나, 고정식 기록 매체(ROM, RAM, 컴퓨터 구비 형 하드 디스크)일 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체에 기록된 상기 컴퓨터 프로그램은 인터넷 등의 네트워크를 통하여 다른 컴퓨팅 장치에 전송되어 상기 다른 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 다른 컴퓨팅 장치에서 사용될 수 있다.
이상에서, 본 개시의 실시예를 구성하는 모든 구성 요소들이 하나로 결합되거나 결합되어 동작하는 것으로 설명되었다고 해서, 본 개시의 기술적 사상이 반드시 이러한 실시예에 한정되는 것은 아니다. 즉, 본 개시의 목적 범위 안에서라면, 그 모든 구성요소들이 하나 이상으로 선택적으로 결합하여 동작할 수도 있다.
도면에서 동작들이 특정한 순서로 도시되어 있지만, 반드시 동작들이 도시된 특정한 순서로 또는 순차적 순서로 실행되어야만 하거나 또는 모든 도시 된 동작들이 실행되어야만 원하는 결과를 얻을 수 있는 것으로 이해되어서는 안 된다. 특정 상황에서는, 멀티태스킹 및 병렬 처리가 유리할 수도 있다. 더욱이, 위에 설명한 실시예들에서 다양한 구성들의 분리는 그러한 분리가 반드시 필요한 것으로 이해되어서는 안 되고, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 다수의 소프트웨어 제품으로 패키지 될 수 있음을 이해하여야 한다.
이상 첨부된 도면을 참조하여 본 개시의 실시예들을 설명하였지만, 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자는 그 기술적 사상이나 필수적인 속성을 변경하지 않고서 본 개시가 다른 구체적인 형태로도 실시될 수 있다는 것을 이해할 수 있다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다. 본 개시의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 개시에 의해 정의되는 기술적 사상의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (20)

  1. 컴퓨팅 장치에 의하여 수행되는 악성코드 프로파일링 방법에 있어서,
    복수의 악성코드를 포함하는 악성코드 리스트를 입력받는 단계;
    상기 복수의 악성코드를 프로파일링하기 위한 프로파일링 속성을 입력받는 단계;
    상기 복수의 악성코드에 대한 프로파일 정보를 조회하는 단계;
    상기 조회된 프로파일 정보에서 상기 입력된 프로파일링 속성에 대응되는 속성 정보를 추출하여, 악성코드 별로 프로파일 벡터를 생성하는 단계; 및
    상기 생성된 프로파일 벡터를 클러스터링하여, 상기 복수의 악성코드를 유형 별로 분류하는 단계를 포함하는 것을 특징으로 하는,
    악성코드 프로파일링 방법.
  2. 제1 항에 있어서,
    상기 클러스터링은,
    k-medoids 클러스터링 알고리즘에 의해 수행되는 것을 특징으로 하는,
    악성코드 프로파일링 방법.
  3. 제1 항에 있어서,
    상기 프로파일 정보는 악성코드에 대한 행위 분석을 통해 생성되는 것을 특징으로 하는,
    악성코드 프로파일링 방법.
  4. 제1 항에 있어서,
    상기 프로파일 벡터를 생성하는 단계는,
    상기 추출된 속성 정보에서 속성값의 중복을 제거하는 단계;
    상기 중복이 제거된 속성값을 기초로 상기 프로파일 벡터의 컬럼을 구성하는 단계; 및
    각 컬럼에 대응되는 속성값의 빈도를 상기 각 컬럼의 값으로 설정하여, 상기 프로파일 벡터를 생성하는 단계를 포함하는 것을 특징으로 하는,
    악성코드 프로파일링 방법.
  5. 제4 항에 있어서,
    상기 프로파일 벡터의 컬럼을 구성하는 단계는,
    상기 프로파일링 속성 별로 속성값의 개수를 카운팅하는 단계; 및
    제1 프로파일링 속성의 속성값 개수가 기준치 이상이라는 판정에 응답하여, 상기 제1 프로파일링 속성의 속성값 개수를 상기 기준치 미만으로 조정하는 단계를 포함하는,
    악성코드 프로파일링 방법.
  6. 제1 항에 있어서,
    상기 프로파일 벡터를 생성하는 단계는,
    상기 조회된 프로파일 정보를 기초로 복수의 프로파일링 속성 중에서 일부 속성을 선정하는 단계; 및
    상기 일부 속성에 대응되는 속성 정보를 이용하여 상기 프로파일 벡터를 생성하는 단계를 포함하는 것을 특징으로 하는,
    악성코드 프로파일링 방법.
  7. 제6 항에 있어서,
    상기 일부 속성은,
    각 프로파일링 속성이 상기 입력된 악성코드 리스트와 연관된 과거 프로파일링에 이용된 횟수에 기초하여 선정되는 것을 특징으로 하는,
    악성코드 프로파일링 방법.
  8. 제6 항에 있어서,
    상기 일부 속성은,
    상기 조회된 프로파일 정보를 이용하여 산출된 각 프로파일링 속성의 분산 값에 기초하여 선정되는 것을 특징으로 하는,
    악성코드 프로파일링 방법.
  9. 제1 항에 있어서,
    상기 복수의 악성코드를 유형 별로 분류하는 단계는,
    상기 복수의 악성코드 각각의 파일 타입을 식별하는 단계;
    상기 식별된 파일 타입을 기준으로 상기 복수의 악성코드를 그룹핑하는 단계; 및
    상기 그룹핑을 통해 형성된 악성코드 그룹 별로 클러스터링을 수행하는 단계를 포함하는 것을 특징으로 하는,
    악성코드 프로파일링 방법.
  10. 제1 항에 있어서,
    상기 복수의 악성코드를 유형 별로 분류하는 단계는,
    기 정의된 API 기능코드를 이용하여 상기 복수의 악성코드 각각에 대한 분류 코드를 생성하는 단계;
    상기 생성된 분류 코드를 기준으로 상기 복수의 악성코드를 그룹핑하는 단계; 및
    상기 그룹핑을 통해 형성된 악성코드 그룹 별로 클러스터링을 수행하는 단계를 포함하는 것을 특징으로 하는,
    악성코드 프로파일링 방법.
  11. 제1 항에 있어서,
    상기 조회된 프로파일 정보와 연관된 복수의 속성 중에서 제1 속성을 상기 프로파일링을 위한 속성으로 추천하는 단계를 더 포함하는 것을 특징으로 하는,
    악성코드 프로파일링 방법.
  12. 제11 항에 있어서,
    상기 제1 속성은,
    상기 입력된 악성코드 리스트와 연관된 과거 클러스터링 결과의 평가 점수에 기초하여 결정되는 것을 특징으로 하는,
    악성코드 프로파일링 방법.
  13. 제11 항에 있어서,
    상기 제1 속성은,
    상기 조회된 프로파일 정보를 이용하여 산출된 각 속성의 분산 값을 기초로 결정되는 것을 특징으로 하는,
    악성코드 프로파일링 방법.
  14. 제11 항에 있어서,
    상기 복수의 속성은 기 지정된 카테고리 중 어느 하나에 속하고,
    상기 제1 속성은,
    상기 입력된 프로파일링 속성이 속하지 않는 제1 카테고리의 속성 중에서 결정되는 것을 특징으로 하는,
    악성코드 프로파일링 방법.
  15. 제1 항에 있어서,
    클러스터 내 분산과 클러스터 간 분산을 기초로 상기 클러스터링의 결과를 평가하는 단계; 및
    상기 평가 결과를 프로파일링 이력으로 저장하는 단계를 더 포함하는 것을 특징으로 하는,
    악성코드 프로파일링 방법.
  16. 프로세서; 및
    상기 프로세서에 의해 실행되는 하나 이상의 인스트럭션들(instructions)을 포함하는 메모리를 포함하되,
    상기 프로세서는,
    상기 하나 이상의 인스트럭션들을 실행함으로써,
    복수의 악성코드를 포함하는 악성코드 리스트를 입력받고,
    상기 복수의 악성코드를 프로파일링하기 위한 프로파일링 속성을 입력받으며,
    상기 복수의 악성코드에 대한 프로파일 정보를 조회하고,
    상기 조회된 프로파일 정보에서 상기 입력된 프로파일링 속성에 대응되는 속성 정보를 추출하여, 악성코드 별로 프로파일 벡터를 생성하며,
    상기 생성된 프로파일 벡터를 클러스터링하여, 상기 복수의 악성코드를 유형 별로 분류하는 것을 특징으로 하는,
    악성코드 프로파일링 장치.
  17. 제16 항에 있어서,
    상기 클러스터링은,
    K-medoids 클러스터링 알고리즘에 의해 수행되는 것을 특징으로 하는,
    악성코드 프로파일링 장치.
  18. 제16 항에 있어서,
    상기 프로파일 정보는 악성코드에 대한 행위 분석을 통해 생성되는 것을 특징으로 하는,
    악성코드 프로파일링 장치.
  19. 제16 항에 있어서,
    상기 프로세서는,
    상기 추출된 속성 정보에서 속성값의 중복을 제거하고, 상기 중복이 제거된 속성값을 기초로 상기 프로파일 벡터의 컬럼을 구성하며, 각 컬럼에 대응되는 속성값의 빈도를 상기 각 컬럼의 값으로 설정하여 상기 프로파일 벡터를 생성으로 하는 것을 특징으로 하는,
    악성코드 프로파일링 장치.
  20. 컴퓨팅 장치와 결합하여,
    복수의 악성코드를 포함하는 악성코드 리스트를 입력받는 단계;
    상기 복수의 악성코드를 프로파일링하기 위한 프로파일링 속성을 입력받는 단계;
    상기 복수의 악성코드에 대한 프로파일 정보를 조회하는 단계;
    상기 조회된 프로파일 정보에서 상기 입력된 프로파일링 속성에 대응되는 속성 정보를 추출하여, 악성코드 별로 프로파일 벡터를 생성하는 단계; 및
    상기 생성된 프로파일 벡터를 클러스터링하여, 상기 복수의 악성코드를 유형 별로 분류하는 단계를 실행시키기 위하여 컴퓨터로 판독가능한 기록매체에 저장된,
    컴퓨터 프로그램.
KR1020180162438A 2018-12-14 2018-12-14 악성코드 프로파일링 방법 및 그 장치 KR20200073824A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180162438A KR20200073824A (ko) 2018-12-14 2018-12-14 악성코드 프로파일링 방법 및 그 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180162438A KR20200073824A (ko) 2018-12-14 2018-12-14 악성코드 프로파일링 방법 및 그 장치

Publications (1)

Publication Number Publication Date
KR20200073824A true KR20200073824A (ko) 2020-06-24

Family

ID=71407782

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180162438A KR20200073824A (ko) 2018-12-14 2018-12-14 악성코드 프로파일링 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR20200073824A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102180105B1 (ko) * 2020-08-13 2020-11-17 최원천 장치에 설치된 소프트웨어에 대한 악성 소프트웨어 판단 방법 및 장치
KR102598126B1 (ko) * 2023-06-14 2023-11-03 주식회사 이글루코퍼레이션 클러스터 환경 내 중복된 보안 위협 데이터 관리 방법 및 이를 위한 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150124020A (ko) 2014-04-25 2015-11-05 (주) 세인트 시큐리티 악성코드 식별 태그 설정 시스템 및 방법, 및 악성코드 식별 태그를 이용한 악성코드 검색 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150124020A (ko) 2014-04-25 2015-11-05 (주) 세인트 시큐리티 악성코드 식별 태그 설정 시스템 및 방법, 및 악성코드 식별 태그를 이용한 악성코드 검색 시스템

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102180105B1 (ko) * 2020-08-13 2020-11-17 최원천 장치에 설치된 소프트웨어에 대한 악성 소프트웨어 판단 방법 및 장치
KR102598126B1 (ko) * 2023-06-14 2023-11-03 주식회사 이글루코퍼레이션 클러스터 환경 내 중복된 보안 위협 데이터 관리 방법 및 이를 위한 장치

Similar Documents

Publication Publication Date Title
US11757938B2 (en) Method, apparatus, and computer-readable medium for data protection simulation and optimization in a computer network
US9998484B1 (en) Classifying potentially malicious and benign software modules through similarity analysis
US9665713B2 (en) System and method for automated machine-learning, zero-day malware detection
US20180300494A1 (en) Method of identifying and tracking sensitive data and system thereof
EP3133507A1 (en) Context-based data classification
KR20200076845A (ko) 악성코드 분석 시스템 및 그 시스템의 동작 방법
Scoccia et al. An investigation into Android run-time permissions from the end users' perspective
Singh et al. Experimental analysis of Android malware detection based on combinations of permissions and API-calls
WO2009058474A1 (en) Method and apparatus for automatically classifying data
US20150213272A1 (en) Conjoint vulnerability identifiers
CN104504334A (zh) 用于评估分类规则选择性的系统及方法
WO2017010350A1 (ja) ソフトウェア解析システム、ソフトウェア解析方法およびソフトウェア解析プログラム
Wolfe et al. High precision screening for Android malware with dimensionality reduction
KR20200073824A (ko) 악성코드 프로파일링 방법 및 그 장치
JP2006350399A (ja) 重要度取得装置、セキュリティ設計支援システム、関連度取得装置及びプログラム
Chen et al. Impact of code deobfuscation and feature interaction in android malware detection
KR20200073822A (ko) 악성코드 분류 방법 및 그 장치
US10248789B2 (en) File clustering using filters working over file attributes
US20210073383A1 (en) Training a security scan classifier to learn an issue preference of a human auditor
Ugarte-Pedrero et al. On the adoption of anomaly detection for packed executable filtering
CN110990834A (zh) 一种android恶意软件的静态检测方法、系统及介质
Hatcher et al. Machine learning-based mobile threat monitoring and detection
US9292704B2 (en) Information processing device for detecting an illegal stored document, illegal stored document detection method and recording medium
US20180115570A1 (en) System and method for categorizing malware
GB2463545A (en) Rule creation for an apparatus including a Configuration Management Database (CMDB)

Legal Events

Date Code Title Description
E601 Decision to refuse application