ng-sudo/malware-hash-lookup

GitHub: ng-sudo/malware-hash-lookup

一款支持本地与 VirusTotal 在线双引擎比对的恶意软件哈希查询与批量扫描工具。

Stars: 1 | Forks: 0

# 恶意软件哈希数据库与查询工具 一款全面的 Python 工具,用于计算文件哈希值(MD5、SHA1、SHA256、SHA512),并通过在线数据库(VirusTotal API)和本地哈希数据库进行比对以进行恶意软件检测。 ## 功能 - **哈希计算**:支持 MD5、SHA1、SHA256、SHA512,并为大文件提供进度条 - **VirusTotal 集成**:查询 VirusTotal API v3 进行恶意软件检测 - **本地哈希数据库**: - 带有元数据(恶意软件名称、家族、来源、标签)的 SQLite 数据库 - 用于快速查询的简单文本文件数据库 - **多种接口**:CLI 工具、Python API、批量扫描 - **灵活的输出**:表格、JSON 和简单文本格式 - **配置**:基于 INI 的配置,包含 API 密钥管理 - **示例数据库**:预装了已知的恶意软件哈希(EICAR、WannaCry、NotPetya 等) ## 安装 ``` # Clone repository git clone https://github.com/ng-sudo/malware-hash-lookup.git # 切换到目录 cd malware_hash_lookup # 安装依赖 pip install -r requirements.txt ``` ### 前置条件 - Python 3.7+ - requests - click - colorama - tqdm - python-dotenv ## 快速开始 ### 1. 配置 VirusTotal API(可选) ``` # 从 https://www.virustotal.com/gui/my-apikey 获取你的 API key malware_hash_lookup.py config --key YOUR_API_KEY ``` ### 2. 创建示例数据库(用于测试) ``` malware_hash_lookup.py create-db --sample ``` ### 3. 扫描文件 ``` malware_hash_lookup.py scan suspicious_file.exe ``` ### 4. 查询哈希 ``` malware_hash_lookup.py lookup d41d8cd98f00b204e9800998ecf8427e ``` ### 5. 批量扫描目录 ``` malware_hash_lookup.py batch ./samples --recursive -e exe -e dll ``` ## 使用示例 ### 扫描单个文件 ``` malware_hash_lookup.py scan malware_sample.exe ``` 输出: ``` ====================================================================== FILE: malware_sample.exe ====================================================================== FILE HASHES: MD5 : d41d8cd98f00b204e9800998ecf8427e SHA1 : da39a3ee5e6b4b0d3255bfef95601890afd80709 SHA256 : e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 LOCAL DATABASE MATCHES: [MATCH] SHA256: EICAR-Test-File (Test) [eicar] VIRUSTOTAL: MALICIOUS DETECTED Name: EICAR-Test-File Detection: 45/72 engines Top detections: Kaspersky: EICAR-Test-File (not a virus) Microsoft: EICAR-Test-File ... !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! THREAT DETECTED: This file matches known malware! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Source: LOCAL_DB Malware: EICAR-Test-File Family: Test Hash: SHA256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 ``` ### 直接查询哈希 ``` malware_hash_lookup.py lookup 275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f ``` ### 仅显示匹配项的批量扫描 ``` malware_hash_lookup.py batch ./samples --recursive --only-matches -e exe -e dll -e sys ``` ### 导出/导入哈希数据库 ``` # 导出到文本文件 malware_hash_lookup.py export hashes.txt --type sha256 # 从文本文件导入 malware_hash_lookup.py import hashes.txt --type sha256 --source mysource ``` ### 将文件哈希添加到本地数据库 ``` malware_hash_lookup.py add-hash suspicious_file.exe ``` ### 查看统计信息 ``` malware_hash_lookup.py stats ``` ## 配置 该工具使用 `config.ini` 进行配置: ``` [config] virustotal_api_key = YOUR_API_KEY_HERE local_hash_db_path = ./hash_database/malware_hashes.db hash_algorithms = md5,sha1,sha256 output_format = table verbose = false vt_rate_limit = 4 ``` ### VirusTotal API 密钥 1. 在 [VirusTotal](https://www.virustotal.com/) 创建账号 2. 前往 [我的 API 密钥](https://www.virustotal.com/gui/my-apikey) 3. 复制您的 API 密钥 4. 运行:`malware_hash_lookup.py config --key YOUR_API_KEY` **速率限制:** - 免费版:4 次请求/分钟 - 高级版:更高限制 ## Python API 用法 ``` from malware_hash_lookup import MalwareHashLookup, HashCalculator, VirusTotalAPI # 初始化工具 tool = MalwareHashLookup() # 扫描文件 results = tool.scan_file("suspicious.exe") print(tool.format_results(results)) # 仅计算 hashes calculator = HashCalculator(['md5', 'sha1', 'sha256']) hashes = calculator.calculate_hashes("file.exe") print(hashes) # 直接 VirusTotal lookup vt = VirusTotalAPI("YOUR_API_KEY") result = vt.get_file_report("sha256_hash_here") print(f"Malicious: {result.malicious}/{result.total_engines}") # 使用本地 database from malware_hash_lookup import LocalHashDatabase db = LocalHashDatabase("./hash_database/malware_hashes.db") matches = db.lookup_hash("sha256_hash") ``` ## 数据库结构 ### SQLite 数据库 (`malware_hashes.db`) ``` CREATE TABLE malware_hashes ( id INTEGER PRIMARY KEY AUTOINCREMENT, hash_value TEXT NOT NULL, hash_type TEXT NOT NULL, -- md5, sha1, sha256, sha512 malware_name TEXT, malware_family TEXT, source TEXT, -- eicar, virustotal, manual, imported tags TEXT, -- JSON array first_seen TIMESTAMP DEFAULT CURRENT_TIMESTAMP, last_seen TIMESTAMP DEFAULT CURRENT_TIMESTAMP, UNIQUE(hash_value, hash_type) ); ``` ### 文本文件数据库 (`malware_hashes.txt`) 简单格式 - 每行一个哈希值: ``` d41d8cd98f00b204e9800998ecf8427e da39a3ee5e6b4b0d3255bfef95601890afd80709 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 ``` ## 包含的示例哈希 示例数据库包含以下哈希: - **EICAR 测试文件**(标准防病毒测试文件) - **WannaCry** 勒索软件 - **NotPetya/ExPetr** 清除型恶意软件 - **Emotet** 银行木马 - **TrickBot** 银行木马 - **Mirai** IoT 僵尸网络 ## 输出格式 ### 表格(默认) 带有颜色区分的表格,包含文件信息、哈希值和检测结果。 ### JSON 用于脚本编写的机器可读格式: ``` { "file": "suspicious.exe", "hashes": { "md5": "...", "sha1": "...", "sha256": "..." }, "matches": [...], "virustotal": {...} } ``` ### 简单文本 用于快速扫描的简明文本输出。 ## 退出码 - `0`:干净(未找到匹配项) - `1`:检测到恶意软件(找到匹配项) - `2`:发生错误 ## 构建独立可执行文件 ``` pip install pyinstaller pyinstaller --onefile malware_hash_lookup.py ``` 可执行文件将位于 `dist/malware_hash_lookup.exe` ## 项目结构 ``` malware_hash_lookup/ ├── malware_hash_lookup.py # Main CLI entry point ├── hash_calculator.py # Hash calculation module ├── virustotal_api.py # VirusTotal API integration ├── local_hash_db.py # Local database modules ├── config.ini # Configuration file ├── requirements.txt # Python dependencies ├── hash_database/ # Local hash databases │ ├── malware_hashes.db # SQLite database │ └── malware_hashes.txt # Text file database └── README.md ``` ## 许可证 MIT 许可证 - 详情请参阅 LICENSE 文件。 ## 免责声明 本工具仅供教育和授权的安全测试目的使用。 在扫描文件或系统之前,请务必确保您已获得适当的授权。 示例恶意软件哈希均来自公开已知的样本和测试文件。 ## 资源 - [VirusTotal API 文档](https://developers.virustotal.com/reference) - [EICAR 测试文件](https://www.eicar.org/download-anti-malware-testfile/) - [恶意软件哈希数据库](https://bazaar.abuse.ch/) - [MITRE ATT&CK](https://attack.mitre.org/)
标签:Ask搜索, CLI, Python, VirusTotal, WiFi技术, 哈希计算, 域名侦查, 威胁情报, 开发者工具, 无后门, 逆向工具