▶ 보안 관련 정보 및 팁

[정리 1] Signature Heuristic Detecion이란? (서명기반 의심 진단)

물여우 2011. 6. 15. 21:44
반응형
안티 바이러스의 필수 항목이 된 시그니처 휴리스틱 진단에 대해서 살펴봅니다.

- 저는 보안 및 관련 기술에 관하여 전문가가 아니며, 내용에 오류가 있을 수 있습니다.



백신이라고 많이 불리우는 안티바이러스는 기본적으로 Signiture Detection이란 방식을 이용해서 악성코드를 진단합니다. 시그니처 진단은 서명 기반 진단 혹은 정의 기반 진단이라고 의역되는데, 이는 악성코드 내의 특별한 코드를 찾아내어 진단하는 방식입니다. 
(※ 현재 'Behavior Detection-행동 기반 진단'도 현재 많이 쓰이지만, 이글에서는 논외로 합니다.)

보안 업체는 악성코드를 진단하기 위해 악성코드를 분석(Debugging)해서 내부의 특정 코드를 수집하고, 이를 데이타 베이스화합니다. 이 DB화한 정의 목록을 파일로 만들어 각 사용자 PC에 배포하게되면(DB 업데이트), 사용자 PC에 설치된 안티 바이러스가 이를 기반으로 악성코드를 진단하게 됩니다. 그런데 이러한 DB화된 정의 파일을 이용하여 진단할 때 보통 '정식 진단'을 하였다고 합니다. 이러한 정식 진단은 DB로 정의된 악성코드에 대한 고유의 정보를 포함하고 있어, 정식 진단된 객체는 일반적으로 악성코드라고 볼 수 있습니다.

하지만 이런 정식 진단만 가지고는 현재의 악성코드 유포에 대응이 불가능하기 때문에 좀 더 발전되거나, 기존의 진단 방법을 응용하여 진단에 사용하는 기법들이 있습니다. 진단명을 기준으로 볼 때 안티바이러스의 진단 중 'Heur', 'generic' 등이 명칭이 포함된 경우를 종종 볼 수 있는데, 이러한 진단명을 가진 진단은 이른바 Heuristic Detection(의심진단)이라고 불립니다.

이번 글에서는 의심 진단 중에서도 서명 기반 의심 진단(Signature Heuristic Detecion)에 대해서 살펴보고, 국내외 제품에서 볼 수 있는 의심 진단명을 살펴보겠습니다.

뭉뚱그려서 정식 진단/의심 진단이라고 나뉘었지만, 실제로 사용되는 각종 분석 및 진단 방법은 매우 다양합니다. 이 글에서는 다만 정식 진단과 의심 진단의 차이점과 의심 진단에 대한 간략한 정보만을 살펴보는 것이 목적입니다.

1. 시그니처 휴리스틱(Signiture Heuristic)이란?


1-1 휴리스틱(Heuristic)의 정의

Heuristic에 대한 정의를 위키에서는 아래와 같이 정의합니다.

 Heuristic or heuristics refers to experience-based techniques for problem solving, learning, and discovery. Heuristic methods are used to come to an optimal solution as rapidly as possible. Part of this method is using a "rule of thumb", an educated guess, an intuitive judgment, or common sense. A heuristic is a general way of solving a problem.

휴리스틱에 대한 것이라기 보다는 휴리스틱 방법론에 대한 정의라할 수 있는데 여기서 중요한 부분은 "experience-based techniques"으로 결국 휴리스틱은 어떤 경험에 기반하여 문제를 해결하는 것이라 할 수 있습니다.

위의 정의를 기반해서 살펴보면 보안 제품에서 의미하는 휴리스틱은 지금까지 발견된 악성코드를 기반하여, 앞으로 나타날 악성코드를 미리 예측하여 발견하는 것이라 할 수 있겠습니다. 일반적으로 휴리스틱 진단은 아직 보안 업체의 분석 전문가가 분석하여 정식으로 DB에 추가한 것이 아닌, 다양한 조건에 따라 미리 예측하여 악성코드로 의심되는 객체를 진단 방법을 말합니다.

이러한 휴리스틱 진단은 진단 시점에 따라 크게 두 가지로 나뉠 수 있습니다.

