Petya 勒索软件分析

执行摘要:


Petya 是一个加密恶意软件家族,它以 Windows 操作系统为目标,感染 MBR(主引导记录)以执行加密硬盘驱动器文件系统表的有效负载。

Petya 通过使用EternalBlue 的 MS17-010 漏洞在网络上传播。 它还通过窃取用户名和密码以及跨网络共享进行传播。

静态分析:

IDA中打开勒索软件时,它从10007D39地址开始,函数是DLLEntryPoint,所以虽然文件扩展名是.exe,但实际上是DLL。
(wqhcw7VA7HrCESna3XbOKQ.png)]

PeStudio:在pe信息中,我们看到其中两个对我来说可能是可疑的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GqFbVHeW-1675251227617)(yrw0GbUAp7VfoQ5NYGmJ5g.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bv3Hog6w-1675251227618)(C5MPdYW3wUKqvHqjmiGkjg.png)]

指定的文件头日期是5 年后,可能是关联的负载样本

导入表中,寻找有趣的 api 调用,稍后在 IDA/Debugger 中调查这些调用以查看它们包含哪些值。

  • CreateProcessW

这意味着创建的新进程在调用进程的安全上下文中运行。如果调用进程正在模拟另一个用户,则新进程使用调用进程的令牌。

  • GetTokenInformation
  • OpenProcessToken

它们都用于获取终端服务会话的 TokenSessionId。
猜测工作流程:在挂起模式下创建一个新线程。模拟令牌用 SetThreadToken 替换当前线程令牌,线程恢复。然后使用该线程作为模拟用户执行 SMB RCE。

  • WNetCancelConnection2W
  • WNetAddConnection2W

用于通过使用模拟令牌的默认凭据连接到服务器,然后取消连接。

  • CryptEncrypt

加密数据的函数。在我们的情况下,我猜它会尝试加密 MFT,因为它是勒索软件。

在“Library”选项中,我检查了勒索软件导入了哪个库以及它导出了哪个函数。在下图中可以知道程序没有压缩。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A0mT7STi-1675251227620)(DPfvoTh5jpfMwY9wVpIQqQ.png)]

我关注的有趣的库是:

· Crypt32.dll — 可能会使用加密函数。

· Advapi32.dll - 可能会负责重启操作系统(我猜是因为勒索软件在加密所有文件后想要重启机器)。

· Shlwapi.dll — 适用于字符串和文件系统路径的函数。

· Ws2_32.dll — 它包含 windows sockets api,猜测是为了设置一些套接字。

另一种查找有关勒索软件的有趣信息的方法是阅读字符串。为此,我使用BinText。

这些字符串是可读的字符串的,将要查找的文件扩展名:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6eZbceKO-1675251227621)(OSgx6bq5iX2_01S_8DtcQg.png)]

将显示在受害者屏幕上的勒索消息:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SPeiEqfH-1675251227622)(18GbvfH11bsT92C8ZanS7w.png)]

动态分析

正如我们在需要面对DLL的静态分析中看到的那样,我尝试在入口点使用 Rundll32 运行它,看看会发生什么。

我们如何知道入口点参数是什么?有一个可疑字符串是:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r6IVZhWp-1675251227622)(qjasNF7MW-PoT1UOZ2leFA.png)]

该字符串被描述为勒索软件由 rundll32 作为带有 #1 参数(这是库中的第一个值)的子进程运行。

此外,当将 dll 放入 IDA 时,在导出表中,我们可以看到我们应该运行一个导出函数。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LyU8P3RW-1675251227622)(8T50mJvsE_CvE7FRNVragA.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bLJWZSpQ-1675251227623)(2PU8GJIjc1uyPX0LOla3CQ.png)]

使用导出选项卡的第一个功能运行勒索软件

我们在Process Hacker中看到我们之前使用的 cmd & rundll32 运行的 dll。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dVX2QIhp-1675251227623)(Qa_HlsAhi-CZ7MRH5Rs7Jw.png)]

双击rundll32.exe,内存和字符串选项卡我们看到内存中运行的有趣字符串:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-237dAeZ0-1675251227623)(yu5r1I-F5cbIML42Tg68Vg.png)]

创建计划任务是为了关闭受害者的机器,因为恶意软件在重启后开始加密。

当我们进入任务调度程序本身时,我们会看到真正创建并准备运行的任务。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D8ApcqsB-1675251227623)(xjFczr_zNnU9eg4j8UuXUg.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1bfHUVB1-1675251227624)(sTLvNqpHED9LmVoMjOyoiw.png)]

映射物理驱动器。这意味着勒索软件想要访问物理磁盘并加密MFT,因此文件系统将不可读。

下面的字符串描述了安全、应用程序、系统日志将被恶意软件删除。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tRPXjWoE-1675251227624)(FUnMvYnsyteYB2PFEN2QIQ.png)]

简而言之,我们的样本没有留下任何痕迹。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q1ZxOQBM-1675251227624)(rDYO5xlATEPLQ7aMocQh8g.png)]

