采用独特的二进制填充和逃避检测技术:新型银行木马Grandoreiro分析
2020-05-18 10:40:00 Author: www.4hou.com(查看原文) 阅读量:415 收藏

一、概述

在这一系列文章中,我们将介绍一个针对巴西、墨西哥、西班牙和秘鲁的拉丁美洲银行木马Grandoreiro。在这里,我们重点说明了木马作者在逃避检测和模拟方面所做出的不同寻常的努力,同时展示了该木马正在朝着模块化的体系结构而迈进。

我们已经发现,Grandoreiro木马仅通过垃圾邮件的方式进行分发。通常情况下,木马作者使用虚假的Java或Flash更新提示,然而在最近,其作者也会使用与新冠肺炎相关的主题。

我们根据这个恶意软件家族的最显著特征来对其进行命名,其二进制文件已经扩增到至少数百个字节。总体看来,这个木马的发展非常迅速,并且其功能更改和添加非常频繁。在本篇文章中,我们将重点放在其中最值得关注的地方。

二、特点

Grandoreiro是我们在研究过程中发现的另一个使用Delphi语言编写的拉丁美洲银行木马。自2017年以来,Grandoreiro一直活跃在巴西和秘鲁,并在2019年扩展到墨西哥和西班牙。当前该木马的活动分布请参考下图。该木马会显示伪造的弹出窗口,诱导受骗者泄露敏感信息,这是一类恶意软件的典型特征,对于阅读过我们这一系列文章的读者来说,并不会感到奇怪。

ESET检测到Grandoreiro木马活动的地理位置分布:

1.png

与任何其他拉丁美洲的银行木马一样,Grandoreiro也具有后门功能,其作用包括:控制窗口、自我更新、捕获键盘输入、模拟鼠标和键盘动作、将受害者的浏览器导航到指定的URL、使受害者注销登录或重启计算机、阻止访问特定的网站。

通过在Windows启动目录中创建.LNK文件,木马可以保持其自身的持久性。值得关注的是,Grandoreiro使用与Casbaneiro相同的算法来解密其内部字符串。我们认为,这表明拉丁美洲的银行木马作者之间共享了一些技术信息。

Grandoreiro会收集有关受害者的一些信息,其中包括:电脑名称、用户名、操作系统版本和系统架构、是否安装了Diebold Warsaw GAS Tecnologia(一种在巴西流行的应用程序,用于保护对网上银行的访问)、已安装的安全产品列表。

在某些版本中,它还会窃取存储在Google Chrome浏览器中的凭据和存储在Microsoft Office中的数据。

Grandoreiro的作者似乎正在非常迅速地开发银行木马,因为我们每个月都会至少观察到几个新版本。我们怀疑恶意软件作者似乎正在同时开发至少两个变种。

恶意软件作者的工作似乎主要集中在两个地方。首先,是使用域生成算法(DGA)隐藏实际的C&C地址,我们将在下一章中详细说明。其次,是实现银行木马的模块化。后者非常值得我们关注,恶意软件作者在最一开始为每个目标银行引入了单独的Delphi窗体,这种方式比较常见。然而最近,恶意软件作者甚至为每个目标银行都创建了单独的DLL。在我们分析过的任何其他拉丁美洲银行木马中,都没有看到过这样的实现方式。

2.1 域生成算法(DGA)

Grandoreiro的DGA分别使用硬编码的二进制和本地时间这两个字符串作为输入,分别充当前缀和后缀。使用简单的算法来处理这些值,并以https://sites.google[.]com/view/%DATA%的形式产生结果,其中%DATA%是生成的字符串(我们在下面提供了伪代码)。如下图所示,恶意软件将C&C域名和端口作为网站的标题。需要注意的是,基于DGA算法,每天都会更换一个不同的网站。我们已经观察到了一些使用自定义Base64字符的变种。

Grandoreiro的域生成算法伪代码:

def dga(prefix, suffix):
       ts = get_current_time()
       mid_data = "%02d/%02d/%04d" % (ts.day, ts.month, ts.year)
       mid_data = b64encode(mid_data)
       mid_data = mid_data.replace("==", "")
       return "https://sites.google.com/view/" + prefix + mid_data + suffix

