Jump to content
Sign in to follow this  
여우귀성애자

악성코드 분석 시, Signature-Based analysis 방식의 한계점

Recommended Posts

저는 윈도우, 리눅스 단에서 돌아가는 백신을 손수 만들어본 사람입니다.

당연히 언어는 Python으로 구현했었구요.

다름이 아니라 악성코드의 시그니처를 기반으로 분석하는 anti-virus 프로그램의 한계점을 토론해보자 합니다.

 

기본적으로 모든 파일들은 고유의 md5 값을 소지하고 있습니다.

일부 변경 사항이 생기면, 당연히 변하는 그 값이죠.

 

기본적으로 안티 바이러스 프로그램은 파일의 md5 값을 구하여, 각 회사가 보유하고 있는 암호화된 Malware DB와 비교하는 비교작업을 하게 됩니다.

다만 이런 작업은 상당히 위험한 작업입니다.

암호화나 해시에 대해서 조금이라도 공부하신 분은 당연히 알고 있는 부분이죠.

 

주로 오픈소스 프로그램을 제공하는 회사나 단체에서 사용하는 방법인데, 제공하는 파일의 무결성 검증을 위하여 초기에 뽑아낸 md5 hash값을 파일 다운로드 사이트에 같이 업로드를 하는 것입니다.

사용자가 파일을 다운로드 받고, 해당 파일이 위변조 되었는지 유무를 판단하기 위해서는, 다운로드 받은 파일의 md5 hash값을 구하여 다운로드 페이지에서 제공된 md5 hash값과 비교하는 방식입니다.

 

 

이런 방식은 안티 바이러스 또한 이러한 원리를 응용하여 이전부터 고전적으로 사용되어 왔습니다.

 

1. 각 악성코드들의 md5 hash값을 구하여 미리 DB에 정의해두고,

2. 사용자 혹은 서버의 모든 파일 또는 일부 영역의 파일을 전부 프로그램으로 가져와 md5 hash를 구한 뒤,

3. 사용자의 서버 혹은 컴퓨터에 있는 파일의 md5해시값과 안티바이러스 회사가 보유한 악성코드 DB의 값중 동일(==)한 것이 있는지 탐지하는 방식입니다.

 

이렇다보니, 악성코드에 잔여물이 끼게 되면 안티바이러스 프로그램이 탐지를 못하는 말도 안되는 상황이 도래하기도 하는데요.

이를 방지하기 위한 방법에 대해서는 기본적으로 2가지 방식이 존재합니다.

 

1. 새로운 악성코드가 발견 될 때마다 혹은 안티바이러스 회사가 항시 악성코드를 검색하고 수집하여 분석하고 Malware DB에 업데이트 하는 형식

2. 사용자의 시스템에서 악성코드로 의심되는 파일(기존 DB에 정의되지 않은 파일; 정상파일,악성파일 포함)을 안티바이러스 서버에 업로드하고 분석하여 업데이트 하는 형식

 

다만, 위 2가지 방식에는 각자 장단점이 있습니다.

 

1번 방식

- 한줄 특징 : 수동적 대응 방식

- 장점 : 정확도가 높다. 악성코드 데이터가 비교적 적다. 비교적 신뢰적이다.

- 단점 : 회사 인력에 제한이 있기 때문에 분석률에 제한이 있다. 변종 악성코드에 대한 대응이 늦다(회사 분석률, 검색률, 수집률에 비례함; 다만 기본적으로 늦다), 젼나 귀찮다.

 

2번 방식

- 한줄 특징 : 능동적 대응 방식

- 장점 : 대응이 빠르다. 귀찮지 않다. 인력 소모가 적다. 상당히 정확한 탐지율을 보장할 수 있다.

- 단점 : 악성코드 뿐만 아니라 정상파일 또한 분석하여 DB에 넣어야함. 정상파일도 포함되다 보니 정상파일, 악성파일의 대한 정보를 구별하는 또 하나의 구분점이 필요함.  오버헤드가 발생함.

 

2번 방식이 새로운 방식인데요, 처음 고안한 곳이 다른 나라도 아닌 한국입니다. (Ahnlab)

안랩이 V3에 새로운 기법을 적용했죠. ASD기법이라고 하는 기술인데, (Ahnlab Smart Detection)

의심스러운 파일을 자동으로 서버로 전송하여 분석하고, 악성파일을 yara Generator와 유사한 분석 도구로 분석하여 악성코드의 핵심;악성코드 DNA Map을 제작합니다.

제작한 DNA 지도를 응용하여 신종, 변종 악성코드 또한 탐지해낼 수 있게 되는 것이죠.

 

 

일반적으로 Signature-Based Malware Detection은 이러한 장단점을 가지고 있습니다.

제가 알고 있는 한계점은 이렇습니다. 다른 한계점이 있다면 맘껏 토론해주시면 감사하겠습니다.

  • Like 3

Share this post


Link to post
Share on other sites

시그니처 데이터베이스 분석의 한계를 넘기위해서  동적분석이 있는것이죠.
요즘 악성코드들은 동적분석을 피하기위해서 Windows기본 Script들을 이용하기 시작했는데,
이를 알게 된 백신회사들은 이를 차단하는 방법을 연구하기 시작했습니다.
그 예시로 powershell의 명령을 이용한  HTTP Download를 V3 VACCINE이 DETECT합니다.

  • Thanks 1

Share this post


Link to post
Share on other sites

파이썬으로 구현하신 백신이라고 하니까 키콤백신이 아닐가 예상해봅니다

해쉬값만으로 악성파일의 동일유무를 판단하는건 스스로 복제/변형을 하는 바이러스에 대해서 검사하기는 불가능하다고 할수있죠

시그니처 분석에는 해쉬값비교뿐만 아니라 코드영역에 대해서 함수 분할 비교 방법도 존재합니다

push ebp

mov ebp, esp 

라는 오피코드가 나온다면 디스어셈블러는 이를 함수의 시작부분으로 판단하고 함수를 분석하게 됩니다.

악성코드에서 특정 행위를 하는 부분의 오피코드를 추출하고, 그를 이용하여 비교하는 방법도 시그니쳐기반 탐지에 포함될 수 있습니다

이러한 악성코드 탐지 기법에 대해서 다룬 논문은 상당히 많이 있습니다

http://www.dbpia.co.kr/Journal/ArticleDetail/NODE06283588

 

Share this post


Link to post
Share on other sites
Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×

Important Information

I have read and accept the above terms.