0x1 前言
近日,360互联网安全中心捕捉到一例“TrickBot”银行木马新变种。相比较过去出现过的“TrickBot”银行木马,该新变种攻击过程中无任何文件落地,包括载荷下载、窃密、屏幕截图在内的所用功能都由一段PowerShell命令完成。
“TrickBot”银行木马最早出现于2016年底,主要通过挂马网页、钓鱼文档传播,进入受害者计算机后窃取计算机中邮箱密码、浏览器中存储的网站凭证等敏感数据,注入浏览器窃取网银帐户密码,盗取受害者资产。
0x2 新变种运用“无文件”攻击技术
过去的“TrickBot”银行木马一般通过带有恶意宏的Office文档启动PowerShell应用程序下载载荷到本地执行,这么做会导致载荷文件落地,一旦载荷文件被杀毒软件查杀攻击即宣告失败。图1展示了过去的“TrickBot”变种攻击流程
图1 过去的“TrickBot”变种攻击流程
捕获的“TrickBot”新变种简化了攻击流程,去掉了载荷释放这一步骤,所用功能都由一段PowerShell命令行执行。如此一来攻击流程中无文件落地,降低了被杀毒软件查杀的风险。图二展示了捕获到的“TrickBot”新变种攻击流程。
图2 “TrickBot”新变种攻击流程
0x3 新变种所有功能由一段PowerShell命令完成
当用户打开带有恶意宏的Office文档时,文档执行如图3所示的PowerShell命令。
图3 恶意宏执行的PowerShell命令
这段命令使PowerShell从hxxp://162.244.32.185/jquery.js读取另一段PowerShell命令执行。这段命令中包含两段Shellcode,第一段Shellcode是一个用C#语言编写的反射注入Dll,第二段Shellcode用于完成窃密等功能。
图4 执行的PowerShell命令
值得一提的是,在这段PowerShell命令中调用了[OqkZsI7.OqkZsI7]类的成员函数Ck2Ya和WETJLKk2r1而未见到[OqkZsI7.OqkZsI7]类的声明。这实际上是对PowerShell内嵌.NET Framework灵活应用。在Powershell中可以使用.NET Framework的类库,也可以使用C#语言的语法定义并执行函数。这段Powershell命令中并未直接写入.NET代码,而是通过反射注入的方式将C#语言编写的dll(第一段Shellcode)载入内存,Dll中对[OqkZsI7.OqkZsI7]类进行声明,并提供Ck2Ya、WETJLKk2r1等成员函数供PowerShell使用。
图5 “TrickBot”新变中对.NET Framework类的调用
这个反射注入Dll主要负责字符串的加解密工作,其中Ck2Ya函数输出的部分字符串将与hxxp://162.244.32.185拼接得到下阶段载荷地址或者窃取数据的上传地址,而iputY7e函数输出的字符串将作为Shellcode被TLybhcYk0k函数执行。可惜的是,下阶段载荷已经无法下载。
图6 PowerShell命令执行反射注入Dll函数过程
第二段Shellcode则是完成TrickBot的主要功能,包括获取系统信息、获取Outlook邮箱帐户和密码以及上传屏幕截图。这些功能都由PowerShell完成。
图7 获取系统信息
图8 窃取Outlook邮箱帐户及密码
图9 屏幕截图并上传
0x4 防护建议
- 银行木马大部分通过垃圾邮件传播,一般以“Request order”、“Confirm Invoice”这类与“订单”、“付款单”相关的字样作为邮件标题,若收到这类标题的邮件时先确定发件人身份再决定是否打开邮件中的附件查看。
- “TrickBot”银行木马一般通过宏执行恶意功能,而宏是默认禁用的。当接收到未知来源的Office文档时,千万不要启用宏。
- 安装360安全卫士拦截此类型的攻击。