识别恶意软件的作者

信息安全 恶意软件 源代码 逆向工程
2021-09-08 02:52:23

当一个新的恶意软件出现时,人们可以尝试确定它来自哪里,以及它的作者可能是谁。

安全专家如何尝试识别新公开披露的恶意软件的作者?有哪些可用的技术(例如逆向工程)?

2个回答

根据恶意软件作者的技能水平,有许多不同的技术:

  • 嵌入式元数据 - 编译程序可以包含有关其作者的详细信息。这在合法程序中最常见,如果您查看 Windows 属性,则会显示在详细信息屏幕中。出名的攻击者很可能会将识别细节放在这些领域
  • 意外嵌入 - 编译器通常会包含有关使用的编译器标志的详细信息,其中很可能包括源文件的路径。如果源文件在 中/users/evilbob/malware,你可以很好地猜测是邪恶的 bob 写的。有办法关闭这些内含物,但每个人有时都会犯错
  • 通用代码 - 恶意软件作者与任何其他程序员一样,会重复使用以前工作中的有用代码。有时可能会发现一段编译后的代码与之前发现的一段代码非常接近,以至于似乎每个代码都使用了相同的源代码。如果是这样,可以推断出第二作者可以从第一作者获得代码,或者可能是同一个人。
  • 通用工具链 - 如果开发人员倾向于使用 Visual Studio,那么看到他们的代码使用 GCC 编译是出乎意料的。如果他们使用特定的打包器,那么看到他们使用不同的打包器会很奇怪。它并不完美,但它可以暗示一个区别。
  • 常用技术 - 与上述类似,编码人员通常具有特定的编码模式。人们不太可能切换模式,因此您可以做出合理的猜测,如果某些编译代码无法以特定的编码风格生成,那么它可能不是由以前已知使用不同风格的人编写的。这对于解释性语言来说要容易得多,因为看到一致使用for循环而不是while循环比发现每个编译输出之间的差异更容易(现代编译器很可能将它们简化为完全相同的指令集)。
  • 恶意软件起源 - 它来自哪里?它是否有任何特定语言的文本,或暗示特定背景的拼写错误?(例如colour,会暗示作者不是美国人,generale可能暗示某人习惯于用诸如法语或意大利语之类的浪漫语言写作)

这些都不足以单独确定作者,但结合起来,它们可能会建议与以前的恶意软件或什至与其他已知代码(例如来自操作系统项目)的共同作者。

马修的回答非常好。还有其他几种方法。

  • 并不是很多恶意软件作者都那么聪明。例如,您可以在记事本中打开很多可执行文件并查找字符串数据。我见过无数的作者,他们只是简单地将他们的电子邮件地址/服务器名称、用户名和密码以字符串的形式放入程序中,然后它就会直接显示在记事本中。
  • 由混淆上述步骤的作者制作的逆向工程恶意软件。
  • 查找恶意软件连接的地址,并调查其背后的任何人。如果它是感染大量机器的特定类型的恶意软件,那么开发人员可能一开始就已经知道了。如果没有,请追踪到源头。到处都有数据踪迹。