我的回答并非针对 ClamAV;相反,我是从一般意义上回答的。也许这对你有帮助。
首先,病毒签名不是一定文件的哈希值。 A签名通常是在文件中找到的一串位,尽管哈希值也可以用作签名。
例如,假设病毒包含比特字符串0x23956a58bd910345
。我们可以认为这个字符串是病毒的签名,我们可以在系统上的文件中搜索这个签名。然而,即使我们找到了签名,我们也不能确定我们已经找到了病毒,因为其他无辜的文件可能包含相同的位字符串。
有趣的是,如果文件中的位是随机的,则这种错误匹配的可能性可以忽略不计,为 1/2^64。参考 https://engineering.purdue.edu/kak/compsec/NewLectures/Lecture9.pdf
有多种方法可以生成用于恶意软件检测的签名和/或特征。在这里了解更多。 https://amanda-cle.info/zcvisitor/e6218045-c619-11ec-bff8-121fb804a59b/b71e37a0-18cb-11ea-9f38-0a157bfa6bfc?campaignid=2a82f030-bbe2-11ec-bea2-128084d1ce51
此外,还有其他检测病毒的方法:
1 异常检测- 也称为行为分析- 可执行文件的活动跟踪,例如:
- 修改或创建的文件
- 注册表修改
- 执行前加载了哪些 DLL
- 访问的虚拟内存
- 创建的流程
- 网络连接打开并传输数据包
- 恶意软件访问了哪些存储区域、安装的服务和内核驱动程序以及其他信息。
参考 https://web.archive.org/web/20120731105522/http://0xbadcab1e.lu/papers/analyse.pdf
2 变化检测- 意外更改的文件可能表明存在感染。
我们如何检测变化?哈希函数在这方面很有用。假设我们
计算系统上所有文件的哈希值并安全地存储这些哈希值。然后,在
定期间隔,我们可以重新计算哈希值并将新值与
先前存储的值。如果文件的一个或多个位位置发生了更改(就像在病毒感染的情况下一样),我们会发现新计算的哈希值与之前计算的哈希值不匹配。
变更检测有很多缺点。系统上的文件经常由于正常的系统功能而不是恶意行为而发生更改。因此,变更检测可能会产生许多误报,这给用户和管理员带来了沉重的负担。如果病毒被插入到经常更改的文件中,它很可能会溜过更改检测方案。
[参考:Mark-Stam 的书《信息安全》]
你认为正确的哈希机制是检测的弱方法.
在我的研究工作中,我使用14种防病毒工具对2000多种真实病毒进行了比较和分类,我发现ClamAV在检测病毒方面非常糟糕!这是描述论文的链接MOMENTUM https://ieeexplore.ieee.org/document/6207739.