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, 云安全监控, 加密哈希, 威胁情报, 开发者工具, 恶意软件分析, 恶意软件取证, 数字取证, 文件哈希, 日志审计, 模糊哈希, 熵值计算, 程序破解, 网络安全, 自动化脚本, 隐私保护, 静态分析