"악성코드가 실행되기 전에 진단(서명 기반)하는가?, 실행될 때에 진단(행동 기반)하는가?" 

위와 같은 기준에 따라 서명 기반 진단이냐 행동 기반 진단이냐가 구분됩니다. 이 글에서 살펴볼 것은 악성코드가 실행되기 전에 진단하는 바로 서명 기반 진단 즉, Signature Heuristic Detection입니다.



2-2. 시그니처 휴리스틱의 분류

시그니쳐 휴리스틱(Signature Heuristic Detection) 진단은 "서명기반 의심 진단"으로 의역할 수 있습니다. 즉, 정확하게 분석된 DB 정보를 바탕으로 진단하는 것이 아니라 악성코드로 의심되는 특정한 조건(코드)이 존재할 때, 이를 진단하는 기법입니다.

조금 더 세부적으로 이야기해보면 서명 기반 의심 진단은 내부 진단 방식에 따라 서명 기반 진단(Signature Heuristic) 방식과 행동 기반 진단(Behavioral Heuristic) 방식으로 나뉘고, 진단 영역(또는 민감도)에 따라 "Generic" 진단과 "Heuristic (또는 Suspicious)" 진단으로 나뉩니다. 


(1) 내부 진단 방식에 따른 분류

앞서 시그니쳐 휴리스틱을 다루면서 서명 기반 진단과 행동 기반 진단으로 구분된다고 설명한 것에 의아해 하는 분들이 계실겁니다. 논란이 있을 수 있고, 개인적인 기준이라 할 수도 있으나, 최초 기준에 따라 행동 기반 진단일지라도 실행 전에 진단한다면 시그니쳐 휴리스틱으로 정의하도록 하겠습니다.

사실 여기서 행동 기반 진단으로 언급한 기술은 HIPS와 같은 실행 후 진단을 목표로 하는 행동 기반 진단 기능과는 다릅니다.


① 서명 기반 의심 진단 (Signature Heuristic Detection)

첫 번째 서명 기반 의심 진단(Signature Heuristic Detection)은 악성코드의 내부 코드를 진단하는 것으로 악성코드에 일반적으로 포함되는 패턴 또는 특정 코드를 가지고 진단하는 방식입니다. 간단하게 예를 들면 어떤 파일내에 1번, 2번, 3번...10번 코드가 있다고 가정할 때, 악성코드에서 주로 1번 코드가 발견된다면, 휴리스틱 엔진이나 시그니처 DB에 1번 코드를 추가해서 앞으로 특정 파일이 1번 코드를 포함하고 있을 경우에 진단하는 방식입니다. 일반적으로 "Generic/Heuristic Signature Detection"이나 "File Analysis" 같은 기법들을 의미합니다.

내부의 특정 코드 또는 패턴들을 가지고 진단하는 방식이기 때문에 정상 파일이 악성코드와 유사한 코드를 가진 경우 이를 진단하게되는 오진의 위험성이 있습니다. 따라서 악성코드 내부의 특정 코드를 정상 파일의 코드와 얼마나 정확하게 분류/분석하여 반영할 수 있느냐가 이 기능의 핵심이자 업체의 기술력을 보여주는 한 가지 지표입니다.

서명 기반 의심 진단 기능이 뛰어난 대표적인 업체는 NOD32로 유명한 ESET과 AVIRA 등이 있습니다. 또한 최근들어 국내에서도 안랩의 V3(DNA 스캔) 등에 다양하고 많은 수의 의심 진단 패턴이 포함되기 시작하였습니다. V3의 경우 과거에는 매우 제한적으로만 진단이 가능해서 휴리스틱이라 부르기 다소 부족했었던 것이 사실입니다.


②행동 기반 의심 진단(Behavirol Heuristic Detetion)

Norman(SandBox)과 Bitdefender(B-HAVE)의 일부 의심 진단 기능이 이에 속합니다.

위 두 제품의 행동 기반 의심 진단(Behavirol Heuristic Detetion)은 가상 환경에서 파일을 실행 후, 행동을 분석하여 악성코드 여부를 판단하는 방식입니다. 예를 들어 다른 파일 및 레지스트리에 접근/수정, 외부 네트워크와 연결을 시도 및 정보 전달, 특정 파일의 생성 및 다운로드 등의 행위처럼 악성코드가 주로 하는 행위를 할 경우 이를 진단하는 방식입니다. 이를 보통 "File Emulation" 기법이라고 말합니다.

