首页
社区
课程
招聘
[翻译]Forcepoint 发现 URSNIF 变种通过收集鼠标移动轨迹判断是否处于沙盒以绕过查杀
发表于: 2017-8-2 13:30 6896

[翻译]Forcepoint 发现 URSNIF 变种通过收集鼠标移动轨迹判断是否处于沙盒以绕过查杀

2017-8-2 13:30
6896

Yogi Gao发表于 2017.7.24

20161Forcepoint安全实验室报告了一个通过邮件进行传播的Ursnif银行木马,它在初始HTTP请求中使用“Range“特征来规避检测。

 

20177月我们在一封恶意邮件中发现了Ursnif的新变种,附件中是一个加密的word文档,解密密码在邮件的正文中。正如20174月以来记录的几个Ursnif的活动,这个word文档包含了几个混淆过的VBS文档,通过WMI来载入恶意DLLs

 

然而,这些例子中出现了一些新的特征,包括使用鼠标位置的组合来进行反沙盒,和使用文件的时间戳来解码他们的内部数据,并从Thunderbird应用中偷窃数据。

 

诱饵邮件的一个例子如下所示:

在解密之后,它显示了三个以“docx“为扩展名的OLE文档图标,它诱惑用户去双击它们(如下图)。

事实上,他们的文件属性表明他们是三个VBS脚本,包含同样调试混淆过的代码,使用大量垃圾脚本来掩盖正常的逻辑。

 

一旦脚本被触发,它就会从“hxxp://46. 17.40[.]22/hyey.pnj”处下载恶意软件。如果失败了,它就会从另一个网站进行下载:“hxxp://inshaengineeringindustries[.]com/head.pkl”,这些文件事实上是可以通过WMI载入的DLL文件:

rundll32 [malwarepath] DllRegisterServer

恶意DLL被加壳,并填充了大量垃圾代码以防止对其进行静态分析。在运行时,它会下载第二个DLL文件,并把这个新的DLL文件映射到当前地址,并修复IAT和重定位表,最后跳转到入口点执行。

下载下来的DLL文件首先会检测自身的完整性,然后:

分析的剩余部分将重点关注基于鼠标移动反沙盒/解密功能。

这个例子中使用的算法,使用了当前的和先前的鼠标坐标来检测鼠标的移动并避开沙盒环境,因为沙盒环境中鼠标通常是不移动的。它进一步使用了进程产生的值来暴力破解自己的解密密钥。

第一步-产生Key

首先,恶意软件计算上一次和当前鼠标xy坐标间的D-Valuedelta)。然后把.BSS段的相对虚拟地址(RVA)和 “SizeOfRawData”的和,作为基础种子。

把这个基础种子与文件的创建时间(在这个例子中是2017411日)进行XORs(异或)运算,并将得到的值与鼠标移动D-Value的低5位相加,最终的结果作为解密密钥。

第二步-解密.BSS

恶意软件会进行一个循环运算,在这个运算中,每次把DLL.BSS段的一个DWORD,和当前的DWORD数据以及上一个DWORD数据进行异或,然后和解密密钥进行异或,将得到的值循环右移count位(count为循环计数器),最终将结果替换掉当前的DWORD数据。

第三步-验证解密密钥

.BSS段的数据被解密后,从.BSS段的偏移0x61d, 0x6190x625分别获取三个值,将它们的总和与“0EE553B4E“这个校验和进行比较。如果匹配上了,就会执行余下代码,否则它就会恢复加密的.BSS段,并重新计算一个新的key来进行另一次解密和验证操作。

因为在沙盒环境中,基于鼠标移动的D-Value值总是0,解密出来的BSS段总是不对,它就会循环执行这段解密代码。当在实际的环境中,因为使用的仅仅的D-Value的低5位而不是整个32位,会更有可能得到正确的解密后的段数据。

 

解密密钥本身是一个重要的全局常量,在随后的解密APIs的代码,一个隐藏的PE文件(在这个变种中是DLL),同步对象,注册表数据,URLs等等中都有使用到。

 

此外,解密操作在运行时进行,防止内存分析工具转储恶意软件内存的整个明文字符串。

 


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 8
活跃值: (57)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
有例子的代码吗
2017-10-17 15:20
0
游客
登录 | 注册 方可回帖
返回
//