找回密码
 注册帐号
查看: 6213|回复: 0

BackSwap的演变

[复制链接]
发表于 2019-2-21 23:07:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册帐号

×
Back_Swap_1021x580.jpg
研究人员:Itay Cohen
简介BackSwap银行家最近因其独特而创新的技术而受到关注,这些技术可以让受害者偷钱,同时保持警惕并保持未被发现。此恶意软件之前被发现针对波兰的银行,但此后完全转向关注西班牙的银行。我们使用的技术由波兰CERT的研究员和来自ESET的Michal Poslusny 进行了详尽的描述,他们在今年早些时候透露并创造了恶意软件的名称。然而,在目睹其恶意技术不断改进后,我们决定将这些信息分享给更广泛的研究界。
在下面的研究论文中,我们将关注BackSwap的演变,它的独特性,成功甚至失败。我们将尝试概述恶意软件的不同版本和活动,同时概述其技术,其中一些被证明效率低下,并且在开发人员发布后很快就会丢失。我们还将共享一个详细的IOC表和一个用于从BackSwap样本中提取相关信息的Python3脚本。
BackSwap概述银行恶意软件不是一种新现象。Zbot,Gozi,Dridex,Carberp和其他臭名昭着的银行特洛伊木马利用互联网的支持和越来越多的利用来发行银行交易,并从中获利。多年来,这些恶意软件系列发现了先进而复杂的方法来窃取无辜受害者的银行凭证和信用卡详细信息,并滥用这些信息来窃取资金。为此,安全行业以及谷歌和Mozilla等网络浏览器公司都采用了更好的安全机制和检测方式。
大多数银行恶意软件通过将代码注入受害者浏览器的内存来窃取资金。此代码将依次挂钩浏览器中的相应通信功能,以拦截任何私人银行数据。然后,该数据将通过一些渗透协议发布给攻击者。事实证明,这种方法非常复杂和不稳定,因为注入的代码必须适应每个目标浏览器。此外,攻击者必须跟踪现代浏览器快速且不断变化的代码,这确实是一个挑战。
除其他原因外,这可以解释银行恶意软件的普及程度似乎有所下降。事实上,我们已经看到很多上述银行木马取代了更有利可图和利润丰厚的恶意软件系列,加密矿工和勒索软件就是一个很好的例子。这为BackSwap的外观设定了一个完美的场景,它在窃取银行凭证方面既简单又有效。
BackSwap是作为位置无关代码在程序集中编写的,它隐藏在一大堆流行的合法软件中。一些例子是7-Zip,FileZilla和Notepad ++等程序。从表面上看,这个程序的可执行文件看起来是无辜的,但实际上它们捆绑了被攻击者精心植入的代码,并且乍一看并不明显。当用户启动任何上述应用程序时,此代码最终将执行,而真正的合法代码将永远不会运行。
上述有效载荷可以在原始程序内的任意位置找到,使得它覆盖原始代码的非常特定的块。此方法用于将合法代码的执行转移到构成恶意软件逻辑的紧凑shellcode中。后一代码与原始程序的大小相比非常小,因此进一步使安全工具和端点产品检测它的能力变得复杂。这样的系统只会扫描它们处理的二进制文件的块,这使得Backswap可以隐藏在代码中,否则不会被标记为恶意代码。
上面提到的转移方法展示了在银行恶意软件中不常见的创造性水平,并且更有可能在针对性攻击和APT活动中被发现。在这种技术中,开发人员修改了一些C运行时初始化代码,通常由编译器捆绑到可执行文件中,这通常表现为在程序主函数之前执行的代码片段。特别是,他们通过从预定义的函数指针表调用一组回调来劫持一段初始化内部数据结构的代码。该表(由CRT的__initterm()函数使用)添加了一个附加指针,这又会导致C运行时在执行原始程序之前调用恶意软件的代码。
在初始化代码将执行转移到由BackSwap种植的恶意代码之后,后者将为最终有效负载分配专用存储空间,有时会创建新线程或者只是将指令指针转移到最终有效负载。如前所述,此有效负载完全用汇编语言编写,并作为位置无关代码调用。这样的代码可以在存储器中的任何地方执行,而不管其基地址如何。由于此代码无法假设它所在的位置,因此它使用相对地址,跳转和间接调用,而不是硬编码的内存地址。以这种方式编写整个恶意软件并非易事,也不容易编写或由研究人员分析。尽管BackSwap的位置无关有效载荷在去年经历了几次重大变化和改进,
引起我们注意的事情之一,也是波兰CERT出版物中提到的,是BackSwap如何使用其硬编码字符串。与常规程序不同,常规程序中的字符串最有可能在只读数据部分中找到,而PIC代码必须以不同方式处理它。特别是,BackSwap使用了一种罕见的技术,其中字符串不与代码分离但作为其组成部分驻留,这样每当BackSwap想要将字符串推送到堆栈时(例如,为了将其作为函数参数传递),它紧跟在CALL指令之后的代码内联到字符串结尾之后的地址。因此,当调用调用时,指令指针值的后续地址将保存在堆栈中,并且该地址将指向内联字符串。
0x00      e8 04 00 00 00     call 9
0x05      41 42 43 00        ; string "ABC" len=4
0x09      e8 f1 f1 ff ff     call _printf
在代码中使用字符串并非易事,许多反汇编程序(如IDA Pro)无法正确处理它。Radare2或其图形用户界面程序 - Cutter - 可以很好地处理这个问题,并将字符串视为函数的一部分,如下图所示。
图1:Cutter中显示的Call-over-string技术

