01 Azov简介
Azov 勒索软件家族最早出现在2022年10月中旬,是一款感染型勒索病毒。
当前该家族通过盗版软件、激活工具和捆绑流氓软件分发与勒索相关的数据擦除器。近期 Azov 软件已和 SmokeLoader 僵尸网络合作,利用SmokeLoader 僵尸网络进行分发。Azov 与普通勒索软件的区别之一是它修改了某些 64 位可执行文件作为后门程序,可执行文件的修改使用的是多态后门,采取多态后门主要为防止被静态签名破坏。
Azov 勒索会对非exe、dll、ini、azov类型文件进行破坏,并且还会感染本地exe程序,被感染的exe程序也能够执行与母体相同的功能。虽然Azov会留下勒索信,让受害者联系作者以恢复被破坏的文件。事实上,即使受害者联系作者也是无法恢复,因为被破坏的文件是不可逆的。
勒索信信息
1.1 攻击流程
02 样本分析
2.1 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函数
start_0函数主要功能是获取kernel32的基址和GetProcAddress函数地址,为之后动态获取函数地址做准备。
- 分析解密shellcode函数
sub_405416函数主要用于申请内存并解密shellcode代码,并把shellcode代码保存到申请内存空间,然后解密shellcode代码。解密算法使用的是XOR和ROL算法,密钥为0x15C13。如下图所示。
解密完shellcode后跳转到ShellcodeBase+0x1ED4的位置,此位置是shellcode代码入口点。
2.2 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功能区。
shellcode的两个主要功能是破坏擦除文件以及制作Win64 EXE后门程序。如图所示,使用jmp指令来替代call指令。
- 获取执行主流程
ShellcodeBase+0x216F的位置为shellcode函数主要功能区入口地址,通过jmp指令跳转到破坏擦除文件函数流程。
使用push eax + ret来替代call指令进行跳转,会跳转到shellcode的功能区,也就是地址为:00000000001A2554的位置,下面就是shellcode主要的两个功能:破坏擦除文件以及制作后门程序。
- 破坏擦除功能分析
制作后门shellcode并把shellcode保存在全局变量中,然后创建线程执行破坏擦除功能。
破坏擦除文件函数主要功能:
- 创建互斥量 ( Local\\azov) 以验证恶意软件的两个实例是否同时运行
- 对 64 位 Windows 系统中的msiexec.exe或perfmon.exe制作后门程序并将其另存为rdpclient.exe
- 创建注册表项并维持持久化,SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run指向新创建的文件,即rdpclient.exe
- 获取并检查系统时间,使用系统时间与某个触发时间进行比较,如果不等于或者大于就会使用sleep函数休眠10s
- 遍历所有目录并对该目录下的文件进行破坏擦除处理
- 在破坏擦除过程中,为防止系统和可执行文件被破坏,会规避掉以下系统目录和文件类型
6. 随机破坏擦除文件,每次随机覆盖0x29A字节,覆盖的内容为堆栈残留数据,覆盖文件大小最大为4G
7. 被破坏擦除的文件的文件扩展名为会修改为.azov
如下图所示为WipingAndDookingProc函数。
- 制作后门程序
当创建互斥体成功后,Azov会选择对msiexec.exe或perfmon.exe文件制作成后门程序,把制作后的后门程序另存为rdpclient.exe文件,最后把该文件写入到注册表中,维持可持久化。
写入注册表的路径:SOFTWARE\Microsoft\Windows\CurrentVersion\Run,设置的值名称为Bandera。
在此不再具体分析制作后门程序的流程,会在下一小节进行详细分析。
- 破坏擦除功能
获取盘符和卷信息,申请内存并保存相关信息,同时创建线程并执行破坏擦除文件操作。
破坏擦除文件操作主要功能:
- 在破坏擦除文件操作中排除特定的文件类型
- 如DLL、EXE和INI等文件
- 执行破坏擦除文件操作
- 对破坏擦除后的文件重新添加后缀名为.azov
- 在每个目录下生成勒索信
执行破坏擦除文件操作。
- 文件对比
每个符合可被破坏条件的文件,从开始会被0x29A 字节的块随机覆盖,然后间隔0x29A 字节,再次被随机覆盖0x29A 字节,以此类推。
破坏前文件数据,如下图所示。
破坏后文件数据,如下图所示。
- 制作后门程序功能分析
创建线程来执行制作后门程序功能操作,其中线程回调函数主要负责获取盘符和卷信息,并通过获取到的盘符和卷信息对文件进行遍历,最后把盘符、卷信息和遍历的文件信息保存到申请的内存空间。
制作后门程序函数主要功能:
- 创建线程执行创建互斥体和遍历文件操作
- 互斥体名称:Local\Kasimir_%c
- 其中%c为替换正在处理的驱动器盘符
- 制作后门程序作为线程回调函数的参数被传递,同时被传递的还有函数指针表、盘符信息以及申请的空间大小等信息
如下图所示,创建互斥体和遍历文件,其中使用原子操作来保证线程同步。
- 制作后门程序功能预处理分析
通过递归遍历文件来寻找符合要求的Win64 EXE文件来制作后门程序。
制作后门程序操作主要功能:
- 判断是否为后缀名是EXE的文件
- 执行制作后门程序操作
MakeDooringCustom函数主要功能:
- 1、拷贝shellcode到新申请的内存空间
- 2、保存相关的函数信息到申请的内容空间,以便于后续使用
- 3、判断EXE文件是否大于20MB,如果小于则读取EXE文件到内存中
- 4、执行具体的制作后门程序操作
- 制作后门程序功能前提条件分析
MakedooringExeFile函数主要功能:
- 检查是否满足Win64EXE文件的要求
- 检查可执行文件的地址范围是否符合要求
- 获取PE结构的SectionHeader地址
- 检查节空间是否足够存放shellcode代码,并把shellcode起始地址存放在原来PE文件的OEP处
- 计算并调整PE文件大小
- 清除安全数据目录项
- 对满足以上要求的Win64 EXE文件制作后门程序
- 制作后门程序功能分析
MakeBackdoorExeFile函数主要功能:
- 1、获取到节表首地址并随机修改某几个位置的内容
- 2、申请堆内存并把shellcode以及需要使用到的函数保存到堆内存中
- 3、填充shellcode结构
- 4、把PE结构中的节信息保存到shellcode中
- 5、对shellcode进行加密处理,使用的加密算法同解密算法
- 使用XOR和ROL指令
- 6、把shellcode写入到Win64 EXE文件中去
- 7、把shellcode需要的资源信息写入到文件末尾,其中包括随机生成的shellcode、勒索信数据以及其他的编码数据
03 相关性分析
根据VirusTotal 查询,有两种不同版本的 Azov,一种较旧,一种稍新。这两个版本大部分功能相同,但较新版本使用了不同的勒索信内容和不同的被破坏文件扩展名 ( .azov)。
新版勒索信内容
旧版勒索信内容
04 结论
Avoz勒索病毒通过使用FASM来编译,具有更高的灵活性。其中使用了反软件断点调试、代码混淆膨胀以及指令替换等技术。该勒索病毒采用的是擦除文件,使得被破坏的文件无法恢复;同时该勒索软件为Win64 EXE文件制作多态后门,此种技术在一些其他勒索病毒上是不常见的。
05 加固建议
- 工作中的重要的数据文件资料设置相应的访问权限,关闭不必要的文件共享功能并且定期进行非本地备份
- 使用高强度的主机密码,并避免多台设备使用相同密码,不要对外网直接映射3389等端口,防止暴力破解
- 在终端侧部署杀毒软件、终端安全管理系统等终端安全产品,对勒索病毒提前进行检测和查杀
- 避免打开和安装来路不明的软件、不点击来源不明的邮件附件、禁用微软 Office 软件宏功能
- 不轻易打开文件扩展名为 js、vbs、wsf、bat、cmd、ps1、sh 等脚本文件和 exe、scr、com 等可执行程序
- 对于陌生人通过邮件等方式发送的压缩文件包打开前进行安全查杀
- 尽量不要在非官方渠道下载非正版的应用软件,发现文件类型与图标不相符时应先使用安全软件对文件进行查杀
- 定期检测系统漏洞和进行漏洞扫描并且及时进行补丁修复
06 IoC
描述 | SHA256 |
旧版Azov | b102ed1018de0b7faea37ca86f27ba3025c0c70f28417ac3e9ef09d32617f801 |
新版Azov | 650f0d694c0928d88aeeed649cf629fc8a7bec604563bca716b1688227e0cc7e |