ESET使用新的浏览器操作方法发现了BackSwap banker

近年来,银行木马已经在网络犯罪分子中逐渐消失。 原因之一是针对防病毒供应商和Web浏览器开发人员的保护技术的发展。 在银行家的帮助下很难进行攻击,这就是为什么许多病毒编写者都转而使用更简单,更有利可图的工具的原因:加密器,矿工和用于窃取加密货币的软件。

很多,但不是全部。 我们发现了一个使用新技术来操纵浏览器的银行家家族。 该恶意软件没有在浏览器进程中复杂地引入代码来监视其活动,而是在消息等待周期中捕获Windows事件,以检查与银行业务相关的对象的值。


发现在线银行的工作后,该恶意软件通过浏览器中的开发人员控制台或直接将其注入到网页中的恶意JavaScript。 在用户不知情和参与的情况下进行操作。 乍一看,一个简单的方案使您可以绕过高级机制,以保护浏览器免受复杂攻击。

引言


我们首先在2018年1月注意到这个网络集团,当时它发布了早期的开发成果-例如,一个程序通过更改剪贴板上的钱包地址来窃取加密货币。 该组织从事加密货币业务已有几个月,之后发布了第一版银行家-从3月13日起,ESET防病毒产品会将其检测为Win32 / BackSwap.A。

根据我们的统计数据,在下图中,与以前的项目相比,您可以看到检测次数急剧增加。 作者几乎每天都在改进银行家并发布新版本(周末休息)。

图1.发现Win32 / BackSwap.A和相关的先前项目

分配与执行


Win32 / BackSwap.A在垃圾邮件中分发,附件中包含来自Nemucod家族的模糊JavaScript加载器。 目前,这些新闻通讯针对的是波兰用户。

我们经常在受害计算机上发现另一个 著名的 Win32 / TrojanDownloader.Nymaim引导程序,可能以相同的方式传播。 目前,我们不知道这种巧合或家庭是否相互关联。

有效负载作为合法应用程序的修改版本交付,部分被恶意组件重写。 用于修改的应用程序会定期更改-我们以这种质量观察到了TPVCGateway,SQLMon,DbgView,WinRAR Uninstaller,7Zip,OllyDbg和FileZilla Server。

修改应用程序的方式应使其在初始化后切换到恶意代码。 为此,作者在_initterm()函数表_initterm() C库运行时内部_initterm()添加了指向恶意组件的指针,该表在调用main()函数之前初始化了全局变量和程序的其他部分。


图2.指针数组_合法应用程序的_initterm,在其末尾添加了指向banker shellcode的指针

该方法类似于木马程序。 区别在于,在我们的情况下,原始应用程序在初始化恶意变量后停止工作。 该方法的目的不是掩盖用户,而是抵制检测和研究。 由于许多反向工程工具(例如IDA Pro)将原始main()函数显示为应用程序代码的合法开头,因此分析师发现更难检测到此银行家。 分析师乍看之下不会发现可疑的事实。

有效负载是具有嵌入数据的位置无关的二进制代码对象。 字符串以纯文本存储,这使您可以替换已经很细微的痕迹,因为所有必需的Windows API都是通过哈希搜索的。 在工作开始时,该恶意软件通过将自身复制到启动文件夹中来提供持久性,此后便切换到银行家的功能。

传统注射方法


一位普通的银行家通过在线银行界面从受害者的帐户中窃取资金,将自己或一个特殊的模块引入了浏览器进程的地址空间。 由于多种原因,这并不是一件容易的事。 首先,注射可以被抗病毒产品拦截。 此外,已实现模块的位深度应与浏览器的位深度一致-32位模块不应嵌入到64位进程中,反之亦然。 结果,一次攻击需要同一模块的两个版本-32位/ 64位。

成功注入后,银行模块应检测与浏览器相关的功能并拦截它们。 他需要负责在加密之前和解密之后分别以纯文本格式发送和接收HTTP请求的功能。 查找功能的复杂性因浏览器而异。 在Mozilla Firefox中,它们是由nss3.dll库导出的,并且可以通过其知名名称轻松找到其地址。 Google Chrome和其他基于Chromium的浏览器会隐藏这些功能。 这迫使病毒编写者提出针对特定版本浏览器的特殊方案,并在发布新版本时更改策略。

如果找到了功能并进行了拦截(并且防病毒解决方案未检测到),则银行家可以更改HTTP流量或将受害者重定向到模拟合法在线银行资源,伪造证书的站点。 著名的银行Trojans DridexUrsnif,Zbot,Trickbot,Qbot等也使用了类似的方法。

新的浏览器操作方法


Win32 / BackSwap.A实现了完全不同的方法。 邦克使用Windows图形外壳程序的元素和用户输入的模仿。 该方法看似微不足道,但它是有效的,因为它使您能够解决传统注射的已知问题。 首先,该恶意软件不会在流程级别与浏览器进行交互。 因此,不需要特殊的特权,也无需绕过可以防止常规注入的防病毒软件。 攻击者的第二个优势是,银行家不依赖于浏览器体系结构或其版本。 一种代码适用于所有人。

恶意软件通过为Windows消息等待循环中可用的特定范围的相关事件设置事件挂钩来跟踪已访问页面的URL,例如EVENT_OBJECT_FOCUS,EVENT_OBJECT_SELECTION,EVENT_OBJECT_NAMECHANGE等。 处理程序通过搜索从IAccessible事件接口调用get_accValue方法获得的以HTTPs开头的字符串对象来搜索URL值。


图3.接收用来在浏览器中获取当前页面的URL。 通过检查子字符串[ht] tp [s](以红色突出显示)获得这些地址。

