我很想知道研究人员如何知道不同的恶意软件何时相关。例如:Stuxnet、Flame 或 Duqu,被告知由同一组编写。有谁知道他们是怎么算出来的?
我读了一些文章,但它们不是很具体。他们只说他们很相似。是否有您可以分辨的签名,或相同的风格或语言或其他什么?
什么迹象表明 2 个恶意软件是相关的或来自同一个人???
我很想知道研究人员如何知道不同的恶意软件何时相关。例如:Stuxnet、Flame 或 Duqu,被告知由同一组编写。有谁知道他们是怎么算出来的?
我读了一些文章,但它们不是很具体。他们只说他们很相似。是否有您可以分辨的签名,或相同的风格或语言或其他什么?
什么迹象表明 2 个恶意软件是相关的或来自同一个人???
归因很难。但是,您可以在这里和那里看到一些特定的代码片段(在汇编中),它们告诉您,这些代码可能是由同一团队编写的。就我自己而言,我认为图匹配是一种非常值得信赖的方法,以确定恶意软件是否由同一团队创建,以及我通常为此目的使用的方法。
基本上,图形匹配的工作原理是这样的:如果文件完全解包后,两个或更多二进制文件具有非常相似的调用图和非常相似的控制流图,只有少数函数不同,或者只有一个特定函数中的一些基本块,或者只是例如,某个基本块中的一些指令,这些文件可能是由同一团队或作者创建的,并且很可能是同一软件的新版本。除非我们谈论的是使用Themida或VMProtect等工具创建的虚拟机,否则这通常是正确的。
这个想法激发了由 Zynamics 创建的(不再公开的)产品 VxClass 或我自己编写的CAMAL集群引擎(示例在这里和这里)。如果您更喜欢阅读开源方法来完成此操作,我建议您查看GCluster。这是一个基于命令行的工具,使用Pyew API 对 2 或各种解压缩的恶意软件文件(PE 和 ELF 可执行文件)进行聚类,以确定它们的相似程度。
正如@Mick 所指出的,您还可以使用基于二进制内容(字节)的 Yara 签名或模糊哈希。但是,它们可能会产生大量误报(您正在考虑字节并查找字节流,而不是像图形匹配那样比较可执行文件的结构)。