恶意软件二进制文件可以采用打包形式吗?

Can malware binaries be in packed form?

最近在看恶意软件分析。我正在浏览这个恶意软件存储库 (https://github.com/ytisf/theZoo)。在这里我们可以找到恶意软件二进制文件。二进制文件可以打包吗?如果是这样,我们怎么能说这些二进制文件是否打包?

PS:Packers 压缩程序并试图向我们隐藏内部结构(某种压缩或加密)。我对此有疑问。二进制文件是否可以打包?

Edit2:在这个存储库中,他们只是将其压缩以确保安全,这不是我所说的实际包装。解压缩后,我们将得到一个二进制文件。能不能打包?

首先,您对 "packers" 和归档程序(ZIP 等)或压缩程序所做的区分似乎没有任何依据。

一个"packed"可执行文件不能直接执行。必须先拆包。这与(比方说)包含恶意软件的 ZIP 文件或使用标准压缩程序压缩的恶意软件文件完全相同。

由程序创建的 "packed" 可执行文件如何以秘密方式执行 "packing" ... 以逃避检测?好吧,那行不通。恶意软件在执行之前仍然需要解压缩。所以这意味着坏人现在有第二个问题:将解包程序放到受害者机器上。一旦有人(anti-hacker)掌握了 super-secret 解包器,它就不再是秘密了。它可以被逆向工程...或者简单地被 AV 产品用于可疑二进制文件 as-is。

我能想到的 "packing" 的唯一实际用途是向恶意软件添加 self-unpacking 功能。恶意软件(如分发的那样)将由一个可执行文件和少量实现解包程序的代码组成。可执行文件的其余部分将是实现令人讨厌的东西的打包代码。当用户运行恶意软件时,它会解压打包后的代码,将其加载到内存中并开始执行。

但是,有一些潜在的方法可以检测或防止此类事情发生。

  • 如果解包器在加载文件之前将可执行代码写入文件,AV 产品可以检测到它。
  • 如果打包程序试图将代码加载到自身中,则有一些方法可以阻止;例如使用内存保护硬件 + OS 等来阻止解包器创建包含可执行代码的内存段;参见 https://en.wikipedia.org/wiki/Executable_space_protection
  • AV 可以在打包代码中寻找签名,或者在解包代码中冷寻找签名。

简而言之,恶意软件 可以 使用某种 "packing" 来隐藏自己,但必须有某个可执行组件才能 解压 它.


If so, how can we say that these binaries are packed or not?

  • 如果恶意软件是作为 non-executable 分发的,您需要弄清楚将要解压缩它的内容,然后查看该过程是否会为您提供可执行文件。

  • 如果恶意软件是 self-unpacking 可执行文件,您可以对解包组件进行逆向工程以了解其工作原理。