导语:最近,看到很多安全公司包括FireEye、TrendMicro报道了一系列的恶意软件使用Windows管理规范(WMI)对系统环境进行扫描、躲避杀毒引擎,虚拟机/沙盒等安全工具的检测。
前言
最近,看到很多安全公司包括FireEye、TrendMicro报道了一系列的恶意软件使用Windows管理规范(WMI)对系统环境进行扫描、躲避杀毒引擎,虚拟机/沙盒等安全工具的检测。这让我想起了在Black Hat 2015上针对WMI攻击的演讲AbusingWindows Management Instrumentation (WMI) to Build a Persistent, Asyncronous,and Fileless Backdoor,还有FireEye在今年8月份也对WMI的恶意活动进行了分析。当然如果想了解有关WMI更多的攻击还可以参考TrendMicro在2010年的一篇PDF文章。
Windows管理规范(WMI)
本人虽然平时不怎么上国内的乌云,但是乌云知识库里面还是很多干货的,所以首先要感谢乌云知识库的镜像终于回归了。乌云知识库中,有一篇是专门介绍WMI的——《WMI 的攻击、防御与取证分析技术之攻击篇》,该文章详细的介绍了WMI,以及恶意软件如何使用WMI进行攻击。
WMI的攻击当然离不开Windwos脚本(即WSH,Windows脚本宿主)的支持,攻击者通过使用脚本把独立的程序、服务、控件组合起来完成任务,脚本编程的技巧就是组合的技巧,而利用WMI服务的管理接口,脚本可以很方便的使用WMI的一系列功能,这也是造成攻击的原因之一。
本文将通过2016年实际的在野样本来分析WMI是如何躲避杀毒引擎、虚拟化技术、进程以及Widows服务的检测的。
杀毒引擎检测
已安装的 AV 产品通常会将自己注册在WMI AntiVirusProduct class 类中的rootSecurityCenter 或者是 rootSecurityCenter2 命名空间中,具体是哪一个命名空间则取决于操作系统的版本,因此可以通过WMI查询语言进行检索。我们分析的这个样本首先检查操作系统rootcimv2命名空间下的Win32_OperatingSystem类,如果操作系统的版本大于数字6(即Widows Vista以上的版本),紧接着进行AV的检测。下图显示了VBScript代码对AV的检测。
AV以及其它的用户信息将被发送到服务器用于读取正确的有效载荷或执行逃避,如下图所示。
虚拟化检测
在其中一个样本中发现,使用了很多不同的技术监控系统安全产品,最流行的就是使用WMI查询语句检查虚拟化软件(例如VMvare和VirtualBox)。通过检索rootcimv2命名空间下的Win32_BIOS类的BIOS信息,具体的fields/columns类似于SQL的查询语句。下图是从恶意软件中提取出来的虚拟化WMI SOL查询语句。
我们可以验证一下上述语句,在Bochs模拟器中的powershell里执行上述查询语句,结果如下入所示。
在这个样本中还可以看到它对整个的系统安全产品的检测,其他服务可以通过枚举运行的进程和Windows注册表来检测,如下图所示。
在这里使用Ollydbg来动态分析其中的一个样本发现,恶意软件使用Win32_DiskDrive分别检测Virtual Box , Virtual Hard disk和 VMware ,当以上任何一个检测到的时候,该进程将结束,这样可以避免自身被安全人员分析。检测过程如下图所示。
进程检测
我们分析的另一个样本不仅检查rootcimv2命名空间下Win32_Prcess的特定进程,而且还会终止这些进程。例如一旦检查到Immunity debugger进程就会强制其终止,接着会通过Windows宿主脚本更改该文件夹下的权限并删除文件,具体代码如下图。
此外,国内的安全厂商,金山毒霸的杀毒引擎也会被强制终止,代码如下图所示。
再一个类似MS Office的密钥生成器的样本中,发现其通过WMI查询语句检测Office软件的保护服务,如下图所示。这个保护服务为软件供应商提供了安全许可服务。一旦Office软件保护服务对象启动时,用于安装MS Office产品密钥。
总结
在对这一系列的样本进行分析的时候发现,绝大部分都是通过WMI的查询来实现环境的检测和躲避的,如下图所示。
当然还有很多查询的语句没有完全列举出来,我们可以想象的到,会有更多的恶意软件作者会使用类似的攻击方式进行攻击,因此作为安全分析人员应该要注意新的WMI攻击。目前,在BlueHat 2016 上,已经有人针对WMI的攻击进行了检测,源码见GitHub,可以参考一下如何进行检测。