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