一、背景
五月十一日,我们的蜜罐系统捕获到来自xxxxxxxxx@uscourtsgov.com邮箱的钓鱼邮件。其中uscourtsgov就已经是一个很唬人的服务器名称了。邮件伪装美国法院的传票,并会要求受害者打开邮件的附件(一个加密的word文档)了解详细的信息。
这个钓鱼邮件很有意思,作者对文档进行加密,可以有效的防止各个邮件服务器的拦截,并且会给受害者营造一个神秘的氛围,让人忍不住就想打开瞧一瞧。我们输入文档密码,word提示我们是否启用宏。
当我们启用宏后,会看到一个提示信息。大体的意思是,“本文档无法打开,请更换一台计算机试试“。看到这里读者们是不是很奇怪,我们明明打开了文档,为什么还会出现类似兼容性的提示呢?其实这个提示信息应该是宏产生,作者的目的是想让受害者在多个计算机中打开这个文档。作者的小心思可见一斑啊。
点击确定后显示给我们的是word的文本内容,文档模仿成一个微软的信息提示。内容的大体意思是提示受害者这个文档要在pc上使用MS打开,并且要允许宏运行。作者这么做的目的是为了防止此文档在web或其他应用中打开,导致宏无法运行
我们可以看出此钓鱼邮件是经过精心设计的,既然花了这么大的心思,作者对于后续的攻击也肯定是付出了很大的努力。这次钓鱼邮件的分析也将是一场有趣的旅程。
二、攻击流程
我们在执行完word文档后,发现系统出现了一些可疑的网络行为,所以在进行详细分析之前,我们先总体上对钓鱼邮件的攻击流程进行跟踪,从宏观上掌握此次事件的整体流程,随后再对具体的步骤进行详细的分析。大体的分析出了以下的攻击步骤:
- 受害者接收钓鱼邮件,打开邮件附件的word文档,并执行宏脚本。
- 宏脚本下载执行一个名为background的恶意文件,并弹出系统不兼容的提示框。
- background下载一个名为taskwgr.exe的自解压文件,解压生成两个文件install.sql和svchost.exe。4. taskwgr.exe执行svchost.exe。svchost.exe文件将install.sql解密,执行。
- install.sql会连接tor网络,然后加密受害者计算机的文件,弹出勒索信息。
攻击流程图:
三、word宏分析
如果允许宏运行,很遗憾,受害者的计算机很有可能会受到后续的一系列攻击。
那么宏到底做了什么?就让我们一起来研究一下。我们先将word文档密码去掉,另存为一个新的文档。
我们查看宏的内容,此时会发现文档中宏及VB工程都是空的。
好吧,看来我们没那么容易获取到宏代码。攻击者还算是想的比较周密,将代码隐藏了起来。
在word中启用文档宏,点击确定时,按住SHIFT,阻止宏自动执行。再次打开VB编辑器,现在文档中的VB工程出现了,打开时会发现工程被加了密码。
不过VB工程的密码可以通过破坏工程文件加密结构的方法将其破坏,我们还是可以获取到代码的。首先将文档另存为docm格式,因为新版office文件是zip格式。
然后再将保存出来的docm扩展名修改为zip,解压。
在解压出来的目录中,可以找到word/vbaProject.bin,该文件就是word文档的VB工程文件。
用16进制编辑器打开,找到“CMG=”和“DPB=”,这里就是VB文档的加密结构,因为word的处理机制问题,只需要将DPB改为DPx即可使密码失效。
找到“DPB=”字符串,直接将DPB改为DPx,这样密码就失效了。
将之前解压出来的目录重新打包成zip格式的docm文件
现在打开保存出来的docm文件,启用宏,word会提示DPx无效,点击“是”的时候需要按住shift阻止代码自动执行。
再次打开VB编辑器,就可以看到文档的VB宏内容了。
我们成功获取到了宏代码,这段VB的实际操作为比较简单,具体行为如下:
1从http://185.189.58.xxx/~filehost/ background.png下载一个PE文件
2、将文件保存/svchost.exe
3、执行该文件
4、弹出消息框,大致意思为:“系统不支持该加密文档,请尝试在其他机器上打开”
5、关闭word文档
四、background行为分析
word宏的目的是下载一个PE文件,那么我们接下来需要对该PE文件进行分析。我们针对样本关键的内容进行讨论,为了叙述方便,我们下文都将样本称之为background。
1.background是由NSIS制作的安装程序。background会获取临时路径,这将是background接下来的工作路径。
2.在临时目录创建一个文件夹,用于存放释放的文件。
3.接下来background会释放出一个用于加密解密的动态链接库wpoke.dll。
4.background加载wpoke.dll,使用其中导出的DecryptSymmetric函数进行数据解密。
解密两段加密数据,其中第一段为访问下载的URL。
第二段为文件名称svchost.exe 。
5.接下来释放用于下载的INetC.dll。其中释放代码与wpoke.dll代码相同。然后加载INetC.dll,调用其中的get函数进行下载。
6. 将下载文件保存为用户的ApplicationData目录下taskwgr.exe,启动taskwgr.exe
至此我们已经清楚background的主要行为了。background是个下载器,主要目的是下载taskwgr.exe文件,并运行。
五、taskwgr.exe行为分析
分析taskwgr.exe可以发现taskwgr.exe并不是一个PE文件,而是个加密的winrar自解压文件。我们通过捕获background的CreateProcess可以截取到taskwgr.exe的解压密码。
使用密码解压taskwgr.exe文件,释放出install.sql和svchost.exe。从扩展名上看install.sql是个数据文件。我们先分析svchost.exe,会发现svchost.exe加壳了,脱壳后的主要代码如下图。
svchost.exe读取install.sql文件(解密后实际上是一个新的PE可执行文件),创建一个自身的子进程,将解密后PE内容直接写入子进程的进程中,达到执行并隐藏该行为的目的
六、install.sql行为分析
解密的install.sql是一个勒索病毒,主要流程为:
1.检测系统信息,获取了系统版本、用户名、机器名,访问http://ip-api.com/json获取本地 IP信息
2.下载Tor
https://archive.torproject.org/tor-package-archive/torbrowser/7.0/tor-win32-0.3.0.7.zip
下载了tor,保存在
AppDataRoamingMicrosoftB284A9B11BD4B45CDAF4B8CF39A4B97BSystem.zip
3.当下载完成后,解压,并将tor.exe重命名为svchost.exe,然后执行。(tor原本被以隐藏方式执行,手动将其改为正常显示)
可以发现作者在程序中设置了tor代理,之后将通过tor发送网络请求
4.然后样本根据系统信息,补上了连接的参数部分,连接自己的服务器
http://lzt4y6qj7azyldq2.onion/control.php?uid=B284A9B11BD4B45CDAF4B8CF39A4B97B&uname=Fate&os=Windows7&pcname=WIN-UBAA1MQALH9&total=8970&country=China&network=yes&subid=1595.
在加密完系统中的文件后,会放出勒索信息,同时向服务端发送相应的信息
勒索信息
七、后续和总结
我们将此次涉及到的恶意ip在我们自有的恶意情报平台进行查询。搜集到一些关于此次钓鱼邮件事件的信息:
相关病毒文件
URLs Date scanned Detections URL 2018-05-14 5/67http://185.189.58.xxx/~filehost/scan_05_05_2018.doc?VGZbmiGdjdbrXrDCozJxbSTL 2018-05-14 5/67http://185.189.58.xxx/~filehost/scan_05_05_2018.doc?ckeRwnnATifPUAVXIKGUg 2018-05-14 3/67http://185.189.58.xxx/~filehost/1/scan_05_07_2018.doc?UwtmZfooHBtFn 2018-05-13 4/67http://185.189.58.xxx/~filehost/message.gif?iLbhFrEfVgEtV 2018-05-12 12/68http://185.189.58.xxx/~filehost/background.png
从相关病毒文件可以看出来,样本最初出现的时间在五月份初。攻击者通过伪造法院的传票,发送钓鱼邮件来传播勒索病毒。邮件通常是发给目标的企业员工,攻击其文件加密,从而进行勒索。虽说勒索病毒需要连接到tor网络,国内的小伙伴并不需要过分担心。但还是要提醒各位读者,不要随便点击来路不明的邮件附件,请使及时对计算机中的重要资料进行备份,防止不必要的损失。
我们会对此次事件进行持续追踪和关注。
* 本文作者:水滴安全实验室,转载请注明来自FreeBuf.COM