comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

File and Process VT Checker

  • 1 Respuestas
  • 1977 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Sanko

  • *
  • Underc0der
  • Mensajes: 541
  • Actividad:
    0%
  • Reputación 0
  • ¿Puedes?
    • Ver Perfil
    • Underc0de
« en: Abril 11, 2013, 12:21:29 pm »
Bueno, esta semana podría decirse que me la tome de descanso y tube un rato para poder escribir algún script que no tenga que ver con ninguna de los proyectos que tengo activos y coincidio que revisando udtools me tome con un post de FQV en el que posteaba un programa que buscaba el hash de tu archivo en virustotal para comprobar si alguien lo habia subido o no y tambien buscaba los hash de los procesos activos en tu winbug para comprobar si tenias algún ejecutable previamente subido en VT ejecutandose en tu máquina.

Como era de esperar , el source no estaba y como sentí curiosidad por la Public API de VT me decidí a hacer ambos scripts y que ideas como estas puedan prosperar tomando una base y no perder el tiempo codeando todo desde 0.
PD: Iva a esperar a hacer otro script más para publicar los 3 pero surgierón imprevistos y debo volver al "trabajo" así que solamente subo el file checker y el process checker.

VT File Checker :

Código: Python
  1. # -*- coding: utf-8 *-*
  2. #It's a simple script to search the hash of the file in VirusTotal
  3. #and check if your file has been uploaded to VT
  4. #Sanko
  5.  
  6. import urllib, urllib2, hashlib, sys
  7. import simplejson as json
  8.  
  9. class VT_File_Checker():
  10.  
  11.     def __init__(self, apikey, sFileName):
  12.         self.apikey = apikey
  13.         self.sFileName = sFileName
  14.         self._ms_do()
  15.  
  16.     def _ms_do(self):
  17.         try:
  18.             self.__hash_extractor()
  19.             self._report_check()
  20.             self.__DataShower()
  21.         except:
  22.             print "Error, extracting the hash of the file"
  23.  
  24.     def _report_check(self):
  25.         url = "https://www.virustotal.com/vtapi/v2/file/report"
  26.         parameters = {"resource": self.md5.hexdigest(), "apikey": self.apikey}
  27.         data = urllib.urlencode(parameters)
  28.         try:
  29.             req = urllib2.Request(url, data)
  30.             response = urllib2.urlopen(req)
  31.             re_json = response.read()
  32.         except:
  33.             print "Error connecting with the VT Api"
  34.             sys.exit(0)
  35.         #Parsing Json Data returned...
  36.         self.report = json.loads(re_json)
  37.         re_scan = self.report["scans"]
  38.         for self.av in re_scan:
  39.             self.detections = re_scan[self.av]["detected"]
  40.             self.results = re_scan[self.av]["result"]
  41.             try:
  42.                 self.__parser()
  43.             except:
  44.                 print "Error showing the returned data"
  45.                 sys.exit(0)
  46.  
  47.     def __parser(self):
  48.         if self.detections == True:
  49.             print "%s : %s"%(self.av, self.results)
  50.         elif self.detections == False:
  51.             print "%s : Ok"%(self.av)
  52.         else:
  53.             print "ERROR Parsing the scan results"
  54.  
  55.     def __DataShower(self):
  56.         show = """
  57. Extra Data :
  58. ------------
  59. Name : %s
  60. Scan_id : %s
  61. Scan_date : %s
  62. Permalink : %s
  63. --------------
  64. Detections : %s/%s
  65.        """
  66.         print show%(self.sFileName, self.report["scan_id"], self.report["scan_date"],
  67.         self.report["permalink"], self.report["positives"], self.report["total"])
  68.  
  69.  
  70.     def __hash_extractor(self):
  71.         #opening sFileName
  72.         sFile = open(self.sFileName, 'rb')
  73.         self.md5 = hashlib.md5()
  74.         while True:
  75.             data = sFile.read(8192)
  76.             if not data:
  77.                 break
  78.             self.md5.update(data)
  79.         #self.sha1 = hashlib.sha1()
  80.         #self.sha256 = hashlib.sha256()
  81.  
  82.  
  83. VT_File_Checker('Aqui la key api', 'aquituejecutable.exe')

