Gozi的技术迭代史
2020-09-29 10:36:19 Author: www.4hou.com(查看原文) 阅读量:252 收藏

大多数时候,网络攻击活动与恶意软件攻击之间的关系很简单,一些恶意软件虽已消失但未被遗忘,例如GandCrab就经常被攻击者使用,再比如开源Quasar RAT, Quasar是一种公开可用的开源远程访问木马(RAT),主要针对Windows操作系统。Quasar通过恶意附件在网络钓鱼电子邮件中传播。据悉,这个RAT是用C#编程语言编写的。Quasar最初是由GitHub用户 MaxXor 开发,用于合法用途。然而,该工具此后被黑客用于各种网络间谍活动。Quasar于2014年7月首次发布,名为“xRAT 2.0”,后来于2015年8月更名为“Quasar”。类似的这些恶意软件会落入灰色区域,没有人可以控制恶意代码库或二进制文件,但作为恶意工具,也没被普遍传播。

在本文中,我们就已Gozi为例子,详细介绍一下恶意软件的整个演变周期。

Gozi是目前常用的一个重量级的恶意软件,它具有一系列复杂的功能,我们将在下面详细介绍这些功能,并且攻击范围非常广泛。 单是Dreambot(Gozi的一个变体),就影响了450000名受害者。

不过回顾历史,Gozi最初只是一个简单的银行木马,明显缺乏Web注入功能,因此在某些方面比ZeuS的第一个版本更为原始。

Gozi在被使用的第一年时未被发现,直到2007年才第一次被曝光。很快,Gozi(与Emotet相似)就发展成为一个多模块,多用途的恶意平台,并且到2020年,Gozi仍在积极运行中且被成为金融界历史上破坏性最强的病毒之一。

自2007年首次被发现以来,Gozi就是一直是攻击者迭代所用的代码库。在2010年之前, Gozi的源代码还未被泄漏,不过在2010年源代码被泄漏后,其他攻击者就接管并运行了源代码,这样Gozi就出现了两个新版本:Gozi Prinimalka(后来与Pony合并为Neverquest)和Gozi“ISFB”。仅这些早期的变体就已经具备了反检测的能力。一家安全公司更是将ISFB称为“Gozi2”,另一些人称之为“Ursnif”或“Snifula”,以21世纪初的一款间谍软件命名,最初的Gozi CRM借用了该软件的代码。其他一些供应商开始把这个恶意软件称为“Rovnix”,这个名字来源于一个通常用来混淆二进制文件的封装器。

 “ISFB”是Gozi派生词的专有名称,因为内部二进制字符串包含对“ISFB项目”的引用。最初将恶意软件称为“Ursnif”的行为与漫恶意软件传统的命名规则有关,这种传统至少可以追溯到1991年的米开朗基罗病毒。这种命名规则并没有什么错,但是对于刚出现的Gozi的许多绰号和误解则引发了混乱。幸运的是,“Rovnix”和“Snifula”的命名法落伍了,但“Ursnif”的命名规则却被延续了下来。

几年后,ISFB的源代码被泄漏了,大多数证据将第二次泄漏定为2015年,但一些消息人士则表示早在2013年就发生了。其中一个变体与Nymaim合并,成为两个恶意软件家族的杂交后代GozNym的核心代码。另一个变体是Dreambot,它严重依赖于2010年CRM泄露的原始代码,调整了ISFB的签入格式,并增加了对通过TOR网络的C&C通信的支持。

当第二波Gozi出现很长一段时间后,一些攻击者又开发了新的版本,即Goziv3(RM3加载器),ISFB3和Gozi2RM3(IAP 2.0)。这些都对恶意软件的混淆机制,控制流和C&C通信方案进行了自己的调整。尤其是,签名的二进制文件,HTTPS通信和2阶段的客户端注册过程。

1.jpg

不同版本的Gozi功能

下面我们列出了大多数Gozi共有的一些特征:

