一、 概述
近日,火绒安全团队发现名为“TrickBot”的后门病毒正在全球范围内通过仿冒邮件发起新一轮网络攻击,世界范围内多家银行和比特币交易平台(共计269家)的使用者都在此次被攻击范围之内。病毒“TrickBot”目的明确,在于盗取用户的银行账户、比特币账户信息,攫取钱财。
图:受到病毒攻击威胁的部分银行、比特币交易平台名称
后门病毒“TrickBot”通过伪装成标题为“您的汇丰银行申请文档”的邮件进行传播,并以附件的形式发给用户。其内容极具迷惑性,操作说明、注意事项、客服电话以及办公地址等信息一应俱全,用户很难辨别其真伪。而用户一旦打开该文档,文档内的恶意代码将会自动执行,并通过Office漏洞(CVE-2017-11882)下载后门病毒“TrickBot”。以下为受影响版本:
病毒“TrickBot”入侵用户电脑后,会盗取其银行账户以及比特币交易平台登录信息。同时还会收集用户计算机内的数据信息,包括系统版本,CPU情况,内存,用户名,系统中的服务项,软件安装情况等。不仅如此,病毒团伙可随时通过远程操控更改病毒代码,进行其他破坏行为。例如:植入挖矿病毒、勒索病毒等。
火绒工程师通过技术分析,发现“TrickBot”早在2016年就已经出现,此次火绒安全团队拦截到的为其变种版本。虽然该病毒的新变种层出不穷,但其主要目标都是盗取用户银行账号、密码等信息,攫取钱财。
“火绒安全软件”最新版即可查杀后门病毒“TrickBot”,建议近期收到过类似邮件的用户尽快进行排查。此外,目前Microsoft Office已经修复该漏洞,建议用户安装最新补丁,以免遭受不必要的损失。
二、 详细分析
近期,火绒截获到一批病毒样本,会利用垃圾邮件配合漏洞文档的形式传播TrickBot病毒。邮件内容将自己伪装成汇丰银行的通知邮件,从而诱骗受害者打开附件中存放的漏洞文档(CVE-2017-11882),文档内容同样将自己伪装成汇丰银行通知内容。漏洞被触发后,病毒会通过访问C&C服务器下载执行TrickBot病毒,TrickBot病毒执行会请求远程的恶意功能模块到本地执行,病毒模块功能包括:盗取用户银行账号信息、收集用户本地操作系统信息、软件安装情况等。病毒传播与执行恶意行为流程图,如下图所示:
病毒传播与执行恶意行为流程图
伪造的邮件及文档内容,如下图所示:
邮件及文档内容
文档中所包含的CVE-2017-11882漏洞被触发后,会执行PowerShell脚本从C&C服务器(hxxp:// ccmlongueuil.ca、hxxp://guardtrack.uk)下载执行远程恶意代码。PowerShell代码,如下图所示:
PowerShell代码内容
如上图,PowerShell代码执行后会将TrickBot病毒下载至 “%TMP%\bumsiery.exe”位置后进行执行。漏洞触发后的进程关系情况,如下图所示:
进程关系
为了对抗安全软件查杀,病毒被混淆器进行了混淆。在混淆器代码通过创建窗体、发送窗体消息的方式对抗虚拟机引擎,在窗体消息处理函数中创建Timer,当Timer消息连续被响应360次后才能触发最终的混淆器解密代码。相关代码,如下图所示:
混淆器代码
病毒所使用的字符串数据均被进行过加密处理,在病毒代码使用相关的字符串资源时,会通过解密函数进行临时解密。解密后的数据被存放在栈中,使病毒分析人员很难通过查看进程内存镜像的方法找到与病毒功能相关的数据信息,从而加大对病毒的分析和逆向复杂度。除此之外,病毒所调用的所有系统API全部通过病毒获取的函数地址表进行调用,从而用上述手段对抗安全厂商的分析与查杀。字符串数据解密前后示例,如下图所示:
字符串数据
获取API函数地址表相关代码,如下图所示:
获取API函数表
病毒执行后,首先会创建计划任务创建启动项,且每隔3分钟就会重复执行一次。如下图所示:
计划任务
在主要病毒代码逻辑执行后,病毒会使用多种不同的命令编号与C&C服务器进行通信,从而获取不同的远端数据(包含病毒模块数据及相关配置数据),并将本地计算机信息和病毒运行状态上传到服务器。主要命令编号及作用,如下图所示:
主要命令编号与对应功能描述
C&C服务器返回的数据均被使用AES-256算法进行加密过,数据在受害计算机中也以加密形式进行存放,解密密钥也被存放在回传数据中。从C&C服务器请求到的数据文件及功能描述,如下图所示:
数据文件及功能描述
TrickBot病毒具有很强的可扩展性,病毒作者可以随意通过修改C&C服务器返回数据的方式增减病毒模块,执行任意攻击逻辑。病毒在请求到模块数据后,会根据远程返回的配置文件调用不同导出函数执行恶意代码,TrickBot病毒的病毒模块通常的导出函数共有4个,如下图所示:
病毒模块导出函数
我们现在可以请求到的功能模块共有两个injectdll和systeminfo,injectdll模块主要用于盗取用户账号,systeminfo模块则用来收集受害者计算机中的系统信息,下文中将按照病毒模块进行逐一说明。用于请求功能模块的远程配置信息,如下图所示:
用于请求功能模块的远程配置信息
Injectdll
该病毒模块首先会被注入到svchost进程进行执行,当通过遍历查找浏览器进程进行远程注入盗取用户账户信息,该病毒只针对IE、Chrome和FireFox进行盗取。通过对病毒配置信息的筛查,我们发现病毒窃取账户范围非常之广,共包含银行站点、比特币交易平台271个。配置中所涉及的个别站点示例,如下图所示:
站点示例
病毒在检测到浏览器进行后会对浏览器进行注入,Hook浏览器进程中的网络请求函数,根据病毒配置规则过滤发送向指定网址的数据。浏览器进程被Hook情况,如下图所示:
浏览器进程被Hook情况
盗取账号相关配置信息分别存放在sinj、dinj和dpost中。 sinj解密后配置内容示例,如下图所示:
sinj配置示例
dinj解密后配置内容示例,如下图所示:
dinj配置示例
dpost解密后配置内容,如下图所示:
dpost配置内容
Systeminfo
systeminfo模块主要用来获取受害者的计算机信息,主要会收集用户系统版本、CPU信息、内存大小信息,系统服务信息,软件安装信息等,收集到的信息最终会拼接成xml文件。收集本地信息代码,如下图所示:
获取本地系统信息主要逻辑
利用WMI查询本地系统版本信息,如下图所示:
通过WMI查询系统信息
通过遍历注册表的方式获取当前系统中的软件安装信息,如下图所示:
收集软件安装信息
三、 附录
文中涉及样本SHA256:
* 本文作者火绒安全,转载注明来自FreeBuf