Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
munin — 用于VirusTotal及其他服务的在线哈希检查器 | Kitploit
工具/GitHubGitHub/neo23x0/munin
OSINT (开源情报)漏洞分析哈希分析信息收集恶意软件分析威胁情报
GitHubneo23x0/munin

munin

用于VirusTotal及其他服务的在线哈希检查器

查看仓库
8521501年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Actively Maintained

root@kitploit:~
 _________   _    _   ______  _____  ______
| | | | | \ | |  | | | |  \ \  | |  | |  \ \     /.)
| | | | | | | |  | | | |  | |  | |  | |  | |    /)\|
|_| |_| |_| \_|__|_| |_|  |_| _|_|_ |_|  |_|   // /
                                              /'" "

用于 Virustotal 及其他服务的在线哈希检查器
Florian Roth

什么是 Munin?

Munin 是一个在线哈希检查工具,能从多个在线来源检索有价值的信息。

当前版本的 Munin 可查询以下服务:

  • Virustotal
  • HybridAnalysis
  • Any.Run
  • URLhaus
  • MISP
  • CAPE
  • Malshare
  • Valhalla
  • Hashlookup

截图

默认模式 - 从文件读取哈希

Munin 截图

使用方法

root@kitploit:~
usage: munin.py [-h] [-f path] [--vh search-string]
                [--vhrule search-string] [-o output] [--vtwaitquota]
                [--vtminav min-matches] [--limit hash-limit]
                [--vhmaxage days] [-c cache-db] [-i ini-file]
                [-s sample-folder] [--comment] [-p vt-comment-prefix]
                [--download] [-d download_path] [--nocache] [--nocsv]
                [--verifycert] [--sort] [--web] [-w port] [--cli]
                [--rescan] [--debug]

在线哈希检查器

可选参数:
  -h, --help            显示此帮助信息并退出
  -f path               要处理的文件(每行一个哈希,或者每行包含哈希的CSV - 自动检测位置和注释)
  --vh search-string    通过关键字、标签、YARA规则名称、Mitre ATT&CK软件(例如S0154)、技术(例如T1023)或威胁组织(例如G0049)查询Valhalla中的哈希
  --vhrule search-string
                        通过规则中的关键字、标签、YARA规则名称、Mitre ATT&CK软件(例如S0154)、技术(例如T1023)或威胁组织(例如G0049)查询Valhalla中的哈希
  -o output             结果输出文件(CSV)
  --vtwaitquota         如果VT配额超限,不要继续,而是等待第二天
  --vtminav min-matches 从VT查询哈希信息所需的最小AV匹配数
  --limit hash-limit    批量模式下处理完这么多新哈希后退出(忽略缓存)。
  --vhmaxage days       要处理的Valhalla样本的最大期限(天)
  -c cache-db           缓存数据库文件名(默认:vt-hash-db.json)
  -i ini-file           保存API密钥的ini文件名
  -s sample-folder      包含要处理样本的文件夹
  --comment             为分析的哈希发布一条评论,评论内容来自日志行中的注释
  -p vt-comment-prefix  Virustotal评论前缀
  --download            启用从Hybrid Analysis下载样本。需要样本的SHA256。
  -d download_path      从Hybrid Analysis下载样本的输出路径。文件夹必须存在
  --nocache             不使用缓存数据库文件
  --nocsv               不写入CSV结果
  --verifycert          验证SSL/TLS证书
  --sort                对输入行进行排序
  --web                 以Web服务模式运行Munin
  -w port               Web服务端口
  --cli                 以命令行界面模式运行Munin
  --rescan              触发对每个已分析文件的重新扫描
  --debug               调试输出

功能特点

  • 通过API(JSON响应)从Virustotal获取有价值的信息,并通过永久链接(HTML解析)获取其他信息
  • 从一系列平台获取额外信息
  • 保存历史记录(缓存),确保同一个哈希在文本文件中出现多次时,仅向服务查询一次
  • 缓存对象以JSON格式存储
  • 生成CSV文件,便于后续处理与报告
  • 如果存在之前的CSV文件,则将结果追加到其中

显示内容

  • 哈希和注释(注释是提取哈希后,该行剩余的部分)
  • 基于用户定义列表的AV厂商匹配情况
  • 野外使用的文件名
  • PE信息,如描述、原始文件名和版权声明
  • 签名可执行文件的签名者
  • 基于Virustotal比率的结果
  • 首次和最后一次提交时间
  • 某些指标的标签:无害、已签名、已过期、已吊销、微软软件

额外检查

  • 向Malshare.com查询样本上传记录
  • 向Hybrid-Analysis.com查询报告
  • 向多个MISP实例查询可用事件
  • 向Any.run沙箱查询报告
  • 向CAPE沙箱查询报告
  • 向URLhaus查询报告
  • 向Malshare查询可用样本
  • 向Valhalla查询YARA规则匹配
  • 当前批次中的Imphash重复项检测 > 可发现导入表哈希的重复
  • PE签名重复检查