由于BackSwap的位置无关性,它不能依赖导入地址表来检索常见Windows API函数的地址。相反,它使用一种常用技术,主要用于注入代码,从而处理PEB结构(进程环境块)以查找已加载模块的列表,从中可以检索kernel32.dll的地址。然后,通过解析PE结构并找到`LoadLibraryA` API函数,BackSwap加载了更多的DLL,其名称在其中进行了硬编码。
为了加载执行所需的所有函数,BackSwap使用函数名称的硬编码哈希创建一个未初始化的表。然后迭代加载库的所有导出函数,并计算每个函数名的哈希值。将这些函数名称与表中的预先计算的哈希进行比较,如果匹配,则BackSwap会在其表中填充相应函数的地址。这样,BackSwap在运行时实现并构建自己的Import Table。
图2:PEB从一个加载的库列表中解析和检测kernel32基址

在使用所有必需的功能地址初始化所有精心制作的表格后,BackSwap开始为其核心功能做准备 - 窃取其受害者的凭据和资金。首先,它检查自身的另一个实例是否已在运行。它通过使用类似于检查系统中是否存在互斥锁的技术来实现。即,它确定名称模式为`的Windows事件对象是否<USERNAME>-<COMPUTERNAME>已存在。如果是这样,恶意软件将终止执行,因为它推断系统中正在运行另一个副本。
根据其版本,并按照上述检查,BackSwap将使用`SetWinEventHook`函数为一系列事件创建多个线程和设置事件挂钩。虽然不同版本的恶意软件之间的这种行为有一些变化,但基本逻辑是相同的 - 钩子事件旨在拦截与计算机上的窗口应用程序相关的活动。一些引人入胜的事件可以在下面看到。
0x8005 EVENT_OBJECT_FOCUS
0x8006 EVENT_OBJECT_SELECTION
0x8007 EVENT_OBJECT_SELECTIONADD
0x8008 EVENT_OBJECT_SELECTIONREMOVE
0x8009 EVENT_OBJECT_SELECTIONWITHIN
0x800A EVENT_OBJECT_STATECHANGE
0x800B EVENT_OBJECT_LOCATIONCHANGE
0x800C EVENT_OBJECT_NAMECHANGE
0x800D EVENT_OBJECT_DESCRIPTIONCHANGE
0x800E EVENT_OBJECT_VALUECHANGE

在每次事件拦截时,触发的钩子函数将在从钩子事件收集的信息中搜索以“https”开头的URL。在较新版本的BackSwap中,如果找到了一个URL,恶意软件将依次解密其.rsrc部分的资源,这部分就是它的网络注入,一段注入互联网浏览器的javascript代码,以便操纵用户访问的页面中的对象。将解析此代码,并检查找到的URL以查看它是否与恶意软件所针对的银行之一匹配。  
BackSwap将javascript代码插入浏览器所采用的方法既简单又独特且功能强大。恶意软件不是直接将代码注入浏览器的内存,而是通过向其发送击键来模仿用户与浏览器窗口的交互。也就是说,它打开浏览器的开发人员工具或将焦点设置到URL栏并通过在Ctrl + V上按下来粘贴恶意javascript。这种独特的方式将受到许多安全工具的关注,因为很难区分这与合法的用户交互。不同版本的BackSwap与浏览器的交互方式不同,我们将在本文后面介绍这些差异。
javascript web-injects的内容是BackSwap的组件,它在版本和示例中经常发生变化。显然,它必须是每个目标银行的独特之处,但Backswap在更改javascript的功能,如何操纵受害者的浏览器向犯罪分子汇款以及如何将窃取的凭据传递给C&C服务器方面做了额外的努力。 。
恶意软件创建的其中一个线程将无限循环,并检查javascript web-inject是否传递了任何凭据以发送给C&C。可以将被盗信息保存到剪贴板或更改窗口标题。再一次,这些从JS向二进制文件发送信息的技术在BackSwap版本之间有所不同,稍后将对其进行更详细的讨论。

BackSwap Evolution 在过去的几个月中,我们已经跟踪了数百个Backswap样本,并且能够观察到它们之间的许多变化。通过检查所有这些数据,我们可以将样本分组,并记录恶意软件从野外到现在的外观行为的变化和修改。
早期版本BackSwap的第一批样本在2018年3月中旬被发现,当然,它被认为是其演变中最简单的。这些样本几乎没有包含任何使有效载荷分析复杂化的措施,有效载荷按原样插入原始程序(主要是7-Zip,但也包括WinGraph和SQLMon)。出于这个原因,许多恶意软件的字符串,包括目标银行和浏览器,都是可见的。因此,有可能推断出目标银行都是波兰人,每个被检查的样本都是针对1到3家银行。这些样本中最常见的目标银行网站是ipko.pl,24.plmbank.pl
这个初始版本的另一个特点是它为它所针对的每个银行保留了一个加密资源,其中使用的加密方法是一个简单的单字节XOR,其值为0x9。值得注意的是,虽然这种方法在加密标准方面非常薄弱,但BackSwap一直在使用它。网络注入代码本身也非常简单,并包含占位符'xxxxxxxxxxxxxxxxxxxxxxxxxx',该占位符由恶意软件设置为持有IBAN进行赃款交易。每当受害者进入目标银行网站之一并想要执行交易时,网络注入代码将用上述的IBAN替换目标IBAN,从而将钱转移给攻击者而不是真正的预期接收者。
一个月后,即2018 年4月,更多的银行被添加为目标,一些样本在一个二进制文件中包含多达六种不同的资源。Web注入代码的Javascript实现得到了改进,并包含了一种新的方式,它使用浏览器窗口的标题与PE二进制文件中的代码进行交互。shellcode检查浏览器标题中文本的更改,并获取发送给它的信息,但是WebInjects。此外,恶意软件PE中的后台线程获取任何被盗信息并将其存储在计算机上的日志文件中,该日志文件随后被发送到C&C服务器。
4月中旬,BackSwap开始在目标网站的DOM中创建虚假输入对象。这些虚假的输入字段看起来与原始字段完全相同,但是当用户填充假字段时,原始字段现在被隐藏并包含攻击者的IBAN。这种变化在BackSwap这是表现得淋漓尽致,并证实通过F5 的文章。与此同时,恶意软件开始放弃以前的注入技术,其中受害者的浏览器被开放给开发人员的工具实用程序,其中web-injects代码将被粘贴以改变当前页面。相反,它转向了一种技术,其中恶意javascript将粘贴在URL地址栏中。
4月底,BackSwap首次开始使用另一个XOR密钥来加密其资源,这次是0xb。这种类型的更改已经迅速成为BackSwap的典型,我们能够在5月发现八种不同的加密密钥。事实上,所有最近的样品都带有独特的钥匙。但是,如前所述,它仍然使用单字节XOR,这是一种弱加密方法。
除了XOR键的变化之外,作者还将IBAN移动到web-inject javascript中进行硬编码,而不是之前存在的二进制文件。这种情况在5月的大多数样本中都存在,其中一些样本附加了额外的名称,这很可能与参与该行动的钱骡相对应。

图3:钱骡的硬编码信息。

5月的网络注入还提供了一个名为` copyStringToClipboard` 的新函数,它负责将给定字符串复制到剪贴板,顾名思义。该字符串包含受害者填写的被盗信息,并被恶意软件的PE中的线程接收,该线程读取并处理它。
此外,在同一个月,BackSwap开始跟踪受感染机器的数量,这是通过向一个流行的俄罗斯网站yadro.ru发送HTTP请求来完成的,该网站跟踪网站的点击次数。这种方法对于从攻击者的站点收集受害者遥测非常简单有效,因为安全产品难以标记,收集这些数据的目标站点是合法的。
BMP图像中的加密有效载荷2018 年6月是BackSwap发展的重要月份,其中开发人员引入了一种独特的有效载荷编码技术,这种技术之前未与BackSwap相关。在该技术中,利用BMP报头的独特特性,将之前描述的PIC加密并嵌入BMP图像内。
图4: 引入嵌入式位置无关代码的第一张图像

BMP文件的魔术头是0x42,0x4D,对应于ASCII中的“BM”。这对十六进制数也恰好是有效的x86指令。以下屏幕截图radare2将演示字节的这种解释。
BackSwap背后的罪犯利用BMP头,以使代码看起来更无辜。在执行这些伪指令之后,对于启动PIC的解密例程的地址存在JMP指令,如以下屏幕截图所示。解密程序非常简单,易于分析。
虽然第一张BMP图像相当抽象且难以理解,但随后的图像变得有意义且基于真实图像,无论是来自互联网还是由攻击者创建的。第一个展示的例子是来自艾尔帕西诺着名电影“疤面煞星”中着名场景的图像。
带有此图像的第一个示例还包含BackSwap Web注入与PE二进制文件交互方式的更改。删除了先前描述的改变窗口标题以传达信息的技术,使剪贴板成为用于与PE二进制文件中的恶意软件代码通信的单个实体。
最新版本BackSwap活动中最大的喘息时间是2018年7月。我们发现其发展及其分布几乎没有活动,并估计可能会有一些重大改进。实际上,在2018 年8月,我们获得了新的样本,这些样本标志着恶意软件的特定转折点,因为我们可以观察到它的一些新变化。
首先,它将其恶意行动转移到几乎完全集中在西班牙银行,同时完全放弃任何以前有针对性的波兰银行。

图5:BackSwap瞄准的一些西班牙和波兰银行

除了目标,BackSwap改变了它存储网络注入的方式。与以前一样,它不是将其保存在每个目标银行的不同资源中,而是将所有这些资源聚合为单个资源,这样每个网络注入代码段都由特定的分隔符关键字分隔。在8月期间,我们检测到使用了两个这样的分离器,第一个是“ [start:]”,第二个是“ [fartu:]”。此外,目标银行网站不再存储在恶意软件的PIC中,而是存储在网络注入代码本身中。下面将介绍这种新形式的网络注入的示例。

使用外部网站发现8月份的一些样本来存储他们的javascript负载。虽然网络注入仍然存储在.rsrc被劫持程序的部分中,但它们只是一个包装器并javascript从其他服务器导入恶意代码。这是我们第一次也是唯一一次看到BackSwap这样做的时候。由于安全供应商和网站本身可以删除恶意页面,因此在第三方服务器上存储恶意代码的稳定性较差。

BackSwap在八月份推出了更多的BMP图像。我们发现了卡特曼,一位老太太,“塞尔达传说”视频游戏系列中的链接以及俄罗斯总统弗拉基米尔·普京的照片。在8月底,犯罪分子在普京的形象中添加了一个相当幼稚的文字,他们试图冒犯AV行业。

图6:BackSwap的PIC嵌入在普京的图像中。


从9月到11月的变种没有显示出任何重大变化。我们观察到PIC有效载荷的一些修改,特别是更多的加密层和大量的垃圾代码,这些代码旨在使分析更加复杂,并使恶意软件更难以检测。在这几个月BackSwap引入多个分隔到它的JavaScript网页内喷射,如[mumuo:]和[pghtyq]在九月,[tempo:]并[code:]在十月, 以及最近[joke:]在十一月。它还为其BMP图像添加了更多版本。10月份使用的主要图片是斯大林拍摄的一张着名的宣传海报,11月份的大多数样本都有一个男人挥舞着LGBTQ骄傲旗帜的形象。

我们发现的最新样本,从11月底开始,根据一部同名小说,引入了1970年俄罗斯电视剧“春天的十七分钟”(Семнадцатьмгновенийвесны)拍摄的新照片。web-injects中的分隔符也被更改,现在是“ [asap:]”。这不是唯一的变化,因为似乎恶意软件将来自Javascript web-inject代码的信息传输到PE中执行的shellcode的方式也发生了变化。如前所述,BackSwap用于通过剪贴板将受害者的凭据和其他消息发送到shellcode,现在替换为通过浏览器的URL发送相同的数据。

图7: Backswap最新的BMP图像

BackSwap的最新样本也向AV行业传递了另一个幼稚的信息,要求业界不要动摇。好吧,这不会发生。

图8: AV行业最新消息的图像
结论
虽然银行特洛伊木马似乎已成为在网络犯罪世界中偷钱的一种不那么突出的方法,但BackSwap证明了这种货币化模式尚未消亡。实际上,当谈到BackSwap时,情况恰恰相反如本出版物所述,我们肯定会看到恶意软件作者正在不断努力改进它并使其更安全地从安全产品中获取。
此外,用户在从未经授权的来源下载软件时应该小心谨慎,因为此恶意软件通过伪装成合法应用程序来证明能够绕过安全措施。鉴于这种威胁,强烈建议仅从其原始分销商的网站获取软件。
我们Check Point Research正在继续追踪这一威胁,以便即使在其动态和不断变化的性质的情况下也能提供最好的缓解。

附录
  • backswap_extractor.py - 基于radare2的Python3脚本,可用于解密和
    提取来自多个BackSwap版本的信息,包括其
    位置独立的有效负载。
  • backswap-ioc.csv  - IOC表和关于BackSwap样本的其他相关信息。

欢迎来到安全之家
悄悄告诉你善用本站的【 搜索 】功能,那里可能会有你要找的答案哦
您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

Archiver|sitemap|小黑屋|手机版原版|安全之家

GMT+8, 2025-4-3 23:58 , Processed in 0.120258 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表