이 기술은 나중에 다룰 행동 기반 진단 기능인 Behavioral Blocker 기술과 상당히 유사합니다. 다만 차이점이 수동 검사(On-damand)에도 적용이 될 수 있다는 점입니다. 즉, "사용자가 직접 실행하지 않은 파일을 검사한다." 라는 점이 가장 큰 차이점입니다. 

기본적으로 노만과 비트디펜더의 행동기반 의심진단은 실시간 감시와 수동 검사에 모두 사용될 수 있습니다. 여기서 의미하는 실시간 감시나 수동 검사는 안티바이러스의 일반적인 검사 방식과 방식상 동일합니다. 예를 들어 사용자가 특정 파일을 실행시키지 않고, 접근만 하여도 실시간 감시 검사 모듈에서 검사가 가능합니다. 

이와 달리 HIPS와 Behavioral Blocker 등의 행동 기반 진단 방식은 반드시 특정 파일이 실행되어야 작동하게 됩니다. 따라서 Behavioral Blocker와 같은 행동 기반 진단 기능이 실제 작동된 파일의 행동이 실제 사용자 시스템에 영향을 주지 않도록 관리/차단하는 것을 주요 기능으로 하는데, 비트디펜더의 B-HAVE은 실행 전 차단도 가능합니다.

이와 같이 노만과 비트디펜더의 행동기반 진단 방식은 진단 방식상 시그니처 의심 진단 방식과는 다르지만, 체감상 사용자는 시그니처 휴리스틱 진단과 동일하게 느끼게 됩니다. 이 점 때문에 논란이 있을 수 있지만 시그니처 진단 방식에 임의적으로 포함하였습니다. 

실행 전 차단이 가능하다는 점과 대부분의 안티바이러스 테스트에서도 시그니처 진단율을 측정할 때 HIPS와 Behavioral Blocker 진단은 제외하지만 SandBox와 B-HAVE같은 휴리스틱 기능은 활성화시킨다는 점 등은 이런 분류 방법에 대한 근거가 될 수 있다고 생각합니다.

참고로 HIPS 기능과 달리 노만과 비트디펜더의 행동 기반 진단 방식은 무수히 많은 파일을 빠른 시간안에 검사해야하기 때문에 가상화 공간에서 검사하는 항목이 비교적 단순하게 구성된다고 하는데, 실제로 사용자가 느끼는 퍼포먼스도 시그니처 진단 방식과 큰 차이를 느끼기 어렵습니다.
(※ 공교롭게도 노만과 비트디펜더는 매우 무겁다 평가받는 제품인데, 휴리스틱 기능만으로 이런 평가를 받는 것은 아닙니다.)

개인적으로 HIPS와 구분하기 위해 행동 기반 시그니처 진단이라고 언급할 때가 많은데, 보안 업계나 연구 단체에서 공식적으로 사용되는 명칭은 아닙니다. 



(2) 진단 영역에 따른 분류


진단 영역에 따라 Heuristic Detection을 분류해보면 Heuristic(suspicious) Detection(의심 진단)과 Generic Detection(포괄적 진단)으로 구분됩니다.

포괄적 진단은 의심 진단으로 보기에 논란이 있을 수 있습니다. 일부 제품에서는 정식 진단을 이용할 때 DB 효율성을 위해 포괄적 진단 기법을 이용하기 때문입니다. 그러나 정식 진단과 달리 포괄적 진단은 진단하려는 객체 고유의 진단 정보를 갖고 있지 않기 때문에 의심 진단에 포함된다고 할 수 있습니다.

포괄적 진단과 의심 진단은 진단명을 통해 구분이 가능하지만, 최근에는 정식진단과 포괄적 진단이 동일한 진단명을 사용하는 경우도 있어, 사용자가 진단명만 가지고 구분하기가 쉽지는 않습니다. 


① "Heuristic/suspicious  Detection"(의심 진단)

