【逆向】Magniber 勒索软件样本分析

前言

        Magniber是一个首次出现于2017年底的勒索软件家族,该勒索软件的早期版本主要针对韩语用户实行勒索,并且通过 Magnitude 漏洞利用工具包进行分发投送。由于Magnitude Exploit Kit (EK) 运营商在最初的活动中使用了Cerber 勒索软件,因此研究人员在为其命名时取了Magnitude exploit kit的“Magni”和Cerber的“ber”组合而成。从2018年年中开始Magniber被发现开始针对其他亚太国家进行勒索活动。并且在今年7月发现的攻击中Magniber勒索软件还试图使用已知的 PrintNightmare(CVE-2021-1675)漏洞来攻击受害者。

样本分析

本次样本共分为2个阶段:初始样本部分 和 勒索软件本体部分
1、初始样本部分:从自身数据段解密出Shellcode数据,远程注入到其它进程执行。
2、勒索本体部分:遍历和加密磁盘文件数据,上传受感染系统数据,生成勒索信索要勒索赎金。

第一阶段:初始样本

在初始DLL样本中程序会通过PEB动态获取代码中需要使用的API函数,然后使用异或指令从数据段中解密出第二阶段Shellcode。

然后通过Syscall等方式(使用Syscall执行系统调用,可以有效绕过通过挂钩3环API进行监控的安全软件),遍历寻找可用于注入Shellcode代码的系统进程。如果未找到则会将代码注入自身进程执行:

通过创建远程线程执行Shellcode:

第二阶段:勒索本体

Shellcode既是勒索软件本体,执行后首先会通过自解密的方式对代码中的关键数据进行解密,然后创建名为“dihlxbl”的互斥体对象保证单实例运行,该互斥体名称同时也是后面被加密文件的后缀名。

获取计算机名称、磁盘序列号字符串,加上互斥对象的名称一起作为被感染系统的标识:

然后对指定类型(可移动磁盘、本地磁盘、远程驱动器)磁盘内的文件进行遍历:

遍历的时候会跳过标记为白名单的目录:

白名单目录:

Boot
Intel
Winnt
AppData
Recycle
Windows
Msocache
Perflogs
Recovery
ProgramData
Tor Browser
Sample Music
Sample Videos
Program Files
Local Settings
Sample Pictures
Documents and Settings

 开始遍历文件,执行加密操作:

加密过程中同样会略过以下类型文件:

白名单文件:

只读文件

没有后缀的文件

隐藏的文件或目录

用于临时存储的文件

保留供系统使用的文件

Windows 操作系统使用的文件或目录

加密文件系统(EFS)加密的文件,或EFS加密每个新文件的目录

随后对指定后缀的文件进行加密,需要加密的文件后缀均以加密形式存储于内存中:

加密前通过随机函数,生成2个包含16字节的数组。第一个数组为:AES密钥,第二个数组为IV向量。

完成以上工作后,导入AES密钥开始加密文件,每次加密的数据大小为0x100000字节,如果最后一组数据小于该大小则加密后直接写入:

使用RSA(2048)对AES密钥和IV向量进行加密:

加密后:

将加密后的数据附加到已加密文件的末尾:

修改被加密文件后缀“*.dihlxbl”,然后在被加密文件目录和%Public%目录下创建名为“readme.txt”的勒索信:

勒索信中个人网页部分的子域名为当前系统的感染标识:

打开系统默认浏览器访问与赎金支付相关的页面(这里断网调试就没有返回数据了),在该URL链接的请求参数中还包含了以下有关受感染系统信息:
1、勒索软件枚举文件的驱动器数量
2、Magniber 勒索软件生成的加密数据的总大小(以字节为单位)
3、勒索软件已加密的文件数
4、勒索软件枚举的文件数量;该数字包括勒索软件已加密的文件和未加密的文件
5、受感染的 Windows 操作系统的内部版本号

最后通过调用WMI删除磁盘卷影副本,防止用户恢复文件数据:

总结

样本总体比较简单,没有复杂的对抗手段,但是通过动态申请内存然后写入Syscall执行语句的方式还是比较有意思的,写远控或者其它红队工具的时候也可以稍微参考下。

posted @ 2021-11-21 16:12  SunsetR  阅读(405)  评论(0编辑  收藏  举报