본문으로 바로가기

vt-tool - Find the name of the evil

category Information Security 2015.01.18 23:50


1. 개요


부제인 "Find the name of the evil"에서 볼 수 있듯이 악성코드 이름을 토대로 통계를 내는데 사용하는 도구이다.


2. 설치


설치는 도구 가이드에서 제공하는 라이브러리와 패키지를 설치한다.

sudo apt-get -y install python-numpy python-scipy python-levenshtein python-pip


  • numpy : 통계학에 주로 사용되는 파이썬 라이브러리
  • scipy : 이 라이브러리는 수학, 과학, 엔지니어링 분야에서 사용하는 라이브러리이자 생태계를 총칭
  • levenshtein : 문자열에서 문자간 거리, 유사도 등을 측정하기 위해 사용하는 라이브러리
  • pip : 파이썬 전용 라이브러리 저장소를 이용하기 위한 패키지


추가로 설치하는 파이썬 라이브러리들이다.

sudo pip install requests fuzzywuzzy scikit-learn


  • requests : HTTP 라이브러리
  • fuzzywuzzy : Fuzzy 문자열 탐지 라이브러리
  • scikit-learn : 기계 학습과 데이터 마이닝을 위한 라이브러리


테스트 하려는 도구를 다운로드한다.

wget https://malware-crawler.googlecode.com/svn/MalwareCrawler/src/tools/vtTool.py


3. 구동


다운로드 받은 vtTool.py를 -h 옵션과 함께 구동한다. 도움말을 보면 -hash 또는 --hashlist 뒤에 해시값을 나열하거나 CSV에 저장된 해시값들을 받을 수 있다. --cluster 옵션은 악성 코드 이름을 통해 추출하는 어휘를 클러스터링하는 작업을 수행한다.


클러스터링(Clustering)

여기서 말하는 클러스터링은 데이터 마이닝의 기법을 의미하는 것으로 군집화를 말한다. 데이터를 구체적인 특성을 가지고 그룹화 하는 것이다. 데이터 마이닝 관점에서 클러스터링을 좀 더 알고 싶다면 다음 사이트를 참고하면 된다. 

http://www.aistudy.com/pattern/clustering.htm



이 도구는 "vtTool.py --cluster -hash [sha256], [sha256], ..." 형태로 사용하거나 sha256 값이 저장된 CSV 파일을 파싱한다. 도구를 제공하는 사이트에서 예시로 사용하고 있는 두 개의 해시이다.




3.1. scanner malware classification


바이러스토탈에서 받은 결과 중 악성코드명을 추출하여 통계를 낸 결과를 출력한다.



통계를 내기위해 입력한 두 개의 해시값을 바이러스토탈에 검색해보면, 실제 trojan 문자열을 포함하는 악성코드명의 개수는 47개이다. 하지만 출력된 결과는 59개로 12개가 더 많다. tojan 단어가 아닌 줄여서 사용하는 tr, trj, troj와 같은 단어를 사용한 것으로 계산하면, 61개로 2개가 더 적다. 


이렇게 숫자에서 문제가 발생하는 이유는 매핑(Mapping)에 문제가있다. 바이러스토탈에서 볼 수 있는 악성코드 명 중에 tr로 트로이목마를 표현하는 경우가 있는데, 이 도구에서는 trtrojan으로 매핑하는 부분이 없다.


이러한 문제가 발생하는 이유는 악성코드명에 대한 학술적인 규칙은 존재하나, 국제 표준이 아닌 것으로 알고 있다.악성코드 명명 스키마에 대해 알고 싶으면 CARO에서 확인 할 수 있다. 




3.2. average detection rate


이 결과는 평균 탐지율을 말한다. 분석하기 위해 입력한 해시값, 바이러스토탈에서 제공하는 안티-바이러스 엔진 수, 그리고 탐지된 수를 의미한다. 이번 테스트에 입력한 해시값에는 안티-바이러스 엔진 수가 56개, 57개로 나눠지고 탐지 수도 44개, 45개로 나눠지는데 이들의 평균으로 출력된다.



3.3. scanner malware family determination


이 결과는 주로 사용된 특정 단어를 출력한다. 옆의 count는 해당 단어가 사용된 전체 개수를 의미한다. 이 결과가 알리는 것은 악성코드 군(family)를 쉽게 알 수 있는 점이다.



4. 결론


이 도구가 가장 큰 효과를 가지려면, 악성코드 명명이 국제 표준이 되었을때 일것 같다. 그게 아닌 이상 바이러스토탈에 새롭게 추가되는 안티-바이러스 엔진에 따라 도구가 계속 업데이트 해줘야하는 단점이 발생하게 된다. 그 외에는 수집한 악성코드들을 통계내기에 적합한 도구로 판단되며, 특히 블로그에 지속적으로 업데이트하고 있는 바이퍼(Viper)와 연동하여 운영하면 좋을 것 같다.


5. 참조




댓글을 달아 주세요

티스토리 툴바