Grandoreiro作者生成的Google站点示例:

2.png

2.2 配置数据

在较早版本的Grandoreiro中,会随着银行木马一同分发一个较小的.ini文件,作为原始配置文件,仅包含版本标识符和二进制表中的索引,以确定应该使用哪个C&C服务器。

然而在最近,这一机制已经变化,现在它存储在Windows注册表HKCU\Software\目录下,键值名称类似于%USERNAME%和ToolTech-RM。其使用的键和值的名称经常会更改,但是其中包含的信息包括:

1、每个受害者的唯一标识符(通过CoCreateGuid API生成);

2、可执行文件的名称和路径;

3、受害者的地理位置;

4、创建和删除持久化.LNK文件的字符串;

5、特定于受害者设备的注释(如果存在,C&C运营人员通过后门命令提供这些注释);

6、指示已执行操作的标志,包括:窃取Google Chrome存储的凭据、窃取Outlook数据。

三、C&C通信

Grandoreiro使用RealThinClient SDK实现与其C&C服务器的通信。该组件使用HTTP协议来实现其操作。在连接到服务器后,Grandoreiro会进行一次握手,然后每隔几秒钟定期检查一次命令。如果木马的检查未通过,则服务器将断开连接。

如同我们在2019年12月的Botconf演示中所描述的那样,再结合SonicWall最近的报道,该恶意软件从C&C服务器收到的第一个命令非常值得关注。如下图所示,该命令是所有当前连接的受害者列表,其中包括其计算机的所有已收集信息。请注意,并非是针对所有受害者都使用了相同格式的字符串标识。由于Grandoreiro的发展非常迅速,这个字符串会经常更改,但是感染不同变种的受害者仍然会连接到同一台C&C服务器。

C&C服务器响应Grandoreiro的初始连接,并列出当前连接的受害者:

3.png

四、分发过程

垃圾邮件似乎是Grandoreiro使用的唯一分发方式。其使用的垃圾邮件包括提供虚假Flash或Java更新网站的链接(如下图所示)。值得注意的是,其中左下角是为Google Chrome浏览器量身定制的红色箭头,但同样也会在其他浏览器中显示。我们此前已经在@ESETresearch的推特帐户上发布,目前也已经发现Grandoreiro正在利用新冠肺炎相关话题来诱导点击。

恶意软件使用的虚假Flash(左)和Java(右)更新网站,左侧的复选框要求用户同意条款,右侧的文字提示要求用户安装最新版本的Java以防范安全风险:

5.png

下面是伪造的新冠肺炎相关网站,点击视频后可以下载一个ZIP压缩包,其中文字大意为:“7天之内建设两家医院:加速视频展示中国如何用7天时间建设医院”。与大多数的拉丁美洲银行木马不同,Grandoreiro使用了非常小范围的分发方式。对于不同的活动,它可能会选择不同类型的下载器,如下图所示。这些下载器通常存储在GitHub、Dropbox、Pastebin、4shared和4Sync等知名公共在线共享服务商。

Grandoreiro可能使用的分发方式,其中不同颜色展示了分发链可能采取的不同路径,最终的ZIP压缩包可能已经加密,并且在某些场景中会受到密码的保护:

6.png

最终的Payload是一个ZIP压缩包,通常使用下面的算法对其进行加密,并且在很多场景中,我们发现该压缩包也设置了密码。

Grandoreiro使用的压缩包解密算法的伪代码:

def decrypt_archive(data_enc, key):
       data_dec = list()
       for (i, c) in enumerate(data_enc):
              d = c ^ (~(key >> (i % 32))) & 0xFF
              data_dec.append(d)
       return data_dec

在众多的银行木马中,我们经常能看到最终Payload以ZIP压缩包的形式出现,但是对于Grandoreiro而言,这一点尤为重要,我们在下一章中详细说明。

五、二进制填充

在绝大多数Grandoreiro样本中,都利用了二进制填充技术。借助这个技术,可以让二进制文件变大,我们目前已经发现有更为复杂的恶意软件利用这一技术。此外,我们还观察到一些其他拉丁美洲的银行木马偶尔会使用这种技术,但只是选择了最简单的方式,在二进制文件的末尾添加大量垃圾。