然后Win32 / BackSwap.A搜索与银行相关的地址和浏览器窗口标题,指示用户正在准备汇款。


图4.银行家正在寻找与特定银行有关的代码行。 第一行是窗口标题,第二行是URL部分

找到所需的银行后,银行家会下载与特定银行相对应的恶意JavaScript,并将其注入浏览器。 注射以简单但有效的方式进行。

在较早的示例中,Win32 / BackSwap.A将恶意脚本插入剪贴板并模拟击键以打开开发人员控制台(在Google Chrome中为CTRL + SHIFT + J,在Mozilla Firefox中为CTRL + SHIFT + K),然后粘贴缓冲区的内容(CTRL + V),然后按Enter以执行控制台的内容。 然后,该恶意软件重复按键组合以关闭控制台。 这时,浏览器窗口不可见-普通用户很可能会认为浏览器冻结了几秒钟。

在新版本中,电路得到了改进。 无需与开发人员控制台进行交互,而是通过特殊的JavaScript协议直接从地址栏中执行恶意脚本,该协议是大多数浏览器支持的未充分利用的功能。 银行家模仿按CTRL + L选择地址栏,按DELETE清除字段,通过循环调用SendMessageA来“输入”“ javascript”中的字符,然后使用CTRL + V组合插入恶意脚本。 在“按” ENTER之后执行脚本。 在该过程结束时,将清除地址栏,以消除危害的痕迹。

在图5中,您可以在控制台中看到部分注入的代码。 首先,Win32 / BackSwap.A通过检查所选窗口的类名称(标记为蓝色)来定义浏览器。 恶意JavaScript被复制到缓冲区(标记为红色)。 然后,浏览器窗口的透明度值更改为“ 3”,使其不可见(以紫色标记)。 与ToggleBrowserConsole功能相关的部分(用于打开和关闭控制台) ToggleBrowserConsole


图5.脚本注入

Win32 / BackSwap.A支持对Google Chrome和Mozilla Firefox的攻击,最近版本中已添加对Internet Explorer的支持。 该方法适用于大多数具有开发者控制台或能够从地址栏中执行JavaScript代码的浏览器(标准浏览器功能)。

三种受感染的浏览器都有一个有趣的安全功能,旨在防止Self-XSS攻击 :当用户尝试将以“ javascript:”开头的复制文本粘贴到地址栏中时,协议前缀将被删除,必须再次手动输入才能执行脚本。 Win32 / BackSwap.A通过在粘贴复制的恶意脚本之前模拟地址栏中前缀的字符输入来绕过此障碍。

Mozilla Firefox中实现了另一个安全工具。 浏览器默认情况下禁止将脚本复制到控制台。 而是显示可能的风险通知,并强制用户首先手动输入短语“允许粘贴”以允许插入复制的字符。 为了绕过此安全措施,Win32 / BackSwap.A提供了shell命令(图6)的执行,该命令对prefs.js配置prefs.js进行了更改,并取消了此保护。


图6.一个shell命令,该命令取消了将脚本插入Firefox控制台的保护

JavaScript恶意代码


Win32 / BackSwap.A为每个目标库使用一个特殊的脚本。 由于所有银行都有不同的站点,因此代码不同,并且具有不同的变量。 根据银行家的说法,脚本被注入到页面中,在该页面上进行汇款的准备。 实施的脚本会秘密地用另一个脚本替换接收者的帐号,当受害者发送转账时,这笔钱将转到攻击者的账户中。 由于帐户持有人确认了资金汇入,因此针对未经授权的转帐(两因素身份验证)的对策无能为力。

Win32 / BackSwap.A的作者编写了与五家波兰银行合作的脚本:PKO Bank Polski,Bank Zachodni WBK SA,mBank,ING和Pekao。 运营商从目标列表中删除了一些银行-在大多数新版本中,剩下三个银行:PKO BP,mBank和ING。 在旧版本中,攻击者从被黑的WordPress网站上的C&C服务器发送收件人的帐号。 在新版本中,数字存储在恶意脚本本身中。 帐户经常更改-几乎每个新的广告系列都使用一个新的帐号。

银行家对一定范围内的转移感兴趣-通常为10,000到20,000波兰兹罗提(168,000-337,000卢布)。 该脚本不仅替换了收件人的帐号,而且用一个伪造的帐号替换了输入字段-用户看到正确的号码,并且不怀疑任何东西。


图7.部分恶意JavaScript代码。 用红色标记的网站负责检查转账金额并替换收件人的帐号

结论


Win32 / BackSwap.A证明了安全行业与病毒编写者之间的对抗并不一定总是需要一种新的复杂技术和策略。 浏览器增强了针对代码注入的保护,因此恶意软件的作者切换到了其他攻击方法,并且在Win32 / BackSwap.A中仅实现了一种。

ESET防病毒产品检测到Win32 / BackSwap.A等威胁。

ESET专家向受感染浏览器的开发人员提供了有关新攻击方法的信息。

芯片


9BC4C1D5403DDD90712CE87225490A21D1EDC516 JS/Nemucod.EAN trojan
CF5A74C268661501156663F74CD5E20603B0F261 Win32/BackSwap.A trojan
6251F9AD0E5F551AC4A6B918EF366E86C4CCFDC4 Win32/BackSwap.A trojan
2DC9760A7C6E9D261C73EFB7B2604840734BC058 Win32/BackSwap.A trojan
A68901D0D8C1247FF280F9453E3AE45687C57566 Win32/BackSwap.A trojan (JavaScript)

Source: https://habr.com/ru/post/zh-CN413307/


All Articles