运行模式

  1. 默认模式 - 通过输入文件(-f)提供哈希,或通过样本目录(-s)提供
  2. 查询模式 - 通过关键字、标签、ATT&CK技术(例如T1023)、ATT&CK威胁组织(例如G0049)或规则名称从Valhalla搜索哈希(-q)
  3. 命令行界面模式 - 使用 --cli 参数
  4. Web服务模式 - 使用 --web 参数

快速开始

  1. 下载/克隆仓库
  2. 安装所需包:pip3 install -r requirements.txt(在macOS上添加 --user)
  3. 为不同服务设置API密钥到自定义ini文件:cp munin.ini my.ini(参见“获取API密钥”部分帮助)
  4. 使用演示文件进行首次运行:python munin.py -i my.ini -f munin-demo.txt

需求

  • Python 3.7 及以上版本
  • 互联网连接(支持代理;SSL/TLS拦截可能造成问题)

典型命令行

处理Virustotal Retrohunt结果,并在检查前对行进行排序,以便匹配的签名成块检查

root@kitploit:~
python3 munin.py -i my.ini -f ~/Downloads/retro_hunt

处理包含样本的目录,并在线检查它们的哈希

root@kitploit:~
python3 munin.py -i my.ini -s ~/malware/case34

使用命令行界面模式(v0.14新增)

root@kitploit:~
python3 munin.py -i my.ini

获取API密钥

Virustotal

  1. 在此处注册账号:https://www.virustotal.com/#/join-us
  2. 在“Profile > My API key”中查看您的公共API密钥

MalShare

在此处注册:https://malshare.com/register.php

Malware Bazaar

在此处注册:https://bazaar.abuse.ch/。然后在您的账户概览中找到API密钥。

Hybrid Analysis

  1. 在此处创建账户:https://www.hybrid-analysis.com/signup
  2. 登录后,查看“Profile > API key”

MISP

  1. 登录到您的MISP
  2. 转到您的资料“My Profile”
  3. Authkey的值即为API密钥
  4. 注意,ini文件同时包含MISP实例列表和对应的API密钥列表

Valhalla

目前仅限客户或被邀请的研究人员使用
https://valhalla.nextron-systems.com/

Hashlookup

Hashlookup CIRCL的实例免费提供,按尽力而为原则提供服务。

命令行界面模式

使用 --cli 参数启动munin,然后按照提示操作。

例如:

root@kitploit:~
python3 munin.py -i my.ini --cli

粘贴包含哈希值的内容,然后按 CTRL+D 完成输入。最后一行需要以换行符结尾。

默认情况下,会生成一个以当前日期命名的CSV文件。

Munin CLI

Web服务模式

使用 --web 参数启动munin,并可选择端口 -w port。

例如:

root@kitploit:~
python3 munin.py -i my.ini --web -w 8080

Web服务等待以下URL模式中的字符串。

root@kitploit:~
http://server:port/<string>

该字符串可以是任何不带换行符的字符串,例如:

root@kitploit:~
Emotet:1585ad28f7d1e0ca696e6c6c2f1d008a
ed01ebfbc9eb5bbea545af4d01bf5f1071661840480439c6e5babe8e080e41aa;IOC1
dc9b5e8aa6ec86db8af0a7aa897ca61db3e5f3d2e0942e319074db1aaccfdc83

结果将如下所示:

root@kitploit:~
{
    "comment": "Emotet",
    "commenter": "-",
    "comments": "0",
    "copyright": "Copyright (C) America Online, Inc. 1999 - 2004",
    "description": "Utilities",
    "expired": false,
    "filenames": "sourcedev.exe, MISCUTIL, x8ykNnr_9WofXq7Nh_xuEzSPW.exe, jwuKBLWN681ztj6Zks.exe",
    "filetype": "Win32 EXE",
    "first_submitted": "2019-01-19 13:46:21 UTC ( 2 months, 2 weeks ago )",
    "firstsubmission": "2019-01-19 13:46:21 UTC ( 2 months, 2 weeks ago )",
    "harmless": false,
    "hash": "1585ad28f7d1e0ca696e6c6c2f1d008a",
    "hybrid_available": false,
    "hybrid_compromised": "-",
    "hybrid_date": "-",
    "hybrid_score": "-",
    "imphash": "2820d9bdc397f88a8a1e957e1a824482",
    "last_submitted": "2019-02-27 09:44:03",
    "malshare_available": false,
    "md5": "1585ad28f7d1e0ca696e6c6c2f1d008a",
    "misp_available": true,
    "misp_events": "",
    "misp_info": [],
    "mssoft": false,
    "origname": "-",
    "positives": 48,
    "rating": "malicious",
    "res_color": "\u001b[41m",
    "result": "48 / 64",
    "revoked": false,
    "sha1": "4561d0ad575d5f02fb06e062a37de15861c3bd89",
    "sha256": "35e304d10d53834e3e41035d12122773c9a4d183a24e03f980ad3e6b2ecde7fa",
    "signed": false,
    "signer": "-",
    "total": 64,
    "urlhaus_available": true,
    "vendor_results": {
        "CrowdStrike": "win/malicious_confidence_100% (W)",
        "ESET-NOD32": "a variant of Win32/Kryptik.GOUY",
        "F-Secure": "Trojan.TR/AD.Emotet.pdiuu",
        "GData": "Trojan.GenericKD.40960256",
        "Kaspersky": "HEUR:Trojan.Win32.Generic",
        "McAfee": "Emotet-FLL!1585AD28F7D1",
        "Microsoft": "Trojan:Win32/Emotet.DN",
        "Sophos": "Mal/Emotet-Q",
        "Symantec": "Trojan.Gen.2",
        "TrendMicro": "-"
    },
    "virus": "Microsoft: Trojan:Win32/Emotet.DN / Kaspersky: HEUR:Trojan.Win32.Generic / McAfee: Emotet-FLL!1585AD28F7D1 / CrowdStrike: win/malicious_confidence_100% (W) / ESET-NOD32: a variant of Win32/Kryptik.GOUY / Symantec: Trojan.Gen.2 / F-Secure: Trojan.TR/AD.Emotet.pdiuu / Sophos: Mal/Emotet-Q / GData: Trojan.GenericKD.40960256",
    "virusbay_available": false,
    "vt_positives": 48,
    "vt_queried": false,
    "vt_total": 64,
    "vt_verbose_msg": "Scan finished, information embedded"
}

