Azov 勒索软件家族最早出现在2022年10月中旬,是一款感染型勒索病毒。
当前该家族通过盗版软件、激活工具和捆绑流氓软件分发与勒索相关的数据擦除器。近期 Azov 软件已和 SmokeLoader 僵尸网络合作,利用SmokeLoader 僵尸网络进行分发。Azov 与普通勒索软件的区别之一是它修改了某些 64 位可执行文件作为后门程序,可执行文件的修改使用的是多态后门,采取多态后门主要为防止被静态签名破坏。
Azov 勒索会对非exe、dll、ini、azov类型文件进行破坏,并且还会感染本地exe程序,被感染的exe程序也能够执行与母体相同的功能。虽然Azov会留下勒索信,让受害者联系作者以恢复被破坏的文件。事实上,即使受害者联系作者也是无法恢复,因为被破坏的文件是不可逆的。
勒索信信息
2.1.1 样本概述
Azov样本首先会获取系统kernel32的基址,根据kernel32的基址获取GetProcAddress函数地址,然后对shellcode进行解密。会使用GetProcAddress函数获取到VirtualAlloc函数地址,为解密的shellcode申请内存空间。Azov样本使用的加解密算法是xor和rol,密钥为0x15C13。
2.1.2 详细分析
病毒名称 | azov | ||||
MD5 | 7129291fc3d97377200f8a24ad06930a | ||||
SHA-256 | 650f0d694c0928d88aeeed649cf629fc8a7bec604563bca7 16b1688227e0cc7e | ||||
处理器结构 | x64 | ||||
文件大小 | 32.50 KB (33280 bytes) | 文件格式 | Win32 EXE | ||
时间戳 | 2022-10-29 10:20:35 UTC | ||||
数字签名 | 无 | 加壳类型 | 无 | ||
编译语言 | PE64 Compiler: FASM (1.73) [GUI64] |
start_0函数主要功能是获取kernel32的基址和GetProcAddress函数地址,为之后动态获取函数地址做准备。
sub_405416函数主要用于申请内存并解密shellcode代码,并把shellcode代码保存到申请内存空间,然后解密shellcode代码。解密算法使用的是XOR和ROL算法,密钥为0x15C13。如下图所示。
解密完shellcode后跳转到ShellcodeBase+0x1ED4的位置,此位置是shellcode代码入口点。
2.2.1 样本概述
shellcode样本主要是破坏擦除文件以及把Win64 EXE文件制作成后门程序。同样shellcode样本会规避一些系统目录和特定的文件类型,以此为避免操作系统崩溃,比如Windows、ProgramData等目录。
2.2.2 详细分析
病毒名称 | shellcode | ||||
MD5 | c259f570e636846124b3aad9b30f75bc | ||||
SHA-256 | 266f9e6bc4f3a4eb5f7a8ba290d571d8fb39e09e0ca 418956e8c8e15b03fbba6 | ||||
处理器结构 | x64 | ||||
文件大小 | 28.00 KB (28672 bytes) | 文件格式 | 二进制数据 | ||
时间戳 | unknown | ||||
数字签名 | 无 | 加壳类型 | 无 | ||
编译语言 | PE64 Compiler: FASM (1.73) [GUI64] |
首先shellcode通过字符串来获取所需函数地址并填充函数指针结构体,然后把函数指针结构体和shellcode代码拷贝到申请的内存空间,最后跳转到主要的shellcode功能区。
shellcode的两个主要功能是破坏擦除文件以及制作Win64 EXE后门程序。如图所示,使用jmp指令来替代call指令。
ShellcodeBase+0x216F的位置为shellcode函数主要功能区入口地址,通过jmp指令跳转到破坏擦除文件函数流程。
使用push eax + ret来替代call指令进行跳转,会跳转到shellcode的功能区,也就是地址为:00000000001A2554的位置,下面就是shellcode主要的两个功能:破坏擦除文件以及制作后门程序。
制作后门shellcode并把shellcode保存在全局变量中,然后创建线程执行破坏擦除功能。
破坏擦除文件函数主要功能:
6. 随机破坏擦除文件,每次随机覆盖0x29A字节,覆盖的内容为堆栈残留数据,覆盖文件大小最大为4G
7. 被破坏擦除的文件的文件扩展名为会修改为.azov
如下图所示为WipingAndDookingProc函数。
当创建互斥体成功后,Azov会选择对msiexec.exe或perfmon.exe文件制作成后门程序,把制作后的后门程序另存为rdpclient.exe文件,最后把该文件写入到注册表中,维持可持久化。
写入注册表的路径:SOFTWARE\Microsoft\Windows\CurrentVersion\Run,设置的值名称为Bandera。
在此不再具体分析制作后门程序的流程,会在下一小节进行详细分析。
获取盘符和卷信息,申请内存并保存相关信息,同时创建线程并执行破坏擦除文件操作。
破坏擦除文件操作主要功能:
执行破坏擦除文件操作。
每个符合可被破坏条件的文件,从开始会被0x29A 字节的块随机覆盖,然后间隔0x29A 字节,再次被随机覆盖0x29A 字节,以此类推。
破坏前文件数据,如下图所示。
破坏后文件数据,如下图所示。
创建线程来执行制作后门程序功能操作,其中线程回调函数主要负责获取盘符和卷信息,并通过获取到的盘符和卷信息对文件进行遍历,最后把盘符、卷信息和遍历的文件信息保存到申请的内存空间。
制作后门程序函数主要功能:
如下图所示,创建互斥体和遍历文件,其中使用原子操作来保证线程同步。
通过递归遍历文件来寻找符合要求的Win64 EXE文件来制作后门程序。
制作后门程序操作主要功能:
MakeDooringCustom函数主要功能:
MakedooringExeFile函数主要功能:
MakeBackdoorExeFile函数主要功能:
根据VirusTotal 查询,有两种不同版本的 Azov,一种较旧,一种稍新。这两个版本大部分功能相同,但较新版本使用了不同的勒索信内容和不同的被破坏文件扩展名 ( .azov)。
新版勒索信内容
旧版勒索信内容
Avoz勒索病毒通过使用FASM来编译,具有更高的灵活性。其中使用了反软件断点调试、代码混淆膨胀以及指令替换等技术。该勒索病毒采用的是擦除文件,使得被破坏的文件无法恢复;同时该勒索软件为Win64 EXE文件制作多态后门,此种技术在一些其他勒索病毒上是不常见的。
描述 | SHA256 |
旧版Azov | b102ed1018de0b7faea37ca86f27ba3025c0c70f28417ac3e9ef09d32617f801 |
新版Azov | 650f0d694c0928d88aeeed649cf629fc8a7bec604563bca716b1688227e0cc7e |