在最近 WannaCry 勒索软件的传播之后——这再次证明这种攻击能够对关键服务造成严重损害和危险中断——我问自己为什么没有使用启发式方法来轻松防范这种恶意软件.
我的推理如下:虽然勒索软件的攻击向量可能多种多样,从粗心的用户操作到零日攻击,但操作总是大致相同:打开大量文件,加密,然后加密文件存储在原来的位置。
我对防病毒保护的工作原理没有更深入的了解,但我被引导相信这种行为应该可以通过启发式方法相对容易地检测到。例如,可以观察执行大量读写操作的进程,输出文件的熵通常比输入文件高得多。此外,可以观察当前正在运行的进程以向 CPU 发送指令,这些指令似乎包含加密步骤。虽然后者可能更难实现,但我认为考虑到广泛传播的加密算法数量相当少,它应该是可行的。
毫无疑问,这不会提供完美的勒索软件保护。当勒索软件开始加密时,需要一些时间才能启动防病毒软件,并且可能已经丢失了一些文件。但是,当然,最好是丢失一些文件而不是全部丢失。还会有相当多的误报,这对用户来说可能很烦人。再一次,一些防病毒套件要求任何连接的键盘,无论它是真的键盘还是一些被操纵的 USB 设备,我认为这同样令人讨厌。
在线搜索时,我能找到的唯一类似方法是CryptoMonitor软件,该软件显然已被Malware Bytes收购。但是从我收集到的少量信息来看,它似乎并没有进入大众市场。另外,我不知道已知的防病毒软件供应商有任何类似的方法,或者至少我找不到。
这让我得出结论,我的勒索软件防护想法是行不通的。但是为什么在这种情况下启发式方法不起作用呢?