前言:

随着2016年接近尾声,各大安全厂商,各类安全机构都陆续发布2016年的安全总结,“勒索软件”这个词语在这些报告中频繁出现,有的甚至占用了总结报告的大量篇幅,这说明勒索软件在这一年中带来的安全威胁越发严重。越来越多的网络犯罪分子通过勒索软件牟取非法收益,勒索软件家族更加多样化,各种勒索手段层出不穷。如MalwareHunterTeam发现的PopcornTime勒索木马甚至才用了推荐链接再感染两名其他用户的社会学传播方法。又如:从KillDisk进化而来的勒索软件耍起了流氓,即使支付了赎金也不会帮你解锁文件,关于这款勒索软件的分析请参考链接链接)。同时,勒索软件也呈现出定向化攻击的特点,如旧金山市交通局系统被勒索软件勒索,导致整个地铁售票系统都停运了,旧金山交通局直接开放了检票口,允许顾客免费乘车。今天我们要分析的是一款针对俄罗斯社科院的定向勒索软件。我们将还原这一定向勒索事件的全过程。

此次事件中,黑客利用的攻击手法如下,我们在后文中也会以攻击顺序作为本文的行为脉络:

钓鱼邮件

攻击者通过给俄罗斯社科院发送钓鱼邮件作为攻击的第一阶段,邮件内容与修正法案有关,试图诱导受害者点击附件释放勒索软件。
邮件截图如下所示

google翻译过的邮件主题与内容:

收件人对应的网站截图如下:

漏洞利用:

在钓鱼邮件的附件中的文件为CVE-2015-1641漏洞利用样本。CVE-2015-1641是一个典型的类型混淆漏洞, 这个漏洞的触发非常稳定,在不打补丁的情况下几乎影响微软目前所支持的所有office版本。这个漏洞也是定向攻击中最常用的漏洞之一。漏洞的原因在于office没有传入的customXML对象进行严格的校验,当用于传入的对象不是customXML而是smartTag对象时,仍使用了对customXML对象的处理流程,导致任意内存读写。

我们使用oletool提取出word中嵌入的OLE对象,可以看到oletool提取出4个OLE对象。

使用7zip将释放出来的“bin_object_0000763E.doc”解压后,其word\activeX目录下的activeX52.bin文件中就包含有漏洞利用成功后的shellcode
可以看到shellcode的内容为

而通过利用msvcr71.dll中的ret指令跳转到 ROP链:

Shellcode运行后会加载释放的诱饵文档的部分翻译内容:

Shellcode运行后,会在临时目录下释放vmsk.exe并加载vmsk.exe运行

Vmsk.exe分析

Vmsk.exe使用如下的图标仿冒成文档文件,同时Vmsk.exe带有如下的版本信息

公司 www.sipcast.com
文件描述 Complete Android Congress Vortex
内部名称 Quality
版权 Copyright 2013. All rights reserved.
源文件名 Quality.exe
产品名称 Quality
产品版本 3.2.6.915

此文件嵌入了大量无用字符串和没有意义的函数调用

Vmsk.exe会从自身文件内部读取内容解密出代码执行。
从文件中的待解密的内容:

对应文件中的内容:

随后,程序会以0x33为密钥,对上面的代码进行解密:

解密算法:
取出每个加密字符,与临时变量temp异或,并将结果保存,同时更新temp 的内容

解密后的内容是一段如下的代码

而解密出的代码的主要功能是:解密PE文件并内存加载执行。

随后,会开启线程到解密出的PE的入口点执行,而主线程通过Sleep函数睡眠。

将PE dump出来用作后面的分析。

解密出来的PE

我们将解密出来的PE保存成文件,可以看到,此文件也带有文件版本信息。

文件信息如下:
公司 Microsoft Corporation
文件描述 Client Server Runtime Process
文件版本 6.3.9600.16384 (winblue_rtm.130821-1623)
内部名称 CSRSS.Exe
版权 ? Microsoft Corporation. All rights reserved.
源文件名 CSRSS.Exe
产品名称 Microsoft? Windows? Operating System
产品版本 6.3.9600.16384

此PE使用了UPX压缩,使用upx –d命令解压缩后

勒索软件

此阶段的文件才是真正的勒索软件。
勒索文件运行后会遍历系统中指定扩展名的文件,使用RSA算法对文件加密后保存在磁盘中。加密后的系统桌面的效果如下:

同时会在桌面上释放大量的README+数字.txt

勒索软件会加密下面扩展名的文件:

为了防止感染后系统无法重启,不会对下面的文件进行加密:

文件被加密后的扩展名为.better_call_saul

5. 1持久化

将文件拷贝到%application data%目录下csrss.exe,并将csrss.exe加入启动项

将csrss.exe加入启动项:

5.2 加密密钥的生成

使用时间,线程id等信息生成随机种子,用来生成随机的AES密钥,此后用此密钥来加密文件内容和文件名。

初始化AES256算法:

5.3 加密后文件名生成算法:

加密后文件的文件名与原始文件文件名并不相同,而是诸如“EAVncBsfZQ3MAGdWjbVe-R23ErWNDAn4Zodxpvwyd0o=.FAB037B7F0B595FFE1AF.better_call_saul”格式。
文件名称来自于三部分:

  1. 生成的随机时间作为初始化key,使用AES256加密文件名后得到的结果进行base64编码,作为第一部分

  1. 从配置文件中读取,做为第二部分FAB037B7F0B595FFE1AF

  1. 固定字符串“.better_call_saul”做为第三部分

5.4 文件内容的加密

加密后文件内容的前0x180字节为加密过的AES密钥(使用RSA加密),随后是AES加密过的文件内容,再后面是文件原始的前0x180字节内容,最后是文件的时间信息。

  1. 使用RSA算法加密前面生成的加密密钥,保存到加密后文件的头部

  1. 将文件的头部0x180字节拷贝到加密后文件的尾部

  1. 循环读取原始文件内容,等待线程加密后,写回到原始文件中

加密完成后,对加密后的文件重命名:

5.5 对分析人员的威胁

有意思的是,在勒索软件内部,还保留有对分析人员的恐吓内容(卡巴分析人员,您们好,我知道你们可能会攻击我们的服务器攻取密钥,你们丫的小心点,小心公开你丫的个人信息…………):

总结

两个月前,旧金山市交通系统遭勒索软件感染案例的新闻充斥着各大新闻版块的头条,时至今日,是何人所为仍是个谜。事件已经过去,但事件所发出警示:基础设施、公共服务的防护措施依然薄弱。对于旧金山市交通系统遭勒索的事件过程我们并不清楚,但通过我们本文分析的针对俄罗斯社科院的定向勒索的攻击事件全过程的梳理,我们可以看到勒索软件在定向勒索中的负荷投递特征、样本的威胁特征等内容。由于勒索软件背后的机理决定了被加密后的文件在没有私钥的情况下无法恢复,重要的文件被加密后除了通过支付赎金解密文件外并没有更为有效的恢复文件的方法,但即使支付赎金,勒索者也可能并不会解密文件,从而导致文件和钱财两空。防止被勒索,重要的是要提高安全意识,及时做好数据备份,及时更新系统,不轻易打开可疑和不明来路的邮件。

参考:

http://thehackernews.com/2017/01/linux-ransomware-malware.html

源链接

Hacking more

...