赛门铁克(Symantec)任意代码执行漏洞,可冒用签名执行,白名单绕过以及提权。

​赛门铁克(Symantec)集团是世界上最大的安全公司。

守护安全的安全软件出了重大安全漏洞,一种老司机开翻车的feel。

赛门铁克(Symantec)任意代码执行漏洞,可冒用签名执行,白名单绕过以及提权。_第1张图片

#介绍

SafeBreach 实验室发现了赛门铁克终端安全这个漏洞(Symantec Endpoint Protection)(CVE-2019-12758)

利用这个漏洞,可以绕过赛门铁克的自我防护机制,还能实现防御规避、维持权限以及提权。方法是通过加载任意未签名的dll到赛门铁克签名运行的进程里面(这个进程是以NT AUTHORITY\SYSTEM权限运行)。

注:为了利用这个漏洞,攻击者需要有管理员权限。

#赛门铁克终端安全(Symantec Endpoint Protection)

赛门铁克终端安全是指一组安全软件套件,包括服务器版本以及桌面电脑版本,组成功能模块部分包括反病毒、入侵防护以及防火墙。由赛门铁克公司开发并在终端安全市场中拥有最大的市场份额。

这个软件中的很多部分都是以Windows服务的形式运行,这些服务以"NT AUTHORITY\SYSTEM"权限运行,这给程序提供了非常强力的权限支持。

在这篇文章,我们先描述上述的漏洞,然后展示如何利用这个漏洞在赛门铁克服务上下文里,达成执行任意命令的效果,以获得“NT AUTHORITY\SYSTEM”最高级别权限的访问权。


#漏洞

发现

在探索中,我们发现赛门铁克终端安全的一个服务(SepMasterService),是以“NT AUTHORITY\SYSTEM”权限启动一个单独的进程,这个进程会尝试加载一个不存在的dll,这个dll的位于:

c:\Windows\SysWOW64\wbem\DSPARSE.dll

如果能证明可以让我们的东西被加载进这个进程,我们就可以绕过赛门铁克反病毒程序的自我防护机制。主要是因为赛门铁克终端安全程序所在的目录受mini-filter文件系统驱动程序保护,会严格限制对其写操作,即便是管理员也不例外。

这就意味着,即便我们是Administrator,想要简单地植入一个不存在的dll到赛门铁克的进程里面,也是不现实的。

POC展示

为了测试这个漏洞,我们从dsparse.dll 里编译出一个32位的代理DLL(未签名的,代理DLL的意思是可以加载其它任意DLL)文件,dsparse.dll 实质上是位于SysWow64 目录,而不是 SysWow64\Wbem目录下面。编译出的dll,它功能是把下面的东西写到一个txt文件里面:

1.加载这个dll的进程名

2.执行这个dll的用户名

3.dll的文件名

然后我们把这个dll移植到 C:\Windows\SysWow64\Wbem目录,然后重启电脑。

赛门铁克(Symantec)任意代码执行漏洞,可冒用签名执行,白名单绕过以及提权。_第2张图片

此时,我们可以加载进一个任意的代理DLL(代理DLL可以加载其它任意DLL)进来了,然后在一个服务进程里面执行我们的代码,这个服务进程是赛门铁克集团签名的,而且运行权限是NT AUTHORITY\SYSTEM,最终的结果是,绕过了赛门铁克的自我保护机制。

#根本原因分析

有很多模块里的很多文件导致了这个漏洞,在这里就只分析其中的一个,因为问题的根源往往都是雷同的。

当 “Symantec Endpoint Protection” 服务器进程(ccSvcHst.exe) 启动的时候,它就会尝试用 IWbemServices COM接口的一个函数去执行一个WMI查询。这个COM接口名为:

(IWbemServices::ExecNotificationQueryAsync):

赛门铁克(Symantec)任意代码执行漏洞,可冒用签名执行,白名单绕过以及提权。_第3张图片

用OleViewDotNet(https://github.com/tyranid/oleviewdotnet)快速查看一下,可以看到,这个COM接口(和它的函数)是被设计用来使用这个COM代理DLL中的库“C:\Windows\SysWow64\wbem\fastprox.dll” (在我们的例子里,它是一个WOW64进程)

赛门铁克(Symantec)任意代码执行漏洞,可冒用签名执行,白名单绕过以及提权。_第4张图片
赛门铁克(Symantec)任意代码执行漏洞,可冒用签名执行,白名单绕过以及提权。_第5张图片

当fastprox.dll库里的ExecNotificationQueryAsync函数被调用之后,DsCrackSpnW 函数也会随之被调用。

赛门铁克(Symantec)任意代码执行漏洞,可冒用签名执行,白名单绕过以及提权。_第6张图片

我们可以看到,这个函数正是可以从dsparse.dll导入的,这会导致赛门铁克的那个服务进程尝试加载这个dll。

赛门铁克(Symantec)任意代码执行漏洞,可冒用签名执行,白名单绕过以及提权。_第7张图片

关于这个漏洞,有两个根本原因

1.没有针对二进制文件检查其数字签名。这个程序没有验证加载的DLL是否已经签名(这个功能可以用 WinVerifyTrust函数实现)。因为,它可以加载任意的未签名的DLL。

2.fastprox.dll 库尝试从它当前的运行目录加载dsparse.dll文件,这就是C:\Windows\SysWow64\Wbem目录,而实质上文件就是存在SysWow64 目录。


#潜在的恶意使用和影响

下面我们展示三个攻击者可能滥用的用途

防御规避,冒用签名执行,白名单绕过

这个漏洞给攻击者一个别样的能力,允许在赛门铁克的签名进程上下文里加载和执行恶意payloa。这个攻击能力可能会被攻击者用在各种目的的行动中,例如防御规避。举个例子,应用白名单绕过。这反病毒程序可能并不能检测到攻击者的二进制代码,因为这些程序已经在对它不进行任何验证就加载进来了。

(后门)持久化机制

这个漏洞给攻击者新的能力,允许他们以一种持久化的方式加载和执行恶意payload。每一次这个服务启动时就被加载进来。这就意味着当攻击者丢一个恶意dll进来,这些服务就会在每次启动时将它们加载进来。

提权

这些服务给攻击者一个提权的机会,可至Windows系统最高权限NT AUTHORITY\SYSTEM

.

#影响版本:

赛门铁克(Symantec Endpoint Protection)14.2 RU2 之前的所有版本。

原文:https://safebreach.com/Post/Symantec-Endpoint-Protection-Self-Defense-Bypass-and-Potential-Usages-CVE-2019-12758

HackerHub发布 | 转载请注明出处

赛门铁克(Symantec)任意代码执行漏洞,可冒用签名执行,白名单绕过以及提权。_第8张图片

.>密码重用就是一个定时炸弹

.>Apache Solr 8.2.0 - 远程命令执行

你可能感兴趣的:(赛门铁克(Symantec)任意代码执行漏洞,可冒用签名执行,白名单绕过以及提权。)