1. 字符串以加密形式包含在二进制文件的.bss部分中,解密过程使用“密钥”字符串,它是字符串格式的编译时间戳记(例如,2019年4月20日)。

image.png

字符串解密过程

2. 浏览器中的攻击会从受害者的凭据中窃取一系列预先配置的网站(通常是银行),在ISFB及其衍生工具中,引入了网络注入功能。

3. 一种特定的C&C签入格式,显示在请求标头或正文中。一个典型的示例是soft =%u&version =%u&user =%08x%08x%08x%08x&server =%u&id =%u&crc =%x,尽管所使用的参数及其顺序略有不同。

4. 用于混淆C&C签入的精心设计的方案。尤其是在变体中,这实际上是一个常数,我们在任何地方都没有对其进行任何调整。混淆操作如下:

4.1 使用内置的对称密钥对签入进行加密(较早的变体使用RC6,较新的变体使用Serpent);

4.2 使用base64编码进行编码;

4.3 使用自定义的转义字符“ _”转义非字母数字字符,例如“+”变成了_2B;

4.4 在结果中随机添加斜杠字符(" / ");

image.png

混淆方案

5.在进程级别上,执行浏览器人攻击的恶意软件模块与做出实际决定的模块之间是不同的,该决定是关于注入什么内容以及在何处将后者注入到explorer.exe中的位置。虽然恶意软件的一些运行时信息在注册表中保持全局可访问(例如,从C&C服务器收到的最后一个任务列表的CRC值),但两个进程使用一个命名管道进行通信。

6.标准信息窃取功能的范围,如键记录、电子邮件、ftp帐户、IM数据和证书抓取,以及屏幕视频捕捉。这些插件还支持可选的dll格式插件,C&C服务器可以通过这些插件指示受感染的计算机在运行时下载并执行。

7.使用一种相当繁琐的格式(称为“联合资源”)来处理各种硬编码信息。硬编码信息的类型也不是用简单的英语编写,而是用CRC32标签表示。

image.png

CRC到资源名称的示例映射

8.变体使用相同的元素和相同的格式来存储Web注入:

8.1 @ ID @:病毒ID(受害者主机身份);

8.2 @ GROUP @:组ID(机器人的组ID);

8.3 @ RANDSTR @:随机字符串;

8.4 @ URL = @:目标金融机构;

8.5 @ CONFIG = @:配置;

8.6 @ VIDEO = @:视频,以便受害者访问感兴趣的页面后进行录制;

8.7 @ SOCKS = @:连接SOCKS服务器;

8.8 @ VNC = @:连接VNC;

Goziat

这种变体的Gozi似乎是在ISFB泄露事件几年后首次出现的。与其他变体相比,它最显著的特性是其C&C签入中的一个功能:大多数其他Gozi版本都模拟对图像的HTTP获取请求,因此最后会出现一些/images/的变体,然后是一个冗长且复杂的BASE64 blob,最后会出现一个.gif或.jpeg文件扩展名。这种混淆对于安全解决方案来说有点棘手,但并非不可能,这可能就是为什么goziat使用一个不同的资源目录而不是“图像”,它可以在恶意软件的构建过程中配置。由于goziat并不担心签入是对图像的合法请求,它也放弃了“图像文件扩展名作为编码请求”的伎俩,这在Dreambot中很流行,并被许多其他变体复制。相反,它使用简单的action=

少数研究人员将这种变体称为LOLSnif,因为它利用预先安装的Windows实用程序,如mshta.exe和powershell.exe。与服务器端更先进的geofencing不同,这个变体有一个针对系统默认UI语言的内置客户端检查。

image.png

用于定位的系统UI语言检查

虽然有几个不同的攻击活动使用Goziat,但都倾向于使用.at顶级域名,这也是研究人员选择这个名字的原因。这与IP地址甚至所使用的子域中的某些重叠一起,共同暗示了在活动操作级别上的一些共性。这些活动往往会在相当长的时间内停留在相同的域和IP地址上,这并不是最佳的选择。下表列出了研究人员能够跟踪使用此特定版本Gozi的攻击。