而Grandoreiro选择了一种简单但非常有效的方法。在PE文件的资源部分,添加了(通常是3个)较大的BMP图像,使每个二进制文件的大小至少达到了300MB。请注意,在下图中,整个EXE的大小为425MB,但是代码的大小仅有4MB,.rsrc段的大小为419MB(占总大小的98.5%)。在检查了.rsrc段的内容后,我们发现了大小分别为112MB、112MB和105MB的三个图像(占段大小的78.5%)。在下图中,我们提供了这类图像的示例。

Grandoreiro二进制文件的详细信息:

7.png

Grandoreiro用于二进制填充的BMP图像,根据其“艺术风格”,表明是恶意软件的作者手动创建了这些图像:

8.png

由于这些BMP的结构,将二进制文件压缩为ZIP压缩文件只会生成几个MB的文件,这将使得分发Payload变得更加容易。BMP文件似乎经常更改,有可能是出于避免检测的原因。上图展示了来自Grandoreiro三种不同版本的图像,其中的相似之处说明似乎是由作者手动更新图像。

使用这些技术的过程非常简单,但其结果却非常有效。在2019年,VirusTotal支持的上传文件大小调整到550MB,但此前仅支持最大256MB,因此受害者在此之前无法使用这个平台来扫描文件。通常情况下,要处理如此之大的文件比较困难,这会导致任何自动化或手动分析过程都变得缓慢。同时,如果想要在清除这些较大图像的同时保留有效的PE文件,这个过程会非常困难。但如果丢弃了整个.rsrc段,那么虚假的弹出窗口也会随之消失。

六、自我保护和反模拟机制

作为拉丁美洲的银行木马,Grandoreiro使用了非常惊人的大量技术来逃避检测和模拟环境。在这里,我们将讨论所分析的几个最新版本中使用的此类技术。

在拉丁美洲,Diebold Warsaw GAS Tecnologia和Trusteer是比较知名的银行访问防护软件。到目前为止,我们在该区域发现的每个银行木马都对这些程序实施了某种检查,Grandoreiro也不例外。

Grandoreiro进行的操作如下:

1、对LdrLoadDll和LoadLibrary(Ex) API进行挂钩,防止加载安全产品的DLL;

2、检查安全产品的任一模块是否已经被加载;

3、基于进程名称,尝试终止正在运行的特定进程;

4、从防火墙级别阻止Diebold Warsaw;

5、尝试通过更改其文件系统路径来破坏Trusteer(如下图所示);

6、通过两次运行以下命令,来更改Trusteer主要二进制文件上的ACL:

cacls %PROGRAM_DATA%; Trusteer\Rapport\store\exts\RapportCerberus\baseline\RapportGH.dll” /T /E /C /P user:perm
with user:perm set to Todos:N and then Everyone:N

除此之外,它还会监视重要函数的挂钩。如果这类函数以0xE9(JMP指令的汇编操作码)开头,则该木马会从相应的库中重新加载该函数。根据窗口和进程名称,它还会检查诸如RegMon、RegShot、Wireshark和Process Explorer之类的工具是否存在。木马试图通过调用IsDebuggerPresent API并通过SetWindowsHookEx设置钩子来避免调试,该钩子将针对WH_DEBUG事件返回ERROR_ACCESS_DENIED。

Grandoreiro还使用了一种特权提升技术,这里我们将加以详细介绍。该方法依赖于将二进制文件注册为.MSC文件的默认处理程序,然后运行此类文件。这样一来,二进制文件将以提升后的特权执行。由于2017年已经发布了修复程序,因此这项技术不再适用于经过修复后的系统。

最后,Grandoreiro会检测两个虚拟环境是否存在,通过特殊的I/O端口检测VMWare,通过vpcext指令检测Virtual PC。

七、垃圾邮件工具

在调查的过程中,我们发现了用于Grandoreiro垃圾邮件活动的工具。这并不是一个用于自动注册大量电子邮件帐户的工具(例如Amavaldo和Casbaneiro),而是一个用于创建和发送垃圾邮件的工具,它通过利用EASendMail SDK来实现。

