一、VBA宏勒索软件BluFish概述
传统勒索软件的重要功能模块多半为二进制可执行程序,而脚本仅作为加载器使用。安天在近期捕获的样本中发现了一种新型的完全使用VBA宏编写的文件加密勒索软件家族BluFish。不同于其他勒索软件(如Locky),其加密文件时不会改变文件名称,亦不会修改文件结构,而仅对Microsoft Word文档内容进行加密,其勒索信息将连同加密内容一起显示在Word文档内容中。
该勒索软件通过感染Microsoft Word的Normal模板进行传播,并在每个被感染的Word文档中增加名为“qkG”的恶意宏代码。当用户启用宏时,normal.dot模板就会被感染,当用户关闭文档时,它就会将文件加密。
从目前的情况来看,该家族勒索软件处于编写者技术摸索进化阶段,并不完全成熟, 但VBA宏编写勒索软件后续可能成为一种典型手法。技术成熟后,此类攻击可能大规模爆发,因此需提高警惕。
经测试验证,安天智甲终端防御系统可以有效防护阻断该病毒家族,探海威胁检测系统可以在流量侧检测识别该家族。安天在过去17年的发展历程中,积累了深厚的恶意代码对抗底蕴,研发了自主先进的AVL SDK威胁检测引擎。作为网络安全产品的“发动机”,优质的威胁检测引擎可为产品注入强大的动力。安天AVL SDK不仅具有非常高的威胁检出率,并且可对威胁提供精准的命名和配套的知识体系;不仅可增强产品防御的有效性、灵活性,同时也可输出有效的安全知识和威胁情报。成为了安天产品的可靠“动力之源”。
针对文档类对象,安天AVL SDK可深度解析Office文件结构,细粒度地对文件进行解析还原,分离出文件中的宏代码,进行深度脚本预处理,为后续防御提供准确的检测结果。
二、样本分析
2.1 BluFish病毒发作现象
如果用户打开Word文件后,看到如下字样,表明已经被感染。这与其他勒索软件感染后导致Office文件丢失,扩展名改变,或打开乱码的现象有明显差异。
感染病毒后的Word文件和模板文件的VBA工程会出现名为qkG的新对象,内有病毒的代码。这也可见宏病毒的一贯威胁特点,易写、易改,但由于早期Office版本是未公开的OLE2结构,所以难以安全清除。安全清除宏病毒也是反病毒厂商需要有的扎实基本功,是具有反病毒底蕴的安全厂商相对于没有自主引擎能力厂商的明显优势。
鉴于宏病毒是明文脚本,为了避免带来不良后果,安天小编对文中涉及病毒代码的截图做了马赛克处理。
图2.1加密后的文件
图2.2 感染后的word文档VBA工程
图2.3 感染后的模板VBA工程
2.2 BluFish病毒加密过程分析
2.2.1 病毒执行流程简述
病毒的执行流程如下:
1、修改Word安全属性设置,包括取消保护视图、降低宏安全级别等;
2、感染Normal模板,添加Document_Close()函数,将当前文档自身的恶意宏代码复制到新添加的Document_Close()函数中,通过Normal模板实现传播;
3、感染打开的活动文档,增加Document_Open()函数,将Normal模板中的恶意宏代码复制到新添加的Document_Open()函数中;
4、加密文档,通过简单的异或进行加密,将加密后的内容转化为16进制字符串保存至文档中,并在文档中添加勒索信息,包括赎金、支付地址、联系方式。
2.2.2 病毒详细工作机理
1、修改Office Word注册表项
该VBA宏代码在加密时首先修改Office注册表项,降低Word安全属性设置,达到禁用宏启用提示并顺利执行恶意宏代码的目的。其针对不同的Office版本修改对应的Word安全属性:对于Word 8.0至Word 11.0版本,其将安全级别修改为最低、启用对VBA对象模型的访问;对于Word 12.0至Word 16.0版本,会取消保护视图,使其信任从网络上获取的Excel宏。
图2.4 修改Office安全设置注册表
2、感染模板和正常Word文档
修改Office Word安全设置后进行宏感染操作,包括感染Normal模板和当前的活动文档,以达成感染链的不断延续。
1)通过当前文档感染Normal模板。
首先获取当前文档和Normal模板VBA工程的第一个模块对象,判断Normal模板中是否存在名称为“qkG”的宏代码,若不存在则会新建名称为“qkG”的宏代码并添加Document_Close ()函数,然后将当前文档中的恶意宏代码复制到Normal模板的Document_Close ()函数下。
2)通过Normal模板感染当前文档。
首先获取当前文档和Normal模板VBA工程的第一个模块对象,判断当前文档中是否存在名称为“qkG”的宏代码,如果不存在则会新建名称为“qkG”的宏代码并添加Document_Open()函数,然后将Normal模板中的恶意宏代码复制到当前文档的Document_Open()函数下。
图2.5 针对文档和模板进行感染
3、文件加密
在用户关闭文档时进行加密操作,通过简单的异或进行加密,异或的密钥是硬编码在宏代码中的字符串常量"I'm QkG@PTM17! by TNA@MHT-TT2",且只对Word文档内容的奇数字符进行异或加密,偶数字符保持不变,然后将异或加密后的内容转化为16进制保存至文档中,并在文档中添加勒索信息。
首先检查加密条件是否具备,如具备则进行加密,否则不加密。加密需同时满足以下三个条件方可进行:
1)文件名不为“Document”+数字;
2)文档内容的第一行字符串不是加密密钥key;
3)是否在特定的日期(如:星期一)。
(注:最新捕获的变种增加了具有判断时间的功能)
图2.6 加密判断条件
图2.7 增加定时功能的加密判断条件
在确定具备文档加密条件后,调用EncryptDocument加密函数对文档内容进行加密操作,并将加密后的内容和勒索信息写入文件中,加密后的文件内容第一行会显示加密密钥("I'm QkG@PTM17! by TNA@MHT-TT2"),且字体加粗、字体颜色调整为蓝色;加密后的文件内容第二行和第三行为勒索信息("Send $300 to BTC Address: 14zA1NdTgtesLWZxtysLQQtsuKzjFbpydg"和"Contact Email: [email protected]"),包括勒索赎金、支付地址、联系方式,字体加粗、字体颜色调整为红色;加密后的文件内容第四行开始为原始文件内容的加密内容(如图2.1所示)。
图2.8 加密代码
在获取文档内容后,调用Crypto函数进行异或加密操作,异或加密的密钥为硬编码在代码中常量字符串"I'm QkG@PTM17! by TNA@MHT-TT2",目前发现的该类VBA宏代码只对Word文档内容的奇数字符进行异或加密,偶数字符保持不变。异或加密后的字符串会调用ToHex函数进行十六进制字符串处理,最后将处理完后的十六进制字符串写入文档中。
图2.9 硬编码的加密密钥和勒索信息
图2.10 加密主函数
图2.11 异或加密函数
图2.12 异或加密十六进制化函数
2.3 BluFish家族演变
从安天捕获的多个BluFish家族样本中可以发现,BluFish在不断改进,其功能不断复杂化(如图2.13所示)。
图2.13 BluFish家族功能演变
现阶段捕获的BluFish家族样本更像是完全利用恶意宏代码进行勒索的概念验证恶意文件,并未大规模流传。但由于宏病毒具有易写、易改、难杀的特点,生成新变种的成本低,未来可能会演变成具有威胁性的网络攻击勒索软件,应引起注意。
另外,该样本是在越南地区被发现,并且代码中包含了一些越南语词汇,因此推断该病毒作者来自越南的可能性比较大,代码中包含的字符串“TNA-MHT-TT2”可能为作者所使用的某种名称代号。
三、 防护建议
1、警惕第三方未知来源Office文件,切勿轻易打开或运行未知来源的文件;
2、为防止勒索软件造成严重损失,应及时备份重要文档或资料;
3、在终端安装可靠的安全防护产品,如内嵌安天AVL SDK的安天智甲终端防御系统