6.png

遗留在Firefox Send上的恶意文件

除了上面列出的域外,每个攻击还支持TOR域。

· Api1: 6buzj3jmnvrak4lh.onion,      g4xp7aanksu6qgci.onion, l35sr5h5jl7xrh2q.onion

· Rpc: v6ekxns6ldq5uai3.onion,      uaoyiluezum43ect.onion, tjiqtwzewnkbqxmh.onion

· Wpapi: 4fsq3wnmms6xqybt.onion,      em2eddryi6ptkcnh.onion, nap7zb4gtnzwmxsv.onion, t7yz3cihrrzalznq.onion

· Webstore: vo5vuw5tdkqetax4.onion      , zq4aggr2i6hmklgd.onion

· Wpx: pzgxy5elkuywloqc.onion,      q7nxkpgras35dwxk.onion, rbhqdxwdwrlp67g6.onion, jesteoq7glp3cpkf.onion

Gozi2RM3 / Gozi IAP2.0

这个版本的Gozi没有引入任何C&C通信调整,基于通信和二进制元数据,很容易将其误认为是其他版本的变体。Gozi2RM3和上一代Gozi最显著的区别是在攻击基础设施层面,该层面实施了彻底的审核过程。

Gozi2RM3攻击活动的C&C基础结构分为两个阶段,其中第1阶段C&C的地址被硬编码到感染受害者的初始二进制文件中。第一阶段C&C已预先配置了ISP /地理位置拒绝列表,该列表用于预先过滤怀疑是好奇的研究人员而不是真正的受害者的连接。在某些情况下,即使通过了这些检查,受害者也必须通过不断发送数据来证明自己是真正的受害者,只有这样,第二阶段服务器才会考虑推送攻击的主要有效载荷并发送真实配置。

值得庆幸的是,至少有一个默认的用于C2通信的serpent加密密钥(10291029JSJUYNHG),许多活动从来都不想着进行修改。

虽然基础设施上的这些差异是主要原因,但在功能上也存在一些差异,还有C&C面板,这使我们相信此变体可能已经在某处被出售。

image.png

Gozi2RM3 C&C Web面板

还有一个更简洁的URI格式字符串(无操作系统、大小、哈希),用于指定从C&C请求的资源的协议是“image feign request”协议,直接取自dreambot。

8.png

伪造的图像请求及其含义,在Dreambot和其他一些变体中被使用

Goziat攻击者和Gozi2RM3攻击者之间似乎存在联系,这两个变体都增加了另一个加密步骤,从而改变了它们解密有效载荷的方式,恶意服务器的公共RSA密钥进一步用serpent密钥加密,而serpent密钥本身只在运行时组装。事实上,这两个变体都以同样的方式改变了他们的流程,而且在如此短的时间框架内,似乎暗示了他们要么是自愿共享代码,要么其中一个团队非常警惕地模仿另一个团队。

下表列出了研究人员追踪到的一些使用了这个特定版本Gozi的攻击,这只是众多长期停滞不前的活动中最近活跃的活动的一小部分。这些活动之间的一些共同点表明,使用Gozi2RM3的活跃攻击者的数量可能不是很多。

9.png

image.png

用于传播Gozi2RM3的恶意文件分类

Goziv3 RM3

至少从2017年夏季开始,这种变体就开始流行了。来自ISFB的许多代码仍然存在,但也有很多不同之处。此变体与第二波Gozi之间存在一些明显的技术差异:

RM3加载器使用一种独特的文件格式,称为“PX格式”,每个dll都是使用自定义程序加载器加载的。

Joined Resources(“ JJ”)结构已被抛弃,取而代之的是具有不同格式的“WD”结构。而且,该结构不会像以前一样直接保留在PE标头之后,而是保存在安全目录中。

image.png

Goziv3 RM3 WD结构

