• 安全分析的几个好的工具网站的使用


    最近在工作中还是遇到了一些攻击者追查等等事情,结合自己过去做过一年的安全分析师的经验,对几款比较好的追踪溯源网站的使用做一个简介。

    一、关联神器passivetotal

    1、网址:https://community.riskiq.com/

    2、简介:常用来搜索IP、Domain、URL、whois信息、ipwhois信息等,是一个存储数量比较全面,信息量较大,而且可以和时间关联分析。实现这些维度的互查反查是很重要的一个功能。需要注册哦。

    3、截图:

    二、样本神器virustotal

    1、网址:https://www.virustotal.com/#/home/upload

    2、简介:可以查询样本在多家杀毒引擎的扫描检测结果,另外可以查询IP、url、hash,这样可以关联下载downloadurl 、恶意域名、IP,以及恶意的样本hash。(注册之后可付费,在线样本可下载)

    3、截图:

    4、自己查看vt文档写的一个apilib库

      1 #!/usr/bin/env python
      2 #-*-coding:UTF-8-*-
      3 #引入头文件
      4 import os
      5 import sys
      6 import json
      7 import urllib
      8 import urllib2
      9 import hashlib
     10 import postfile
     11 import simplejson
     12 
     13 #全局变量
     14 #APIKEY = None
     15 APIKEY = '033e1a2ae071f8800d558a968717c2674f8eb728cfb6b470d4713dd744600fb7'
     16 MYVTOBJ = None
     17 CRONTOL_BIT = 0
     18 #创建VirusTotal类
     19 class VirusTotal:
     20     def __init__(self,apikey):
     21         self.virus_dict = {}
     22         self.apikey = apikey
     23         
     24     def get_virus_dict(self):
     25         return self.virus_dict
     26         
     27     def upload_one_check_file(self,check_file):
     28         check_host = "www.virustotal.com"
     29         selector = "https://www.virustotal.com/vtapi/v2/file/scan"
     30         fields = [("apikey",self.apikey)]
     31         file_name = os.path.basename(check_file)
     32         try:
     33             file_to_check = open(check_file,'rb').read()
     34         except Exception,ex:
     35             #log.log(ex,3,1)
     36             return (-1,ex)
     37         file_struct = [("file",file_name,file_to_check)]
     38         try:
     39             result_json = postfile.post_multipart(check_host,selector,fields,file_struct)
     40         except Exception,ex:
     41             #log.log(ex,3,2)
     42             return (-1,ex)
     43         return result_json
     44         
     45     def upload_check_files(self,files_list):
     46         result_json_list = []
     47         if len(files_list) <= 0:
     48             return (-1,'files_list error')
     49         for item in files_list:
     50             ret = self.quick_check(item)
     51             result_json_list.append(ret)
     52         return result_json_list
     53         
     54     def check_file_rescan(self,scanid):
     55         url = "https://www.virustotal.com/vtapi/v2/file/rescan"
     56         scanid_string = None
     57         if type(scanid) is list:
     58             for item in scanid:
     59                 scanid_string += str(item)+','
     60             scanid_string = scanid_string[0:-1]
     61             parameters = {"resource":scanid_string,"apikey":self.apikey}
     62             try:
     63                 data = urllib.urlencode(parameters)
     64                 check_request = urllib2.Request(url,data)  
     65                 response = urllib2.urlopen(check_request)  
     66                 result_json = response.read()
     67             except Exception,ex:
     68                 ##log.log(ex,3,2)
     69                 return (-1,ex)
     70             return result_json
     71         parameters = {"resource":scanid,"apikey":self.apikey}
     72         try:
     73             data = urllib.urlencode(parameters)  
     74             check_request = urllib2.Request(url,data)  
     75             response = urllib2.urlopen(check_request)  
     76             result_json = response.read()
     77         except Exception,ex:
     78             #log.log(ex,3,2)
     79             return (-1,ex)
     80         return result_json
     81     
     82     def quick_check(self,check_file):
     83         file_md5 = None
     84         print str(check_file)
     85         with open(str(check_file),'rb') as f:
     86             file_md5 = hashlib.md5()
     87             file_md5.update(f.read())
     88             file_md5 = file_md5.hexdigest()
     89         ret = self.upload_one_check_file(check_file)
     90         if ret.find('Error 400') >= 0:
     91             ret = self.check_file_rescan(file_md5)
     92         ret = simplejson.loads(ret)
     93         return ret["sha256"]
     94 
     95     def get_report(self,scanid):
     96         url = "https://www.virustotal.com/vtapi/v2/file/report"  
     97         parameters = {"resource":scanid,"apikey":self.apikey}
     98         try:
     99             data = urllib.urlencode(parameters)  
    100             report_requset = urllib2.Request(url,data)  
    101             response = urllib2.urlopen(report_requset)  
    102             result_json = response.read()
    103         except Exception,ex:
    104             #log.log(ex,3,2)
    105             return (-1,ex)
    106         return result_json
    107 
    108     def get_report_from_designated_company(self,company,scanid):
    109         url = "https://www.virustotal.com/vtapi/v2/file/report"  
    110         parameters = {"resource":scanid,"apikey":self.apikey}
    111         try:
    112             data = urllib.urlencode(parameters)  
    113             report_request = urllib2.Request(url,data)  
    114             response = urllib2.urlopen(report_request)  
    115             result_json = response.read()    
    116             response_dict = simplejson.loads(result_json)
    117         except Exception,ex:
    118             #log.log(ex,3,2)
    119             return (-1,ex)
    120         return response_dict.get("scans",{}).get(company,{}).get("result")
    121         
    122     def url_check(self,check_url):
    123         url = "https://www.virustotal.com/vtapi/v2/url/scan"
    124         check_urls = None
    125         if type(check_url) is list:
    126             for item in check_url:
    127                 check_urls += str(item)+'
    '
    128             check_urls = check_urls[0:-1]
    129             parameters = {"url":check_urls,"apikey":self.apikey} 
    130             try:
    131                 data = urllib.urlencode(parameters)  
    132                 url_check_request = urllib2.Request(url,data)  
    133                 response = urllib2.urlopen(url_check_request)  
    134                 result_json = response.read() 
    135             except Exception,ex:
    136                 #log.log(ex,3,2)
    137                 return (-1,ex)
    138             return result_json
    139         check_urls = str(check_url)
    140         parameters = {"url":check_urls,"apikey":self.apikey}  
    141         try:
    142             data = urllib.urlencode(parameters)  
    143             url_check_request = urllib2.Request(url,data)  
    144             response = urllib2.urlopen(url_check_request)  
    145             result_json = response.read()  
    146         except Exception,ex:
    147             #log.log(ex,3,2)
    148             return (-1,ex)
    149         return result_json  
    150         
    151     def get_url_report(self,check_url):
    152         url = "https://www.virustotal.com/vtapi/v2/url/report"
    153         check_urls = None
    154         if type(check_url) is list:
    155             for item in check_url:
    156                 check_urls += str(item)+','
    157             check_urls = check_urls[0:-1]
    158             parameters = {"resource": "http://www.sohu.com","apikey":self.apikey,"scan":"1"}  
    159             try:
    160                 data = urllib.urlencode(parameters)  
    161                 url_check_request = urllib2.Request(url,data)  
    162                 response = urllib2.urlopen(url_check_request)  
    163                 result_json = response.read()
    164             except Exception,ex:
    165                 #log.log(ex,3,2)
    166                 return (-1,ex)
    167             return result_json
    168         check_urls = str(check_url)
    169         parameters = {"resource":check_urls,"apikey":self.apikey}  
    170         try:
    171             data = urllib.urlencode(parameters)  
    172             url_check_request = urllib2.Request(url,data)  
    173             response = urllib2.urlopen(url_check_request)  
    174             result_json = response.read()
    175         except Exception,ex:
    176             #log.log(ex,3,2)
    177             return (-1,ex)
    178         return result_json
    179 
    180     def get_url_report_from_designated_company(self,check_url,company):
    181         url = "https://www.virustotal.com/vtapi/v2/url/report"
    182         check_urls = str(check_url)
    183         parameters = {"resource":check_urls,"apikey":self.apikey}  
    184         try:
    185             data = urllib.urlencode(parameters)  
    186             url_check_request = urllib2.Request(url,data)  
    187             response = urllib2.urlopen(url_check_request)  
    188             result_json = response.read()
    189         except Exception,ex:
    190             #log.log(ex,3,2)
    191             return (-1,ex)
    192         response_dict = simplejson.loads(result_json)  
    193         return response_dict.get('scans',{}).get(company).get('result')
    194     
    195     def ip_check(self,ip):
    196         url = 'https://www.virustotal.com/vtapi/v2/ip-address/report'  
    197         parameters = {'ip':ip,'apikey':self.apikey}  
    198         try:
    199             response = urllib.urlopen('%s?%s'%(url,urllib.urlencode(parameters))).read()  
    200             response_dict = json.loads(response)
    201         except Exception,ex:
    202             #log.log(ex,3,2)
    203             return (-1,ex)
    204         return response_dict 
    205         
    206     def domain_check(self,domain):
    207         url = 'https://www.virustotal.com/vtapi/v2/domain/report'  
    208         parameters = {'domain':domain,'apikey':self.apikey}
    209         try:
    210             response = urllib.urlopen('%s?%s'%(url,urllib.urlencode(parameters))).read()  
    211             response_dict = json.loads(response)  
    212         except Exception,ex:
    213             #log.log(ex,3,2)
    214             return (-1,ex)
    215         return  response_dict 
    216 
    217 
    218 #快速使用函数
    219 def vtocq():
    220     global APIKEY
    221     global MYVTOBJ
    222     global CRONTOL_BIT
    223     if CRONTOL_BIT != 0:
    224         return ('-2','ERROR')
    225     if APIKEY != None:
    226         MYVTOBJ = VirusTotal(APIKEY)
    227     else:
    228         return ('-1','APIKEY information set error!')
    229     CRONTOL_BIT = 1
    230     return MYVTOBJ
    231     
    232 def fcq(file_check,hash_sha1):
    233     global MYVTOBJ
    234     ret = MYVTOBJ.quick_check(file_check)
    235     ret = MYVTOBJ.get_report(hash_sha1) 
    236     ret = simplejson.loads(ret)
    237     vtnumber = ret['positives']
    238     av_macfee = ret['scans']['McAfee']['result']
    239     av_bkav = ret['scans']['Bkav']['result']
    240     av_360 = ret['scans']['Qihoo-360']['result']
    241     ret = { 
    242         "vtnumber":vtnumber,
    243         "av_360":av_360,
    244         "av_bkav":av_bkav,
    245         "av_macfee":av_macfee
    246     }
    247     return ret
    248     
    249 def vt_check(filecheck,hash_sha1):
    250     vtocq()
    251     ret = fcq(filecheck,hash_sha1)
    252     print ret
    253     return ret
    254     
    255 #vt_check('C://PuTTY//plink.exe')
    256 MYVTOBJ = VirusTotal(APIKEY)
    257 print MYVTOBJ.domain_check("lx.com")

    三、其他工具:

    1、站长之家--站长工具:做一些域名、IP、注册邮箱等信息的关联查询。

    2、www.ipip.net:做一些IP地理信息查询。

  • 相关阅读:
    .NET Interop 工具集
    关于正弦波的算法
    Windows Phone 系列 本地数据存储
    Xaml cannot create an instance of “X”
    Windows Phone 系列 使用 MVVM绑定时无法获取当前值
    Windows Phone 系列 应用程序图标无法显示
    Windows Phone 系列 WPConnect无法上网的问题
    Windows Phone 系列 使用 Windows Phone 保存铃声任务
    WP7.5提交应用
    Windows Phone 系列 动态删除ObservableCollection
  • 原文地址:https://www.cnblogs.com/KevinGeorge/p/8289965.html
Copyright © 2020-2023  润新知