Azov勒索软件的演进之路( 二 )


文章插图
只有一个“.code”部分 , 没有导入
code字段分为三个部分 , 通过查看其熵最容易看出 。首先 , 有一个高熵部分包含加密的shell代码 。之后是实现解包程序的纯代码 , 然后是熵非常低的最后一部分 , 似乎由用于构造勒索信的纯字符串组成 。

Azov勒索软件的演进之路

文章插图
“.code”部分的熵
Azov勒索软件的演进之路

文章插图
打开程序
由于Azov的整个代码都是手工编写的 , 因此有必要执行一些IDA魔术和清理工作 , 以将代码塑造成可以反编译和理解的状态 。完成此操作后 , 过程start_0()就可见了 。这段代码将shellcode解包到新分配的内存中 , 然后将执行传递给它 。
Azov勒索软件的演进之路

文章插图
输入函数start_0
函数AllocAndDecryptShellcode()中的解包程序被故意创建得看起来比实际更复杂 。但实际上 , 它是一个简单的种子解密算法 , 使用xor和rol的组合 , 其中key = 0x15C13 。
Azov勒索软件的演进之路

文章插图
AllocAndDecryptShellcode函数中的解包程序
我们在下面提供了简化程序逻辑的Python/ target=_blank class=infotextkey>Python实现:
Azov勒索软件的演进之路

文章插图
下一阶段分为两个主要程序:一个负责清除文件 , 另一个负责为可执行文件设置后门 。
Azov勒索软件的演进之路

文章插图
将执行转移到清除和后门逻辑
Azov勒索软件的演进之路

文章插图
清除程序
清除程序首先创建一个互斥锁(Local\\azov) , 以验证恶意软件的两个实例没有同时运行 。
Azov勒索软件的演进之路

文章插图
清除程序——互斥锁创建
如果成功获得互斥锁句柄 , Azov会通过木马(类似于后门程序)64位windows系统二进制文件msiexec.exe或perfmon.exe并将其保存为rdpclient.exe来创建持久性 。在SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run上创建一个注册表项 , 指向新创建的文件 。
Azov勒索软件的演进之路

文章插图
持久性创建
清除程序使用触发时间——有一个循环 , 被分析的样本检查系统时间 , 如果不等于或大于触发时间 , 则休眠10秒 , 然后再次循环 。样本触发时间为2022年10月27日 。
Azov勒索软件的演进之路

文章插图
样本触发时间为2022年10月27日
一旦这个逻辑炸弹被触发 , 清除器逻辑就会遍历所有设备目录 , 并对每个目录执行清除程序 , 从而避免某些硬编码的系统路径和文件扩展名 。
Azov勒索软件的演进之路


推荐阅读