ClamAV to Yara

Yara 규칙을 생성하는 방법 중 하나가 바로 ClamAV를 이용하는 것이다. ClamAV는 리눅스계열의 Anti-Virus Freeware로, 악성코드를 탐지하는데 사용할 수 있다. Yara가 직접 규칙을 생성해야하는 것에 반해, ClamAV는 통합적인 DB를 통해 악성코드에 관한 DB를 가지고 있다. Yara는 이러한 DB를 통해 규칙을 생성할 수가 있으며, 따라서 이에 대하여 어떻게 진행해야 하는지 알아보자.


우선 실습을 위해 ClamAV를 설치해보자. 실습에 사용된 리눅스는 Ubuntu로 apt-get 명령어를 통해 쉽게 설치할 수 있다. 아래의 명령어를 통해 ClamAVㄹ르 설치하자.

$ apt -get install clamav

ClamAV가 설치된 후 악성코드 정의를 업데이트 해야한다. 이에 대한 명령어는 다음과 같다.

$ freshclam

이렇게 악성코드에 대한 정의를 업데이트 하였다면 DB 파일을 찾아야 한다. 필자의 경우 /var/lib/clamav에 해당 파일이 존재하고 있으며, 여기서 main.cvd 파일을 찾은 다음 sigtool 명령어를 사용하여 압축을 풀어야 한다.

$ sigtool --unpack main.cvd

압축을 해제하면 main.*의 여러 파일이 생성된다. 여기서 main.ndb가 바로 변환할 파일이다. 변환을 할 때 필요한 코드는 Clamav_to_yara.py로 해당 코드를 실행하여 변환을 진행하자. 

$ Python clamav_to_yara.py -f main.ndb -o clamav_yara.yar


생성된 규칙을 Yara를 실행하거나 Yara-Python을 사용할 수 있다. 필자의 경우 Yara-Python를 사용하기 위해 만든 코드를 통해 실행하였다. 결과는 아래와 같다.

> Python -r clamav_yara.yar -d C:\mal_samples
[+] File : 15.exe, Matched : [Trojan_Spy_Zbot_436, Trojan_Peed_478
[+] File : 16.exe, Matched : [W32_Troxa]
[+] File : 17.exe, Matched : [Trojan_Downloader_Banload_39, Trojan_Spy_Zbot_436]

이렇게 올바른 결과가 출력되는 것을 확인할 수 있다. 하지만 ClamAV를 통해 규칙을 변환하였다해도 최신 악성코드 등에 대해서는 규칙이 지정되어 있지 않다는 것을 유의하자.


PEiD to Yara

PEiD는 리버싱을 해본 사람들이면 한번쯤 들어보았을 도구로, 본격적인 분석을 하기 전에 어떠한 방식으로 패킹이 되어있는지, 어떠한 언어를 통해 제작되었는지 확인할 수 있게 도와준다. Yara는 바로 이 PEiD의 DB를 통해서도 규칙을 생성할 수 있다. 이러한 방법에 대하여 알아보자. 우선 PEiD DB와 PEiD_to_Yara.py를 다운받고, PEiD_to_yara.py를 다음과 같이 실행하자.

> Python peid_to_yara.py -o peid_yara.yar peid_db.txt

출력된 결과물인 peid_yara.yar 규칙을 yara를 통해 실행한 결과는 다음과 같다. 위에서 ClamAV를 통해 생성한 규칙과는 다른 결과를 보여주고 있다. ClamAV가 어떠한 종류의 악성코드인지 확인하는 것이라면 PEiD는 어떠한 언어나, 패킹이 되었는지 확인하는데 사용할 수 있다.

> Python yara_class.py -r peid_yara.yar -d C:\mal_samples

[+] File : 05.exe, Matched : [UPX_v0_89_6, UPX]
[+] File : 15.exe, Matched : [Borland_Delphi_3]
[+] File : 16.exe, Matched : [MingWin32, dUP_v2_x_Patcher, Dev]
[+] File : 17.exe, Matched : [BobSoft_Mini_Delphi]
이와 같이 용도에 맞게 이미 생성되어 있는 DB를 통해 Yara 규칙을 생성할 수 있다. 이는 규칙 생성에 대해 어려움을 느끼는 입문자들에게는 어떻게 생성되었는지 확인할 수 있는 좋은 참고 자료가 될 수 있다.


Reference


http://www.cmsfactory.net/node/10407

http://resources.infosecinstitute.com/open-source-antivirus-clamav/

http://resources.infosecinstitute.com/malware-analysis-clamav-yara/

https://github.com/jvoisin/yara_rules/blob/master/peid_to_yara.py

https://isc.sans.edu/forums/diary/From+PEiD+To+YARA/19473/

http://handlers.sans.org/jclausing/userdb.txt



'Reversing > Theory' 카테고리의 다른 글

C기본 문법 어셈블리 변환  (5) 2016.03.20
Visual Studio 메인함수 찾기  (1) 2016.03.16
Yara 규칙 제작 & Python  (1) 2016.03.07
Yara를 사용해보자  (0) 2016.03.06
악성코드 분류  (0) 2016.03.03