解开和分析未知的恶意软件

· 5min · Juicecat

我有一个神秘文件要分析。从表面上看,它只是一个无威胁的窗口可执行文件。它的名称是malware.exeindex.md-1.png

看似没有做任何事情,除了打开空白控制台窗口几秒钟,这至少表明正在发生一些事情。正如恶意软件一样,我认为该样本已包装。但是,最好确保并知道使用了什么包装工。为此,我们用Die打开它并查看文件熵: index.md-2.png 这里要查看的部分是大多数文件的高(〜8)熵。熵只是对文件中数据的“随机性”的量度。它的范围从0到8。分数为8将意味着完全随机性,这在加密(理想情况下)很常见。典型的文件会像这样波动:index.md-3.png

现在我们知道它已经包装了,我们还应该找出使用了哪个包装工。有很多方法可以找到这个,但是最简单的是查看第一熵图片中的部分标题。我们看到存在名称UPX2的标题。 UPX是最常见的包装工之一。它用于许多合法的应用程序,但是低级恶意软件也使用它,因为它是免费的,易于使用的。

包装工用于减少可执行文件的大小。从本质上讲,当程序要降低大小时,它将压缩整个文件,然后将一个小程序附加到自身的起始地址,该程序将在运行时解压缩。这就像将文件拉开以通过Internet发送,并且还发送了7ZIP的副本,以供用户解开内容。这就是包装应用程序通常具有很高和稳定的熵的原因。内容_ ARE_加密。

查看包装的代码将是没有用的,因此我们需要在做其他任何事情之前将其拆开。有几种方法可以解开恶意软件,但是我要手动解开此方法,以便拥有一篇凉爽的博客文章。我首先将调试器附加到程序上。调试器会自动暂停。 index.md-4.png

我们要做的第一件事是将程序运行直至入口点,然后再次暂停。index.md-5.png

现在我们已经暂停了,我们开始寻找二进制代码的拆卸器部分的末端。在这种情况下,它接近代码的末尾 - 在空间填充零操作之前,最终的jmp指令。 index.md-6.png

零操作之前的最后跳跃表明该程序已被打开包装,现在将跳入未包装数据的执行。因此,在跳前暂停之后,我们向前逐步暂停一个指令。希望我们能够开始“真实”计划的开始。 index.md-7.png

我们可以使用名为Scylla的插件来解释新的未包装程序。我们使用IAT AutoSearch并获取导入功能来为我们构建导入表,然后将程序转移到桌面上。 index.md-8.png

现在,我们已经有一个未包装程序的转储,因此让我们验证我们是否再次检查熵来正确地做到这一点。

因此,我们已经验证了我们成功打开了恶意软件。下一步将是分析其活动并进行报告。index.md-9.png