样本哈希为什么重要
哈希是样本同一性的唯一可靠依据:文件名可以相同而内容完全不同,也可以被改成正常名字。规范做法是让样本在每一步流转都留下哈希记录:接收时计算、传输后复算、入库与归档时再复算,任一环节不一致就停下来排查来源。算法上以 SHA-256 为主,MD5 与 SHA1 只用于与历史数据比对,不作为完整性依据;此外可用模糊哈希(如 ssdeep、TLSH)做相似性比对,用于关联变种而不是证明同一文件。
基本信息
| 适用平台 | Linux / Windows / macOS 通用 |
|---|---|
| 常用命令 | sha256sum(Linux)、certutil -hashfile(Windows 命令行)、Get-FileHash -Algorithm SHA256(PowerShell) |
| 记录字段 | 文件名、大小、算法、哈希值、计算时间、来源与接收人 |
| 校验清单 | 把哈希写入清单文件,用 sha256sum -c 批量校验 |
| 补充手段 | ssdeep/TLSH 等模糊哈希用于相似性关联,需与精确哈希区分 |
典型使用场景
- 接收样本时建立唯一标识,避免后续引用混乱
- 跨机器传输后复算,确认传输过程没有损坏或被替换
- 与情报平台、样本库比对,快速获得家族与行为线索
- 多人协同时统一引用方式:用哈希而不是文件名讨论具体样本
- 交付与归档时形成完整流转记录,支撑可复核性
计算与校验
计算与校验
# Linux:计算并写入清单(含相对路径便于批量校验)
sha256sum sample.bin > sample.sha256
find ./samples -type f -exec sha256sum {} + > samples-hashes.txt
# 批量校验:清单内的文件是否与记录一致
sha256sum -c samples-hashes.txt | grep -v ': OK$'
# Windows PowerShell:计算与校验
Get-FileHash .\sample.bin -Algorithm SHA256 | Format-List
Get-FileHash .\sample.bin -Algorithm SHA256 | Select-Object -ExpandProperty Hash
# Windows 命令行(无 PowerShell 时的等价做法)
certutil -hashfile sample.bin SHA256算法对照
| 算法 | 用途 | 注意点 |
|---|---|---|
| SHA-256 | 完整性校验与同一性标识 | 首选算法,记录时注明算法名称 |
| MD5 / SHA1 | 与历史数据或旧报告比对 | 已不适合作为完整性依据 |
| 模糊哈希(ssdeep/TLSH) | 变种相似性关联 | 相似不等于同一,不能替代精确哈希 |
| 文件大小与类型 | 辅助校验维度 | 与哈希一起记录可发现明显异常 |
哈希清单要随样本目录一起存放与移交,并注明计算时间与工具:只有哈希值而没有来源与时间的记录,在复核时无法说明它对应的是哪一份文件。
哈希不一致时不要继续分析:先确认是传输损坏、文件被替换还是记录出错,把差异写进流转记录后再决定下一步。