除了其主要用途之外,该工具还使用Windows注册表Run键来设置持久性,并禁用UAC。最可能的一种情况是,攻击者通过Grandoreiro将该工具分发给某些受害者。

其中,还包含一个小的后门组件,用于接收配置文件。这些配置文件定义了电子邮件的外观、指向的链接位置和发送地址。下表提供了配置文件及用途的完整列表。

Grandoreiro的垃圾邮件工具所使用的配置文件列表:

1、ID.txt(无用途):似乎不用于发送垃圾邮件。

2、html.txt(邮件正文模板):电子邮件正文模板,其中包括占位符,这些占位符已经被其他配置文件中的值替换。

3、assunto.txt(主题模板):主题模板,类似于html.txt的电子邮件正文。

4、nomes.txt(虚假名称列表):替换模板中的[NOME]占位符。

5、link.txt(恶意URL列表):电子邮件将指向其中的一个恶意URL。

6、lista.txt(收件人列表):电子邮件将发送给列表中的全部收件人。

7、login.txt(用户名列表):登录到用于发送电子邮件的帐户所需的信息。

8、senha.txt(密码列表)。

9、smtp.txt(SMTP服务器地址)。

如我们所见,这个工具并不是纯自动化的,而是完全依赖于配置数据。这展现出了该工具具有较低的复杂性。其实现与Grandoreiro银行木马相似,因此我们推断该工具是由木马作者编写而成。

八、总结

在这篇文章中,我们重点介绍了拉丁美洲的银行木马Grandoreiro,该木马以巴西、墨西哥、西班牙和秘鲁为目标。我们已经揭秘了这个银行木马的独特之处,例如使用Delphi语言编写、包含后门功能、针对拉丁美洲发动攻击以及使用伪造的弹出窗口来诱导受害者点击。

Grandoreiro的另一个不同之处,在于其为了逃避检测所做出的巨大努力。在该木马中,包含了检测、禁用银行访问防护软件的许多技术。它还利用了我们之前从未见过的二进制填充技术,这使得研究人员很难在保留有效文件的同时剔除填充的内容。

垃圾邮件似乎是Grandoreiro的特有分发方式。在电子邮件中包含一个链接,可以将受害者指向木马运营人员设置的虚假网站。尽管它们通常使用简单的机制,例如伪造的Flash或Java更新,但我们近期也看到运营人员也利用了人们对新冠肺炎的恐惧心理。

Grandoreiro与我们先前描述过的其他银行木马(主要是Casbaneiro)具有相似之处,二者共享了相同的字符串解密算法。

如果有任何疑问,请通过[email protected]与我们联系。其中的威胁指标,也可以在我们的GitHub仓库中找到。

九、威胁指标

9.1 SHA-1哈希值

Grandoreiro银行木马:

40FBC932BD45FEB3D2409B3A4C7029DDDE881389        Grandoreiro 2017年旧版本(Win32/Spy.Grandoreiro.A)

7905DB9BBE2CB29519A5371B175551C6612255EF   Grandoreiro(Win32/Spy.Grandoreiro.AE)

BD88A809B05168D6EFDBA4DC149653B0E1E1E448        Grandoreiro(Win32/Spy.Grandoreiro.AJ)

Grandoreiro Win32下载器:

7C2ED8B4AA65BEFCC229A36CE50539E9D6A70EE3        Grandoreiro下载器(Win32/TrojanDownloader.Banload.YJR)

27A434D2EF4D1D021F283BCB93C6C7E50ACB8EA6        Grandoreiro下载器(Win32/TrojanDownloader.Banload.YLZ)

28D58402393B6BCA73FF0EAC319226233181EDC9  Grandoreiro下载器(Win32/TrojanDownloader.Banload.YJB)

42892DF64F00F4C091E1C02F74C2BB8BAD131FC5  Grandoreiro下载器(Win32/TrojanDownloader.Banload.YMI)

Grandoreiro垃圾邮件工具:

BCED5D138ACEADA1EF11BFD22C2D6359CDA183DB    Grandoreiro垃圾邮件工具(Win32/Spy.Grandoreiro.AD)

9.2 Windows注册表

