微软Office 365安全服务可扫描XLM恶意宏

微软本周宣布把Office 365的恶意软件扫描技术扩展,以扫描XLM写成的恶意宏。

反恶意软件扫描接口(Antimalware Scan Interface,AMSI)原本是Windows中允许应用程序或服务和系统上的安全软件进行通信,要求扫描内存缓冲区是否有执行程序代码下载的Script行为,像是VBscript、JavaScript及PowerShell等。2018年9月微软将AMSI集成到Office 365用户端应用,以便扫描VBA宏的runtime行为,防止恶意宏。

XLM宏是相当古老的宏语言,最早微软1992年Excel 4.0即使用XLM,直到1993年Excel才改用VBA。XLM虽然很简单,但却可兼容于Windows,而且有许多企业的合法应用中仍然使用XLM。但二年半前Office 365集成了AMSI防范VBA恶意宏,迫使攻击者转向XLM宏,用它来调用Win32 API执行shell指令,包括Trickbot、Zloader和Ursnif背后的网络罪犯。

微软指出,和VBA和其他描述语言一样,XLM程序代码也很容易加以混淆(obfuscate)以掩饰宏的真实意图,像是只要简单的变更字符串即可隐藏URL或文件名称躲过静态侦测产品。

此外,XLM的特性也有利于攻击者。例如,XLM的宏程序代码在Excel文件中未分开存储,每个XLM宏声明都是在一个存储格中的公式,想抓出整个XLM宏相当困难,必须在文件内一格一格检查。其次XLM宏的执行并非如一般由上而下,可利用控制声明横向进行。这些特性配合混淆手法,让攻击者得以轻易躲过静态分析。

从推出迄今,AMSI已经可用于侦测多种恶意宏、script-based恶意程序,包括VBscript、JavaScript、PowerShell、Office VBA宏、WMI、动态加载的.NET assembly、MSHTA /Jscript 9,以及今天的XLM。AMSI的资料可作为训练恶意行为的机器学习模型,用来强化Microsoft Defender for Endpoint的防护。如果Microsoft Defender等杀毒软件侦测到恶意XLM宏,宏将无法执行,而且终止Excel,借此防止攻击。

XLM宏扫描功能目前已部署到Excel中,可用于注册为设备上AMSI供应者的杀毒软件(如Microsoft Defender Antivirus)。已集成AMSI的Office也会加入这项功能。另外,二月份Current Channel及Monthly Enterprise Channel两个频道的Microsoft/Office 365用户端也默认打开。