对Virustotal的查询需要进行限速。因此,Web服务会应用冷却时间,该时间通过将处理所有其他平台所花费的时间从15秒等待时间中减去来最小化。

root@kitploit:~
cooldown_time = vt_wait_time - process_time

在冷却期间,请求将返回此响应:

root@kitploit:~
{"status": "VT cooldown active"}

当请求的哈希已在查找缓存中时,冷却不适用。

Munin Hosts

Munin主机和IP检查脚本 (munin-host.py) 可检索IOC列表中IP地址和主机/域名的更多信息。

使用方法

root@kitploit:~
    usage: munin-host.py [-h] [-f path] [-o output] [-m max-items] [-c cache-db]
                        [-i ini-file] [--nocache] [--nocsv] [--recursive]
                        [--download] [-d download_path] [--dups] [--noresolve]
                        [--ping] [--debug]

    Virustotal 在线检查器(IP/域名)

    可选参数:
      -h, --help        显示此帮助信息并退出
      -f path           要处理的文件(每行一个哈希,或者每行包含哈希的CSV - 自动检测位置和注释)
      -o output         结果输出文件(CSV)
      -m max-items      要显示的最大项目数(url、主机、样本)
      -c cache-db       缓存数据库文件名(默认:vt-hosts-db.json)
      -i ini-file       保存API密钥的ini文件名
      --nocache         不使用缓存数据库文件(vt-check-cache.pkl)
      --nocsv           不写入CSV结果
      --recursive       也处理已解析的IP
      --download        尝试下载URL(以主机/IP名称命名的目录)
      -d download_path  将下载内容存储到指定目录
      --dups            不跳过重复的哈希
      --noresolve       不对发现的域名执行DNS解析测试
      --ping            对IP执行ping检查(如果文本文件中出现许多公共但内部路由的IP,可加快处理速度)
      --debug           调试输出

截图

Munin Hosts 截图

示例

解析演示文件,提取IP和主机,不检查仍可解析的域名,直接从远程系统下载样本。

root@kitploit:~
python3 munin-host.py -i your-key.ini -f ./munin-hosts-demo.txt --noresolve --download

警告

在IDS监控的网络中使用 munin-host.py 会导致大量警报,因为munin-host.py会对恶意域名执行DNS查找,并且可以选择下载恶意样本。

问题

macOS 上的 pycurl

脚本 munin-host.py 需要 pycurl 模块。在macOS上使其正常工作有时会比较棘手,因为它需要安装openssl,然后在构建过程中使用。

如果出现错误,请尝试以下方法(某些环境需要使用pip3):

root@kitploit:~
pip uninstall pycurl
brew update
brew reinstall openssl
export PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig"
export LDFLAGS="-L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/openssl/include"
export PYCURL_SSL_LIBRARY=openssl
pip install pycurl --global-option="--with-openssl"

用于 Virustotal Retrohunts 的 Hugin

Hugin 脚本 (hugin.py) 可检索并显示retrohunt返回的所有样本的信息。其最大优势是无需在每个样本请求之间等待15秒,而是通过Virustotal API v3拉取完整的JSON结果文件,从而立即获得结果。缺点是Hugin不会查询Any.run、Hybrid-Analysis、MISP或Valhalla等其他服务。

使用方法

root@kitploit:~
usage: hugin.py [-h] [-r retrohunt-name] [-i ini-file]
                [--csv-path CSV_PATH] [--debug] [--no-comments]

Retrohunt 检查器

可选参数:
  -h, --help           显示此帮助信息并退出
  -r retrohunt-name    要查询的retrohunt名称
  -i ini-file          保存VT API密钥的ini文件名
  --csv-path CSV_PATH  将结果写入CSV文件
  --debug              调试输出
  --no-comments        跳过VirusTotal评论

示例

解析一个retrohunt并将结果导出为CSV文件。

root@kitploit:~
python3 hugin.py -i config-with-your-key.ini -r retrohunt-123456789
下载工具