此变体利用保留在WD结构之一中的单词列表来伪随机生成注册表项名称,这使得通过注册表项IOC来检测此变体比以前的变体更加困难。

image.png

保存在随机命名的注册表项中的Goziv3 RM3数据

此变体使用forfiles.exe来执行Powershell脚本,该脚本将Shellcode加载到内存中,然后使用APC注入执行该Shellcode。通过在感染链中添加可执行文件forfiles,此变体可以逃避检测机制,这些机制搜索诸如PowerShell和mshta之类的更多已知脚本引擎的持久性。

首先让分析师感到惊讶的可能是通信方法的调整,虽然C&C签入的混淆方案与Gozi变体中全局使用的相同,但在这个变体中,它被放在请求对象中,而不是URI中(它变成了“index.htm”)。此外,普通签入的格式略有不同:

12.png

虽然这些技术上的差异确实存在,就像Gozi2 RM3一样,但这个变体背后的团队似乎把他们的创新集中在防止研究人员与C2交互并获得有效载荷的方法上。它们通过限制服务器端的有效载荷传递来做到这一点,当客户端尝试连接到C2服务器时,如果位置与当前活动的目标区域不匹配,它们将被定位并被拒绝。更重要的是,第一阶段的C2在网上停留的时间很短,会在被分析之前消失。Gozi3 RM3通常是通过垃圾邮件传播的,这些邮件带有混淆的VGS文件,或者xls4.0宏作为附件。至少从2017年开始,这种Gozi的变体就被认为与一种流行的装载机捆绑在一起。

image.png

Goziv3 RM3垃圾邮件和附带的恶意文件

C&C服务器的顶级域通常是.xyz,并且样本通常使用Verisign签名。实际上,这意味着当受害者运行这些样本时,他们必须在一个较少的对话框上点击“确定”,以警告他们也许他们不应该执行互联网上陌生人交给他们的随机文件。

Dreambot

Dreambot的许多功能甚至在较新的变体中都是独特的,但归根结底它还是第二波Gozi的变体。为了逃避检测,它依靠C2签到模拟GET请求获取图像,Dreambot在2020年3月似乎销声匿迹了。

image.png

Dreambot C&C Web面板

Saigon

Goziv3 RM3的此变体是FireEye在2019年9月发现的,它对基础Goziv3 RM3进行了各种更改,其中包括:

1. C2签入的新参数,其中值得注意的是knock,它编码了客户机在发出后续请求之间等待的秒数;

2. 在ECB操作模式中使用的是snake加密,而不是CBC。在实际的密码学中,这将被认为是降级,但一般的规则是,无论如何没有人真的对恶意软件通信进行密码分析;

3. 混淆加密的C2签入时,不会穿插随机斜线;

4. 不使用PX格式;

可以看出,大多数更改似乎都集中在删除功能,使恶意软件更简单以及恢复到更类似于第二个Gozi变体。

ISFB3 / Ursnif-A

该变体仅在2018-2019年期间袭击了日本,根据其攻击特点,它与TA544相关。一般而言,Gozi通常是由垃圾邮件(特别是通过Cutwail)传播的,带有附件的办公文件,并使用地理位置来阻止其目标(通常是日本国内银行的客户)以外的任何请求。垃圾邮件通常会带有Bebloh下载程序,然后下载真正的Gozi。

image.png

针对日本银行客户的ISFB3恶意软件

名称“ISFB3”是从恶意二进制文件中的显式pdb路径派生而来的-c:\ isfb3 \ x64 \ Release \ client.pdb,但是标题中的数字“3”不是第三次迭代的意思。模拟图像检索GET请求仍然存在,并且没有阻止该运动研究的突破性功能,一系列细微的技术差异使此变体与其他变种有所不同。

本文翻译自:https://research.checkpoint.com/2020/gozi-the-malware-with-a-thousand-faces/如若转载,请注明原文地址:


文章来源: https://www.4hou.com/posts/rX4k
如有侵权请联系:admin#unsafe.sh