导语:10月底,Cymulate的安全研究人员公布了利用office在线视频特征逻辑漏洞来传播恶意软件的POC。最近,研究人员发现一款利用该漏洞传播URSNIF信息窃取器的在野样本。
10月底,Cymulate的安全研究人员公布了利用office在线视频特征逻辑漏洞来传播恶意软件的POC。最近,研究人员发现一款利用该漏洞传播URSNIF信息窃取器的在野样本。
恶意软件感染链
因为这类攻击中使用了刻意伪造的word文档,研究人员假设可以通过其他恶意软件或垃圾邮件中的附件、链接到达用户系统。
该漏洞影响Microsoft Word 2013及之后版本。PoC和恶意软件使用了DOCX文件类型,其中可以包含文本、对象、格式、图像等。这些都分别保存在不同的文件中,然后打包为一个ZIP压缩的DOCX文件。
图1: PoC(左)和在野样本(右)感染链
PoC和在野恶意软件工作原理
PoC和在野样本都滥用了office在线视频嵌入特征的逻辑漏洞,在线视频嵌入特征允许用户从外部源(比如Youtube)嵌入在线视频到Word文档中。
PoC是在文档中嵌入在线视频,然后修改文档包中的XML文件。过程如下:
· 修改文档的文件扩展(从DOCX修改为ZIP);
· 提取文件;
· 定位XML文件的tag (embeddedHtml),这是恶意脚本或URL添加的地方。如果URL的embeddedHtml参数被修改,用户点击文档中的视频框时,就会自动将用户重定向到特定的URL;
· 通过修改embeddedHtml中的脚本来初始化和应用payload。
分析在野样本发现,只修改了URL的src参数,是用一个含有可以加载和运行重定向的脚本的Pastebin URL替换的。脚本会访问了一个恶意URL来下载和执行URSNIF恶意软件。
图2: 修改了embeddedHtml参数的代码段
PoC与在野恶意软件的比较
PoC使用的是msSaveorOpenBlob方法来解码嵌入到video tag中的base64编码的二进制文件,msSaveorOpenBlob可以为文件或blob对象加载应用。点击视频框也可以触发。解码后,会弹出IE下载管理器询问是否运行或者手动保存可执行文件,如图3。
真实的恶意软件样本更加简单有效。点击video框后可以直接访问恶意URL。然后加载可以自动下载final payload的恶意脚本。如图4所示,然后弹出下载管理器保存或运行payload的用户弹窗,伪装为Flash Player更新。
图3: IE下载管理器询问用户运行或保存可执行文件
图4: 在野样本工作原理
总结
目前还没有为该漏洞分配CVE编号。用户可以拦截XML文件中含有embeddedHtml tag的文档或关闭嵌入视频的文档。因为URL是可修改的,所以恶意软件可能会给用户和企业传播不同的恶意软件。
IoC
哈希值(SHA-256):
• 03634e2eab2f61ab1d7359c4038c7042f7eb294d9d5c855560468b8824702c47 — TROJ_EXPLOIT.AOOCAI
• d01b6f839b233ce9d6834a58d9d832ad824b73dd3dd1f399639fe5326faf783b — TSPY_URSNIF.OIBEAO
相关恶意URL:
hxxp://wetnosesandwhiskers[.]com/driverfix30e45vers[.]exe
YARA规则
rule EMBEDDEDHTML_WITH_SCRIPT { meta: description = “possible abuse of Office video embededHtml” reference = “https://blog.cymulate.com/abusing-microsoft-office-online-video” strings: $embeddedHtmlre1 = /\sembeddedHtml=”[^”]+/ $embeddedHtmlre2 = /\sembeddedHtml='[^’]+/ $script = “<script” nocase condition: ( for any i in (1..#embeddedHtmlre1): ( for any j in (1..#script): ( @embeddedHtmlre1[i] < @script[j] and @script[j] < @embeddedHtmlre1[i] + !embeddedHtmlre1[i] ) ) ) or ( for any i in (1..#embeddedHtmlre2): ( for any j in (1..#script): ( @embeddedHtmlre2[i] < @script[j] and @script[j] < @embeddedHtmlre2[i] + !embeddedHtmlre2[i] ) ) ) }