freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

深度干货 | 感染型勒索软件 Azov 分析报告
2023-02-01 16:19:25
所属地 上海

01 Azov简介

Azov 勒索软件家族最早出现在2022年10月中旬,是一款感染型勒索病毒。

当前该家族通过盗版软件、激活工具和捆绑流氓软件分发与勒索相关的数据擦除器。近期 Azov 软件已和 SmokeLoader 僵尸网络合作,利用SmokeLoader 僵尸网络进行分发。Azov 与普通勒索软件的区别之一是它修改了某些 64 位可执行文件作为后门程序,可执行文件的修改使用的是多态后门,采取多态后门主要为防止被静态签名破坏。

Azov 勒索会对非exe、dll、ini、azov类型文件进行破坏,并且还会感染本地exe程序,被感染的exe程序也能够执行与母体相同的功能。虽然Azov会留下勒索信,让受害者联系作者以恢复被破坏的文件。事实上,即使受害者联系作者也是无法恢复,因为被破坏的文件是不可逆的。

勒索信信息

1.1 攻击流程

1675236844_63da15ec4ad71c4e63fc2.png!small

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函数地址,为之后动态获取函数地址做准备。

1675236887_63da16173b014677b60b7.png!small

  • 分析解密shellcode函数

sub_405416函数主要用于申请内存并解密shellcode代码,并把shellcode代码保存到申请内存空间,然后解密shellcode代码。解密算法使用的是XOR和ROL算法,密钥为0x15C13。如下图所示。

1675236900_63da1624bae87b9f5dfae.png!small

解密完shellcode后跳转到ShellcodeBase+0x1ED4的位置,此位置是shellcode代码入口点。

1675236912_63da16308c1dd9b3b112c.png!small

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指令。

1675237604_63da18e49c7c23fcd9ef7.png!small

  • 获取执行主流程

ShellcodeBase+0x216F的位置为shellcode函数主要功能区入口地址,通过jmp指令跳转到破坏擦除文件函数流程。

1675237621_63da18f5002e77318140e.png!small

使用push eax + ret来替代call指令进行跳转,会跳转到shellcode的功能区,也就是地址为:00000000001A2554的位置,下面就是shellcode主要的两个功能:破坏擦除文件以及制作后门程序。

1675237781_63da199539974897db730.png!small

1675237795_63da19a3808f1785b3d7a.png!small


  • 破坏擦除功能分析

制作后门shellcode并把shellcode保存在全局变量中,然后创建线程执行破坏擦除功能。

1675238425_63da1c199d02307be7096.png!small

破坏擦除文件函数主要功能:

  1. 创建互斥量 ( Local\\azov) 以验证恶意软件的两个实例是否同时运行
  2. 对 64 位 Windows 系统中的msiexec.exe或perfmon.exe制作后门程序并将其另存为rdpclient.exe
  3. 创建注册表项并维持持久化,SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run指向新创建的文件,即rdpclient.exe
  4. 获取并检查系统时间,使用系统时间与某个触发时间进行比较,如果不等于或者大于就会使用sleep函数休眠10s
  5. 遍历所有目录并对该目录下的文件进行破坏擦除处理
    • 在破坏擦除过程中,为防止系统和可执行文件被破坏,会规避掉以下系统目录和文件类型

1675238438_63da1c26af85f59f3ae30.png!small


1675238449_63da1c3133ddf9390ed5b.png!small

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

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

如下图所示为WipingAndDookingProc函数。

1675238459_63da1c3bef3c8a8adfd80.png!small

  • 制作后门程序

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

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

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

  • 破坏擦除功能

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

1675238475_63da1c4b42a69fc224c75.png!small

破坏擦除文件操作主要功能:

  1. 在破坏擦除文件操作中排除特定的文件类型
  2. 如DLL、EXE和INI等文件
  3. 执行破坏擦除文件操作
  4. 对破坏擦除后的文件重新添加后缀名为.azov
  5. 在每个目录下生成勒索信

执行破坏擦除文件操作。

1675238493_63da1c5dd299f4fddaff7.png!small

  • 文件对比

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

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

1675238507_63da1c6b2ca23621ab165.png!small

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

1675238521_63da1c794d2ee138786a2.png!small


  • 制作后门程序功能分析

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

1675239259_63da1f5b1f92922da5454.png!small

制作后门程序函数主要功能:

  1. 创建线程执行创建互斥体和遍历文件操作
  2. 互斥体名称:Local\Kasimir_%c
  3. 其中%c为替换正在处理的驱动器盘符
  4. 制作后门程序作为线程回调函数的参数被传递,同时被传递的还有函数指针表、盘符信息以及申请的空间大小等信息

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

1675239272_63da1f6826387379e3eee.png!small

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

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

制作后门程序操作主要功能:

  1. 判断是否为后缀名是EXE的文件
  2. 执行制作后门程序操作

1675239287_63da1f77234deaed8f553.png!small

MakeDooringCustom函数主要功能:

  • 1、拷贝shellcode到新申请的内存空间
  • 2、保存相关的函数信息到申请的内容空间,以便于后续使用
  • 3、判断EXE文件是否大于20MB,如果小于则读取EXE文件到内存中
  • 4、执行具体的制作后门程序操作

1675239200_63da1f2050c70541a8746.png!small

  • 制作后门程序功能前提条件分析

MakedooringExeFile函数主要功能:

  1. 检查是否满足Win64EXE文件的要求
  2. 检查可执行文件的地址范围是否符合要求
  3. 获取PE结构的SectionHeader地址
  4. 检查节空间是否足够存放shellcode代码,并把shellcode起始地址存放在原来PE文件的OEP处
  5. 计算并调整PE文件大小
  6. 清除安全数据目录项
  7. 对满足以上要求的Win64 EXE文件制作后门程序

1675239189_63da1f153cfbcbea8998e.png!small

  • 制作后门程序功能分析

MakeBackdoorExeFile函数主要功能:

  • 1、获取到节表首地址并随机修改某几个位置的内容
  • 2、申请堆内存并把shellcode以及需要使用到的函数保存到堆内存中
  • 3、填充shellcode结构
  • 4、把PE结构中的节信息保存到shellcode中
  • 5、对shellcode进行加密处理,使用的加密算法同解密算法
    • 使用XOR和ROL指令
  • 6、把shellcode写入到Win64 EXE文件中去
  • 7、把shellcode需要的资源信息写入到文件末尾,其中包括随机生成的shellcode、勒索信数据以及其他的编码数据

1675239177_63da1f09db69d1c16e87d.png!small

03 相关性分析

根据VirusTotal 查询,有两种不同版本的 Azov,一种较旧,一种稍新。这两个版本大部分功能相同,但较新版本使用了不同的勒索信内容和不同的被破坏文件扩展名 ( .azov)。

1675239167_63da1eff97bce7804b52c.png!small

新版勒索信内容

1675239159_63da1ef78b1aadbffebba.png!small

旧版勒索信内容

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


# 网络安全技术 # 勒索软件 # 安全验证 # 勒索软件分析
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录