일반적으로 이야기하는 Signature Heurisitc Detection은 이것을 의미합니다. "Heuristic" 진단은 악성코드 전반에서 발견되는 특징을 종합적으로 이용하여 진단을 합니다. 따라서 포괄적 진단에 비해 진단의 범위와 목표가 넓습니다. 포괄적 진단에 비해 악성코드 진단율은 높지만, 정상 파일을 오진할 확률이 더 높습니다. 


② "Generic Detection"(포괄적 진단)

포괄적 진단은 의심 진단과 정식 진단 두 가지로 나윌 수 있습니다.

의심 진단의 경우 단순하게 이야기 해보면 "Generic"(포괄적 진단) 진단은 특정 악성코드에서 발견되는 패턴을 이용하여 변종들을 진단하는 방식입니다. 변종이라 함은 특정 악성코드와 동일한 역활을 하며 내부 코드만 약간 변조시켜 유포되는 악성코드를 의미합니다. 따라서 동일한 악성코드의 새로운 변종이 유포되었을 경우, DB에 해당 파일이 추가되지 않았더라도 이를 진단할 수 있습니다. 오진에 대해서도 비교적 안정적입니다. 다만 특정 악성코드에 대한 진단이기 때문에 진단 범위와 목표가 제한됩니다.

정식 진단의 경우 기존에 생성되어 있는 시그니처나 새롭게 생성된 시그니처를 하나의 동일한 진단명을 통해 나타내는 경우 입니다. 이 경우 의심 진단과는 연관성이 없습니다.

일반적으로 대부분의 제품은 두 가지 포괄적 진단을 모두 갖고 있습니다. 최근들어 진단 기법 및 분석의 발달되고 진단명의 단순화가 진행되면서 포괄적 진단은 상당히 광범위하게 쓰이고 있습니다.

※ 포괄적 진단은 보안 업체별로 다양한 개념이 존재합니다. 비트디펜더처럼 자동 분석된 악성코드에게 generic 진단값을 부여할 때도 있습니다.



2. 각 제품별 시그니처 휴리스틱 진단명 예시

일반적으로 Heur, Heuristic, Suspicious, Suspect, Gen, Generic등이 포함된 경우 의심진단 또는 포괄적 진단으로 보시면 됩니다. 또한 Crypted, Pack 등의 진단명은 패커 등을 포괄적으로 진단한 경우로 포괄적 진단의 한가지이며 정식 진단이 아닙니다.

여기에 적힌 의심 진단명은 전체 진단명의 일부일 뿐입니다. 이곳에 포함된 것보다 더 많은 의심 진단명이 존재합니다.

제품명

의심 진단명

진단명 예시

Antivir

휴리스틱 : Heur

제너릭 : Gen

HEUR/Malware

HEUR/HTML.Malware

TR/Crypt.ASPM.Gen

TR/Downloader.Gen

HEUR/Crypted

AVAST

Gen, SuspBehav

Win32:Malware-gen

Win32:SuspBehav-C

AVG

Heur

Win32/Heur

BitDefender

BehavesLike

BehavesLike:Win32.Malware

BehavesLike:Trojan.StartPage

CAT-QuickHeal

DNAScan

(Suspicious) - DNAScan

ClamAV

Suspect

Suspect.Trojan.generic.FD

COMODO

Heur, Suspicious

UnclassifiedMalware

Heur.Packed.Unknown

Heur.Suspicious

UnclassifiedMalware

DrWeb

origin

Trojan.PWS.Gamania.origin

Trojan.MulDrop.origin

eSafe

Suspicious

Suspicious File

F-Prot

Heuristic, Eldorado, Generic

W32/Renos.A!Generic

W32/Heuristic-210!Eldorado

F-Secure

Suspicious, Heuristic, Gen

Suspicious:W32/Malware!Gemini

Trojan:W32/Cosmu.gen!A

Other:W32/Heuristic

Gdata

AVAST, Bitdefender 와 동일

 

Kaspersky

Heur

Heur:Exploit.Script.Generic

HEUR:Trojan-Downloader.Win32.Generic

McAfee

New Malware, Artemis

New Malware.a

Artemis!EC2AA9501EE5

NOD32(Eset)

Probably

a variant of

probably a variant of Win32/Agent

probably unknown NewHeur_PE

a variant of Win32/Kryptik.HHH

Norman

Suspicious

