norandom/malware_hashes
GitHub: norandom/malware_hashes
一个零依赖的跨平台命令行工具,用于对恶意文件进行多维度哈希和 PE 结构分析,辅助恶意软件取证报告。
Stars: 0 | Forks: 0
# 恶意软件哈希分析项目
通过所有有用的方式对文件进行哈希处理:加密哈希、模糊哈希和 PE 结构,以便您可以在所有这些方式中询问“我以前见过这个吗?”。最初是一个 Python 脚本,现在是一个适用于 Windows、macOS 和 Linux 的单个 Go 二进制文件,无需运行时即可运行。
## 功能
* **加密哈希:** MD5、SHA1、SHA256。
* **模糊哈希:** SSDEEP、TLSH(纯 Go 实现 - 无需 DLL!)。
* **PE 分析:** ImpHash、Rich Header Hash、Section Hashes、Entropy。
* **输出:** 带颜色的终端输出(通过 Lipgloss)或用于管道传输的 JSON。
* **取证元数据:** JSON 输出现在包含时间戳、工具版本和唯一系统信息(主机名、操作系统、架构、用户和稳定的机器 ID),用于取证主机识别。
## 安装
从[发布页面](../../releases)下载适用于您平台的最新版本。
## 使用方法
```
# 分析文件
./malware_hashes malicious_file.exe
# 输出 JSON 以管道传递给其他工具,包括 forensic metadata
./malware_hashes malicious_file.exe --json
```
## 为什么选择 Go?
* **零依赖:** 不需要 Python 解释器,不需要 `pip install`,不需要 C 头文件,没有 DLL 地狱。
* **快速:** 编译为原生机器码。
* **跨平台:** 在 Windows、Mac 和 Linux 上的工作方式完全相同。
## 从源代码构建
普通的 Go 构建(最低要求 1.23+;`go.mod` 指定了 `toolchain go1.26.3`):
```
go build -o malware_hashes main.go
```
### 使用 Dagger 进行跨平台构建
发布矩阵位于 `.dagger/` 中作为一个 Dagger 模块,因此 CI 和本地开发机会运行完全相同的构建。您需要 Docker(或其他 OCI 运行时)和 `dagger` CLI。
```
# 构建每个 release artifact 到 ./dist
dagger call build-all --src=. --version=v0.0.0-dev export --path=./dist
# 构建单个 target
dagger call build --src=. --goos=linux --goarch=arm64 export --path=./dist/
# Smoke test: 对每个 package 执行 go vet + go build
dagger call test --src=.
```
支持的发布目标:
| 操作系统 | 架构 | 产物 |
| ------- | ------------ | ------------------------------------- |
| Linux | amd64 | `malware_hashes-linux-amd64` |
| Linux | arm64 | `malware_hashes-linux-arm64` |
| macOS | amd64 | `malware_hashes-macos-amd64` |
| macOS | arm64 | `malware_hashes-macos-arm64` |
| Windows | amd64 | `malware_hashes-windows-amd64.exe` |
| Windows | arm64 | `malware_hashes-windows-arm64.exe` |
## 故障排除
### macOS:“Apple 无法验证...”或“身份不明的开发者”
如果您从 GitHub Releases 下载二进制文件,macOS Gatekeeper 可能会因为它未经公证而将其阻止。要解决此问题,请移除隔离属性:
```
xattr -d com.apple.quarantine malware_hashes-macos-amd64
```
现在您可以正常运行它了。
## 技术细节
### 机器 ID 生成
JSON 输出中包含的取证 `machine_id` 派生自稳定的、特定于操作系统的标识符:
* **Windows:** `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MachineGuid`
* **Linux:** `/var/lib/dbus/machine-id` 或 `/etc/machine-id`
* **macOS:** `IOPlatformUUID`(通过 `ioreg`)
此 ID 在重新启动后保持稳定,但如果虚拟机在没有正确通用化(sysprep/machine-id 重置)的情况下被克隆,则可能会重复。
标签:API安全, Dagger, DAST, EVTX分析, Go语言, ImpHash, JSON输出, PE文件分析, SSDEEP, TLSH, 云安全监控, 加密哈希, 威胁情报, 开发者工具, 恶意软件分析, 恶意软件取证, 数字取证, 文件哈希, 日志审计, 模糊哈希, 熵值计算, 程序破解, 网络安全, 自动化脚本, 隐私保护, 静态分析