首页/安全/取证与溯源速查/样本哈希计算与记录

样本哈希计算与记录

样本进出每一步都算哈希:接样时算、传输后复算、入库存档再复算,任一环节不一致即停下排查。

取证与溯源速查安全更新于 2026-10-13

样本哈希为什么重要

哈希是样本同一性的唯一可靠依据:文件名可以相同而内容完全不同,也可以被改成正常名字。规范做法是让样本在每一步流转都留下哈希记录:接收时计算、传输后复算、入库与归档时再复算,任一环节不一致就停下来排查来源。算法上以 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)变种相似性关联相似不等于同一,不能替代精确哈希
文件大小与类型辅助校验维度与哈希一起记录可发现明显异常
哈希清单要随样本目录一起存放与移交,并注明计算时间与工具:只有哈希值而没有来源与时间的记录,在复核时无法说明它对应的是哪一份文件。
哈希不一致时不要继续分析:先确认是传输损坏、文件被替换还是记录出错,把差异写进流转记录后再决定下一步。

易错点

  • 用文件名判断同一性:同名文件内容可能完全不同,合并归档前必须先比对哈希
  • 传输后不复算:网络传输中断或存储异常会造成静默损坏,不复算会把损坏样本当作原始样本分析
  • 只记录哈希不记录来源与时间:复核时无法确认该值对应哪次接收,记录失去证据价值
  • 把模糊哈希当精确哈希使用:相似度只用于关联变种,不能作为同一文件的证明
  • 在分析机上直接处理样本不做隔离:样本可能在打开或解析时触发执行,计算哈希等操作也应在隔离环境进行

数据来源与参考

  • NIST SP 800-86(证据校验)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