暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

深度干货 | 感染型勒索软件 Azov 分析报告

塞讯验证 2023-01-31
472

▍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保存在全局变量中,然后创建线程执行破坏擦除功能。

破坏擦除文件函数主要功能:
  1. 创建互斥量 ( Local\\azov) 以验证恶意软件的两个实例是否同时运行

  2. 对 64 位 Windows 系统中的msiexec.exe或perfmon.exe制作后门程序并将其另存为rdpclient.exe

  3. 创建注册表项并维持持久化,SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run指向新创建的文件,即rdpclient.exe

  4. 获取并检查系统时间,使用系统时间与某个触发时间进行比较,如果不等于或者大于就会使用sleep函数休眠10s

  5. 遍历所有目录并对该目录下的文件进行破坏擦除处理

    • 在破坏擦除过程中,为防止系统和可执行文件被破坏,会规避掉以下系统目录和文件类型

6. 随机破坏擦除文件,每次随机覆盖0x29A字节,覆盖的内容为堆栈残留数据,覆盖文件大小最大为4G

7. 被破坏擦除的文件的文件扩展名为会修改为.azov

如下图所示为WipingAndDookingProc函数。

  • 制作后门程序

当创建互斥体成功后,Azov会选择对msiexec.exe或perfmon.exe文件制作成后门程序,把制作后的后门程序另存为rdpclient.exe文件,最后把该文件写入到注册表中,维持可持久化。

写入注册表的路径:SOFTWARE\Microsoft\Windows\CurrentVersion\Run,设置的值名称为Bandera。

在此不再具体分析制作后门程序的流程,会在下一小节进行详细分析。

  • 破坏擦除功能

获取盘符和卷信息,申请内存并保存相关信息,同时创建线程并执行破坏擦除文件操作。

破坏擦除文件操作主要功能:
  1. 在破坏擦除文件操作中排除特定的文件类型

    • 如DLL、EXE和INI等文件

  2. 执行破坏擦除文件操作

    • 对破坏擦除后的文件重新添加后缀名为.azov

  3. 在每个目录下生成勒索信

执行破坏擦除文件操作。

  • 文件对比

每个符合可被破坏条件的文件,从开始会被0x29A 字节的块随机覆盖,然后间隔0x29A 字节,再次被随机覆盖0x29A 字节,以此类推。

破坏前文件数据,如下图所示。

破坏后文件数据,如下图所示。


  • 制作后门程序功能分析

创建线程来执行制作后门程序功能操作,其中线程回调函数主要负责获取盘符和卷信息,并通过获取到的盘符和卷信息对文件进行遍历,最后把盘符、卷信息和遍历的文件信息保存到申请的内存空间。

制作后门程序函数主要功能:
  1. 创建线程执行创建互斥体和遍历文件操作

    • 互斥体名称:Local\Kasimir_%c

    • 其中%c为替换正在处理的驱动器盘符

  2. 制作后门程序作为线程回调函数的参数被传递,同时被传递的还有函数指针表、盘符信息以及申请的空间大小等信息

如下图所示,创建互斥体和遍历文件,其中使用原子操作来保证线程同步。

  • 制作后门程序功能预处理分析

通过递归遍历文件来寻找符合要求的Win64 EXE文件来制作后门程序。

制作后门程序操作主要功能:
  1. 判断是否为后缀名是EXE的文件

  2. 执行制作后门程序操作

MakeDooringCustom函数主要功能:

  • 1、拷贝shellcode到新申请的内存空间

  • 2、保存相关的函数信息到申请的内容空间,以便于后续使用

  • 3、判断EXE文件是否大于20MB,如果小于则读取EXE文件到内存中

  • 4、执行具体的制作后门程序操作

  • 制作后门程序功能前提条件分析
MakedooringExeFile函数主要功能:
  1. 检查是否满足Win64EXE文件的要求

  2. 检查可执行文件的地址范围是否符合要求

  3. 获取PE结构的SectionHeader地址

  4. 检查节空间是否足够存放shellcode代码,并把shellcode起始地址存放在原来PE文件的OEP处

  5. 计算并调整PE文件大小

  6. 清除安全数据目录项

  7. 对满足以上要求的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

07 模拟攻击库更新

塞讯安全度量验证平台已将此技术纳入模拟攻击库,在平台内搜索“Avoz”即可获得相关攻击模拟实验,从而验证安全防御体系是否能够有效应对这一攻击手段。

扫描底部二维码添加官方客服,获取完整版报告


塞讯验证是国内网络安全度量验证平台开创者,当先提出利用真实自动化攻击剧本来持续验证安全防御有效性概念,旨在用安全验证技术来帮助客户实现365天持续评估自身网络和数据安全防御体系效果。
塞讯创始团队均曾任职于世界闻名的网络安全公司,拥有业界杰出的安全分析和防御能力。两大研发团队分别位于上海和杭州,致力于为客户打造精良产品。我们在北京、上海、深圳、杭州均设有分支机构,服务可覆盖全国各个角落。

长按图片扫码添加【官方客服】


文章转载自塞讯验证,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论