Check Point Research 研究人员最近在拉丁美洲发现了一个活跃活动,该活动正在操作和部署 BBTok 银行软件的新变体。在这项研究中,我们会介绍新发现的攻击链,这些攻击链使用了一种独特的 Living off the land Binaries 组合,所以,尽管 BBTok 银行软件至少从 2020 年开始活跃,但时至今日,被检测到的概率还是很低。在分析该活动时,研究人员发现了一些攻击者在攻击中使用的服务器端资源,目标是巴西和墨西哥的数百名用户。
服务器端组件负责提供可能通过网络钓鱼链接传播的恶意有效负载。我们已经观察到相同的服务器端脚本和配置文件的多次迭代,这些脚本和配置文件展示了 BBTok 银行软件部署方法随着时间的推移而演变的过程。这我们得以一窥攻击者尚未实现的攻击媒介,并追踪用于维持此类操作的源代码的起源。
我们将在本文重点介绍用于传播银行软件的有效负载服务器的一些服务器端功能,它们可以为每个受害者产生独特的有效负载。
发现过程
BBTok 异常活跃,针对巴西和墨西哥的用户,采用多层地理围栏来确保受攻击的设备仅来自这些国家。
自 2020 年 BBTok 最后一次公开报道以来,运营商的技术、战术和程序 ( TTPs ) 发生了重大变化,增加了额外的混淆层和下载器,从而使检测率降到最低。
BBTok 银行有一个专门的功能,可以复制 40 多家墨西哥和巴西银行的界面,并欺骗受害者将其双重身份验证代码输入他们的银行账户或输入他们的支付卡号。
新识别的有效负载是由自定义服务器端应用程序生成的,该应用程序负责根据操作系统和位置为每个受害者生成唯一的有效负载。
对有效负载服务器端代码的分析显示,攻击者正在积极维护不同版本 Windows 的多样化攻击链,这些链使用各种各样的文件类型,包括 ISO, ZIP, LNK, DOCX, JS 和 XLL。
攻击者在他们的武器库中添加开源代码、来自黑客论坛的代码和新的漏洞(例如 Follina)。
BBTok 银行软件历史
BBTok 银行软件于 2020 年首次被披露,通过无文件攻击部署在拉丁美洲。其功能非常齐全,包括枚举和终止进程、键盘和鼠标控制以及操作剪贴板内容。除此之外,BBTok 还包含经典的银行木马功能,模拟在墨西哥和巴西运营的各种银行的虚假登录页面。
自从首次被公开披露以来,BBTok 运营商已经采用了新的 https,同时仍然主要利用带有附件的网络钓鱼电子邮件进行初始攻击。最近,我们看到了银行软件通过网络钓鱼链接传播的迹象,而不是作为电子邮件本身的附件。
在访问恶意链接时,会将 ISO 或 ZIP 文件下载到受害者的计算机上,这些文件包含一个启动攻击链的 LNK 文件,在打开一个诱饵文件的同时,导致银行软件的部署。虽然乍一看,这个过程似乎很简单,但幕后操作非常复杂。
在分析这些新发现的链接时,研究人员发现了用于传播恶意软件的内部服务器端资源。很明显,攻击者保持了广泛的攻击链,每次点击都根据需要生成,并根据受害者的操作系统和位置进行定制。
BBTok 银行攻击
BBTok 为其运营商提供了广泛的功能,从远程命令到经典的银行木马功能,BBTok 可以复制多家拉美银行的界面。其代码引用了墨西哥和巴西的 40 多家主要银行,如花旗银行、丰业银行、Banco Ita ú 和汇丰银行。银行软件通过遍历打开的窗口和浏览器选项卡的名称,搜索银行名称,来寻找受害者是这些银行客户的迹象。
其默认目标显然是西班牙对外银行 ( BBVA ) ,其默认的虚假界面旨在复制其外观。这些虚假的界面冒充合法机构,诱使毫无戒心的用户泄露个人和财务信息,该功能的重点是诱骗受害者输入作为银行账户密码,并接管受害者的银行账户。
嵌入 BBTok 银行软件中的虚假接口示例
BBTok 是用 Delphi 编写的,它使用可视化组件库 ( VCL ) 来创建表单,毫不夸张地说,这些表单形成了这些虚假的界面,这使得攻击者可以动态、自然地生成适合受害者电脑屏幕的界面和受害者银行的特定形式而不会引起怀疑。作为银行软件的默认目标银行,西班牙对外银行 ( BBVA ) 将其接口存储在一个名为 "TFRMBG" 的表单中,除了银行网站,攻击者也开始在受攻击的设备上搜索有关比特币的信息,积极寻找 "bitcoin", "Electrum" 和 "binance" 等字符串。
除此之外,BBTok 还可以安装恶意浏览器扩展或注入名为 "rpp.dll" 的 DLL 来进一步控制受攻击的系统,并可能提高其欺骗受害者的能力。
值得注意的是,该攻击者采取了谨慎的方式 所有的银行活动都是在其 C2 服务器的直接命令下执行的,而不是在每个受攻击的系统上自动执行。
负载服务器分析
为了有效管理他们的活动,BBTok 运营商创建了一个独特的流程,由受害者点击恶意链接启动,该链接可能是通过钓鱼电子邮件发送的。当受害者点击链接时,会根据受害者的操作系统下载 ZIP 文件或 ISO 映像。这个过程对受害者来说是无感的,但服务器会根据请求中找到的参数生成唯一的有效负载。
BBTok 攻击中使用的服务器端组件
此过程在基于 xampp 的服务器上执行,包含三个基本组件:
一个 PowerShell 脚本,用于处理有效负载准备,并包含创建 lure 文档的主要逻辑;
一个 PHP 代码库和数据库,用于记录和管理攻击;
增强这些组件功能的辅助实用程序。
具体流程如下:
受害者向 /baxar、/descargar 或 /descarga 执行 HTTP 请求(这些路径表明诱饵是西班牙语或葡萄牙语);
基于 .htaccess 文件,服务器使用 descarga.php 处理请求;
脚本利用文件 db.php 通过 SQLite 数据库存储有关请求的信息,包括受害者的信息;
Desarga.php 调用 ps_gen.ps1 来生成一个自定义文档,该文档最终会传递给受害者。
传入请求处理
PHP 代码库由以下文件组成:
1.descarga/descargar.php:管理新的连接并向受害者的电脑提供引诱文档。
2.db.php:生成并管理包含受害者详细信息的 SQLite 数据库。
3.generator.php:用于生成随机链接、字符串和其他功能的实用程序类。
4."Descarga" 和 "descargar" 在西班牙语中翻译为 "download"。此文件包含感染过程的主要逻辑。脚本本身包含许多评论,其中一些是纯西班牙语和葡萄牙语,这些评论暗示了攻击者的来源。
脚本逻辑:
1. 它根据 ip-api.com 检查链接引用的受害者的地理位置,并将其存储在文件中。如果受害者不是来自目标国家 ( 例如,墨西哥或巴西 ) ,则 HTTP 连接立即以 404 消息结束。
2. 如果受害者通过了检查,则脚本解析用户代理以获取受害者的 Windows 操作系统版本。
3. 然后,它将带有受害者的国家 / 地区代码和引诱文件名的用户代理传递到 PowerShell 有效负载生成器脚本。
PowerShell 负载生成器
脚本 ps_gen.ps1 包含用于生成 ZIP 或 ISO 文件形式的文档有效负载的主要逻辑。最新版本的代码有很多失效的部分,这部分在过去可能是有效的,这表明它们包含额外的感染链和诱饵,我们发现了该文件的多个版本,其中一些可以追溯到 2022 年 7 月,这表明该活动已经进行了很长一段时间。
生成器脚本由 descarga.php 调用,使用带有参数 file_name、ver 和 cc 的函数 DownloadFile,这些对应于生成的文档名称、受害者的操作系统版本和受害者的国家代码。
在观察到的服务器迭代中使用的代码部分基于两个参数生成文档有效负载:
受害者的国度:巴西或墨西哥;
从 User-Agent 中提取的操作系统:Windows 10 或 7;
根据结果,选择恶意文档的以下参数:
文件类型:Windows 10 为 ISO, Windows 7 为 ZIP;
下一阶段使用的 DLL 文件的名称根据目标国家的不同而变化:Trammy 用于巴西,Gammy 用于墨西哥。
该文档包含一个链接:Windows 10 中的 LNK 快捷图标是 Microsoft Edge 使用的快捷图标,Windows 7 中的 LNK 快捷图标是 Google Chrome 使用的快捷图标。
最后的执行逻辑:对于 Windows 10 受害者,该脚本使用来自服务器 216 [ . ] 250 [ . ] 251 [ . ] 196 的名为 dat.xml 的文件执行 MSBuild.exe,该文件还存储下一阶段的恶意 DLL。对于 Windows7,负载只是通过 CMD 执行下载相关的远程 DLL。
添加位置混淆
所有有效载荷都使用 Add-PoshObfusion 函数进行模糊处理。对部分代码的简单搜索会从 " 良性 " 网站 hackforums [ . ] net 中得到一个结果,特别是 2021 年 8 月一位名为 "Qismon" 的用户的回复,其还推荐了一些绕过 AMSI 和安全产品的方法,并分享 PoshObfusion 代码:
在 hackforums [ . ] net 中共享的 Add-PoshObfuscation ( ) 代码
攻击链和最终有效负载
上面描述的过程最终导致了两个攻击链的变体:一个针对 Windows 7,一个针对 Windows 10。两个版本之间的差异可以解释为试图避免新实现的检测机制,如 AMSI。
*ammy.dll 下载程序
两个感染链都使用使用类似约定命名的恶意 DLL —— Trammy、Gammy、Brammy 或 Kammy。后者是 BBTok 加载程序的精简和混淆版本,在执行任何恶意操作之前使用地理围栏来阻止检测。最后的有效负载是一个新版本的 BBTok 银行程序。如上所述,BBTok 附带了多个额外的密码保护软件。这些漏洞允许攻击者完全访问受攻击的设备和其他功能。
Windows 7 攻击链
Windows 7 攻击链
Windows 7 的攻击链不是唯一的,它由存储在 ZIP 文件中的 LNK 文件组成。在执行 LNK 文件时,使用 rundll32.exe 运行 * my.dll 负载,rundll32.exe 依次下载、提取和运行 BBTok 负载。
Windows 10 攻击链
Windows 10 攻击链
Windows 10 的攻击链存储在一个包含 3 个组件的 ISO 文件中:一个 LNK 文件,一个 lure 文件和一个重命名的 cmd.exe 可执行文件。点击 LNK 文件启动攻击链,使用重命名的 cmd.exe 以以下方式运行所有命令:
攻击链
将 lure 文件复制到文件夹 %userprofile% 并打开它。
在 BBTok 攻击中释放的 Lure 文件
运行 MSBuild.exe,使用存储在远程服务器上的 XML ( 通过 SMB 获取 ) 构建应用程序。
MSBuild.exe 创建一个随机命名的 DLL,它反过来从服务器下载 * my. DLL,并以重命名的 rundll32.exe ( mmd.exe ) 运行它,如 XML 内容所示:
dll 下载程序下载、提取并运行 BBTok 负载
重命名 CMD、MSBuild 和通过 SMB 获取文件的独特组合导致 Windows 10 攻击链很少被检测到。
早期版本
在对 BBTok 活动的分析中,研究人员遇到了来自有效负载服务器的多个版本的工件。我们看到 PHP 代码、PowerShell 脚本和其他实用程序都发生了变化。
PHP 代码的变化
查看 descarga.php 脚本的早期版本,我们看到了一些关键的差异:
最初,只有来自墨西哥的受害者会成为攻击目标。另一个有效负载服务器 176 [ . ] 31 [ . ] 159 [ . ] 196 的 IP 在脚本中进行了硬编码。
这里没有直接执行 PowerShell 脚本,而是调用了一个名为 gen.php 的脚本。虽然研究人员无法获得这个脚本,但相信它只是执行了 PowerShell 脚本。
使用 db.php 文件将受害者的 IP 地址、用户代理和标志 ( jaBaixou,即葡萄牙语中的 " 已下载 " ) 插入数据库中。稍后检查该标志,以确保不会提供相同的有效负载。
由于最新版本中未使用此部分,攻击者可能发现此过程繁琐,并决定用 OPSEC 来换取更容易的管理和更高的攻击成功几率。
PowerShell 脚本修改说明
查看 PowerShell 脚本的旧版本,可以清楚地看到对负载和执行链进行了大量更改。在最早版本的脚本中,LNK 只是运行一个 PowerShell 脚本,其参数为 -ExecutionPolicy Unrestricted-W hidden-File\%PARAM% [ . ] supplier [ . ] serveftp [ . ] netfilesasd.ps1。
后来的更新添加了 lure PDF,fac.PDF("fac" 是 "factura" 的缩写,在葡萄牙语中是 " 发票 ")。这是来自墨西哥科利马县的合法西班牙语收据。此外,Windows7 受害者的有效负载启动了一个合法的墨西哥政府网站 hxxps://failover [ . ] www [ . ] gob [ . ] mx/matenimiento.html。
研究人员发现的最新版本打开了一个不同的合法网站 hxxps://fazenda [ . ] gov [ . ] br,巴西政府网站。此版本还更改了 MSBuild 使用的 XML 文件,并将为巴西目标保留的 DLL 名称从 Brammy.DLL 更改为 Trammy.DLL。
未使用的代码和感染媒介
PowerShell 脚本中的某些代码部分未使用,服务器托管的文件不属于我们讨论的主要感染流。特别是,研究人员没有发现任何积极使用以下内容的迹象:
ze.docx 是一份利用 Follina CVE(2022-30190)的文档。PowerShell 脚本中名为 CreateDoc 的函数中引用了它。
CreateXLL 引用的 xll.xll 是从开源项目中获取的恶意 xllhttps://github.com/moohax/xllpoc,通过 Excel 实现代码执行。在服务器上发现了许多空的 JavaScript 文件,这些文件很可能被名为 CreateJS 的函数使用。函数 b.js 中引用的文件是空的,因此不清楚该函数以前是使用过还是从未完全实现过。
服务器上有多个 bat 文件,每个文件都有不同的下载下一阶段的实现。这些很可能是由名为 CreateBat 的函数创建的,该函数在最新版本的 PowerShell 脚本中被取消掉了。它们中的大多数几乎与我们之前分析的 ByFD 函数中的代码相同,不包括过去两次值得注意的迭代:
最旧的 bat 文件下载了另一个 PowerShell 脚本作为下一阶段(该脚本不再公开),而不是编辑注册表;
稍后的 bat 文件使用了 fodhelper UAC 绕过,而不是当前正在使用的 computerdefaults 绕过。
受害者分析
研究人员对服务器端组件的分析也揭示了最近的一个活动,,从攻击者的角度来看,这是基于他们发现的一个数据库,该数据库记录了对恶意应用程序的访问。该数据库名为 links.sqlite,非常简单。它包含 150 多个条目,所有条目都是唯一的,表头与 db.php 创建的条目相对应。
chave 或 key;
assunto 或 subject;
user_agent ;
baixou 或 downloaded。
名为 chave 的列包含受害者的 IP 地址,而 assunto 列为空:
Links.sqlite 数据库
攻击区域
由于除了攻击者之外,任何人都不会看到服务器代码,并且其中包含大量葡萄牙语评论,我们认为这表明攻击者很可能是巴西人,巴西人以其活跃的银行恶意软件生态系统而闻名。
总结
尽管 BBTok 目前仅在巴西墨西哥活动,但很明显,它仍在积极开发中。由于其众多功能,以及涉及 LNK 文件、SMB 和 MSBuild 的独特而创造性的传播方法,它仍然对该地区的组织和个人构成威胁。