为什么没有针对勒索软件的简单启发式保护?

信息安全 杀毒软件 反恶意软件 勒索软件
2021-08-27 09:14:00

在最近 WannaCry 勒索软件的传播之后——这再次证明这种攻击能够对关键服务造成严重损害和危险中断——我问自己为什么没有使用启发式方法来轻松防范这种恶意软件.

我的推理如下:虽然勒索软件的攻击向量可能多种多样,从粗心的用户操作到零日攻击,但操作总是大致相同:打开大量文件,加密,然后加密文件存储在原来的位置。

我对防病毒保护的工作原理没有更深入的了解,但我被引导相信这种行为应该可以通过启发式方法相对容易地检测到。例如,可以观察执行大量读写操作的进程,输出文件的熵通常比输入文件高得多。此外,可以观察当前正在运行的进程以向 CPU 发送指令,这些指令似乎包含加密步骤。虽然后者可能更难实现,但我认为考虑到广泛传播的加密算法数量相当少,它应该是可行的。

毫无疑问,这不会提供完美的勒索软件保护。当勒索软件开始加密时,需要一些时间才能启动防病毒软件,并且可能已经丢失了一些文件。但是,当然,最好是丢失一些文件而不是全部丢失。还会有相当多的误报,这对用户来说可能很烦人。再一次,一些防病毒套件要求任何连接的键盘,无论它是真的键盘还是一些被操纵的 USB 设备,我认为这同样令人讨厌。

在线搜索时,我能找到的唯一类似方法是CryptoMonitor软件,该软件显然已被Malware Bytes收购。但是从我收集到的少量信息来看,它似乎并没有进入大众市场。另外,我不知道已知的防病毒软件供应商有任何类似的方法,或者至少我找不到。

这让我得出结论,我的勒索软件防护想法是行不通的。但是为什么在这种情况下启发式方法不起作用呢?

4个回答

有。Cyber​​eason Ransomfree等程序声称可以做到这一点。从他们的常见问题解答中:

Cyber​​eason RansomFree 监视应用程序与文件交互的方式,当它检测到勒索软件行为时,它会在文件被加密之前立即停止它。Cyber​​eason RansomFree 使用纯行为检测技术,不依赖恶意软件签名。

Cyber​​eason RansomFree 将诱饵文件战略性地部署在勒索软件通常开始加密的位置。该解决方案监视应用程序与文件交互的方式,当它检测到勒索软件行为时,它会在文件被加密之前立即停止它。Cyber​​eason RansomFree 使用纯行为检测技术,不依赖恶意软件签名。

我已经在我的机器上安装了它。它使用它在桌面和每个分区上监视的文件创建隐藏目录。

我还没有测试过它的有效性(例如,通过快速修改其中一个目录中的所有文件)。

请注意,这种保护可能无法保证免受勒索软件的所有影响,因为您无法控制勒索软件处理文件的顺序(某些文件在检测到攻击之前已经被加密)。此外,如果预防是基于文件修改速率,恶意软件可能会在限制自己的执行时溜走(已知一些变种会这样做)。

我不认为会起作用,因为会产生太多的误报。

要监控的行为是许多合法应用程序的行为:

  1. 压缩/归档工具
  2. 一个在本地保存大量缓存数据的网络浏览器(通常是压缩的)
  3. 任何缓存数据的软件
  4. 任何可以进行批量操作的软件(例如图像/声音更改)
  5. 数据库软件(io密集型操作)
  6. 即使手动移动包含许多文件的文件夹也会引起警报

另外,一个有效的勒索软件不需要加密整个文件,只加密文件开头的几百或几千个字节就足够了

该技术已经存在了几十年。这称为文件完整性监控,通常是某些 HIDS/HIPS 产品的一部分。

实现方式各不相同,但长话短说,您有一个后台运行的守护程序,它监视您指定的文件的更改,然后在文件的哈希值与先前记录的不同时生成警报。

在勒索软件的情况下,您将在您的宝贵数据中创建“金丝雀”文件(“readme.txt”等)并观察它们的变化。如果它们以任何方式发生变化,无论是用户篡改还是批量勒索软件扫描,您都会在此过程的早期收到警报(希望如此),并可以进行干预并减轻进一步的损害。它是加密整个文件还是只加密标头并不重要——文件以任何一种方式发生了变化,因此哈希值发生了变化,它变得值得警告。

不过,我工作过的雇主很少会为此烦恼。鉴于最近发生的事件,它可能会卷土重来。

我认为你的方法会奏效,尤其是以下部分:

输出文件的熵通常比输入文件高得多

所有勒索软件都必须如此。

您的其他想法(例如查看打开大量文件或消耗大量 IO 带宽的进程)取决于勒索软件。我怀疑聪明的勒索软件会全力以赴——它希望隐藏自己,直到它加密系统上的大部分文件,以使勒索工作。所以它不能尽可能快地开始加密文件——这会使系统明显变慢。因此,它可能需要一些时间,并且与其他读取和写入大量数据的进程的行为可能没有明显不同。

观察 CPU 指令的加密步骤可能是不可行的。最明显的问题是,这会大大减慢您的系统执行的所有操作(不仅仅是轻微 - 我假设可能是 100 倍或更多)。此外,根据正在运行的 CPU 指令识别加密算法很可能是一个难题 - 如果它有效,您需要以某种方式对允许加密和解密数据的进程进行例外处理。

但是,如果我想编写一个勒索软件检测器,我可能会像您想象的那样使用启发式方法,只是更简单:我会定义一组要监视的文件,然后定期测量它们的熵。如果其中几个突然增加了熵(例如:变成基本上随机的数据),我会立即提醒用户,如果可能的话,关闭系统。