TA505行动:我们如何分析Trojan Dridex,Locky勒索软件和Neutrino僵尸网络创建者的新工具



TA505小组2019年袭击的地理位置

我们来自PT专家安全中心的威胁情报分析师团队已经监视了TA505中的网络犯罪分子六个月了。 攻击者感兴趣的领域是金融领域,目标位于不同大洲的数十个国家/地区。

TA505的知名群体


这组攻击者拥有悠久的历史 :自2014年以来,他们列出了银行Trojan Dridex,Neutrono僵尸网络以及一系列密码学家-Locky,Jaff,GlobeImposter等。

从北美到中亚,该小组的活动在世界各地都有记录。 注意:我们在俄罗斯记录了孤立的恶意TA505分组案例,但是有充分理由相信攻击者在我们的国家没有目标,并且邮件的性质是随机的。

尽管该集团主要是出于财务动机,但是在过去六个月的目标中,仍然有研究机构,能源行业组织,医疗保健,航空公司甚至公共部门。



2019年TA505攻击按行业分布

以下是包含该小组开发的恶意软件的网络钓鱼电子邮件的示例,该恶意软件是根据该电子邮件地址判断的,并定向到英国外交部。



自2018年春季以来,该小组一直在使用远程访问工具FlawedAmmyy,并且自年底以来一直在使用新的ServHelper后门。 TA505-为数不多的能长时间保持活跃的人之一。 此外,随着每一波新的攻击浪潮,他们都对其工具进行了有趣的更改。



2019年月度TA505组发现动态

当然,这种激烈的活动并没有引起人们的注意: Proofpoint趋势科技Yoroi的同事发表了许多出版物,不仅涉及恶意技术和恶意软件。 但是,许多有趣的细节被忽略了:

  • 组标识PE封隔器;
  • ServHelper后门的一种变体,其中的重点不是自己的功能,而是着重于现成的,众所周知的NetsupportManager实现;
  • 网络基础设施:特色注册商,托管人,包括与Buhtrap集团基础设施的交叉点;
  • 其他先前未描述的VPO组。

本文是我们有关TA505的系列文章中的第一篇。

第一部分 包见面


在2019年6月中旬,我们注意到下一个FlawedAmmy恶意软件下载器与以前的版本有显着差异:例如,十六进制编辑器中程序代码的直观表示发生了变化,甚至成为以下几个示例的特征:



程序代码的ASCII表示

对代码的快速分析表明,我们面前有一个未知的可执行文件打包器。 后来发现,该封隔器不仅涵盖了上述装载机,还涵盖了HPE集团的其他样本,包括有效载荷。 然后,我们决定详细研究减压逻辑,以便自动提取目标对象。

第1层。扭曲的异或


解压缩程序的关键部分之前是大量无用的指令。 病毒编写者经常采用这种技术来混淆防病毒产品的仿真器。 所有有趣的事情都始于使用WinAPI函数VirtualAllocEx为大小为0xD20的缓冲区分配内存。 分配了PAGE_EXECUTE_READWRITE权限的内存,使您可以编写和执行代码。



解包内容的开始

正在研究的文件的数据部分包含一个数组,该数组包含经过解密过程的数据,并将结果写入分配的内存中。 解密算法:

  • 将4个字节解释为整数,
  • 减去序列号
  • 使用给定的常量执行XOR操作,
  • 向左循环移位7个单位,
  • 使用给定的常数再次执行XOR操作。



解码第一层
我们用缩写SUB-XOR-ROL7-XOR表示该算法,以供以后参考。
在解密过程之后,变量将被顺序初始化。 这可以表示为以以下格式填写C结构:

struct ZOZ { HMODULE hkernel32; void *aEncodedBlob; unsigned int nEncodedBlobSize; unsigned int nBlobMagic; unsigned int nBlobSize; }; 

其中:

  • hkernel32-库描述符kernel32.dll;
  • aEncodedBlob-指向编码数据块的指针,当我们提到上面样本的视觉相似性时我们提到了它;



编码数据块

  • nEncodedBlobSize-编码数据块的4字节大小;
  • nBlobMagic-数据块前面的4字节常量,我们将在后面返回;
  • nBlobSize-解码数据块的4字节大小;

我们将其称为ZOZ结构(在leetspeak上为“ 505”)。



填充ZOZ结构

由于上述操作,代码执行将被重定向到解密的缓冲区(现在毫无疑问,解密的数据是可执行代码),并且指向填充结构的指针将作为函数参数传递:



使用作为参数传递的“ ZOZ ”结构调用解密的代码



反汇编的解密代码

第2层。越小越好


将控制权转移到解密的代码之后,第一步是确定WinAPI函数GetProcAddress,VirtualQuery,VirtualAlloc,VirtualProtect,VirtualFree和LoadLibraryA的地址。 此列表通常在Shell代码的工作中找到:毕竟,它们需要准备并正确填充内存,以便随后启动有效负载。

初步程序完成后,传输的编码数据块将被截断:每五个字节中的前两个字节将被丢弃,其余三个字节将被保存:



减少编码数据块

然后,执行我们称为SUB-XOR-ROL7-XOR的解密过程。 在这种情况下,将另一个nBlobMagic值用作XOR操作的常量,该值在ZOZ结构中传递。



重用SUB-XOR-ROL7-XOR

之后,将所得数组转移到函数中,在函数中进行一系列更复杂的转换。 通过常数的特征值,很容易确定这是流行的PE包装器FSG(快速小包装)的实现。 奇怪的是,FSG Packer的原始版本将PE压缩为多个部分,并且在我们的案例中,该算法的实现可整体上与PE一起使用。



FSG Packer实施

在此阶段,已解压缩的PE目标文件已准备好进行进一步分析。 其余的Shellcode将使用解压后的版本覆盖地址空间中的原始PE并正确运行它。 有趣的是,在调整已加载模块的入口点的过程中,结构是在PEB中操作的。 攻击者为何决定从第一层的逻辑中转发kernel32描述符,而不是使用相同的PEB结构来获取它。



覆盖PEB中已加载模块的入口点的值

结论


因此,有效载荷拆包算法为:

  • 使用SUB-XOR-ROL7-XOR进行shell代码解码,
  • 填充ZOZ结构并调用shellcode,
  • 减少五到三个有效载荷,
  • 使用SUB-XOR-ROL7-XOR进行有效载荷解码,
  • 减压封隔器FSG。

在恶意软件的演变过程中,逻辑发生了变化:例如,SUB-XOR-ROL7-XOR算法的循环移位次数(在考虑的情况下为7)改变了五个,九个,发布了x64平台的打包器版本,等等。独特的网络犯罪分组打包器非常出色未来的叙述中有关TA505工具和功能的摘要。

在接下来的文章中,我们将讨论TA505工具在最新攻击过程中是如何开发和更改的,以及参与者与其他网络团体的互动,并且我们将研究以前未被考虑的恶意软件模型。

作者 :积极技术公司的Alexey Vishnyakov和Stanislav Rakovsky

国际奥委会


b635c11efdf4dc2119fa002f73a9df7b - b635c11efdf4dc2119fa002f73a9df7b打包式装载机
71b183a44f755ca170fc2e29b05b64d5 - 71b183a44f755ca170fc2e29b05b64d5未包装的引导程序

Source: https://habr.com/ru/post/zh-CN469813/


All Articles