Topic/Think

Virustotal Api license (Public vs Private)

glqdlt 2016. 8. 2. 09:26

#들어가는 말


Virustotal은 비단 국,외를 망론하고 보안 관련 종사자라면 한번은 들어봤거나 사용해 봤을 정도로 엄청난 영향력을 발휘하고 있는 서비스 플랫폼이다.

나 역시 이 플랫폼에서 많은 것을 얻었는 데, 보안 회사에 종사하면서 여러 프로젝트에 사용한적도 있고, 개인적인 플젝에서도 사용하고 있다.

일반적인 User의 사용환경에서는 큰 고민 없이 사용할 수 있으나, 프로젝트에 사용하기 위한 API Key의 라이센스 정책이 조금 까다롭게 되어있다.

API 사용에 대해서는 국,외 커뮤니티에서 정보 교류가 활발하지만 라이센스에 대해서는 정보를 얻기가 어렵다. 

나와 같이 정보를 얻는 데 고생하여 관련 플젝이나 공부를 하는 데에 장애가 있을 사람들을 위해 관련 포스팅을 해본다.

어디까지나 이 정보는 과거 회사에서 플젝을 위해 알아 봤던 내용으로, 최신 내용과 다소 차이가 있을 수 있다. 이 부분에 대해서는 양해를 바란다.


#Virustotal


Virustotal 은 43개 (지금은 더 추가 되어진 것으로 알고있음) 의 AV (Anti-Virus) 벤더사들의 탐지 엔진들에 검사 요청을 대행해주는 서비스이다.

검사 대상은 파일type, 확장자 불문, 그리고 Url 에 대해 검사가 가능하다. 파일의 경우 최대 128MB 크기의 파일이 검사 요청이 가능하며,

Virustotal 홈페이지를 비롯, 구글 메일 및 Virustotal API를 통해 요청이 가능하다.

2012년에 Google 에 인수 된 이후로, 국내를 비롯 전세계 보안 관련 회사에서 모르는 사람이 없을 정도로 활발히 사용되어지고 있다. 

API의 라이센스 정책은 개인 및 회사를 비롯 Free로 사용이 가능한 Public  라이센스 와 디테일한 정보 및 요청 쿼리의 제한이 없는 Private 라이센스가 있다.

최근에는 Anti-virus를 유료로 구매하지 않고, 단순히 Virustotal에 모든 탐지를 의뢰하는 형태의 응용 소프트웨어나 서비스를 몇몇 회사에서 출시하고 있는 문제가 있다.

AV사들의 영업이익 감소를 우려하여 Virustotal의 벤더들이 탈퇴 하는 등, Virustotal을 폐지해야한다는 목소리도 나오고 있다.


자세한 것은 공식 홈페이지를 참조하길 바란다.  


공식 홈페이지 https://www.virustotal.com/ko/about/about/

공식 private-api 개발,사용 규격서 https://github.com/doomedraven/VirusTotalApi 

private,public-api (ptrhon ver) Https://www.virustotal.com/ko/documentation/private-api/

 




#Public vs Private key

 

virustotal api를 사용함에 있어 Public key 와 private key 의 사용법이나, API를 통해 얻게 되는 정보에는 큰 차이 없다.

문제는 조금이지만 명확한 차이가 나는 부분으로, ‘월별 최대 검사 개수(daily/monthly quota)’ 외에 크게 ‘2가지’ 가 있다.

 

1.     각 라이선스 정책 마다 ‘1 분당 / 최대 요청 횟수의 카운트 제한(request rate)’ 이 다르다.

이 부분에 관해서는 예전에 제가 개인적으로 실험 해 본 부분이 있어 같이 설명을 해보겠다.

public key 의 경우 1분당 최대 4번의 제한이 있는 데,

이를 편법을 써서 10개의 public key 를 20초당 번갈아 가면서 검사 요청해본 적이 있다.

일시적으로 private key 처럼 무제한 사용이 가능했지만 몇 분 지나지 않아 Id와 ip를 일시적으로 블록 당했다.

이 실험을 통해 알 수 있는 점은 분당 최대 요청은 ‘같은 조건의 검색이든 다른 검색이든, 혹은 분석 요청이든 구분 없이 단순하게 virustotal api 서버에 최초 api접속 이후의 1분 동안 요청이 온 count 개수로 확인한다는 점을 알 수 있다.

즉, User가 직접 virustotal 홈페이지에 검색하는 것과는 달리 api에서의 검색하는 측정 방식에는 차이가 있다.

private key 에서도 위와 같은 사항이 적용되고, 각 라이선스 정책 구간 마다 분당 요청 개수(request rate)가 다른 것으로 알고 있고,

Private key의 횟수에 관한 정보는 virustotal 이나 관련 퍼블리셔의 견적서에서 확인이 가능한 것으로 안다. 

 

이 외에도 virustotal의 분석 서버에 요청 대기 순서가 public key 요청보다는 private key 가 최우선으로 검사요청이 되어진다.

이는 정보 결과에 대한 조회 요청에서는 큰 차이 없던 것으로 기억하나, 직접적인 검사 요청에 대해선 시간적 차이가 나는 것을 확인 할 수 있는 데,

예를 들어 개인적으로 갖고 있는 파일에 대해 검사 요청을 한다고 하면 public에 비해 private 는 빠르게 결과를 받아 볼 수 있다.

 

2.     두번째로 질적인 측면에서 정보 제공이 조금 다르다. 

      대부분의 정보제공은 public, private 큰 차이 없지만, 메타데이터의 제공에서 차이를 보인다.

 

*결과에 대한 메타데이터 : 제출 날짜와, 파일의 최초 발견 송신자의 정보, 해당 sample의 이슈 트랙킹 (어디서 발견되고 변종에 관한 정보를 추적)

 

이슈 트래킹에 관한 이야기는 예를 들면 이러한 것이다.

url-scan 요청을 했을 때, public key의 경우 url의 tree(경유지나 배포지 등)에 관한 정보가 최대 5개 미만으로 안내 되어지고, Private key 에서는 url-tree의 개수가 최대 25개수로, 정보 제공의 깊이가 조금 다르다.

메타데이터에 관한 내용은 virustotal- api 개발 문서에서 –u, --url-scan 탭을 참고하시면 해당 내용에서 유추할 수 있다.



*yara 룰 정보 지원

 

*virustotal에서 cuckoo sandbox 를 사용한다. 조금 cutsom 된 것이지만, private 에서 이 검사 결과에 대한 모든 카테고리를 알 수 있다.

 

          

 


사용 방법에 대해서는 많은 국,외 정보가 많으니 찾아보길 바란다.

(Java 버전에 대해서는 크게 다루는 곳이 없으니 포스팅을 해볼까 싶기는 하다.)



'Topic > Think' 카테고리의 다른 글

아비투스 에 관한 생각  (0) 2016.12.07
ELK를 도입하게 된 이유  (0) 2016.10.27
스프링 탄생에 대한 잡담  (0) 2016.05.10
빅데이터 공부를 하면서  (0) 2016.04.06
Selenium 의 정책  (0) 2016.02.12