我很想知道研究人员如何知道不同的恶意软件何时相关。例如:告诉Stuxnet,Flame或Duqu由同一个小组编写。有谁知道他们是怎么想出来的?

我读了一些文章,但不是很具体。他们只是说他们很相似。您是否可以分辨出签名,或者是相同的样式或语言,还是什么?

有什么迹象表明两个恶意软件相关或来自同一个人?

评论

我想@JasonGeffner在这里会有一些见识。

我不确定您是否读过ESET的Stusnet,Duqu和Flame的高斯互连(postivesecurity.com/2012/08/15/…),但它可以很好地了解家庭之间的相似之处。关于样式,语言等,请查看Greg Hoglund的恶意软件属性(youtube.com/watch?v=k4Ry1trQhDk)

#1 楼

归因很难。但是,您可以在此处(在那里)看到一些特定的代码片段(汇编中),这些片段可以告诉您该代码可能是由同一团队编写的。对于我本人,我认为图匹配是一种非常受信任的方法,可以确定恶意软件是否由同一团队创建,并且通常是我用于此目的的方法。如果文件完全解压后,两个或多个二进制文件具有非常相似的调用图和非常相似的控制流图,而这些功能仅具有几个不同的功能,或者某个特定功能仅包含一些基本块,或者仅包含一个基本的指令如果在某个位置进行阻止,则文件可能是由同一团队或作者创建的,并且很可能是同一软件的新版本。除非我们谈论使用Themida或VMProtect之类的工具创建的虚拟机,否则通常都是这样。我自己写的引擎(这里和这里的例子)。如果您喜欢阅读开放源代码方法来做到这一点,建议您看看GCluster。这是一个基于命令行的工具,使用Pyew API对2个或未打包的恶意软件文件(PE和ELF可执行文件)进行聚类,以确定它们的相似程度。

也可以使用@指出基于二进制内容(字节)的Mick,Yara签名或模糊哈希。但是,它们可能会产生大量误报(您正在考虑字节并查找字节流,而不是像图形匹配那样比较可执行文件的结构)。

#2 楼

许多人使用Yara和ssdeep之类的工具来查找二进制文件之间的共性。通常,他们正在寻找已知的代码重用,这表明恶意软件可能共享了部分或全部相同的源代码。例如,如果我编写了一个将shellcode注入进程的函数,它可能会与尝试相同任务的其他人至少略有不同。因此,如果研究人员在多个二进制文件中找到我的已编译代码,则有理由怀疑我的代码已被重用。