W32/Suspicious_Gen2.Q

W32/Malware

Panda

Suspicious

Suspicious file

Pctools

HeurEngine
Generic

HeurEngine.ZeroDayThreat
HeurEngine.Packed-NsAnti
Trojan.Generic

Sophos

Behav

Mal/Behav-112

Sunbelt

BehavesLike

BehavesLike.Win32.Malware.bse

Symantec

Bloodhound

Suspicious

Bloodhound.Exploit.286

Suspicious.MH690.A
Suspicious.Graybird.1

TrendMicro

PAK, Generic

하우스콜 : Gen

Pak_Generic.001

TROJ_GEN_R47E1IH

V3

*/Win32.*

ASD.Prevention

Trojan/Win32.OnlineGameHack

Malware/Win32.Xed

ASD.Prevention

VBA32

제너릭 : MalwareScope

MalwareScope.Trojan-PSW.Game.4

 
 
 
※ 주의점

비트디펜더의 경우 Heur이나 Gen, Generic 등이 나올 경우 타 제품과 달리 자동 진단 시스템 등에 의해 분석된 항목으로 정식진단으로 취급됩니다. 그러나 상당수의 오진이 해당 진단명에서 나오므로 처리에 주의하셔야합니다.

안랩의 V3의 경우 클라우드 진단 기능인 ASD의 추가로 인해, 다양한 포괄적 진단이 생겨났습니다. 그러나 타 제품의 의심/포괄적 진단과는 다소 다르므로 포괄적 진단으로 진단된 객체에 대한 오진은 비교적 적다는 평가입니다. 진단명 뒤에 숫자가 없는 경우 포괄적 진단일 때가 많습니다.




의심 진단과 정식 진단의 큰 차이는 의심 진단은 진단되는 객체에 대한 고유의 정보를 포함하고 있지 않다는 점입니다. 일반적으로 악성코드들이 갖고 있는 특징적인 혹은 대표적인 코드를 바탕으로, 이와 유사한 패턴의 코드를 가진 경우 악성코드로 '의심'하는 것이 의심 진단의 핵심입니다.

제가 생각하기에 정식 진단과 의심 진단을 구별할 줄 알아야하는 이유는 두 진단 간에 존재하는 오진 발생율의 차이 때문이라고 봅니다. 의심 진단은 보안 업체의 분석가 또는 자동 진단 시스템에서 직접 객체를 분석하여 진단값이 나온 것이 아닙니다. 매우 다양한 방법을 통해 악성코드로 의심되는 여러 '패턴'을 포착하여 진단하는 진단입니다. 따라서 정식 진단과 달리 정상 파일을 오진할 가능성이 높습니다.

오진의 나쁜 예


최근에는 외국 제품들의 국내 진출 혹은 한글어 버전의 출시로 인해 외국 제품의 사용자 수가 상당히 많이 늘어났습니다. 국내 제품들도 최근에는 의심 진단 기능이 강화되었지만, 외국 제품의 경우 강력한 의심 진단이 양날의 검이 되어 사용자 시스템에 문제를 발생시키는 경우가 종종 있습니다.

의심 진단은 국내외 제품을 막론하고 기본적으로 포함되어진 기능입니다. 사용자가 안티 바이러스에서 진단된 파일이 정식/의심 진단인지를 알 수 있다면 오진으로 인해 정상 파일을 진단하여 생기는 문제를 어느 정도 피해갈 수 있다고 봅니다.

문제는 몇몇 친절한 제품들의 경우 의심 진단 여부를 알려주지만, 대부분의 제품에서는 사용자가 진단명을 통해 정식/의심 진단 여부를 직접 판별해야 한다는 점입니다. 

게다가 최근들어 각 제품별로 진단명의 다양화 또는 간소화가 진행되어 의심 진단 여부를 알아보기가 어려워 졌고, 워낙 다양한 의심 진단명들이 존재하고 있어 정식·의심 진단을 분류하기가 쉽지 않습니다. 

그렇지만 사용하는 제품에서 자주보이는 휴리스틱 진단명만 몇 개 파악해도 제품 사용에 큰 도움이 되리라 생각합니다. 


- 이상입니다.


(※ 이글은 계속 수정되어 나갑니다. 오류 알림 환영~)
반응형