工具学习_VirusTotal使用

VirusTotal Intelligence 允许用户在其庞大的数据集中进行搜索,以查找符合特定条件的文件,例如哈希值、杀毒引擎检测结果、元数据信息、提交时的文件名、文件结构特征、文件大小等。可以说,它几乎是恶意软件领域的"谷歌搜索引擎"。

网页使用

通过哈希值检索文件:要搜索具有特定 MD5、SHA1 或 SHA256 值的文件,只需在主搜索框中输入相应的哈希值即可。例如,若要查找 SHA256 为

复制代码
142b638c6a60b60c7f9928da4fb85a5a8e1422a9ffdc9ee49e17e56ccca9cf6e 

的文件,只需输入该哈希值进行搜索,搜索结果如下所示。

通过运算符搜索文件 :该查询语言支持一些布尔运算符,并允许使用括号将查询中的部分内容进行分组。支持的布尔运算符包括 ANDORNOT

复制代码
# 搜索所有包含无效 XREF 表的 PDF 文件
type:pdf tag:invalid-xref
type:pdf AND tag:invalid-xref

# 搜索所有 DLL 文件或可执行文件(EXE) 
type:pedll OR type:peexe

# 搜索至少被一个杀毒软件识别为"zbot"家族
# 但没有被标记为"corrupt"(即不是损坏文件,能够在真实系统中运行)
engines:zbot NOT tag:corrupt

# 搜索所有属于 Zbot、Dyreza 或 Dridex 家族
# 且文件未损坏的可执行银行木马样本
(engines:zbot OR engines:sinowal) NOT (tag:corrupt)

API使用

通过API上传文件:实现该功能需要补充 api_key 与所上传文件对应的位置,其python实现如下所示:

复制代码
import requests

url = "https://www.virustotal.com/api/v3/files"
api_key = ""  

headers = {
    "x-apikey": api_key
}

# 要上传的文件路径
file_path = "./142b638c6a60b60c7f9928da4fb85a5a8e1422a9ffdc9ee49e17e56ccca9cf6e"

proxies = {
    "http": "http://127.0.0.1:7890",
    "https": "http://127.0.0.1:7890"
}

with open(file_path, "rb") as f:
    files = {
        "file": f
    }
    response = requests.post(url, headers=headers, files=files, proxies=proxies)

print(response.status_code)
print(response.json())

通过API分析上传的文件:实现该功能需要补充 api_key 与上一步返回的样本 id,其python实现如下所示:

复制代码
import requests

url = "https://www.virustotal.com/api/v3/analyses/MTI2MDJkZTY2NTlhMzU2MTQxZTc0NGJmNTY5ZTdlNTY6MTc0NzEyMzQ1MQ=="
api_key = ""  

headers = {
    "accept": "application/json",
    "x-apikey": api_key
}

proxies = {
    "http": "http://127.0.0.1:7890",
    "https": "http://127.0.0.1:7890"
}


response = requests.get(url, headers=headers, proxies=proxies)

print(response.status_code)
print(response.json())

通过API获取样本的报告:实现该功能需要补充 api_key 与样本的哈希,其python实现如下所示:

复制代码
import pdb
import json
import requests

url = "https://www.virustotal.com/api/v3/files/142b638c6a60b60c7f9928da4fb85a5a8e1422a9ffdc9ee49e17e56ccca9cf6e"
api_key = ""

headers = {
    "accept": "application/json",
    "x-apikey": api_key
}

proxies = {
    "http": "http://127.0.0.1:7890",
    "https": "http://127.0.0.1:7890"
}


response = requests.get(url, headers=headers, proxies=proxies)

print(response.status_code)
print(response.json())

if response.status_code == 200:
    try:
        response_data = response.json()  # 获取JSON数据
        # 将返回的JSON内容保存到文件
        with open('sample_report.json', 'w', encoding='utf-8') as json_file:
            json.dump(response_data, json_file, ensure_ascii=False, indent=4)
        print("响应内容已保存到 'virustotal_response.json'")
    except ValueError:
        print("返回的内容不是有效的 JSON 格式")
else:
    print(f"请求失败,状态码:{response.status_code}")
相关推荐
M78佐菲5 小时前
ARM学习笔记(1)
linux·arm开发·笔记·嵌入式硬件·学习
无敌贵点大王7 小时前
RTThread学习记录11——RT-Thread 设备模型吃透:UART/ADC/PWM/PIN 到底有什么区别?
c语言·stm32·学习·链表
是翎9 小时前
深度长文|2026产品经理AI实践手册
人工智能·深度学习·学习·自然语言处理·数据挖掘
Linux-lucky9 小时前
32-38-Linux学习之旅之MySQL综合
linux·运维·学习·mysql·ubuntu
知识分享小能手10 小时前
C++ 学习教程,从入门到精通,C++ 入门知识 — 完整知识点(1)
开发语言·c++·学习
AI职业加油站13 小时前
数据要素价值释放年:大数据治理工程师,站上职业新风口
人工智能·学习·职场和发展·数据分析·职场发展
啄缘之间13 小时前
1.【SVA】什么是SVA?
经验分享·学习·测试用例·verilog·sva
sunoo-22914 小时前
【嵌入式裸机开发Day04】i.MX6ULL 蜂鸣器驱动详解:从引脚地址查找到代码实现全流程
arm开发·单片机·嵌入式硬件·学习·串口·裸机
Purple Coder14 小时前
stm32
学习
边境悍匪14 小时前
蜗牛学苑 Java 智能体学习 Day45|Knife4j+SpringBoot3、书城项目整合 MyBatis 思维导图复盘
java·开发语言·vue.js·学习·spring