🐳 Android 检测工具一 🐳
1、VirusTotal 简介
VirusTotal 可以用于检测 files 或者 URL,并生成相应的 report。
对于 Android application 而言,VirusTotal 可以提供多达 70 个杀软 (anti-virus tool) 的检测结果及相应的 report。
2、VirusTotal 使用方式
VirusTotal 的 python 库为 vt ,官方文档为 VirusTotal API v3 reference。
在 申请 得到 VirusTotal 的 API 后,可以通过 调用 python 库 的方式使用,也可以通过 官方文档示例 的方式进行 malware detection。
本文根据官方文档示例展开介绍,共分为以下四步:
- 步骤一,获取 API key。
- 步骤二,获取 malware MD5。
- 步骤三,获取 report 所需的 URL。
- 步骤四,根据以上三者完成代码并检测。
3、步骤一
获取 API key。参考博客 Python 代码实现访问 VirusTotal,获取杀软结果 。
本文使用 VirusTotal 为 Cuckoo Sandbox 提供的 API key cuckoo vt API key ,如下所示。
a0283a2c3d55728300d064874239b5346fb991317e8449fe43c902879d******
4、步骤二
获取 malware MD5。参考博客 批量生成文件夹内所有文件 md5 。
博客作者基于 windows 命令编写了一个批量生成 MD5 值的脚本。把以下代码放入 get_md5.bat
文件中,再把 get_md5.bat
放入需要批量生成 MD5 的文件夹内。运行 get_md5.bat
文件即可得到存储当前文件夹内所有文件 MD5 值的 MD5.txt
文件。
title md5批量生成脚本-by miles
setlocal enabledelayedexpansion
%~d0
cd %~dp0
if exist 1234.txt del 1234.txt
for /R %%s in (.,*) do (
echo %%s
) >>1234.txt
if exist md5.txt del md5.txt
for /f "skip=1" %%a in (1234.txt) do certutil -hashfile %%a MD5>>md5.txt
echo md5生成完毕
5、步骤三
获取 report 所需的 URL:
- VirusTotal v2 API,
'https://www.virustotal.com/vtapi/v2/file/report?resource={}&apikey={}'.format(md5, apikey)
,参考博客 Python 代码实现访问 VirusTotal,获取杀软结果 。 - VirusTotal v3 API,
'https://www.virustotal.com/api/v3/files/{}'.format(md5)
,参考 VT api Objects ,如下图所示:
6、步骤四
根据 MD5、API key 和 URL 完成代码并检测 (生成 report)。预期生成一个 格式化 (一行) 后的 json 文件 ,这里设定为一行是为了便于接下来 使用 AVCLASS2 标注 malware family name 。
示例代码如下:
import json
import requests
# settings
apikey = "a0283a2c3d55728300d064874239b5346fb991317e8449fe43c902879d******" # cuckoo vt api key
md5 = "5e31d16d6bf35ea117d6d2c4d42ea879" # md5
url = 'https://www.virustotal.com/api/v3/files/{}'.format(md5) # url
# get report
session = requests.Session()
session.headers = {'X-Apikey': apikey}
response = session.get(url) # requests.models.Response
json_data = json.loads(response.text) # str (response.text) to dict (json_data)
# save report by json, one line show
with open('./report.json', 'w', encoding='utf-8') as f:
json.dump(json_data, f)
所得文件如下所示:
7、VirusTotal 下载 Android malware
基于 VirusTotal 下载 Android malware 可参考 Cuckoo virustotal.py 和 从 virustotal 上下载病毒样本 。