Imágen(Working):




VT Process Checker :

Código: Python
  1. # -*- coding: utf-8 *-*
  2. #It's a simple script to search the hash of the active processes in VirusTotal
  3. #and check if your active processes are uploaded in VT or not
  4. #Sanko
  5.  
  6. import urllib, urllib2, hashlib, sys, wmi
  7. import simplejson as json
  8.  
  9. class VT_Process_Checker():
  10.  
  11.     def __init__(self, apikey, sFileName):
  12.         self.apikey = apikey
  13.         self.sFileName = sFileName
  14.         self._ms_do()
  15.  
  16.     def _ms_do(self):
  17.         try:
  18.             self.__hash_extractor()
  19.             self._process_report()
  20.             self.__DataShower()
  21.         except:
  22.             pass
  23.     def _process_report(self):
  24.         url = "https://www.virustotal.com/vtapi/v2/file/report"
  25.         parameters = {"resource": self.md5.hexdigest(), "apikey": self.apikey}
  26.         data = urllib.urlencode(parameters)
  27.         try:
  28.             req = urllib2.Request(url, data)
  29.             response = urllib2.urlopen(req)
  30.             re_json = response.read()
  31.         except:
  32.             print "Error connecting with the VT Api"
  33.             sys.exit(0)
  34.         #Parsing Json Data returned...
  35.         self.report = json.loads(re_json)
  36.  
  37.     def __DataShower(self):
  38.         data = """
  39. ---------------------
  40. Name : %s
  41. MD5 Hash : %s
  42. Scan_date : %s
  43. Detections : %s/%s
  44.  
  45. Permanent Link : %s
  46. ---------------------
  47.        """
  48.         print data%(self.sFileName, self.report["md5"], self.report["scan_date"],
  49.         self.report["positives"], self.report["total"], self.report["permalink"])
  50.  
  51.     def __hash_extractor(self):
  52.         #opening sFileName
  53.         sFile = open(self.sFileName, 'rb')
  54.         self.md5 = hashlib.md5()
  55.         while True:
  56.             data = sFile.read(8192)
  57.             if not data:
  58.                 break
  59.             self.md5.update(data)
  60.         #self.sha1 = hashlib.sha1()
  61.         #self.sha256 = hashlib.sha256()
  62.  
  63. c = wmi.WMI()
  64. for process in c.Win32_Process ():
  65.     if process.executablepath == None:
  66.         continue
  67.         #Into my virtual machine some process have None value
  68.     else:
  69.         try:
  70.             VT_Process_Checker('Aqui tu api', process.executablepath)
  71.         except:
  72.             continue

Imágen(Working):


Saludos !  :drinking:
Sigueme en Twitter : @Sankosk
Estos nuevos staff no tienen puta idea XD

Desconectado Once

  • *
  • Underc0der
  • Mensajes: 391
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • El blog de Once
  • Twitter: @don_once
« Respuesta #1 en: Abril 12, 2013, 11:59:09 am »
Muy bueno brother, debería ser muy útil, menos mal no uso winbugs.

Sólo una cosa, no es necesario comparar en esta parte:

Código: Python
  1. if self.detections == True:

Lo puedes dejar sólo con:

Código: Python
  1. if self.detections:

Ya que self.detections sería true

Saludos!







No tienes permisos para ver links. Registrate o Entra con tu cuenta

 

¿Te gustó el post? COMPARTILO!



[Código-Python] If file exists Python puro - JaAViEr

Iniciado por JaAViEr

Respuestas: 5
Vistas: 1797
Último mensaje Agosto 21, 2011, 09:29:56 pm
por blozzter
File-Sorter

Iniciado por ZanGetsu

Respuestas: 0
Vistas: 975
Último mensaje Julio 19, 2017, 08:04:55 pm
por ZanGetsu
File Watcher

Iniciado por Once

Respuestas: 1
Vistas: 2037
Último mensaje Mayo 23, 2014, 04:14:46 am
por morodog