初探 MedusaLocker 勒索软件

前言 MedusaLocker是一种自2019年9月开始活跃的勒索软件,主要针对Windows系统。该恶意软件通过加密受害者的文件,要求支付赎金以恢复访问权限。 样本分析 IOC 一个32位的可执行文件。 WinMain...

前言

MedusaLocker是一种自2019年9月开始活跃的勒索软件,主要针对Windows系统。该恶意软件通过加密受害者的文件,要求支付赎金以恢复访问权限。

样本分析

IOC

image.png

一个32位的可执行文件。

WinMain

image.png

创建互斥体

在开头,可以看到恶意软件最常用的一个技术之一,创建互斥体,确保单一实例的运行。

image.png

一个函数是一个简单的打印子程序,上面写着"[LOCKER] Is running\n"。不过,打印功能被禁用了。第二个函数是字符串格式化函数,用于格式化唯一的互斥体,然后将其传递给创建互斥体的函数。

创建互斥体的函数是sub_405630

image.png

权限提升

勒索软件要想进行任何操作,都需要先提升权限。往下进入else分支:

image.png

image.png

sub_420AE0函数的一个逻辑如下:

Start
 ↓
获取当前进程句柄
 ↓
尝试打开进程访问令牌 (OpenProcessToken)
 ↓
  ┌──────────────┬─────────────┐
  │失败          │成功         │
  │返回false     ↓             │
  │            查询令牌提升状态(GetTokenInformation)
  │              ↓
  │     是否提升(TokenInformation != 0)?
  │              ↓
  │        是         否
  │      返回true   返回false

如果这里没有提升权限成功,返回了false,就会进入下面的sub_420C80中,如下:

image.png

这里涉及权限提升的关键组件(Elevation:Administrator!new:),它通过滥用 COM 对象来绕过 UAC(用户账户控制)这一内置安全措施。CMSTPLUA COM 接口存在一个已知的 UAC 旁路。

具体来说它通过初始化COM (CoInitialize),获取了相应的CLSID和IID,通过这个来构造一个Elevation字符串路径,尝试获取管理员权限的COM对象。构造的 Elevation:Administrator!new: 表明目标是提升当前进程的权限为管理员权限。

禁用UAC

接着向下分析,在提权后的下个函数sub_420BB0中,勒索软件对注册表进行了某些操作,如下:

image.png

一开始以外是通过注册表实现持久化,实际发现这里再禁用UAC,它修改了系统与 UAC(用户账户控制)相关的注册表项。

操作如下:

  • 打开注册表路径 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
  • 修改以下两个值:
    • EnableLUA
      • 该值控制 UAC 的全局开关。设为 0 会完全禁用 UAC。
    • ConsentPromptBehaviorAdmin
      • 该值控制管理员账户的 UAC 提示行为。设为 0 表示禁用所有提示。

持久化

向下,函数sub_405680内。

image.png

注册表键值的路径是 "HKEY_CURRENT_USER/SOFTWARE MDSLK/Self"。MDSLK 的缩写可能是 medusa locker。这里的操作是该勒索软件的一个独特行为,即它会在注册表中添加一个标记键值,用于表示系统已被感染。

勒索软件使用不同的方式,即无限期地调度重复15分钟的任务来实现持久性。

image.png

image.png

image.png

恶意软件会在系统的 %APPDATA% 中创建一个名称为 "svhost.exe "的自身副本,并在任务调度程序中注册,每隔 15 分钟无限期执行一次。这时就需要使用互斥,当再次执行时,它会首先检查系统中是否已经运行了另一个实例。如果有,恶意软件就会退出,让前一个实例继续运行。

image.png

删除进程

它会停止并删除一组预定义的服务和进程,以避免其加密过程受到任何干扰。通过对二进制文件中的字符串进行简单的静态分析,就能发现这些服务集。

image.png

上面函数通过服务管理器控制指定的服务,尝试停止运行中的服务并监控服务状态的变化。

  • 调用 OpenSCManagerW 以获取服务控制管理器的句柄 hSCManager。权限标志 0xF003F 表示请求所有访问权限(读、写、启动、停止等)。
  • 使用 sub_407A40a1 获取服务名称(v2),调用 OpenServiceW 以打开指定的服务句柄,权限标志 0x2C 包含查询状态和控制服务的权限。
  • 调用 QueryServiceStatusEx 获取服务的当前状态
  • 调用 ControlService 尝试停止服务

而要关闭的服务被硬编码进内存中,可以在ida中直接观察到:

image.png

禁用系统恢复

与大多数勒索软件一样,MedusaLocker也试图删除受害者系统中的数据恢复方式。不过,与大多数勒索软件不同的是,它是通过删除多个恢复选项来实现这一目的的,而不仅仅是删除卷影副本。

它使用vssadminwbadmin从系统中删除卷影副本。它还使用bcdedit.exe删除其他恢复选项,以防止系统重新启动进入恢复模式。作为额外步骤,它还会清空回收站以确保万无一失。

image.png

上面列出的每一条命令都是由CreateProcessW执行的,它将第一个空格作为进程名称的指示符,其余部分作为该进程的参数。sub_41E9A0的子程序创建这些进程的过程如下:

image.png

总的来说,它启动外部进程并等待其结束。

加密

勒索软件也使用对称加密来对文件进行加密,它使用AES-256算法。不过,又不同于一般的AES,它在过程中添加了RSA算法,加密密钥使用嵌入恶意软件的预定义公钥加密,只有使用攻击者的私钥才能解密。恶意软件作者在编写代码时,会使用随机生成的 AES 密钥对每个文件进行加密,然后再使用 RSA 公钥进行加密,并与多份赎金说明一起保存在系统中。

公钥经过base64编码后也是硬编码进了内存,

image.png

使用CryptStringToBinaryA应用程序接口将 base64 编码的密钥转换为二进制格式,以便在加密函数中使用,如下:

image.png

最后,使用CryptGenKey生成对称密钥,使用公钥对其进行加密,并保存在html赎金说明中。之后,加密器启动,加密过程中会跳过重要的文件夹和扩展名,如提取的字符串,如下:

image.png

横向移动

勒索软件还具有一个网络模块:

image.png

sub_41DB40 是一个用于执行 ICMP echo 请求(即 ping 操作)的函数。它通过发送 ICMP 请求并等待响应来检查目标主机的可达性。函数内部使用了 IcmpCreateFileIcmpSendEcho 来执行 ICMP 请求,并返回响应结果。

通过这个函数,它能够与本地网络中的远程系统建立连接,并扫描SMB共享。第一步是按顺序向每个系统发送 ICMP "Ping",并验证是否收到响应。之后,恶意软件会继续检查系统中是否有任何打开的 SMB 共享,但不包括名称中带有 " "的共享,这表示隐藏共享。然后,恶意软件会将剩余的共享累加到一个列表中,并在稍后阶段进行加密。

  • 发表于 2024-12-17 09:00:01
  • 阅读 ( 2057 )
  • 分类:二进制

0 条评论

请先 登录 后评论
友人Aaaaaaaaaa
友人Aaaaaaaaaa

5 篇文章

站长统计