编写自己的反加密勒索软件工具是否合理?

信息安全 文件加密 检测 文件访问 勒索软件
2021-08-31 14:36:04

问题

在阅读了有关基本勒索软件如何针对和加密您的文件之后。我想知道编写自己的脚本来尝试检测此类活动是否合理?

初步研究工作

我查看了人们之前在这个网站上的不同想法:

我知道有一个工具已经在宣传做这样的事情,但我认为攻击者已经注意到了这个工具,并会试图绕过它。也许他们也会假设普通用户实际上不会安装这种东西,而安装的 < 10% 与攻击者无关。

假设

在任何一种情况下,根据我的理解(请纠正我的错误),传播最广泛的加密 - 勒索软件实际上是:

  • 以用户权限运行
  • 访问一组有限的用户文件(由文件扩展名定义
  • 以新名称创建许多新文件(新扩展名或完全加密)
  • 正确删除原始文件(我假设他们会覆盖原始内存以避免人们只使用简单的文件恢复工具?

回到更具体的问题

基于这些考虑,我编写一个脚本来监控我最重要的文件和位置似乎完全合理。为了让我的问题更具体:

许多广泛传播的加密勒索软件(例如 TeslaCrypt)是否在这些给定的假设(上图)下工作? 如果实际上采用了更难以捉摸的策略,如果我自己的监控脚本依赖于标准的文件访问监控,它们会很容易避免检测吗?


关于我认为反加密工具会做什么的旁注:

该工具甚至可以与蜜罐方法结合使用,以获取即时警报并终止试图更改特定文件集中看起来像普通个人文档的任何内容的进程。

我知道建议不要编写自己的加密软件,但如果您鼓励人们编写反勒索软件以至少尝试创建另一层安全性,我正在寻求建议。

我也知道在这种情况下备份更重要。我没有考虑用我自己的本地脚本替换备份,我也知道测试会很困难。

问题更多地在于为什么还没有更多的反加密勒索软件工具,因为他们的方法实际上可以通过一些基本的文件监控来检测。也许我的假设是错误的,我很想听听你为什么会这样。

3个回答

为什么还没有更多的反加密勒索软件工具?

因为有。它们被称为病毒扫描程序,它们应该具有启发式算法来检测这种行为。不幸的是,勒索软件开发者足够聪明,可以针对所有常用的病毒扫描程序测试他们的创作,并确保他们以某种方式规避他们的启发式方法。

在您开始编写自己的解决方案,希望它不会被此类恶意软件使用的所有规避策略所涵盖之前,设置备份解决方案通常要容易得多,并且可以保护您免受更多问题的侵害,而不仅仅是勒索软件。

你的问题随着它的继续而变得更广泛,所以我的目标是简单地回答标题中的问题。另请注意,我是从在 Windows 上制定解决方案的角度回答的。不过,同样的概念也可以用于 *nix。

编写自己的反加密勒索软件工具是否合理?


当然,像 .NET TraceEvent库之类的东西非常易于使用,您可以在其中实时监控计算机上发生的所有事情。从 Vista 开始,Windows 内核就生成了大量关于您计算机上发生的所有事情的信息。

这包括程序何时加载 DLL、调用系统函数、分配内存、开始访问文件、完成对文件的修改、尝试执行与网络相关的任何操作等等。内核生成了如此多的数据,如果您尝试将它们全部实时读入用户空间,您可能会杀死计算机。

仅从这些信息来看,无论编写此软件的这些笨蛋多么狡猾,您都可以通过可以修改您的文件的进程白名单来保护您的东西。例如,当内核引发有关在白名单中未找到的进程访问某个路径中的文件的事件时,您会冷血地谋杀该进程。概念简单,可以在 < 500 LOC 中实现(我从 TraceEvent 的经验中知道)。

显然,一旦您实际尝试了这一点,就需要解决许多不可预见的问题,但理论上它很简单。这并不完美,也许它会在你杀死它之前破坏你的一两个文件,因为实际发生的事情和内核提醒你的时间之间的可变延迟,但这将是一个坚实的开始,如果您唯一关心的是防止勒索软件对您不能丢失的数据进行加密的全部影响。

从评论:

为什么没有更多的开源自制解决方案


作为一个发布开源东西的人——这些东西需要时间。良好的发展是困难的,时间是有限的,没有饼干甚至一美元来激励你对这样的事情感兴趣。每当人们做他们计划发布开源的事情时,这将是他们感兴趣的事情。

有多少程序员是如此受虐狂,以至于他们认为“我想把我的空闲时间花在软件上,这些软件会引发来自阴暗的人的永无止境的攻击,他们会不知疲倦地工作以规避它?哦,而且是免费的。” 不多。

关于

“无论如何,我知道建议不要编写自己的加密软件”

正如雪人在评论中指出的那样,它不是在编写自己的软件,它使用人们警告你的现有加密货币,而是试图推出人们警告你反对的你自己的加密软件/方法。话虽如此,这根本不需要加密,它只是一个文件和进程监视器,它只会有效,因为它就像一个保镖,只会射杀任何靠近俱乐部但不在 VIP 名单上的人。不利的一面是,也许他拍摄的人是您真正关心的人,只是忘记将其添加到列表中。:)

编辑


只是为了好玩,我试过这个。相关代码Github 上。当我只是浏览到受保护的目录时,许多与 explorer.exe 相关的 Windows 进程立即被谋杀,以至于我不得不注销,因为我的开始菜单之类的东西停止了工作。但是,嘿,如果您输入文件的一些哈希值并构建 Windows 进程的白名单,那么您就大功告成了。:)

我想添加第二个程序并将其命名为 Kingpin 并让它故意尝试加密受保护目录中的所有文件,但我已经盯着我的屏幕两天了,我必须在我之后回到它休息。正如你可能从名字中想象的那样,我一直在疯狂地看《夜魔侠》。

再次编辑

我已经在 Windows 上对此进行了一些研究。事实证明,从 8 开始,Windows 保留了一个包含所有二进制文件的目录,以及完全重建操作系统所必需的目录。这是 WinSXS 文件夹。为什么这是相关的,是因为这里的白名单概念以及当用户尝试浏览文件夹时不会杀死操作系统的问题。您可以使用SFCandDISM来验证此缓存的完整性,然后扫描此文件夹并为您发现的每个二进制文件生成哈希值。Viola,操作系统已列入白名单。

至少对于 Windows,您不需要。Windows 包括称为应用程序控制策略的进程白名单功能。您定义允许运行的位置、数字签名或文件哈希,并且所有其他进程都被阻止。如果用户对白名单中的任何路径都没有写入权限(这是实施应用程序控制策略时的最佳实践),那么用户应该不受启动自己进程的加密软件的影响。

但是,如果您的用户是管理员或对列入白名单的位置具有写入权限,那么您就已经在密闭舱口的错误一侧