2016年1月,Forcepoint安全实验室报告了一个通过垃圾邮件进行分发的银行木马 Ursnif,其在初始的HTTP请求中使用“Range”特征来规避检测。
2017年7月,我们在一个恶意电子邮件中提取到了一个Ursnif的新变种,邮件附件是一个加密的Word文档,解密密码在邮件正文中。
我们有几份2017年4月份以来的Ursnif相关的活动记录,该文档中包含了几个被混淆过的VBS文件,通过VMI加载恶意的DLL文件。
然而,新版本的Ursnif表现出一些新的特性,包括在躲避沙盒环境和自动化虚拟机(VM)方面玩出了新花样,能够通过鼠标移动来检测是否是真实用户在与计算机进行交互,结合鼠标的位置和文件的时间戳来解密内部数据,从电子邮件客户端Thunderbird中窃取数据。
本次发现的Ursnif操纵者使用的诱饵电子邮件如下图所示:
下载并解密附件之后,会得到三个以“docx”为后缀的带有OLE文档图标的文件,诱惑用户去双击它们。如下图所示:
事实上,它们的文件属性显示它们是三个完全相同的VBS脚本,包含了相同的经过了高级混淆的一组代码,这些代码中被大量垃圾脚本填充以掩盖其正常的逻辑。
一旦触发,它会试图从 “hxxp://46.17.40[.]22/hyey.pnj” 下载恶意软件,如果这一步失败了,会尝试从另一个网站下载,备用的网址是“hxxp://inshaengineeringindustries[.]com/head.pkl”,这些文件其实是DLL文件,可以通过WMI加载。
rundll32 [malwarepath] DllRegisterServer
这个恶意的DLL被打包,并再次填充大量的垃圾代码,以阻止对其进行静态分析。在执行的过程中,它会下载第二个DLL文件,并将其映射到当前地址,修复Import Address Table 和 Relocation Table,最后跳转到入口点执行。
第二个DLL首先会进行完整性的自检,随后执行下列操作:
接下来,重点讲解一下新型的基于鼠标的抗沙盒检查和解密技术。
恶意程序样本使用了一种算法程序,通过计算当前和之前记录的的鼠标坐标之间的差值来检测鼠标的移动,通常情况下在沙盒环境中鼠标是不移动的,恶意程序以此来判断是否是在虚拟机中。而后,还使用这个过程中生成的值来强力破解他自己的加密密钥。
首先,恶意程序利用过去和当前鼠标位置的X和Y坐标,计算出一个差值:D-Value (delta),之后选择.BSS 段的相对虚拟地址(RVA)和“SizeOfRawData”值的总合作为一个 base seed。将base seed 与文件创建时间(在本例中是“Apr 11 2017”)做 XORs (异或运算)得到一个值,将这个值添加到D-Value的最低的五个Bit位,从而得到解密密钥。
相关代码示例如下图所示:
恶意软件会进行一个循环计算,使用DLL中.BSS 段的当前 DWORD数据和上一个 DWORD数据以及上一步中生成的Key值进行异或运算,每计算一次,计算器增加一次,并替换当前的DWORD值。代码示例如下所示:
之后,对.BSS段的数据进行解码,计算.BSS段中三个偏移位上值的总和(分别为:0x61d、0x619 和0x625),然后将这个总和与“0EE553B4E”值进行比较,如果匹配,就执行其余的代码,否则就会恢复加密的.BSS段的原始数据,并尝试重新计算新的密钥。
如果运行在沙盒环境中,由于鼠标位置移动的差值为0,因此 .BSS 段的内容总是不能被准确的解码,程序将循环的执行前边的代码,无法顺利进行下去。而在真实的操作环境中,由于只需要D-value有最低5-bits就能够得到正确的Key值解码.BSS段的数据。
加密密钥本身是一个重要的全局变量,它还将被用于后续解码APIs、一个隐藏的PE文件、同步对象、注册表数据、URLs等。
此外,解码操作仅在程序运行时被执行,防止内存分析工具转储恶意软件内存的整个明文字符串流。
解码Windows APIs被用于后续的注入操作,代码示例如下:
借助于解密密钥,可以从第二个DLL文件的数据部分安全地提取一个附加的嵌入的PE文件(这是第三DLL文件),将其释放到一个临时缓冲区,并注入到“explore.exe”进程中。
Ursnif向来喜欢使用一些聪明的招数,这个银行木马俨然已经成为恶意软件新技术的滋生地。
例如,2016年夏天,Ursnif坚持使用Tor网络隐藏它的C&C服务器,它是第一批这样做的银行木马和恶意软件家族之一。同年夏天,Ursnif被观测在测试和部署其他的创新的抗分析和VM逃匿技术。
上面讲述的仅仅是Ursnif在过去一年中部署过的一些少数的技巧。
在此次攻击活动中,受害者将收到一封垃圾邮件,其中包含了一个带有密码保护的压缩文件,一般来讲,当附件文档包含敏感内容时,发送方会采取这种方式。近年来,这种方法被攻击者广泛使用,这样做不仅能够有效绕过IDS的检测,对于欺骗收件人(邮件可能包含重要信息)也很有帮助。
受害人将附件文件解压缩后,会看到三个Word 文档。
根据上文分析部分的描述可知,三个文档中包含了相同的恶意宏脚本。骗子使用了三个文件,目的是为了提高用户打开并感染的机率。
一旦触发宏脚本,会下载一个DLL文件,解压缩第二个DLL,然后通过一系列计算和验证,获取第三个DLL,第三个DLL文件被用于安装银行木马。
鼠标移动模块的作用并不仅仅用于检测是否是一个真实的操作者或者是一个虚拟环境,也被用来暴力破解一个存储在第二个DLL中的加密密钥,这个加密密钥可以用来获取到第三个DLL。总之,我们已经习惯了Ursnif会经常耍些聪明的把戏。
最不同寻常的是,这个版本的Ursnif并没有专注于窃取银行凭据,而是专注于从Mozilla的电子邮件客户端Thunderbird中提取联系人和密码信息。Forcepoint 的研究人员Yogi Gao称,“在这个样本中,与Thunderbird相关功能的背后意图尚未确定”,这很可能是对这种活动的首次尝试,意味着将来的版本中可能会包含更多的电子邮件客户端或应用程序的特性。
hxxp://46.17.40[.]22/hyey.pnj hxxp:// 46.17.40[.]142/45.txt hxxp://inshaengineeringindustries[.]com/head.pkl hxxp://ardshinbank[.]at/key/x32.bin hxxp://ardshinbank[.]at/key/x64.bin
aaxvkah7dudzoloq[.]onion 0x7293c971[.]ru
82615b4bb03ba00f141bb4d4b57bf8a73e76ebe9 bdcb4b96a281da3e09e29071dc9661ce39d442f1 73fdde182759e644a3d7296537a048a6980e8526 60e221bd9e234ab6786def88a1f0e11460678fb4 ce7e48d8ee6e113429dba75a8528568fda4b0067
Key: HKEY_USERS\S-1-5-21-746137067-1417001333-1606980848-500\Software\Microsoft\Windows\CurrentVersion\Run Name: Random String Value: rundll32 [malwarepath]