一、综述
近日,火绒实验室截获了一个新勒索病毒Spora,通过漏洞和诱骗方式传播,除了加密被感染电脑的本机文件外(doc/ppt/psd/jpg……等各种文件类型),还会加密局域网共享文件夹中的文件,然后弹出窗口,向受害者索取赎金。
Spora利用漏洞和假冒网站弹窗传播。该病毒利用的第1个漏洞是IE漏洞,存在于IE9以上的浏览器版本中,该病毒利用的第2个漏洞是Flash漏洞。该病毒假冒的网站弹窗,模仿的是Chrome浏览器。因此,使用IE9/10/11、Flash Player和Chrome浏览器的用户要格外小心。
该病毒团伙制造大量以假乱真的仿冒网站,通过百度、谷歌等搜索引擎去传播。一部分受害者在访问这些假冒网站时,Spora病毒通过漏洞进入用户电脑;另一部分受害者则是被这些假冒网站的Chrome浏览器弹窗所欺骗,这些弹窗谎称电脑缺少HoeflerText字体,并提示用户下载安装字体文件,所谓的字体文件就是病毒。
火绒安全团队分析,Spora病毒未来可能会产生两种变化:首先,该病毒进入电脑经过两步,先下载病毒下载器,再由病毒下载器下载病毒,所以病毒团伙可以通过该病毒下载器下载各种新病毒。其次,病毒团伙制作仿冒网站时使用的是付费漏洞工具RIG EK,而RIG EK还提供其他多种服务,所以该勒索病毒可能会出现新的传播方式。
广大火绒用户不用担心,“火绒安全软件”默认开启的监控功能即可拦截该病毒的下载,保持开启火绒软件即可完美地防御Spora病毒,同时“火绒安全软件”也完成了升级,可以彻底查杀清除该病毒。
针对最近勒索软件层出不穷的状况,火绒实验室再次提醒广大用户,安装合格的安全软件是电脑的最基本安全措施,保持相应的安全设置和升级功能,可以有效防御勒索软件等各种恶性安全威胁。
二、传播方式
火绒近期截获到一组病毒样本,其通过如IE、Flash Player漏洞或者诱骗用户点击的方式进行恶意代码传播,其传播的恶意代码中包含有勒索病毒。
1.漏洞传播
病毒作者会将带有Flash漏洞或者IE漏洞的页面发布到互联网中,之后通过仿冒网址等手段,诱骗用户访问带有漏洞的网站页面。在触发漏洞后IE进程会启动wscript.exe执行恶意脚本,下载恶意代码到本地进行执行。如下图所示:
触发漏洞
经过对该漏洞页面进行解密之后,我们得到了一段JavaScript代码,如下图所示:
JavaScript代码
将变量“s”中的数据用Base64算法进行解密之后,可以得到VBScript代码,在其脚本代码中存放有一个动态库。如下图所示:
VBScript代码
VBScript代码中存放有一个动态库的二进制数据,根据其代码结构我们得知该报告中所提及的两个传播页面都是使用漏洞工具箱Rig EK生成的。Rig EK是一个专门制作钓鱼页面的渗透工具箱,工具箱会通过仿冒网址、挂马广告页面等多种手段进行病毒推送,虽然该工具箱的服务费用高达每周150美元,但是其依然在黑产市场中拥有庞大的用户群。该工具箱会使用多种不同漏洞进行传播,火绒截获样本中带有漏洞的HTML页面包含CVE-2016-0189的漏洞利用代码。该工具箱经常利用的漏洞,如下图所示:
Rig EK工具箱常见使用漏洞列表
该工具箱制作组织维护有数量庞大的病毒推送代理域名,黑客仅需上传病毒Payload部分,就可以通过这些共享的代理域名在互联网中传播自己的病毒程序。
漏洞触发后会运行命令行执行恶意JScript代码。命令行参数,如下图所示:
根据我们的整理和分析,其漏洞触发后运行的脚本为下载者病毒,可以根据病毒作者需求下载执行任意可执行文件或者动态库。其远程服务器中所存放的病毒数据是进行过加密的,该恶意脚本会先将下载到的病毒数据存放在内中进行解密,之后根据PE结构IMAGE_FILE_HEADER结构中的Characteristics属性判断下载到的PE文件是否为动态库,如果是动态库则使用regsvr32.exe启动,如果不是动态库则直接使用cmd.exe执行。代码如下图所示:
下载者病毒代码
2. 欺骗用户方式传播
病毒作者依然会以仿冒网站为诱骗用户访问页面的主要形式,但是其下载运行病毒的方式却没有利用漏洞传播那么暴力,而是以欺骗用户点击的方式进行。在访问带有网页时,用户会看到页面显示的字符全是乱码,过一秒之后会弹出仿冒的Chrome弹窗提示:未找到“HoeflerText”字体,需要下载执行Chrome_Font.exe,当浏览器弹出是否运行该文件时点击“是”。如果用户按照其提示的步骤进行操作,最终会下载运行勒索病毒。如下图所示:
下载执行勒索病毒
病毒作者会将其想要仿冒的网站页面代码通过保存页面,在下载到的网页代码中插入恶意脚本。如下图所示:
网页代码对比(左为修改后,右为修改前)
被插入恶意代码的网页加载时,JavaScript脚本会将所有“>”与“<”符号之间的字符内容全部替换为“�”,使页面中显示的所有字符全部变成乱码。如下图所示:
网页乱码
其相关代码,如下图所示:
制造乱码的JavaScript脚本
其插入的恶意代码中包含一个仿冒的弹窗,该弹窗最初是不可见的。如下图所示:
仿冒Chrome界面的隐藏的弹窗
当页面运行到下图所示脚本时会延时一秒钟后JavaScript脚本会将弹窗的display属性置为可见。如下图所示:
延时弹出仿冒弹窗
仿冒的窗口弹出
当用户点击“Update”按钮之后则会开始下载名为“Chrome_Font.exe”的勒索病毒,并弹出提示诱导用户运行该病毒。如下图所示:
诱导用户执行病毒
病毒作者伪造的Chrome组件升级窗口
如果用户点击“Update”按钮,就会下载名为“Chrome_Font.exe”的勒索病毒程序,在病毒被下载的同时还会弹出。如下图所示:
恶意代码弹出的提示窗口
三、Payload分析
页面传播的病毒为勒索病毒Ransom/Spora,该病毒近期在互联网中的传播速度呈上升趋势。由于用于加密关键数据的RSA公钥是病毒作者生成的,所以如果中毒用户想要恢复被加密的数据文件,就只能通过缴纳赎金的方式,获取到对应的RSA私钥进行解密。而且病毒不但会加密用户的本地文件,还会遍历局域网加密的文件格式,如下图所示:
加密的扩展名列表
该病毒初次运行会在 %APPDATA% 目录下释放名为系统所在盘符卷序号的文件,下文中为勒索数据文件。如下图所示:
释放文件
病毒加密文件过程中会在该文件中记录下相关数据,如当前勒索流程所处步骤、被加密的所有文件路径、加密中所生成的RSA公钥和加密后产生的ID,文件中所存放的数据都通过CryptProtectData函数进行过加密,并且以数据块形式进行存储。如下图所示:
数据文件结构
存放上述数据所涉到的相关代码,如下图所示:
根据数据块偏移写入数据
该文件的第一个数据块中记录着当前所要执行的勒索步骤,如果病毒在勒索过程中意外退出,重新启动会继续执行器剩余流程。其流程共分为五个步骤:
1. 导入存放在PE镜像中的RSA公钥(下文中称MasterRSA公钥),之后遍历本地目录和网络共享,将需要加密的文件路径加密后存在在勒索数据文件中,如果没有可以加密的文件则会在本地各盘符和网络共享中创建指向勒索病毒的快捷方式,进行病毒传播。代码如下图所示:
代码展示
2.重新生成一组RSA密钥(Sub RSA 密钥),将公钥导出写入到勒索数据文件中。生成勒索描述页面,页面中包含两个数据:
a) 生成勒索ID。ID是基于地域信息、加密信息数据整体的部分MD5和加密的各种类型文件数量生成的,将上述信息拼接后,将数字和“|”符号用字母进行替换,最后生出如“CH065-DDZTZ-TZTZT-RZTHY”类似的ID。如下图所示:
生成ID代码
字符替换
b) 加密的勒索状态相关数据,其中包括:Sub RSA 私钥、加密日期、系统用户名、地域信息、勒索病毒标记、加密各种类型文件的数量。数据使用其运行时生成的AES密钥进行加密,之后将该密钥用Master RSA 公钥进行加密之后将加密的AES密钥数据放与整体数据尾部,最后再用Base64算法进行一次加密防止数据被截断。数据内容如下图所示:
描述页面中数据存放的结构
构造数据的代码
3. 根据其记录的加密文件路径列表进行文件加密,每个文件加密是都会生成一份独立的AES密钥,进行文件加密后使用Sub RSA 公钥对AES密钥进行加密,再将加密后的AES密钥数据计算crc32,将两个数据按描述顺序拼接后,放置到被加密文件数据尾部,病毒在加密过程中会计算加密的AES密钥存放位置与最后四个字节的crc32值相符,如果相符说明已经进行过加密,不再进行重复加密。被加密的文件数据最小为0x20个字节,最多为0x500000个字节。如下图所示:
被加密的文件数据结构
加密文件
判断是否被加密
文件数据加密
4. 删除系统还原点。删除注册表键值HKEY_LOCAL_MACHINESOFTWAREClasseslnkfileIsShortcut,使快捷方式不再具有左下角的特殊标记,为此后的病毒流程做准备。
代码展示
5. 打开勒索病毒描述页面。
6. 将本地磁盘根目录、桌面和网络共享中的文件夹放入具有隐藏文件属性的勒索病毒,并将这些文件夹隐藏,之后创建同名的快捷方式。每次点击这些快捷方式后,会执行一段控制台命令,除了打开同名文件夹外,还会运行勒索病毒,从而达到其持续加密和局域网传播的目的。病毒为了执行时更加隐蔽,其会将同目录下的勒索病毒拷贝到%temp%目录进行执行,即使%temp%目录中的勒索病毒执行时被安全软件查杀也不会影响其事先构造的目录结构,依然可以驻留在用户计算机中。由于将前面流程中已经把HKEY_LOCAL_MACHINESOFTWAREClasseslnkfileIsShortcut键值删除,所以其快捷方式图标与目录图标完全相同。如下图所示:
创建与目录同名的快捷方式
快捷方式中包含的命令行
释放快捷方式代码
四、相关样本