当受害者的计算机重新启动时,Petya伪造“检查磁盘扫描”。 稍后我们将在重启 VM 后看到它。这个动作其实就是加密!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uUdcIKu1-1675251227624)(t3QeqSqjGkbHvmOBp1PpGw.png)]

显示在受害者屏幕上的消息:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-szcJVu6b-1675251227625)(iBzvCt1fRjQPXPB3gKjqLQ.png)]

此外,我之前已经打开了Procmon,其中包含许多过滤器以捕获有趣的过程,例如:

  • 进程创建
  • 进程名称是Petya.dll
  • 进程名称包含Rundll32

我们看到勒索软件创建了一个计划任务,在特定时间关闭受感染的机器,并在 AppData\Local\Temp 路径下创建了 tmp 文件“181E.tmp”。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9NaMYPU2-1675251227625)(v4ufnaJjqm7aOKq4yM138Q.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uI42k9nG-1675251227625)(JN2cVkOxzYNWN3zOZkMs5g.png)]

该恶意软件似乎试图连接到admin$ 共享。

IDA:

- 当我将文件放入 IDA 时,第一件事是查看顶部分布颜色。例如,橄榄色未开发的代码粉红色外部 符号,可以向我们表明我们的示例是否使用外部 DLL 库。(基本上这是一张表格,向我们展示了每个符号的内存位置——恶意软件代码的 API 调用)

- 第二件事我总是看导入表 非常重要,因为我们可以看到恶意软件使用了哪个 API 调用。

例如,正如我们在WNetAddConnection2w 的 API 调用的静态分析中看到的那样,我们可以通过按 x 来查看她对她的引用,也可以通过禁用 ASLR 和设置 BP 来查看我们的恶意软件连接。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fk6P9G39-1675251227625)(HlCQr5HhXzAEYvk2PJHoGQ.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w0IKPmXx-1675251227626)(qEdMENlfQ4ldskdLkiBsdw.png)]

勒索软件针对的扩展文件(您可以在审计部分找到它)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7InZ6GIp-1675251227626)(jWa2PYAJNZCnVZ_81xS7mw.png)]

恶意软件“覆盖”了MBR。它推送一个名为“Physicaldrive0”的文件,其中包含许多参数,包括他自己,然后它转到 DeviceControl 函数(指定设备驱动程序)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0ytpm34Z-1675251227626)(QxFMUOTtRoBRpsFLZjbskg.png)]

当我们双击该文件时,我们会看到它的入栈参数:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zBlmJYTl-1675251227627)(K-QrNWOhrfZrSpEUuH_wMw.png)]

另一个有趣的事情是 DeviceControl 包含的参数之一,它是:hDrive。 它的参数给出驱动程序的句柄并检索有关物理磁盘、文件、线程等的信息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9rExTtG6-1675251227627)(SnLMMAN6_qSFPE4JWdiEsg.png)]

网络枚举:


在恶意软件获得ComputerNameExW之后,在她创建CreateThread之前,我们可以看到条件 (jz) 有一个非常有趣的参数,它调用IpStratAddress,这是重建 SMB 协议的开始。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OZ1jpxyq-1675251227627)(KZ68mKJdHDfe2aVpObCrBQ.png)]

如果我们稍微往下看(在创建线程之后),我们会看到两次函数调用。

在第一个中,我们看到一个推送参数,如GetExtendedTcpTable,意思是“检索 TCP 端点列表”。换句话说,获取本地机器的 tcp 连接。

在第二个中,我们看到GetIpNetTable,意思是“给我你的本地网络 ip”。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XfjncVlt-1675251227628)(v5-68muiXybr1LL-JvuL8Q.png)]

使用 API 调用GetAdaptersInfo的 SMB 枚举。此调用的目标是获取所有网络接口(如工作站/服务器)的子网掩码。在调用结束时,我们有条件意味着如果不为零则跳转到 API 调用检索 inetaddr 并关闭套接字跳转到 API 调用 LocalFree 检查磁盘上的可用空间并给出线索是服务器还是工作站.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wMZLuXrs-1675251227628)(NZzBcEvCMXHPEiQlaB-EHQ.png)]

它使用NetServerGetInfo api 调用检查它。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4EiSLN8O-1675251227629)(Pn80jdocU0Hyvte5kKqc4w.png)]

当我们深入研究“Check_If_Server_Or_Not”的调用时,我们看到三个参数被推送到 NetServerGetInfo 的调用中(bufptr、level、servername)。

  • 第一个参数包含 65h 对象。

  • 第二个是空的,这意味着等于 0。

来自 MSDN:bufptr指向服务器 101 信息结构。所以101对我来说是恶意软件返回服务器名称、类型和基础设施的行为。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hmKm33nW-1675251227629)(YOwpQwMW2QnsM9-a6rmCdg.png)]

结论:

======

总的行为总结为:

  • 释放文件

  • 令牌模拟

  • 网络节点枚举

  • SMB复制和远程执行

  • 通过 EternalBlue 开发 SMBv1

  • 侦察并将恶意软件写入远程目标上的 admin$

  • MBR勒索软件

  • 物理驱动操作

  • MFT加密

  • 系统关闭

更多内容关注 gzh “TIPFactory情报工厂”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值