SafeBreach Labs安全研究人员在McAfee反病毒软件所有版本中发现了一个新的漏洞。本文将证明如何利用该漏洞来绕过McAfee的自防御机制,并加载任意未签名的DLL到多个以NT AUTHORITY\SYSTEM运行的服务中来实现防御绕过和驻留。
注:为成功利用该漏洞,攻击者需要有administrator管理员权限。
McAfee Total Protection
McAfee Total Protection提供病毒、身份和隐私保护等多个功能。该软件的多个组成部分以NT AUTHORITY\SYSTEM权限的Windows服务的形式运行,权限很大。
漏洞
漏洞发现
研究人员发现以签名的进程和NT AUTHORITY\SYSTEM权限运行的McAfee软件的多个服务尝试加载 c:\Windows\System32\wbem\wbemcomn.dll。但是该DLL文件位于System32文件夹,而非System32\Wbem:
研究人员猜测如果可以加载任意未签名的DLL到这些进程中那么这就是一个漏洞。然后利用该漏洞可以绕过杀毒软件的自防御机制,因为McAfee软件的文件夹都是由mini-filter文件系统驱动进行保护的,这就限制了写操作。
如果mini-filter文件系统驱动是有效的,即使以administrator运行并植入不存在的DLL加载到McAfee的进程中,也无法实现。
PoC
为了测试该漏洞,研究任意编译了一个原始wbemcomn.dll DLL文件的(未签名的)代理DLL,然后将以下内容写入txt文件的文件名中:
·加载他的进程名
·执行它的用户名
·DLL文件名
然后植入到C:\Windows\System32\Wbem,重启计算机:
研究人员可以加载任意的DLL,并在多个McAfee、LLC签名的NT AUTHORITY\SYSTEM权限的进程中执行(研究人员植入的)代码,最终绕过程序的自防护机制。
根源分析
有多个文件的多个组件都可能会引发该问题。研究人员分析了可能引发该漏洞的其中一个问题,因为漏洞的根源都是类似的。
一旦“McAfee Module Core Service” (ModuleCoreService.exe)启动后,就会加载mcutil.dll库。为了获取指向 IWbemServices接口的初始命名空间指针和在计主机上执行WMI操作,mcutil.dll使用CoCreateInstance可以初始化IWbemLocator接口的一个COM对象。
分析CLSID注册表发现,该COM类是在C:\Windows\System32\wbem\wbemprox.dll库中实现的,也就是说COM对象初始化后,该库就会被加载,导出的DllGetClassObject函数也会被调用:
一旦wbemprox.dll库的DllGetClassObject函数被调用,导入的CWin32DefaultArena::WbemMemAlloc 函数就会被多次调用:
可以看到该函数是从wbemcomn.dll导入的,这会导致该服务尝试加载该DLL。
研究人员分析认为该漏洞的根源有两个:
一是没有对二进制文件进行数字签名有效性验证。程序并没有验证加载的DLL是否是签名的。因此,可以加载任意未签名的DLL。
二是wbemprox.dll尝试从当前工作目录C:\Windows\System32\Wbem导入wbemcomn.dll,而文件其实位于System32文件夹。
潜在恶意利用和影响
下面是攻击者可以利用该漏洞的三种方式:
防护绕过、签名执行和白名单绕过
该漏洞可以让攻击者在McAfee的签名进程中使用多个未签名的服务来加载和执行恶意payload。攻击者利用该功能可以执行多种恶意操作,比如执行和绕过以及白名单绕过。杀毒软件可能不会检测到攻击者的二进制文件,因为它会尝试在没有任何验证的情况下加载。
驻留机制
攻击者利用该漏洞还可以在每次服务加载时,以驻留的方式加载和执行恶意payload。也就是说,攻击者释放了恶意DLL后,服务就会在每次服务重启时加载恶意代码。
受影响的版本
受影响的产品包括
McAfee Total Protection (MTP)
McAfee Anti-Virus Plus (AVP)
McAfee Internet Security (MIS)
受影响的版本包括16.0.R22及以下
本文翻译自:https://safebreach.com/Post/McAfee-All-Editions-MTP-AVP-MIS-Self-Defense-Bypass-and-Potential-Usages-CVE-2019-3648如若转载,请注明原文地址: https://www.4hou.com/vulnerable/21561.html