HKCU\Software\%USER_NAME%

HKCU\Software\ToolTech-RM

9.3 User-Agent

h55u4u4u5uii5

9.4 文件名

%INSTALL_DIR%\ *

    MDL_YEL_01.dll

    MDL_BLU_BR_02.dll

    MDL_SIC_BR_03.dll

    MDL_SANT_BR_04.dll

    MDL_ITA_BR_05.dll

    MDL_BRADA_BR_06.dll

    MDL_SICCB_BR_07.dll

    MDL_SAFRA_BR_08.dll

    MDL_ORIGI_BR_09.dll

    MDL_NORDES_BR_10.dll

    MDL_BANEST_BR_11.dll

    MDL_BANEZE_BR_12.dll

    MDL_AMAZON_BR_13.dll

    MDL_UNICRE_BR_14.dll

    MDL_BRB_BR_15.dll

    MDL_WUPDATE_BR_001.dll

* %INSTALL_DIR%是Grandoreiro的安装路径。

十、MITRE ATT&CK技术

10.1 初始访问

鱼叉式链接(T1192):Grandoreiro的分发链从指向虚假网站的电子邮件链接开始。

10.2 执行

通过API执行(T1106):Grandoreiro由WinExec或WScript.Shell.Exec API执行。

10.3 持久性

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

10.4 特权提升

绕过用户帐户控制(T1088):Grandoreiro通过注册为.MSC文件的默认处理程序来绕过UAC。

10.5 逃避防御

二进制填充(T1009):Grandoreiro将较大的BMP文件插入到其.rsrc段中,以使二进制文件变得更大。

禁用安全工具(T1089):Grandoreiro尝试禁用Diebold Warsaw和Trusteer银行防护软件。

反混淆/解码文件或信息(T1140):Grandoreiro借助通常需要解密的ZIP压缩包实现分发。

文件和目录权限修改(T1222):Grandoreiro更改Trusteer的ACL以禁用该软件。

伪装(T1036):Grandoreiro以伪装的更新安装文件的方式分发Grandoreiro的下载器。

修改注册表(T1112):Grandoreiro将其配置存储在Windows注册表中。

脚本(T1064):Grandoreiro在VBScript中实现了部分分发过程。

虚拟化/沙箱逃避(T1497):Grandoreiro检测VMWare和Virtual PC是否存在。

10.6 访问凭据

Web浏览器中的凭据(T1503):Grandoreiro从Google Chrome浏览器中窃取凭据。

文件中的凭据(T1081):Grandoreiro解析Outlook的.pst文件以提取电子邮件地址。

10.7 侦查

应用程序窗口侦查(T1010):Grandoreiro根据窗口名称侦查是否存在各类安全工具。

文件和目录侦查(T1083):Grandoreiro基于文件系统路径侦查防护软件是否存在。

进程侦查(T1057):Grandoreiro根据进程名称侦查安全工具是否存在。

安全软件侦查(T1063):Grandoreiro侦查银行防护产品是否存在。

系统信息侦查(T1082):Grandoreiro收集有关受害者计算机的信息,包括%USERNAME%、%COMPUTERNAME%和产品名称。

10.8 收集

输入捕捉(T1056):Grandoreiro捕获用户输入的按键。

10.9 命令与控制

域生成算法(T1483):Grandoreiro使用DGA生成其C&C地址。

标准应用层协议(T1071):Grandoreiro的网络协议由RealThinClient实施,该协议基于HTTP构建。

10.10 渗出

通过命令与控制通道渗出(T1041):Grandoreiro将检索到的数据发送到其C&C服务器。

十一、扩展阅读

[1] https://www.welivesecurity.com/2019/08/01/banking-trojans-amavaldo/

[2] https://www.welivesecurity.com/2019/10/03/casbaneiro-trojan-dangerous-cooking/

[3] https://www.welivesecurity.com/2019/11/19/mispadu-advertisement-discounted-unhappy-meal/

[4] https://www.welivesecurity.com/2020/03/05/guildma-devil-drives-electric/

本文翻译自:https://www.welivesecurity.com/2020/04/28/grandoreiro-how-engorged-can-exe-get/如若转载,请注明原文地址:


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