文件的 MD5 散列是创建防病毒程序的有效方法吗?

逆向工程 安全 散列函数 恶意软件
2021-07-08 16:42:07

这是在 MD5 中创建病毒签名的好方法还是在 SHA1 或 SHA256 中更好,为什么?

4个回答

说明了为什么它不使用MD5针对病毒签名的最佳选择。您也应该避免使用 SHA-1,因为实际冲突可能在几年内发生。因此,请考虑使用 SHA-256 或 SHA-3。

从长远来看不是。

当新的恶意样本在野外出现时,文件的某些部分的散列仍然用于快速推送数据更新,以尽快保护客户端。

但是现在的恶意软件是非常多态的,所以散列很容易被打败。

样本的详细分析通常需要数周或数月的时间,之后将进行更通用/启发式的检测,可以覆盖之前通过哈希检测到的样本,因此哈希签名会逐渐从数据库中删除。

单独使用任何形式的散列都不是开发 AV 解决方案的好方法。虽然哈希对于通过网络查找已知样本的实例很有用,但启发式和行为 AV 系统更有可能保护主机免受感染。

这正是防病毒程序的工作原理。嗯,一部分。请检查这个答案。

问题是,MD5 散列虽然很快,但已被破坏并且已经产生了冲突(不同的输入产生相同的 MD5 散列)。SHA1 和 SHA256 更好,因为它更难(但可能,如上一个答案所述)找到冲突,即找到产生相同 SHA 哈希的不同文件。

最后,用于恶意软件检测的散列是一种非常糟糕的方法,因为它很容易被击败(多态恶意软件、恶意软件构建器等)。尽管如果您只是在探索事物,那么是的,这是创建防病毒程序的有效方法。